In a project environment, is it not possible to change material of the shared nested child using the OOTB Element.SetParameterByName? or is this node only meant for Instance Parameters in Parent Family
I tried both type and instance as well as associated & non-associated to a parameter in the parent family … the result always
• “Parameter is a read only” when the Material in the child is set to instance
• "No Parameter found by that name” when the Material in the child is set to type
Generally speaking nested families need to have their parameterization controlled by the parent. When you think about it in terms of the information model this makes sense: the child is a part of the parent and lives in that location (shared or not), and as such you have to drive it from there.
The relationships of these values are fairly easy to set up on the front end when planning and building your families.
In principle you are right but I am just trying to explore and figure out the usefulness of the OOTB node SetParameterByName. It somehow seems to be only limited to Instance Parameters in the Parent.
That’s a Revit limitation, not a Dynamo one. Shared families usually have read-only instance parameters. This is why Jacob is saying they would be controlled by the parent family. The type parameters of a shared family are still accessible though. You would be able to modify them with SetParameterByName.
Well im not sure it is a Revit limitation, it seemed more like a limitation of the OOTB nodes in Dynamo. If I am not mistaken some custom nodes are able to get and set an instance parameter in a shared nested child (As long as it is not associated to the parent). We have some families where the nested components are associated to a family type parameter only. It is those families which I was trying to play around with.
As I said, it depends on the parameters and the family setup. We’re only guessing without seeing your families. If you could share one that would be helpful.
Sadly I cannot attach the families but I have recreated a simple version and attaching herewith. The context is s follows:
The model and families aren’t ours, they are from a consultant (Fitouts and ID). They modeled the families (majority of them) Parent + nested (3 to 12 instances per family). The children has Dimensions as type and Material as instance (not associated to parent). They (the children) are nested into their parents and associate with a Family Type Parameter.
Reason for the original question was 1. there is a slight mess of material (in general) which we tried to ignore at first maybe it goes away then came reason 2. the owner requested to unify the material on one floor. Therefore I was trying to explore the various Set parameter value nodes from various packages hoping there would be a simple solution but it seems no nodes out there that can set the instance parameter in a child (if those instance materials were associated life would have been much easier and I would have had only the Parent to deal with and the Rythem node could have done the job)
To answer your previous question…When I checked back with the design consultant why the families were built like so…the reply was “The material in their design is not supposed to be changeable therefor the material parameter they used in the child is an instance so they can use/nest several instances of 1 type with different material”…right or wrong, I can’t argue much with them! But that’s always the case with signature architects. I edited Family B to show you how it works in their model…I think doing it in Revit would mean remodeling the families.
We are talking 26 families each with 4 variants and each variant has between 5-12 child instances with different material… that is why I am exploring the option of set those material instance parameters in the nested child!
Edit: If you are wondering what they are, they are kind of assembled display cabinets with variant shapes/dims in the art galleries of 5 story museum