There have been different ways of accomplishing this over the years. Now, with Dynamo, I would use this simple two step process:
- Create a unique type for each Planting or Entourage element (as Height is a Type parameter)
- Randomize a list of values and write them into the Height parameter
It is super easy with Dynamo. Here is how you make the unique types (GUID from Bakery, Duplicate Type from Springs, SetType from Clockwork):
Then, just push the random values in, like this (the Set List node is in Bakery too):
My last attempt at this was here.
From a post by Stephen Blacklock:
In early 2013 we started work on a live full-site BIM project …
Agreeing the deliverables at the outset (and being totally truthful about what we could actually deliver) was key…
Complex areas of level changes were resolved very early in the design process, when I know these could have been problem areas on site.
Our planting plans were also delivered in a BIM compatible environment linking the planting plans into the 3D project model and providing visual understanding of massing.
All hardscape materials in the model included construction build ups and specification details integrated to the model as does all site furniture, fencing and walls.
Sections and schedules are generated directly from the model reducing the risk of errors and ensuring all project information is aligned.
BIM and Landscape Architecture | Knowledge
After spending some time trying to make a workable, geometrically driven random reactor, I decided that it was far easier to use dp Stuff Randomizer (get 2014 version for free from here or older 2013 one on Exchange here). This is a great little addin that just drives random instance number parameters into family instances. You pick the parameter to drive, give it a max and min “bracket”, click Add and then Randomize.
I set up an Adaptive tree family that used the scaling method, linked through some parameters, Repeated it on a Divided Surface, and then used Randomizer – this random forest is so easy 🙂 With the scaling method working, we can even just drop some imported Sketchup trees into the most deeply nested family (the one that gets scaled), reload it through the hosts back to the project, and even these imported CAD files will scale correctly.
This is the simple tree randomizer (height only):
Next, I added an X and Y offset so I could randomize the position from the grid slightly, resulting in this…
Tree randomizer with move parameter:
Here are the sample files for download. Enjoy!
(this is the Sketchup tree that I used for the example above)
Dave Light gives the very concise version:
So as others have shown, I have various nested generic model families, dropped them into a plant family template. This family is then nested into another plant family. This is then placed into a project. Using the height parameter in the family, changing this, scales the family.
Revit : Scaling families – #empirebim
In brilliant form, he then describes how you can use an instance reporting parameter in a Curtain Wall Panel family to drive the Height value in a nested Planting family, making a Curtain Panel that can scale its nested geometry to any panel size.
To save you some time and trouble, I have created a template for this scenario. Basically, it is a Revit project file that contains the Curtain Wall Panel family with the fully nested setup already in place. I also added a Scale Override type parameter in the Curtain Panel family that allows you to globally adjust the scale of the resident geometry.
Download the project and family files here
(the project RVT is Family Scaling Template – GM to Planting to Planting to Curtain Wall Panel.rvt)
Note: using a shared Generic Model family will not work (it breaks the automatic scaling ability of Planting families)
Looks like original credit actually goes to Kelvin Tam.
Original credit for this general idea goes to Marcello (I think), and partly to Dave. It is definitely one of those hacks that is getting re-interpreted and expanded upon as it gets blogged and reblogged…