How to automate tracing building outlines?

Advanced AutoCAD user (landscape architecture) / grasshopper noob here (first post in forum) - Is there a way for grasshopper to take an imported 2D architectural floor plan and generate a closed building outline? I work on a lot of very large housing projects where we receive architectural backgrounds once a week - and our site work is a series of offsets from the building outline. Automating this task of tracing the building outline every time we receive backgrounds would be a huge time saver for us!

Who provides you with the plans should provide an outline as well (every AEC BIM thingy worth the name does that (since a plan/elevation/etc is just a live by-product of the consolidated 3D Master model(s)) : Outlines are used for managing room schedule data, measuring mashing stuff, managing cost pre estimations meta-data, doing some structural and HVAC prep tasks etc etc). That said BIM is mandatory by Law in some countries these days (much more to follow).

Offseting properly a polyline (or polycurve) on the other hand is a very tricky animal (avoid at any cost the Rhino Methods). There’s an add-on (forgot the name) that does that. But I have no idea up to what point: I don’t use add-ons (except K2).

whats your tolerances?

In autocad i would find a layer (floor/slab edge) thats close and generate a hatch boundary. A similar approach could be done with rectangle bounding and curve boolean or some sort.

i just reached out to our project architect to see if they can generate this building outline for me in revit on their end, we’ll see. i guess i was hopeful, though, that there was some sort of ability in grasshopper to detect object (the building) and snap an outline (closed polyline) to the outermost extents, not unlike how the magic wand tool in photoshop works.

i totally see where you’re going with this but the thing about these revit exports is no matter what layer you isolate you’ll never get a perfect combination of layers toggled on/off to generate a hatch to just the outermost extents of the building outline.

if you bring in ‘meshed floor plans’ (good luck with that) as CAD into Rhino then run MeshOutline command from Top view you should get some form of ‘automatic’ outline of the whole joined mesh

[edit] or import a 3D .dxf/.dwg from revit and do the same

ok, will try this, but how do i convert all the imported cad floor plan linework into a mesh?

haven’t used ACAD in ages - can’t you tell it in export options to export boundaries as surfaces??

He should have AT LEAST room schedules: this in fact means room outlines the sum of whom per floor is the floor outline.

On the other hand an extraction (a 2d drawing) of that type is just a collection of objects belonging to different classes (walls, openings, partitions, stairs, cats, dogs etc etc) meaning that is most unlikely to “join” their outline per object and achieve what you want. Not to mention the assembly/component aspect of things. Not to mention that IF these are NOT auto extractions from some smart 3D BIM object (meaning that are just 2D instance definitions taken from some RDBMS [for instance: doors etc etc]) it’s most unlikely that they have closed polylines OR their segments can yield a closed shape in some rational way (tolerance makes things worse).

But even if the outline is present … your biggest issue is elsewhere: offset the polyline(s)/polycurve(s), that is. What about the expansion joints that designate limits on the outline(s);

That said GH is a graphical editor and R a surface modeller … meaning that they are 1Z miles away from any AEC BIM scope/goal/issue/challenge/task.

Can‘t you turn off all the unnecessary layer? Just keep walls and balconies. This should simplify finding a solution a lot.

Haven’t used ACAD in about 20 years, but there should be a way to do a projection, so project all of your objects onto a ground plane, giving an outline, and then in Grasshopper use a ‘region union’ to give an overall outline.

I’ve tested an AutoCAD plugin before called ‘Superboundary’ which does what you’re looking for. Very quick and easy to use - worth a look.

You can do that in Rhino without any plugin at all. Just select all curves, run _curveboolean command and click outside the boundaries of your selected curves. It’ll generate the outline automatically.

3 Likes