Attribute/variable scope in dynamic components

For a dynamic component I am passing Options/attributes to the groups or components in the dynamic component. Frequently I would like these components to have sub-components inside of them. Passing the attributes to them is a pain and if it goes another layer it is really a big pain.
I wish there were some way to declare an attribute to be global so that all sub-components had access to it.
Does anyone know any kind of work around for this?

Often I make a small dynamic component, for example a door.
Then I want to use it inside of a larger dynamic component that has for example a door jamb.
However, I can’t just include the door because I haven’t found any effective way to transfer the attributes (which were set up for the Options window of the original door).
Also, I want to be sure to keep the door as a separate component because I may want to animate it (and not the jamb).

Anyone have solutions for this?

I’m also interested to know if it is possible to create “global” attributes of the component, that could be accessed by any descendants (without having to create the attribute to all the ancestors of the components from the user to the outermost “ancestor” that declares the “global” attribute). This is useful, because a all my internal components of specific type seed couple of constants defined in the outmost component. Creating the attributes is to the all components in between is not just time-consuming, but makes my model also more fragile: when i wrap some child-components into separate component, things break due to invalid attribute references :S

Same problem here! And I’m a little stunned that there’s still no easy way of doing this in SketchUp, except by making multiple links up and down through the levels (which is a pain!).

I’m thinking that this functionality could be implemented fairly easily. For example, since the “!” symbol already indicates the name of a level that is one step up or down in the hierarchy, then maybe doing that double, as “!!” could indicate a global attribute. So for example “Frame!Width” would indicate the width attribute defined on the layer called “frame” that is one level higher or lower, but “!!Width” would refer to the attribute called “Width” defined on the highest level. And since there is no layer name included here, the component would then be “portable”, and could easily be inserted into any other component that happened to have an attribute called “Width” at the highest level.

Right now I’m working on a complex acoustic isolation door that has up to six levels of dynamic components, with up to a dozen attributes on each level, many of which actually refer back to the top level. It’s a real pain to have to define each one of those on every single level, using “parent!”. It works, but I’m spending a lot more time just on defining and checking the chains of attributes going up and down, than I am on actually designing the door!

I have a slightly different situation but one that would benefit from a global attribute that runs throughout the sketchup model.

I design and model in millimetres, but have the need for layout to dynamically label zones of the model in square metres. This is particularly important in the early stages of an architectural project. I do this by creating dynamic components in sketchup with a variable called “Area” that is defined as =ROUND(FACEAREA()/22.542.54/10000,Decimal), where decimal is the number of decimal places in the square metre area (eg: 710 is a variable of 0, 710.4 is a variable of 1). So far so good.


The limitation of this approach is that often stakeholders in the project wish to show different levels of accuracy for the area of the zones, and this often changes throughout the the project. This requires me to adjacent the decimal variable in each zone, one by one, when what I really would like to do is change a single variable globally.

Any thoughts or suggestions?

The Dynamic Components range is set by its context: see this thread:

which has a link to the:

The trick is to create a ‘swatch’ or dummy component with the right attribute…

you might also check this (Dutch):