How to Create Elevations

The following was built in Revit 2021. Happy Holidays!

Create Elevations from Lines.dyn (62.1 KB)
This script requires a custom node to find the location of rotated elevation markers.
GetElevationMarkerPoints.dyf (11.3 KB)

This script deals with all of the challenges of that occur during the process of creating elevations.
Anyone who has tried to do this knows that there are several hiccups. Here is a list of them:

  1. You cannot create elevations without the elevations category turned on in the referenced plan view.
  2. Elevation markers do not know which direction to face; you have to rotate them.
  3. Elevation markers cannot rotate until there is a view placed on them.
  4. Elevation markers rotate to different locations; you have to put them back.
  5. You cannot find the location of elevation markers that are rotated beyond the crop region of the plan view.

Credit goes to the contributors from the topics below:

  1. You cannot create elevations without the elevations category turned on in the referenced plan view.

I’d have to check my elevation script, but I’m pretty sure I use the same nodes and don’t have this issue. I might have a play with yours and see what the difference is if I get a chance.

1 Like

If you or anyone else has something to add to the process shown above, please feel free to post it here. Let’s nail down the most efficient way to do this so there’s a resource for developers to build on and help fill in some gaps.

1 Like

Hi @daniel1,

Nice workflow. I’m working on something similar.

I was wondering if you could you explain this code block to me with words? My DS is horrible :slight_smile:


Best regards

Its the combination of a few nodes smashed together in order to find the direction of the elevation from a line. If I remember right, the xAxis is the direction of the line. Angle with Vector found the angle between it and the Y Axis direction (up in plan view). The challenge with this node is that Dynamo does not know yet whether the angle should be positive or negative. That’s where the switch part comes in. If the x component of the line direction is not less than 0 (false) and the angle is less than 180 (true), then the angle (a) would get converted to a negative value, otherwise it would remain positive. The (+"") allowed me to put two booleans together to form a new one. The last part of switch to radians was necessary to feed the python script in the custom node.

1 Like

To add to the script above, I’ve found that it helps if you set the scale to one before rotating elevation markers. That way, the rotational origin is only able to shift with an amount that is proportionate to the scale applied. A smaller scale means a smaller shift from the point about which a new marker is created.

1 Like

Thank you so much for your reply, @daniel1.

Sorry I’m just getting back to you now, but I simply hadn’t seen your reponse.

I know I’m a year late, but this doesn’t quite work for me. The elevations for me are perpendicular to the lines, and the actual view plane is way off in space. The script seems to move the elevation marker to the correct location, but not move the actual view. FYI, I’m using reference planes which are turned into lines using the custom package Rhythm and the node “ReferencePlanes.GetCurvesInView” with the plan view as the view.

My file:
Test File.rvt (1.2 MB)

Also, here is my modified Dynamo graph:
Create Elevations from Lines.dyn (90.4 KB)
Only things changed is I added nodes to pick the reference lines, grouped and organized the nodes, changed the custom node to be just a python script, and made the python nodes use CPython3 instead of IronPython2 (required modifying the scripts a little but I made sure they produced the same results as the old one).

Figured out my issue!

I just added 270 degrees to the rotation angle to get the rotation to work. To fix the actual view plane location, (thanks to this post) I figured out I need to move another element called “Element”, so to do that I took the SectionView element, got its ID, subtracted 1 from it, and got the element from that ID, and moved that as well.

Works perfectly now!

My modified graph:
Create Elevations from Lines.dyn (104.0 KB)