Wish for Blocks: Add Attributes independent from the geometry?

Hi all, has anyone encountered a workaround of putting Block Attributes such that it is wholly separate from the group of geometries inside it. Whenever I try to use Attribute User Text for this, It won’t propagate to all the Instances which forces me to manually copy the block several times.

As shown, B1 to B3 are all instances of a Block Definition. What I wish to achieve is if I give the main Block Definition some attributes, I want it to propagate to all Instances. I believe this can only be done within the actual geometry of the Block. I want to do this at a base level.

Hi -
The user text can only be stored either in the block definition (and then it needs to be on the geometry) or on the block instance. It can’t be any other way.

As with regular objects (i.e. not blocks), you can use the Match button on the Attribute User Text panel to copy attributes to other instances.

Thank you for responding, Wim. Can this be added in the future? I think it would be helpful to create an independent attribute for Block. For example, if I have a block containing other objects with attributes: name, area, volume etc. I want to have the option to create an attribute that can sum or represent up all the individual geometries. Maybe this can be done by adding a checkbox option to lock attributes to a certain block? When it’s checked and if you edit the attributes of the block, it changes all the other attributes, but when it’s unchecked It only changes the selected Block’s Attributes

Hi -

No. It’s not possible. You need to store the attributes on something. You can store it on the document, on a layout, on a detail, on a layer, on an object, or on an instance. You can’t store it on nothing. For blocks, this means that you either store it on the geometry in the definition or on the instance.

I’m not saying to store it on nothing, obviously. I’m saying that if we can put Attributes per Instance right now, why can’t there be an option to propagate to all instances?

Hi -

That option is the Match button. Instances don’t know about the existence of other instances. It’s the definition that knows about that, and the definition that can propagate information. But the attributes aren’t stored there.

Ok Wim, thank you.

As an alternative, have you considered using some sort of Grasshopper dynamic-pipeline to reference all the instances of the block and then collectively modifying their attributes so they’re uniform? You could do this with the Elefront plugin, although it really depends what you’re trying to achieve.

Yes, luke. I see it being problematic. I just decided to create an attribute holder for my block via a Point so I can separate the Block Attribute from the Geometry Attributes. It solves my problem but again it’s slightly more inefficient for I must include a Point in every Block I create. It’s sad because Attribute User Text is already halfway there, one only needs an option to propagate it. Wim said to use the Match command, which is fine and all but it’s still better if it’s automatic.

You could probably create a rhino-script to propagate the attributes yourself. A quick search turned up this: Matching Object Attributes [McNeel Wiki], which might be the beginnings of what you’re looking for?

Yeah. It’s really annoying that Mcneel can’t just create an option for a Block attribute that is common to all identical instances. I had to create a Point object just to hold the common attributes. That’s really what I’m asking for, a common attribute for Block instances of the same type. @mcneel

Hi -

Can you provide a specific example of the situation in which you are trying to use this?
That would probably help to find a solution to this problem.

An attribute point in the block is what i came up with also, easily filtered out by layer or type.

Thank you, Wim. I’ve uploaded a file below showing my example. What I’m asking for is similar to Revit. In Revit , Attributes are called parameters and it has 2 types: Type Parameter & Instance Parameter. Type Parameters are inherent to all Instances of a definition. If I change one value in one Instance, it changes for all others. Instance Parameters on the other hand are Parameters/Attributes that can be changed at an Instance level without changing all other Instances; for example, the Instance Count or it could be anything that distinguishes that particular Instance to all other Instance. The current Rhino User Attribute Text is basically an Instance Parameter. I’m just requesting for a Type Parameter.

Paneling Script Playtest 2.3dm (5.5 MB)