CurveLoop from room boundaries


hi i am trying to construct a CurveLoop from room boundaries.

up to now i am failing.

when i use the original boundaries python throws an exception.

i tried to work around by creating solids and intersecting them with a plane.

no result.

i tried to construct a CurveLoop from curves with the Append method. api tells me to expect an Autodesk.Revit.DB.Curve i don’t know how to construct one?tmp

why do i need that: to crop a view according to the room boundaries. (bounding box is not working as rooms ar rotated)

and room boundaries in python throw an exception.

rotating a section view would work, but i also need (mirrored) ceiling plans … that is why i have to go with cropping a ceiling plan




Hi Peter,

Using Intersect works as shown. Isn’t it what you want?

이미지 1


Hi Peter,

It’s not clear from the image - are you inputting Revit’s “BoundarySegments” or are you inputting Dynamo geometry curves into your python script?


Dimitar, i tried both


When you fed it Dynamo geometry curves, did you convert each curve to a revit curve?( .ToRevitType( ) ) That usually works for me.

Dang I was thinking about arrays. CurveLoops are a bit hard to make because they have to follow a lot of criteria. From the API:

“It should also be noted that these definitions take the order of the curves and the curves’ directions into account. For example, a CurveLoop comprising the four edges of a rectangle in the order {bottom, top, left, right} is discontinuous. Similarly, a CurveLoop comprising the four edges of a rectangle in the order {bottom, right, top, left}, with three of the lines oriented in the counter-clockwise direction of the rectangle and the fourth oriented in the clockwise direction, is discontinuous.”

"There are a specific set of requirements for how valid CurveLoops must be formed:

  • The curves must typically be continuous
  • ..."
Maybe you can run your curves through a PolyCurve.ByJoinedCurves first and then extract the curves from that. Dynamo's PC node is very powerful.

edit: quick example below



exactly what i did!

i will continue examining!