Does anybody know how to parametrize this?

Hello everybody, so i’m kind of new to dynamo but im very excited to learn it more!!
So i created this roof structure using only Revit. First i made an adaptive component, then i uploaded it into a mass which had a divided surface and connected the nodes. However i couldn’t figure out a way to parametrize the following: i wanted to have the lenght of these leaf-like structures affect their thickness, so that when they longer or shorter they would all look proportional to each other. I swear i broke my head trying to do that in Revit but couldnt figure out how, maybe in Dynamo is possible now???

It is. Add a parameter (Instance) to your Adaptive Component which creates the thickness behaviour you want. In Dynamo you’ll need to get the heights of each ‘leaf’ (easy to do if you have a reporting value in your AC), then simply write a function which yields a width based on the height. Final step is simply to update the width parameter in each AC using the Element.SetParameterValueByName node

1 Like

Thanks for replying Thomas. Ok, so from what i understood is to set a parameter for the thickness behaviour, which i had tried before and tried again just now.

What i did there was to set an instance parameter for the thickness and a reporting parameter for the length. However when i wanna set the behaviour for the thickness, (which is thickness=Length/15) i get a message that says a reporting parameter can only be used in a formula only if its reference will be the host on an element in a family. And thats the point where in the past i had gotten stuck.

This is the point where i had tried everything that i know in Revit until i discovered Dynamo and thought maybe i could get around here. But as i followed your instructions i still have to get through this stage before attempting anything in Dynamo…

Correct me if Im wrong or if i didnt follow

There’s two things to ponder:

  1. You don’t need Dynamo for this
  2. If you want to use Dynamo for this, you need to think computationally - think outside the Revit box so to speak

Opion 1
Dimension the adaptive points for the length and assign the reporting parameter. It can now be used in your function (which solves your problem, arguably the best way). Currently you’re dimensioning the geometry which is why it can’t be used

Option 2
Add the two parameters but don’t add any function in Revit. This is where it’s important to think outside the box when employing Dynamo. All you need to achieve is the ‘behaviour’ - setting a function in Revit is self defeating if you’re determined to use Dynamo (since it solves your problem)!

Use Dynamo to extract the lengths (GetParameterValue node). You may need a Transaction.End node to force the reporting values to update consistently. Create your function in Dynamo (ie length /15). Set the width parameter of all ACs using the result of the function. Basically Dynamo controls the width, not Revit, and you’ll need to have it open every time you want to update, which brings its own problems. Nevertheless this is what I mean by thinking outside the box. Option 1 is still best

1 Like

Agree with Thomas… It looks like you are putting the parametric dimensions on the actual geometry, rather than on reference lines? Before creating the geometry, make sure your “jig” (reference planes, reference lines, etc.) work as you want when you flex them. After you get to that point, building the geometry is easy.

Hope this helps.

1 Like

@pablofederico This is how you can go about it using dynamo.
An example with selected top and bottom curves determining the extents of the AC.
You should be able to alter this curve selection method to suit your case.

The AC family is built with two Adaptive points and a width parameter. All three are driven by the Dynamo definition.

Fins.rvt (3.0 MB) (2016)
AC-2.rfa (308 KB) (2016)
fins.dyn (12.6 KB)

Hey guys, thank you all for responding, to be honest i didnt think anybody would help me out because its something rather simple compared to the more advanced problems in this forum, so thanks again.

Indeed i was able to solve it without using Dynamo, just like Thomas and Francisco said. I had to delete the geometry and set the dimensions to the adaptive points, which i had done before but i guess the geometry was interfering. So, for anybody that has a similar problem this is what i did:

First, i deleted the geometry that i had before and was left with only the reference lines

Then, i set the dimensions to the adaptive points and also added the make equal dimension.

The width dimension is an instance parameter.

And the lenght dimension is also an instance parameter but it also is a reporting parameter

Now, i can type the formula in the width parameter

Finally, i can create a form and make the geometry.

Thanks again guys.

@Vikram_Subbaiah, thank you too im now gonna try your Dynamo method!!


By the way, you should explore the Offset parameter of hosted points (to create the points defining the width): it’s way more robust than using EQ dimensions…in fact it eliminates the need for any dimensions barring the ones needed for reporting parameters.


I’ll definitely look that up, thanks Thomas