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!
    πŸ«› Lightbeans Update | Metallic and Roughness auto-applied in SketchUp 2025+ Download

    Kill dynamic components?

    Scheduled Pinned Locked Moved SketchUp Discussions
    sketchup
    14 Posts 9 Posters 4.0k Views 9 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.
    • J Offline
      Jim
      last edited by

      I have a plugin that can "strip DC attributes", optionally delete sub-components which are hidden, and reset the scale mask. I wrote it for a business that uses DC's internally but wanted to protect their IP and reduce file size before making their models public. I have been meaning to get it posted.

      Hi

      1 Reply Last reply Reply Quote 0
      • AnssiA Offline
        Anssi
        last edited by

        How about exploding and immediately creating a new component?

        Another way is to insert the DC in a new model, save it and import that. The DC attributes won't be usable until you explode the component once. Exploiting a common error with DCs.

        Anssi

        securi adversus homines, securi adversus deos rem difficillimam adsecuti sunt, ut illis ne voto quidem opus esset

        1 Reply Last reply Reply Quote 0
        • M Offline
          Marron
          last edited by

          @jim said:

          I have a plugin that can "strip DC attributes", optionally delete sub-components which are hidden, and reset the scale mask. I wrote it for a business that uses DC's internally but wanted to protect their IP and reduce file size before making their models public. I have been meaning to get it posted.

          I'm very interested, could you send it to me in some way? πŸ˜ƒ

          1 Reply Last reply Reply Quote 0
          • M Offline
            Marron
            last edited by

            @tig said:

            This one-liner copy+paste+<enter> in the Ruby Console will stop a selected DC from being dynamic

            Sketchup.active_model.selection[0].definition.attribute_dictionaries.delete('dynamic_attributes')
            

            use wisely... 😲

            Hm, yes it worked. But I want to keep the groups in the component. Now I get the same problem as when exploding the component as many times as possible and then making a new component.
            Thanks anyway πŸ˜ƒ

            1 Reply Last reply Reply Quote 0
            • Chris FullmerC Offline
              Chris Fullmer
              last edited by

              You asked to "kill dynamic components" - thats what his one line script does.

              So what do you REALLY want to do?

              Lately you've been tan, suspicious for the winter.
              All my Plugins I've written

              1 Reply Last reply Reply Quote 0
              • M Offline
                Marron
                last edited by

                @chris fullmer said:

                You asked to "kill dynamic components" - thats what his one line script does.

                So what do you REALLY want to do?

                In my first post I wrote: "I want to keep the groups of the object that the dynamic component exists of, but clear all settings."

                I just want the component attributes to be cleared. But I want to keep the groups in the component.

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

                  Sketchup.active_model.selection[0].definition.attribute_dictionaries.delete('dynamic_attributes')
                  

                  just stops the selected DC from being a DC!
                  If you have nested DC's within a DC you'll need to run the tool recursively like this

                  def dck(c);c.definition.attribute_dictionaries.delete('dynamic_attributes');c.entities.each{|e|dck(e)if e.class==Sketchup;;ComponentInstance};end;dck(Sketchup.active_model.selection[0])if e.class==Sketchup;;ComponentInstance
                  

                  where the method 'dck' is the 'dc_killer' applied to a selected component AND all of its nested DCs down to any depth... use with care

                  TIG

                  1 Reply Last reply Reply Quote 0
                  • S Offline
                    skavan
                    last edited by

                    @jim said:

                    I have a plugin that can "strip DC attributes", optionally delete sub-components which are hidden, and reset the scale mask. I wrote it for a business that uses DC's internally but wanted to protect their IP and reduce file size before making their models public. I have been meaning to get it posted.

                    Hi, I know this was a while ago - but any chance I could snag the plugin you reference? Thanks.

                    s.

                    1 Reply Last reply Reply Quote 0
                    • S Offline
                      skavan
                      last edited by

                      @tig said:

                      Sketchup.active_model.selection[0].definition.attribute_dictionaries.delete('dynamic_attributes')
                      

                      just stops the selected DC from being a DC!

                      If you have nested DC's within a DC you'll need to run the tool recursively like this

                      def dck(c);c.definition.attribute_dictionaries.delete('dynamic_attributes');c.entities.each{|e|dck(e)if e.class==Sketchup;;ComponentInstance};end;dck(Sketchup.active_model.selection[0])if e.class==Sketchup;;ComponentInstance
                      

                      where the method 'dck' is the 'dc_killer' applied to a selected component AND all of its nested DCs down to any depth... use with care

                      I tried pasting this into the ruby editor - but it didn't work 😞

                      "Error: #<NameError: undefined local variable or method `e' for main:Object>"

                      I'm in SU15. The single line top-level version did work....but I'm really trying to zap the tree.

                      s.

                      1 Reply Last reply Reply Quote 0
                      • halroachH Offline
                        halroach
                        last edited by

                        @skavan said:

                        I tried pasting this into the ruby editor - but it didn't work 😞

                        "Error: #<NameError: undefined local variable or method `e' for main:Object>"

                        I'm in SU15. The single line top-level version did work....but I'm really trying to zap the tree.

                        s.

                        I'm getting the same error. Ideas?

                        FlexTools - Super Quick Windows, Doors, Slats...

                        1 Reply Last reply Reply Quote 0
                        • sdmitchS Offline
                          sdmitch
                          last edited by

                          @halroach said:

                          @skavan said:

                          I tried pasting this into the ruby editor - but it didn't work 😞

                          "Error: #<NameError: undefined local variable or method `e' for main:Object>"

                          I'm in SU15. The single line top-level version did work....but I'm really trying to zap the tree.

                          s.

                          I'm getting the same error. Ideas?

                          Try

                          def dck(c);c.definition.attribute_dictionaries.delete('dynamic_attributes');c.definition.entities.each{|e|dck(e)if e.class==Sketchup;;ComponentInstance};end;dck(Sketchup.active_model.selection[0])
                          

                          after selecting the dynamic component.

                          Nothing is worthless, it can always be used as a bad example.

                          http://sdmitch.blogspot.com/

                          1 Reply Last reply Reply Quote 0
                          • O Offline
                            Oly80
                            last edited by

                            I'm not sure what other aspects of sketchup may be lost?...But saving as sketchup version 6 or below removes dynamic attributes, retaining the component and sub components.

                            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