sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    [Plugin] Component/group tools

    Scheduled Pinned Locked Moved Plugins
    30 Posts 16 Posters 44.9k Views 16 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.
    • Chris FullmerC Offline
      Chris Fullmer
      last edited by

      I looked over his code and there seems to be an error that pops up when you only have groups selected. Try running the script with always a non-group in the selection - like just draw a line and then select it along with the groups, then run the script. I think that will by pass the problems.

      Chris

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

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

        @chris fullmer said:

        I looked over his code and there seems to be an error that pops up whn you only have groups selected. Try running the script wil always a non-group in the selection - like just draw a line and then select it along with the groups, then run the script. I think that will by pass the problems.

        Chris

        Thanks, nothing to it when you know what you are doing ☀
        BTW the line gets converted to component also ❓

        1 Reply Last reply Reply Quote 0
        • brookefoxB Offline
          brookefox
          last edited by

          The utility of this script is beyond me. I will keep my head down in hopes that someone will post some uses.

          ~ Brooke

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

            @brookefox said:

            The utility of this script is beyond me. I will keep my head down in hopes that someone will post some uses.

            Very simple at least for me. A post in the Sketchup help forum having problems with file size had numerous groups with the same geo.( An example is shown in the ref test file I included with my post.) has a file size of ~930KB. If one converts to components, then uses the browser "replace selected" capability that goes down to around ~70KB. A significant reduction in my mind. If one looks at the model info stats report the edges and faces don't change that much. It was my feeble attempt to understand the imapct of max use of components which is often stated but not quantified. ❓ BTW I will on occasion place a very simple component in my model(s), have even used a line ( not a good idea), then recognizing a components definition is invariant under move, scale and rotation one can latter replace with a complex model which gets added to the model at the scale, location and rotation of the simple model( need to pay attention to your component axis)

            1 Reply Last reply Reply Quote 0
            • brookefoxB Offline
              brookefox
              last edited by

              Thanks for yor response. This use I get but for it I don't need this plugin:
              @unknownuser said:

              problems with file size had numerous groups with the same geo.
              One can make components out of groups and instances of groups this with native SU.

              It's the making of components out of lines that I don't get much of.

              So for your 'simple' best use you would have a lot of lines in your models which are not parts of components, and making them components with this would reduce your file size. OK. I do have a lot of groups which are not components, but next to no lines which are not parts of groups or components. For me the crux is when and what groups to componetize, just because it take time, even if it saves file space. Certainly if I have many of said group or I want component behavior from a group it would be best componentized, I don't need a plugin to do that. Rereading the thread I see the use implied of maybe wanting to populate a model with lines, componetize them and then subsequently edit the component which would then be in place wherever the lines were. If I can do this now with two lines instead of one, that is sufficient for me.

              ~ Brooke

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

                @brookefox said:

                Thanks for yor response. This use I get but for it I don't need this plugin:
                @unknownuser said:

                problems with file size had numerous groups with the same geo.
                One can make components out of groups and instances of groups this with native SU.

                It's the making of components out of lines that I don't get much of.

                So for your 'simple' best use you would have a lot of lines in your models which are not parts of components, and making them components with this would reduce your file size. OK. I do have a lot of groups which are not components, but next to no lines which are not parts of groups or components. For me the crux is when and what groups to componetize, just because it take time, even if it saves file space. Certainly if I have many of said group or I want component behavior from a group it would be best componentized, I don't need a plugin to do that. Rereading the thread I see the use implied of maybe wanting to populate a model with lines, componetize them and then subsequently edit the component which would then be in place wherever the lines were. If I can do this now with two lines instead of one, that is sufficient for me.

                Glad you are happy with what you have that is what is important. The plugin is just another wrench in the tool box.
                You are correct SU has that native capability but what are you going to do if you have say a 100 groups and identical. The native tool will make a component out of all of them but the reduction of file size doing that will be nil.
                My test case was not suppose to be a global analysis of a model having a mix of various entities and was meant to show what poor modeling practice can cost one. The model has 33 groups and nested in each of those is three groups( all identical) and some other simple entities a really a simple model. If you examine one of those and expolde the component the change in file size is nil so the the message is use components but having a bunch of nested groups in the components does not help much
                Gday

                1 Reply Last reply Reply Quote 0
                • artmusicstudioA Offline
                  artmusicstudio
                  last edited by

                  hello,
                  i went thru all topics dealing with component naming,
                  but i cannot find a solution.

                  i would like to give a name to a created component by this code:

                  ######## start code

                  model = Sketchup.active_model
                  entities = model.active_entities
                  rl1 = [0, y1, 0]
                  rl2 = [0, y2, z]
                  group = entities.add_group
                  entities2 = group.entities
                  new_line = entities2.add_line rl1, rl2
                  length = new_line.length

                         centerpoint = rl1
                                                    # Create a circle perpendicular to the normal or Z axis
                         vector = rl2
                         vector2 = vector.normalize!
                     
                         edges = entities2.add_circle centerpoint, vector2, $thradius
                      
                         kreis = entities2.add_face edges
                         kreis.pushpull -(5/$faktor)/100
                      
                     $masterrailingtms = group.to_component      
                     # HERE I WOULD LIKE TO DEFINE A NAME FOR THIS NEW COMPONENT, WHICH I CAN SEE IN IN SKP ENTITY-INORMATION-WINDOW. this name also hopefully appears in the copied instances of this component, but most important is the name for component [0]
                  

                  ######## end code

                  can somebody help me?
                  thanx
                  stan

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

                    Your
                    xxxx = group.to_component
                    refers to an component-instance NOT a component-definition: so to find the instance's definition use:
                    defn = xxx.definition
                    then rename it thus:
                    defn.name = "foo_fighter"
                    Be aware if there is already a 'foo_fighter' definition it'll become 'foo_fighter#1' etc

                    PS: don't use global $var variables which will potentially clash with others tools - wrap your code in your own module and use @var instead.

                    TIG

                    1 Reply Last reply Reply Quote 0
                    • artmusicstudioA Offline
                      artmusicstudio
                      last edited by

                      hi tig, thanx,
                      this work well, one step further for me, now i can identify the "children" of the masters exactly. that's perfect.
                      just to understand exactly:
                      a name of component instance defined by this method appears in the field "description"

                      a group named by group.name = "xxx" appears in the filed "name"

                      is there also a way to NAME a component or its instance besides a description?

                      thanx
                      stan

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

                        Both components and groups [and also images for that matter] that you see placed inside a model are instances of their 'definition'.

                        Every 'definition' has a unique definition.name - this can be reset provided it is unique - if 'xxx' is already used SketchUp auto-increments the name as 'xxx#1' etc.
                        For a component that is the 'Definition Name' displayed in Entity Info, the Component-Browser's top-most field, and in the Outliner as <defname>.
                        A component-instance can also have a instance.name this the 'Name' displayed in Entity Info, and in the Outliner as name<defname>. This need not be assigned and it does not need to be unique.
                        You can find defn = instance.definition etc.

                        A group also has a unique definition.name that is usually hidden from the user - something like ' Group#99'. You can change this through the API to another unique definition.name - but for what purpose?
                        There is also group.name - akin to the instance.name. This need not be assigned and it does not need to be unique. This is the 'Name' displayed in Entity Info and in the Outliner [if the Name=='' then the Outliner says 'Group']
                        You cannot directly find a group.definition in the API, BUT defn = group.entities.parent should return its definition.

                        The definition.description can be assigned and for a component appears this in the second-from-top field in the Component-Browser.
                        Although you can assign a definition.description to a group it is not seen anywhere by a user - it is only accessible through the API.

                        When you convert a group to a component the name of the component definition is taken as the group's definition.name [e.g. ' Group#666'] NOT the group.name.
                        What is returned by the group's conversion to a component is an instance NOT a definition, so to find the definition itself use the code given in the earlier reply. Then you can use defn.name='xxxx' as desired...

                        TIG

                        1 Reply Last reply Reply Quote 0
                        • plot-parisP Offline
                          plot-paris
                          last edited by

                          is there a Version that works with SketchUp 2016?

                          Bulk conversion of components to groups doesn't seem to be working (and is sorely needed when importing a 3ds-model, where every object is a component)

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

                            Is there any news as to whether this plugin will be updated to SketchUp 2017 as it looks a really useful plugin, or is there a similar plugin out there to use.

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

                              @plot-paris said:

                              Bulk conversion of components to groups doesn't seem to be working (and is sorely needed when importing a 3ds-model, where every object is a component)

                              Here is a code snippet you can try. Paste it into the Ruby Console and press Enter. It will convert all Component instances in the selection to a group.

                              @mod = Sketchup.active_model
                              @ent = @mod.active_entities
                              @sel = @mod.selection
                              @vue = @mod.active_view
                              cmps = @sel.grep(Sketchup;;ComponentInstance)
                              cmps.each{|ci|
                               grp = @ent.add_group(ci)
                               grp.name = ci.definition.name
                               ci.explode
                              }
                              @mod.definitions.purge_unused
                              
                              

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

                              http://sdmitch.blogspot.com/

                              1 Reply Last reply Reply Quote 0
                              • BoxB Offline
                                Box
                                last edited by

                                Hopefully Plot will enjoy your post even though it is 1 year later.

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

                                  @box said:

                                  Hopefully Plot will enjoy your post even though it is 1 year later.

                                  DOH!!!

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

                                  http://sdmitch.blogspot.com/

                                  1 Reply Last reply Reply Quote 0
                                  • F Offline
                                    faust07
                                    last edited by

                                    Thanks sdmitch, used your code snippet to convert components to groups for MSPhysics. The reason is that MSP does not accept components for coupling with joints. The conversion of about 200 components with subcomponents into groups would have taken a long time...

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

                                    Advertisement