Change Instance Name of a copied Component’s SubComponent

I have drawn a Main-cube and then created a Component of it. Then inside this Component I draw a smaller Cube on top of the Main-cube, and made it to a SubComponent.

The Original Main Component (which consist of the Main-cube) has a

Definition Name: “Box 1”

and an

Instance Name: “Left_Box1”.

The Original SubComponent (the smaller Cube on top of the Main-cube) has a

  • Definition Name: “TopBox_Box1”

  • Instance Name: “Left_TopBox_Box1”.

Then, I made a copy of the Main Component (which includes its SubComponent) using the Move/Copy Tool.

If I now wan’t to change the Copied Main Component’s Instance Name in the Entity Info Window/Tray to

  • Instance Name: “Right_Box1”

that works perfectly fine.

But the problem comes when I want to change the Copied SubComponent’s Instance Name.

If I change its Instance Name then the Instance Name of the Original SubComponent will also be changed to whatever Instance Name was entered for the Copied SubComponent. The opposite is also true, whatever Instance Name I enter for the Original SubComponent, will also be applied as Instance Name of the Copied SubComponent.

If I select either the Original or Copied Subcomponent in the Outliner, its corresponding Orignal or Copy also get selected. If I changes the Instance Name here, the same thing occurs.

Can’t a copied Component’s SubComponent be given an individual Instance Name without affecting the Instance Name of the Orignal SubComponent and vice versa?

Thanks in Advance!

No, unless you Make Unique the main component copy. Then you CAN change the Instance name of the small component inside it.

Remember, the Component Definition for a copied component is IDENTICAL to the original, unless you make it unique, except for the instance name. And for a subcomponent, unless you make its parent unique, it will inherit its instance name from the parent copy’s original subcomponent.

2 Likes

The details of how components work are a bit technical and therefore lead a lot of non-techies to confusion. So here’s more discussion that expands on what @john_mcclenahan wrote

A Component really has two aspects:

  • a Component Definition.
  • zero or more Component Instances.

A Component Definition contains the specifications for how to create an instance the component; what to put into it. It has no existence in the model space; it is like a set of instructions for making something rather than the thing itself. The definition is really what you are dealing with when you open the Components Window. When you drag a component onto the model space from the Components Window, you are telling SketchUp “make a new Component Instance using the specs in this Component Definition”.

A Component Instance is a concrete object in the model, created according to the specifications in the corresponding Component Definition. A Component Instance remains tied to its Component Definition.

A potentially confusing aspect is that when you open a Component for edit, you do so via a Component Instance in the model but what you are really editing are the specifications in the associated Component Definition. That’s how any change immediately propagates to all the other Component Instances. They are rebuilt according to the new specs.

So, getting back to the original question, when you open your component for edit and rename the nested object, you are changing that object’s name in the Component Definition’s specifications. Same as if you added a new line or painted a face with a new color. SketchUp says “oh, all the other instances must be redone to match this change”. They all get the same name on the nested object because they were all (re)built using the same instructions.

5 Likes

Thanks @john_mcclenahan and @slbaumgartner. So I think I got it. A nested Component’s properties including its Instance Name, are instructions which belong to the Parent Component’s Definition . So therefore nested components (or subcomponents) can’t have an unique Instance Name, unless you make its parent unique.

I will ponder and experiment a bit more on the wisdom you have been given me (to see how it can be applied in my project). Thanks again! :slightly_smiling_face:

1 Like

Can you change the name in the Outliner of each copy of a component?

Yes, just double click and type the instance name without the definition, that is added automatically and placed within the <brackets>

@MikeWayzovski already told you how. Just to clarify: both the Component Definition and each Component Instance have a name property. The name on the Component Definition, like the Component Definition itself, is the same for all instances. The name on a Component Instance is private to just that instance.

But again, if the instance is nested inside a containing component, that instance name will propagate to all the other instances of the container too. The Component Definition is the same, so its specs for its contents are the same for all its instances.

You might want to open the entity panel, as well.
There, you have Advanced Attributes, from which two of them belong to the instance and three to the definition.

You can (off course!!) set the first three to the definition (all instances inherit those)
But the ‘Owner’ and ‘Status’ can be assigned to each instance ( at the same time if necessary)