Room Separation Lines not hosted to Level?


I have a project that is analyzing a bunch of different existing client campus buildings for planning purposes. We were given CAD files for each level of each building, with the net room area boundaries drawn on a layer. In order to create basic colored plans based on multiple data criteria, we created a Revit model for each building, created Revit levels for each existing level, linked in the CAD, then used the below Dynamo script (from the Player) to generate Room Separation lines for each room. I had a separate Dynamo script to create the rooms based on other CAD objects, and further scripts to import data from various csv’s and databases. Everything appeared to go swimmingly.


We are now in the process of further refining the models and creating 3D diagrams, and want to set the levels at their correct locations. When we modify the level elevation in Revit, the created room separation lines stay at their original elevation (see below). I can sometimes get them to stick to the actual level by copying / cutting / pasting aligned in various ways, but they never consistently stick to the levels.

Possible Cause?

I’m thinking that when I used the Level.Plane then SketchPlane.ByPlane nodes, I created sketchplanes that were in the same location, but not actually associated to the levels, so when I then move the level, the created sketchplane stays behind. In the API, I see there is a method to create a sketch plane directly from an element ID, but I can’t find a way to access that with DesignScript in a code block or in a Python node.

I believe I used an actual level plan as the ActiveView for each level when running the script, but I don’t remember at the moment.

Any thoughts?

A sketch plane is a temporary plane set for drawing elements. It is not associated with a reference plane, level, or anything else, except for defining the location of the plane initially.

The easiest thing to do would be to get all the room separation lines and match their Z elevation with the initial elevations of the levels. Then move the grouped lines to the new elevation based on the level’s relative translation.

1 Like

I don’t think the sketch planes are actually temporary - they’re still retained by the lines as a reference and are accessible with their own Revit Id.

I tried to move the room separation lines themselves and made the mistake of trying to run it on 3800 lines at one time, and had to force quit Revit and Dynamo after an hour. (I suspect that they wouldn’t have moved anyways…)

What did work was getting the sketch plane elements from the lines, then moving those. See below.

I don’t think this solves the underlying problem that the room separation lines aren’t directly tied to their levels with my original script, but it does at least correct the inconsistency in the modified model.

Thanks Nick!

1 Like

You are correct. That was poor wording on my part. I didn’t realize you could move a sketch plane itself after it was created.

In order to tie the lines to the level I think they would have to be created with the level’s sketch plane. Separation lines drawn natively in Revit will move with the level, so it is possible.