[Plugin] Component/group tools
-
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.lengthcenterpoint = 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 -
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' etcPS: don't use global $var variables which will potentially clash with others tools - wrap your code in your own module and use @var instead.
-
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 -
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 ainstance.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 finddefn = 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 alsogroup.name
- akin to theinstance.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 agroup.definition
in the API, BUTdefn = 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 adefinition.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 thegroup.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 usedefn.name='xxxx'
as desired... -
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)
-
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.
-
@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
-
Hopefully Plot will enjoy your post even though it is 1 year later.
-
-
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...
Advertisement