Extract and Clean Room Boundary

Hello all,

Currently I’ve receive a project and the mission is to Add Floor Add Ceiling Add Wallbase on revit room geometries.

The project contains 2000+ rooms and some are determine by Room Separation Lines, as you can image those geometries are resulted ugly (tolerance issue, open curves, self intersected, closed curve with 0 area … etc.)

I’m here to ask if you all have better work flow for this subject.

My initial attempt was naive -

  1. Query Rooms and Element Geometry
  2. Get rooms’ bottom face
  3. Project to XY plane make sure the curves are flat
  4. Brep Wireframe
  5. Join Curves

    n. Boundary to Add Floor

However, since the project contains 2000+ rooms and some are determine by Room Separation Lines, as you can image those geometries are resulted ugly (tolerance issue, open curves, self intersected, closed curve with almost 0 area … etc.)

In the attach file, you can see I attempted to clean those up. So after 5) Join Curves, I do:

  1. For open curves due to document tolerance, I use @Baris script to close curve
  2. Boundary Surface and Solid Union - Delete overlapping curves cause by Room Separation Lines
  3. Curve to Polyline - For some reasons a few Closed Planar Curve don’t work
  4. Cull closed curve which area is almost 0 which cause by Room Separation Lines
    n. Boundary to Add Floor

Any help would be appreciated!

Related previous threads:
Connect Crv and Close Crv
Single Surface has internal edges

GH file:
Clean Room Boundary.gh (6.1 MB)

Revit Rooms requires a bit of a cleanup. In my initial workflow, I deal with them level by level. Highlight those that are causing problems, clean them up, and use their boundaries to generate Revit elements (floors, ceiling, wall finishes etc.)

When it comes to getting room boundaries, I don’t recommend you to get their bottom face. This causes lots of problems for some reason. @eirannejad created a python component that returns room boundary.

python component works in most cases but sometimes it doesn’t return a closed polycurve. So I use a cluster component I created that gets the room boundary by doing brep-plane intersection. It is pretty solid as far as I experienced.

I hope this helps.

1 Like

@mucahitbgoker Thanks for your reply and help,

I’ve try the Room Boundary you made and the result shown as below.
But I can confirm its due to misplacement of room separation lines.

And here’s @eirannejad python

I totally agree, however, in a team and dealing with this type of project (2000+ rooms), others assume the BIM person like us has to do the magic or what so ever to get the job done "automatically. Even we had explained the cause … at least this is what I’m facing at the moment…
In other words, if its just 3 ugly rooms, sure I can clean it up for them. But if its 30+, hope I have the brave to yell at them. (Sorry for my expression)

1 Like

Ugly room - for a example - Branch 55
Even the geometry is good after clean up, still has to convert to polyline so that revit can accept.

Ugly Room.gh (6.1 MB)

:smile::smile:.
Sometimes I have the same feeling too. Btw, team shared a new node yesterday. This might be more stable. I haven’t give it a try yet. Take a look :point_down:

Quick suggestion:
Make sure you don’t have rooms like the one below if you are going to create Revit elements using its boundaries. This causes an error because Revit cant create a valid floor boundary out of it.

Nice, can’t wait this node gets completed.
Here’s some experiments. @kike

(I wonder if revit room can be internalized)
RM node test.gh (15.7 KB)

By the way, for the daily build 1.7.8115.19802 Level Identity seem can’t read from link RVT file.