Floor By Outline Error



I keep getting the following error when feeding polycurves to the “Floor.ByOutlineTypeAndLevel” node. Anyone know what this means and how to fix it? Thanks.Floor By Outline Error


Hello Rafael Alvarez,

Can you please share your files.




Sure Ritesh, here you go.

Some insight into what I am doing:

The purpose of this definition is to find a way to constrain the boundary of a floor according to its relationship with an exterior wall. I need to keep a certain clearance from the wall, but when the wall slopes in I need the clearance from the bottom edge of the floor, and when it slopes out I need it from the top edge of the floor.

Basically after I do the geometric operations to create the correct outlines, I am trying to turn these into real floors. I know I could just import the solids either by import instance or export SAT and import into Revit. However I want the floor to be a real Revit floor so I am trying to extract the outlines and feed those into a Floor.ByOutlineTypeAndLevel node.


Curved Building Test



maybe that helps:

i am starting from rooms.

i stripped the lunchbox room collectors python code to extract only boundaries.

these boundaries are my base geometry for floors.

result: real revit floors

offsetting these boundaries should be easy.

cheers peter

create floor




Not when the exterior walls are sloped and curved. This is because the room boundary will be taken at a certain height off the floor. I need the floor boundary to have a certain clearance from the exterior wall at the elevation where they intersect, which varies with wall slope and direction of slope.



Thanks again for your response. Here is a section diagram to illustrate the design parameters.

Section Diagram


maybe that is your solution:


  1. i created a mass object consisting of splines and changing widths through the levels

  2. i created walls for the mass

  3. i created a room for level 1

  4. i extracted the rooms geometry

  5. converted the boundary to a polycurve

  6. used the CodeBlock “.Offset” command to offset the curve (+ values are the outside - values to the inside) polycurve is trimmed at corners

  7. the clearence is defined in parameter a.

  8. now you may forward the geometry to create a floor




Thanks again Peter.

The problem is I need to change the offset according to the slope of the wall, which may vary on each side. If it slopes out I need to measure from the bottom of the slab, if it slopes in I need to measure from the top of the slab. Your method above just applies a single offset to the entire loop. This offset needs to be according to the relationship to the wall.

I actually found a way by creating two floor levels: one for the top of slab and one for the bottom of slab. Then I cut the imported mass in dynamo by the level heights and extruded solids up from the bottom of slab and down from the top of slab. The I did an intersection operation on these overlapping solids which gave me the smallest mass. This solves the problem of getting the slab edge with the right offset according to wall slope.

After that I just imported the solids as instances. In Revit I can export this to DWG or SAT and link into an in-place floor family. If it changes I just rerun the Dynamo definition, and overwrite the DWG export, which will in turn change the linked instance in the project.

The problem is that the result of the surface get boundary operation in Dynamo produces curves that have inconsistent “knots” and it does not convert them to polycurves properly. If it did, it would be a simple matter to pass these onto the floor node and make real floors. This would save me the step of exporting and linking in to an in-place family.



I think the issue lies with something we are looking at right now. Intersection events are treated with a higher level of detail than is really necessary, and I think that passing these curves directly into Revit in curvey situations is having a problem. The easiest way to handle this would be to rebuild the curves that result from intersections by making a series of points on the curve using PointAtParameter, and passing the result into a NurbsCurve.ByPoints.



zach, that is an interesting approach!

i am wondering how you would solve the different offsets rafael is requiring.

as you can see is my solution creating only equidistant curves to all boundary curves, ignoring the surrounding walls slope.

from there i would go with slab edges manually.




Seems like a good way forward. Let me investigate.


Zach, I forgot to mention. Once I run my definition and it imports the mass Dynamo slows down to a crawl. Is there a way to avoid this, or is it a bug?


Thank you for sharing this workflow! I keep getting this error at Curve.PointAtParameter… what am I missing here?

Please see attached Dynamo 7.02 file OutlineFromLevels and feed-in Test SAT_Check file.





Interesting… There seems to be a scaling issue with SAT files exported from Revit that are “piped back in”. With Dynamo units set to Inches, I am getting a weird scaling factor of 1/39.7 OutlineFromLevels. I guess my main question is how to extract Curve Boundary Outlines from a Surface to be then used for Floor Slabs creation.ScalingIssueSAT



Hi Masha,

I can reproduce your SAT import bug. It looks like Revit doesn’t allow you to specify the exported SAT unit, so we’ll have to make a change to Dynamo to fix this.



Hi Masha (again),

It looks like there is a fix, though it requires manually editing the exported SAT file: http://knowledge.autodesk.com/support/autocad/troubleshooting/caas/sfdcarticles/sfdcarticles/Controlling-the-drawing-units-when-exporting-to-an-ACIS-SAT-file.html



Great. Thank you for the update Patrick.!

Was able to work through this definition after all and … (drum-roll) the ONLY weirdness I am seeing now is Curve.Offset not going through.

Revit Floors Outline from Mass and Levels


Dynamo will always use SI (meters) for anything (The settings> length display units are only for display in the watch nodes). Your import settings in Revit may be set to default to something else . . . So you can either select the imported SAT file and in it’s properties change it to meters with a value of 1, or you can add a conversion factor in Dynamo


I got the floor creation to work with the points method. Thanks Zach.

Curved Building Test




I keep getting the following error when feeding polycurves to the “Floor.ByOutlineTypeAndLevel” node. I have also tried rebuilding the curve from points as Zach suggested but i still keep receiving the same errors. Any suggestions??


Curve join produced more than one WIRE in PolyCurve

Deformation <----- my file