Here is one idea that I have developed based on one of the methods that Marcello used to scale classical column families:
Marcello Sgambelluri - Scaling Classical Order of Columns
Scale By Spline
This concept has also been explored by others, notablyAndy Milburn - Spline Sailing
but I first need to describe the concept here.
A spline can be scaled just by dragging one of its end points. To control this within a scaleable Revit family, you need to lock or attach the end points of the spline to something that you can dimension. Although you can dimension the end points directly, it is better to use something like a reference plane. Here is a simple rig to demonstrate this process:
The vertical reference planes and width parameter will be used to control the distance between start and end of the spline, and in turn its scale.
The offset reference plane and parameter are required in order to control the location of the spline.
Once the rig is set up, draw a spline between the two top reference plane intersections
Use the align tool to lock the ends to the reference planes, in both directions (4 locks required)
Change the width parameter to check that the spline is locked to the vertical reference planes and that it scales properly.
Change the Offset parameter to check that the spline is locked to the horizontal reference plane.
This example establishes the principle of being able to control scaling and location of splines using reference planes. The spline end points do not need to be orthogonal to each other - they can also be at an angle.
Revit Scaleable Spline Tree Family
We can now apply this principle to multiple splines linked to each other, to create a simple tree family. This example is proof of concept, and is only done in 2D, but it could be applied to 3D trees.First make a rig of reference planes that are controlled by parameters
Then draw a series of splines between each reference plane intersection.
Lock the ends of the splines to the intersections using the Align tool (and then padlock)
Try flexing the overall height parameter - this will not only change the overall height, but it will not affect the other parameters. So only parts of the tree will scale, and others will not be affected depending on how the parameters are arranged. In this example, the tree trunk is not affected by the change in height - only the top part of the tree scales.
Changing the intermediate parameters will alter the overall shape as well as the width
Different tree forms can be achieved by playing around with the parameters
One tree family can be used to create multiple tree types that vary in shape and height
By adding a few more reference planes and splines it should be possible to create a family that has independant tree height and spread parameters. And all this can be done without having to nest one planting family inside another - it works without nesting.
No doubt there will be people who say that this is not practicable, or that the trees look terrible - but this is only a proof of concept. I'm hoping that it will give more ideas to others who can run with the concept and create wonderful flexible tree families.