6 years later, it still doesn't work. I cannot, for the life of me, figure out why. Anybody know how to Propagate a parameter FROM THE NESTED FAMILY INTO THE HOST FAMILY? It definitely shouldn't be rocket science, but somehow, it seems to be.
It is just that Revit does not work this way. The concept of Revit is that it is based parent-child relationship.
Louis
Please mention Revit version, especially when uploading Revit files.
Wait so you're just trying to get a parameter from a nested family to be controlled in the family you're currently working in?
If so it's really pretty simple, and yes team Revit has dropped the ball badly in explaining this properly.
You need to create the same parameter that exists in the nested family in your current family. Once its there select the nested family and you will see a button on your top left labeled Type Properties (button with four cubes in it), in there you will see all the parameters from the nested family, on the right side a series of grey little unnamed buttons. Click those grey buttons to assign your parameters to the nested family. This will "connect" the two together, when finished the grey button should have an = sign in it.
This should be all you have to do.
Hope this helps...
jeppsMX3UQ wrote:
...
If so it's really pretty simple, and yes team Revit has dropped the ball badly in explaining this properly.
...
I disagree with that.
First off, thank you all for the thoughtful answers.
@Anonymous they're right, what i'm looking for is propagating from the child to the parent. Parent to child, or host to nested is easy enough, and well explained indeed on your account. Thank you.
@L.Maas and @Alfredo_Medina By now I've figured indeed that there's no way to do that in Revit. I've also made some geometry in the nested family that follows the instance parameter I wanted to propagate from child to parent, and in the HOST family i've tried to measure that, assign the dimension a REPORTING instance parameter and use the further into a formula, but Revit stopped me right there and said Uh-uh - you can't reference stuff from other families in a reporting parameter and then go around using it like it's nobody's business.
Still, though - i don't get why this has to be so rigid. I mean, you can use family parameters in the project, which is, to my understanding, the mother of all families, but a sort-of-family nonetheless. You can take the parameter's "slot" of "variable" (if it's an instance param) from the child to the parent and flex it (adapting the child to the parent's needs), so why in the name of parametric heavens can't we just READ a param value that a child has set?
We can read its geometry, we can flex that geometry, but we can't get something as simple as assembling a family sum-cost from various parts' assigned cost, or get various nested parts to match material to each other, or some pre-chosen, ready-made setting that the child-family might have baked in, that we want to pass onto the main family, or schedule etc?
So maybe I don't get how Revit works, then my question is, how would you go about it to solve something like that?
The solution is as mentioned. You have to do this from the parent. In the parent you can set (for example) the material that is going to be used by the child (nested family).
In case of total cost for a family you can do it in the same way (setting it in the host) or you might get around it by using shared families.
You mention that you can read and flex the geometry. But this is still parent-child behaviour. Basically the child is not 'aware' of what is happening in the parent. He just gets told what to do.
I think the problem with getting information from the child into the parent would mean that it would construct a way of controlling the parent (e.g. using formulas based on values from the child). Than you would have both a parent-child and child parent relationship. Than who is controlling who?
I only can imagine how hugely complex this would make it all.
As mentioned above the normal solution would be to control things in the parent or to make use of shared nested families.
A third possible option could be to make use of programming. Here you could read some values and try to push it back into the families.
(even here it would follow the same rules as in the User Interface, only you can automate tasks like editing the nested families quickly).
Louis
Please mention Revit version, especially when uploading Revit files.
No. As mentioned in my post no 5, Revit is based on a parent-child relationship.
So in the host you will set the hole size and you can link this to a hole size in the nested family.
The end result will be "[Parent Hole Cut Size]=[Nested Hole Cut Size]", however it is the parent who decides the value.
Louis
Please mention Revit version, especially when uploading Revit files.
Sorry to revive the post, but this discussion is absolutely interesting. It does clear things very well of what it is impossible to do in Revit and what is something I just haven't heard of yet.
I am not any close to be an expert in OOP, but I can't see, yet, what would be the complexity of a parent having some parameters driving by child. With my limited programming experience, I can imagine that circular references could make this impossible, depending on the parameters and links between parent and child, but a simple numeric parameter like cost does not present any difficulties to me.
Of course, there must be a technical programming reason to that. Which is a shame, since in the construction design, I can think of many examples where nested (child) objects drive host (parents) objects.
I think the parent/child relationship is used/chosen as the concept for Revit. Once introduced it makes it difficult to change. I think adding the possibility to drive the parent by the child(ren) will add a whole level of complexity.
One example to consider. At the moment you have one parent (host) with one or more children (nested). Imagine the situation that the children also can control the parent. In the host you use two instances of the nested family with an instance parameter. For example host has value of 11, child 1 has a value of 21 and child 2 has a value of 100. What will happen to the value? Who and in what case takes precedence?
I can see that this will add a lot of complexity to the program and also possible confusion for the user.
So yes I can see why you want it, but also can imagine the complexities to introduce it to Revit
Louis
Please mention Revit version, especially when uploading Revit files.
Basically the same solution pointed out above, but explained by Autodesk:
Here I am, 2 years later to pump life into this topic but....
What I have, is a tank I created. It's parametric. Works like a charm. I even have face-based nozzled nested in the tank family. I added parameters to those nested families specifiying "InletNozzle", "OutletNozzle", so on, so forth..
I have a type of nozzle for every size from 2" up to 24" in the tank family.
When I place the tank into a project, I go down to "InletNozzle" parameter, I toggle it to be a 8" nozzle. It works like gangbusters.
The connection I have ON the nozzle in the tank family, they all stay at 0'-2" because that's the input in the Value Column of my ND parameter. Even though if you switch it to a 6, and 8, a 12, a 3, whatever, that ND changes. But my connections will not.
Oddly enough, the originally DID work, I had an issue with two nozzles, so I tinkered with stuff, and now it doesn't work again.
So there's no workflow to have a connection, on a tank family, that reads the ND parameter of the nested family it's connected to?
Below is an example how to associate the parameters of the connection with the nested component. Or, share the family if you are facing a different issue.
Here you go bud...
Keep in mind, this is my first go-around with creating something, moderately complex...
Actually, I'm relatively new to Revit in general. I've been using BIM for about 10 years, so the learning curve isn't terrible.
Attached are the Tank and the nozzle family. Nozzle family has an embedded Lookup Table.
Yeah, but if you look below, there's two 4" nozzles, one for a drain, one for a truck connection.
I bet they say 6" as well.
If you drop the tank into a project, and select it, go to "Edit Type", down at the bottom, you have the Parameters to change the physical size of the nozzles.
ie: InletNozzle ----> 8" Nozzle
OutletNozzle------>10" Nozzle
That is achieved by the ND parameter within the nozzle family types changing based on nozzle size type. 2", 8", etc... BUT, the ND parameter in the Tank family (probably the same ND seeing as I think I set it to be "Type" not "Instance") it just stays at whatever you type in. And subsequently ALL my nozzles will have the same connection size, despite dimensionally, all being different. A 6" here, a 4" there and there, a 8" over there.... etc..