sketchucation logo sketchucation
    • Login
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    🛣️ Road Profile Builder | Generate roads, curbs and pavements easily Download

    Remove and purge hidden components.

    Scheduled Pinned Locked Moved Developers' Forum
    19 Posts 4 Posters 4.1k Views 4 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Dan RathbunD Offline
      Dan Rathbun
      last edited by

      @tntdavid said:

      I want to delete hidden definitions and not instances.

      Definitions are not hidden in the model, because they do not exist in the model entities collection (only instances do.)

      When a definition is "hidden", it does not appear in the Components Browser list, but still is a member of the model's DefinitionList collection.

      I'm not here much anymore.

      1 Reply Last reply Reply Quote 0
      • TIGT Offline
        TIG Moderator
        last edited by

        As Dan says don't mess on with the selection-set...
        IF you actually need to collect things for later use, consider using an array [] or a hash {}...
        But that is NOT needed here...
        How about this ?

        Sketchup.active_model.definitions.each{|d|next unless d.name=~/IKEA/; d.entities.grep(Sketchup;;ComponentInstance).each{|e|e.erase! if e.hidden?}}
        

        This deletes all nested entities within any definition named /IKEA/, if they are hidden...

        TIG

        1 Reply Last reply Reply Quote 0
        • TNTDAVIDT Offline
          TNTDAVID
          last edited by

          **Sorry Dan, I mixed brushes between definitions and instances ...

          It's wonderful TIG, your code meets 100% to my needs. 👍

          I want to be very careful with the selections or deletes, for this reason your example is perfect.

          The code below removes all attributes of all dynamic components present in a SketchUp file.

          m=Sketchup.active_model;m.start_operation("unDC");m.definitions.each{|d|d.attribute_dictionaries.delete("dynamic_attributes") if d.attribute_dictionaries and d.attribute_dictionaries["dynamic_attributes"];d.instances.each{|i|i.attribute_dictionaries.delete("dynamic_attributes") if i.attribute_dictionaries and i.attribute_dictionaries["dynamic_attributes"]}};m.commit_operation
          

          How to adapt this code so that it only deletes the dynamic attributes of all nested entities in the named definitions / IKEA / ?

          Thank you**

          [b:8wt9py2i]* Nouveau !!![/b:8wt9py2i] Découvrez notre nouveau Plugin [url=http://www.composant-dynamique.com/:8wt9py2i][color=#40FF00:8wt9py2i]C[/color:8wt9py2i][color=#77FF00:8wt9py2i]l[/color:8wt9py2i][color=#ADFF00:8wt9py2i]i[/color:8wt9py2i][color=#E4FF00:8wt9py2i]c[/color:8wt9py2i][color=#FFDB09:8wt9py2i]k[/color:8wt9py2i][color=#FF921B:8wt9py2i]-[/color:8wt9py2i][color=#FF492E:8wt9py2i]C[/color:8wt9py2i][color=#FF0040:8wt9py2i]u[/color:8wt9py2i][color=#ED2577:8wt9py2i]i[/color:8wt9py2i][color=#DA49AD:8wt9py2i]s[/color:8wt9py2i][color=#C86EE4:8wt9py2i]i[/color:8wt9py2i][color=#AD77FF:8wt9py2i]n[/color:8wt9py2i][color=#8965FF:8wt9py2i]e[/color:8wt9py2i] [color=#4040FF:8wt9py2i]2[/color:8wt9py2i][/url:8wt9py2i], pour créer vos cuisines 3D !

          1 Reply Last reply Reply Quote 0
          • TIGT Offline
            TIG Moderator
            last edited by

            Adjust ...;m.definitions.each{|d|d.attribute_dictionaries...
            to something like this:
            ...;m.definitions.each{|d|**next unless d.name=~/IKEA/;**d.attribute_dictionaries...
            To limit the action to /IKEA/ named definitions...

            TIG

            1 Reply Last reply Reply Quote 0
            • TNTDAVIDT Offline
              TNTDAVID
              last edited by

              **


              Wonderful! Your example works TIG, for instances with IKEA definitions:**

              m=Sketchup.active_model;m.start_operation("unDC");m.definitions.each{|d|next unless d.name=~/IKEA/; d.attribute_dictionaries.delete("dynamic_attributes") if d.attribute_dictionaries and d.attribute_dictionaries["dynamic_attributes"];d.instances.each{|i|i.attribute_dictionaries.delete("dynamic_attributes") if i.attribute_dictionaries and i.attribute_dictionaries["dynamic_attributes"]}};m.commit_operation
              

              Is it possible to purge dynamic attributes of nested components in instances with IKEA definitions?

              Thank you

              [b:8wt9py2i]* Nouveau !!![/b:8wt9py2i] Découvrez notre nouveau Plugin [url=http://www.composant-dynamique.com/:8wt9py2i][color=#40FF00:8wt9py2i]C[/color:8wt9py2i][color=#77FF00:8wt9py2i]l[/color:8wt9py2i][color=#ADFF00:8wt9py2i]i[/color:8wt9py2i][color=#E4FF00:8wt9py2i]c[/color:8wt9py2i][color=#FFDB09:8wt9py2i]k[/color:8wt9py2i][color=#FF921B:8wt9py2i]-[/color:8wt9py2i][color=#FF492E:8wt9py2i]C[/color:8wt9py2i][color=#FF0040:8wt9py2i]u[/color:8wt9py2i][color=#ED2577:8wt9py2i]i[/color:8wt9py2i][color=#DA49AD:8wt9py2i]s[/color:8wt9py2i][color=#C86EE4:8wt9py2i]i[/color:8wt9py2i][color=#AD77FF:8wt9py2i]n[/color:8wt9py2i][color=#8965FF:8wt9py2i]e[/color:8wt9py2i] [color=#4040FF:8wt9py2i]2[/color:8wt9py2i][/url:8wt9py2i], pour créer vos cuisines 3D !

              1 Reply Last reply Reply Quote 0
              • TNTDAVIDT Offline
                TNTDAVID
                last edited by

                **Bonjour,

                Votre solution TIG pour supprimer les composants masqués à l'intérieur des définition IKEA, fonctionne très bien! 😉

                Sketchup.active_model.definitions.each{|d|next unless d.name=~/IKEA/; d.entities.grep(Sketchup;;ComponentInstance).each{|e|e.erase! if e.hidden?}}
                

                A l'intérieur de la définition IKEA, il y a beaucoup d'autres définitions qui ont des sous composants masqués.

                Est-il possible de supprimer tous les composants masqués pour toutes les définitions présentes dans les meubles IKEA ?

                L'idéal serait de na pas avoir à citer toutes les définitions existant dans les meubles IKEA.

                Merci**

                [b:8wt9py2i]* Nouveau !!![/b:8wt9py2i] Découvrez notre nouveau Plugin [url=http://www.composant-dynamique.com/:8wt9py2i][color=#40FF00:8wt9py2i]C[/color:8wt9py2i][color=#77FF00:8wt9py2i]l[/color:8wt9py2i][color=#ADFF00:8wt9py2i]i[/color:8wt9py2i][color=#E4FF00:8wt9py2i]c[/color:8wt9py2i][color=#FFDB09:8wt9py2i]k[/color:8wt9py2i][color=#FF921B:8wt9py2i]-[/color:8wt9py2i][color=#FF492E:8wt9py2i]C[/color:8wt9py2i][color=#FF0040:8wt9py2i]u[/color:8wt9py2i][color=#ED2577:8wt9py2i]i[/color:8wt9py2i][color=#DA49AD:8wt9py2i]s[/color:8wt9py2i][color=#C86EE4:8wt9py2i]i[/color:8wt9py2i][color=#AD77FF:8wt9py2i]n[/color:8wt9py2i][color=#8965FF:8wt9py2i]e[/color:8wt9py2i] [color=#4040FF:8wt9py2i]2[/color:8wt9py2i][/url:8wt9py2i], pour créer vos cuisines 3D !

                1 Reply Last reply Reply Quote 0
                • TNTDAVIDT Offline
                  TNTDAVID
                  last edited by

                  **Little reminder:

                  It is possible to remove all hidden components of a SketchUp file, with this method:

                  Sketchup.active_model.definitions.each{|d|d.entities.grep(Sketchup;;ComponentInstance).each{|e|e.erase! if e.hidden?}}
                  

                  It is possible to remove all hidden components with the name of a definition, with this method:

                  Sketchup.active_model.definitions.each{|d|next unless d.name=~/IKEA/; d.entities.grep(Sketchup;;ComponentInstance).each{|e|e.erase! if e.hidden?}}
                  

                  How to remove all hidden components and sub-components in a selection?

                  Thank you

                  David**

                  [b:8wt9py2i]* Nouveau !!![/b:8wt9py2i] Découvrez notre nouveau Plugin [url=http://www.composant-dynamique.com/:8wt9py2i][color=#40FF00:8wt9py2i]C[/color:8wt9py2i][color=#77FF00:8wt9py2i]l[/color:8wt9py2i][color=#ADFF00:8wt9py2i]i[/color:8wt9py2i][color=#E4FF00:8wt9py2i]c[/color:8wt9py2i][color=#FFDB09:8wt9py2i]k[/color:8wt9py2i][color=#FF921B:8wt9py2i]-[/color:8wt9py2i][color=#FF492E:8wt9py2i]C[/color:8wt9py2i][color=#FF0040:8wt9py2i]u[/color:8wt9py2i][color=#ED2577:8wt9py2i]i[/color:8wt9py2i][color=#DA49AD:8wt9py2i]s[/color:8wt9py2i][color=#C86EE4:8wt9py2i]i[/color:8wt9py2i][color=#AD77FF:8wt9py2i]n[/color:8wt9py2i][color=#8965FF:8wt9py2i]e[/color:8wt9py2i] [color=#4040FF:8wt9py2i]2[/color:8wt9py2i][/url:8wt9py2i], pour créer vos cuisines 3D !

                  1 Reply Last reply Reply Quote 0
                  • TNTDAVIDT Offline
                    TNTDAVID
                    last edited by

                    **I finally found how to remove hidden sub-components from a selection:

                    mod = Sketchup.active_model
                    sel = mod.selection
                    sel.grep(Sketchup;;ComponentInstance).each{|s|;
                    s.definition.entities.grep(Sketchup;;ComponentInstance).each{|e|e.erase! if e.hidden?}}
                    

                    The problem is that only the first level of nesting is removed by the method.

                    I will continue to search in esperente found the solution.

                    See you

                    David**

                    [b:8wt9py2i]* Nouveau !!![/b:8wt9py2i] Découvrez notre nouveau Plugin [url=http://www.composant-dynamique.com/:8wt9py2i][color=#40FF00:8wt9py2i]C[/color:8wt9py2i][color=#77FF00:8wt9py2i]l[/color:8wt9py2i][color=#ADFF00:8wt9py2i]i[/color:8wt9py2i][color=#E4FF00:8wt9py2i]c[/color:8wt9py2i][color=#FFDB09:8wt9py2i]k[/color:8wt9py2i][color=#FF921B:8wt9py2i]-[/color:8wt9py2i][color=#FF492E:8wt9py2i]C[/color:8wt9py2i][color=#FF0040:8wt9py2i]u[/color:8wt9py2i][color=#ED2577:8wt9py2i]i[/color:8wt9py2i][color=#DA49AD:8wt9py2i]s[/color:8wt9py2i][color=#C86EE4:8wt9py2i]i[/color:8wt9py2i][color=#AD77FF:8wt9py2i]n[/color:8wt9py2i][color=#8965FF:8wt9py2i]e[/color:8wt9py2i] [color=#4040FF:8wt9py2i]2[/color:8wt9py2i][/url:8wt9py2i], pour créer vos cuisines 3D !

                    1 Reply Last reply Reply Quote 0
                    • TNTDAVIDT Offline
                      TNTDAVID
                      last edited by

                      **I can select all the definitions by their names and apply a cleaning of hidden components:

                      
                      def methode1 ### select components and sub-components with the name of the definitions.	
                          ["IKEA","DOOR","DRAWER","HANDLES"].each{|name|
                          match = /#{name}/i	
                          m=Sketchup.active_model;
                          s=m.selection;
                          m.definitions.each{|d|s.add d.instances if d.name =~ match }}
                          end	
                      	
                      def methode2 ### remove hidden components in the selection		
                          Sketchup.active_model.selection.grep(Sketchup;;ComponentInstance).each{|s|
                          s.definition.entities.grep(Sketchup;;ComponentInstance).each{|e|e.erase! if e.hidden?}}
                          end
                      		
                      def methode_end 
                          methode1
                          methode2	
                          end
                      

                      I'm progressing but this solution is not great. 😕

                      Any help would be highly appreciated.**

                      [b:8wt9py2i]* Nouveau !!![/b:8wt9py2i] Découvrez notre nouveau Plugin [url=http://www.composant-dynamique.com/:8wt9py2i][color=#40FF00:8wt9py2i]C[/color:8wt9py2i][color=#77FF00:8wt9py2i]l[/color:8wt9py2i][color=#ADFF00:8wt9py2i]i[/color:8wt9py2i][color=#E4FF00:8wt9py2i]c[/color:8wt9py2i][color=#FFDB09:8wt9py2i]k[/color:8wt9py2i][color=#FF921B:8wt9py2i]-[/color:8wt9py2i][color=#FF492E:8wt9py2i]C[/color:8wt9py2i][color=#FF0040:8wt9py2i]u[/color:8wt9py2i][color=#ED2577:8wt9py2i]i[/color:8wt9py2i][color=#DA49AD:8wt9py2i]s[/color:8wt9py2i][color=#C86EE4:8wt9py2i]i[/color:8wt9py2i][color=#AD77FF:8wt9py2i]n[/color:8wt9py2i][color=#8965FF:8wt9py2i]e[/color:8wt9py2i] [color=#4040FF:8wt9py2i]2[/color:8wt9py2i][/url:8wt9py2i], pour créer vos cuisines 3D !

                      1 Reply Last reply Reply Quote 0
                      • TNTDAVIDT Offline
                        TNTDAVID
                        last edited by

                        **They always told me to be persistent and I thank all those who gave me this advice. 😄

                        Here is the method to remove all hidden sub-components in a parent component:

                        
                        def supprimer_tous_les_sous_composants_selection(instance)
                            children = instance.definition.entities.select { |e| e.respond_to?(;definition) }
                            children.each { |c| supprimer_tous_les_sous_composants_selection(c);
                            c.erase! if c.hidden?
                            }
                            end
                        	
                            supprimer_tous_les_sous_composants_selection(Sketchup.active_model.selection.first)
                        

                        Here is the method to remove all the dynamic attributes of all the components present in a selection:

                        
                        def selectionner_tous_les_sous_composants_selection(instance)
                            children = instance.definition.entities.select { |e| e.respond_to?(;definition) }
                            instance.model.selection.add(children)
                            children.each { |c| selectionner_tous_les_sous_composants_selection(c);
                            }
                            end	
                        	
                        def supprimer_tous_les_attributs_dynamiques_selection
                            mod = Sketchup.active_model
                            sel = mod.selection
                            sel.each{|s|s.definition.attribute_dictionaries.delete("dynamic_attributes");
                          sel.grep(Sketchup;;ComponentInstance).each{|i|i.attribute_dictionaries.delete("dynamic_attributes")}}
                            end	
                        	
                        def desactiver_toutes_les_selections
                            mod = Sketchup.active_model
                            ent = mod.active_entities
                            sel = mod.selection
                            instances = sel.grep(Sketchup;;ComponentInstance)
                            sel.clear
                            end		
                        	
                        selectionner_tous_les_sous_composants_selection(Sketchup.active_model.selection.first)
                        supprimer_tous_les_attributs_dynamiques_selection
                        desactiver_toutes_les_selections
                        
                        

                        You can test these methods directly with the ruby console, after selecting a dynamic component.

                        You will notice that all hidden components and dynamic attributes will be removed, even if they are nested at multiple levels.

                        Thank you to everyone who helped me. 😉

                        See you

                        David**

                        [b:8wt9py2i]* Nouveau !!![/b:8wt9py2i] Découvrez notre nouveau Plugin [url=http://www.composant-dynamique.com/:8wt9py2i][color=#40FF00:8wt9py2i]C[/color:8wt9py2i][color=#77FF00:8wt9py2i]l[/color:8wt9py2i][color=#ADFF00:8wt9py2i]i[/color:8wt9py2i][color=#E4FF00:8wt9py2i]c[/color:8wt9py2i][color=#FFDB09:8wt9py2i]k[/color:8wt9py2i][color=#FF921B:8wt9py2i]-[/color:8wt9py2i][color=#FF492E:8wt9py2i]C[/color:8wt9py2i][color=#FF0040:8wt9py2i]u[/color:8wt9py2i][color=#ED2577:8wt9py2i]i[/color:8wt9py2i][color=#DA49AD:8wt9py2i]s[/color:8wt9py2i][color=#C86EE4:8wt9py2i]i[/color:8wt9py2i][color=#AD77FF:8wt9py2i]n[/color:8wt9py2i][color=#8965FF:8wt9py2i]e[/color:8wt9py2i] [color=#4040FF:8wt9py2i]2[/color:8wt9py2i][/url:8wt9py2i], pour créer vos cuisines 3D !

                        1 Reply Last reply Reply Quote 0
                        • 1 / 1
                        • First post
                          Last post
                        Buy SketchPlus
                        Buy SUbD
                        Buy WrapR
                        Buy eBook
                        Buy Modelur
                        Buy Vertex Tools
                        Buy SketchCuisine
                        Buy FormFonts

                        Advertisement