When annotating Planting Plans, it is a fairly common technique to use connector lines in order to show a grouping of plants that are all the same species. These connector lines are usually shown in straight lines or in arcs. Here is an example of straight lines:
Since Revit does not really have any landscape-driven tools, there is no tool that allows you to do this automatically. But this is a perfect application for Dynamo.
To start off, you will need a custom node from Archi-lab and the DetailLine.ByCurveAndView node (this is also the package name). For some reason, the Clockwork node DetailLine.FromCurve did not work for me, so I used this old (and deprecated) node instead.
Here is the initial definition.
And the result in Revit:
Since Dynamo does not specify the Line Style, Revit will choose the default Line Style (for me, it was Thin Lines). To change the Line Style, just add a few more nodes. To select the correct style, I drew a line with the correct Style, used GetParameter, and then applied the Style to the generated lines.
This is pretty good for straight connectors, but what about arcs? So I created a custom node to convert lines to arcs (it is available in today’s Landform update).
Here is the full definition.
And the result:
The node Arc.ByLine allows you to flip the arc, by setting the flip input to false:
Since the lines are created by simply connecting the points, the order in which the plantings are created will effect the connector lines. So this method for creating connectors works best when you are connecting plantings that have been placed intentionally and somewhat geometrically.
For example, here are two grids of trees that are essentially the same. They were placed slightly differently and it becomes apparent when generating the connectors.
As a result, it is almost entirely ineffective if you try to connect plants that have been randomly placed in a cluster.
To make a cluster work more effectively, you would need to find the shortest path connecting all of the elements. There is currently a Clockwork node (PointSequences.ShortestPath) which might be useful, but so far I haven’t been able to make it work. But if I do find a solution to this, I will be sure to post an update.
Great post as always. You’ve been required reading for awhile now.
For the draw order issue, have you tried sorting the points prior to creating the lines? Could be by x then y value, or by distance from another point. Might make it easier to order the list instead of asking a node to do the work for you. Would also allow you to set up a method to change out sort methods if you get something you don’t like (ie run this grouping by y, then x; that grouping by x, then y; and the other grouping by distance from a point).
Right, that is the method I would try. Though you would need a node or two to help you sort the points.
Distance from a point is a good idea, I’ll have to look into that one.