Hello,
I wanted to ask how to extract the edge profile of a block in Grasshopper so I can project it onto a surface and use it to create an opening. Any guidance or help would be greatly appreciated. Block Edges_For Forum.3dm (575.5 KB)
You could just extract all wireframe, and curve Boolean from the outside.
Look the scripting component in this thread:
First time for me to work with block instances, so nothing can go wrong ![]()
- internalise the block instances into GH
- to see what is inside the block: Explode project
- It is a mix of breps, surfaces and some curves.
I tried several ways to go to a contour directly from here. That gives errors, because of the mixed content. - Time for indirect solution. Letâs create a bounded box around (a bit bigger then the original block instances, so I can do:
- A solid difference with all objects in there.
- Only the âoutsideâ shape has the info you want. With list item (index 0) we just get the the corrrect ones. Otherwise use a number slider/panel here to set the correct index number
- Now we do the solid difference a second time and voila: we have the surrounding shape around your block instance.
- last step: contour on XZ-plane to get a âflatâ version.
Regards Eef
Block Edges_For Forum.gh (56.5 KB)
Just use the âmesh shadowâ component from the other day, but change the plane and direction.
Actually, the MeshSection method will work better than the shadow because itâs faster here and itâll skip duplicate silhouettes.
See here:
Meshcrosssection.gh (44.4 KB)
BUT, if you only want the OUTER region, then unify it with RUnion:
Meshcrosssection-outer-region.gh (48.3 KB)
Note:
Similar to your other post, the important thing is to query your rhino objects, which includes the blocks but also other objects; most can be ignored and youâd still grab the mesh section, but the data might be a little dirty, thatâs why I still took curves out (see TextMatch component).
Dear @René_Corella, You used Tmatch to select the correct objecttypes.
I had that in mind to âfixâ the error in my solution. Did not yet, because I expected/hoped for some way in GH to select types of objects in a more direct way.
Is there?
Regards, Eef
Hey @Eef_Weenink, yes using the âquery model objectsâ should make it easy enough, because you can output type-specific objects like the blocks @SV1914 wants to get the outlines for, BUT these blocks included different objects + curvesâhence the âtext matchâ method, to at least skip those.
HOWEVER I did realize that if there are LINES in the block(s), those wonât get skipped with the text-matching, so more robust filtering needs to happen.

coming back here to outline what I suggested nonchalantly above.
basically similar idea as to use region union, but it also works for a bunch of lines that do not form closed regions, so depending on block object topology, that could prove useful.
The blocks however are not on world XY, I added a variable to supply a plane. seems like its working.
CurveBooleanBlocks.gh (14.3 KB)
Thank you so much everyone for helping out with the solution! It worked like how I wanted it for the global geometry ![]()
Unless I misunderstand what you mean, lines that do not form closed regions will already be filtered out by the Brep Edges component. I understand that the interior edges of individual BReps should (?) now also be preserved by the script, but any sort of line or curve detailing that is not part of a BRep and included within the block will be lost.
I was thinking about this initially while not in front of a computer and didnât know what might be in these blocks. So if there would for example be different types of geometry like curves/lines, polysurfaces, meshes.. and these might be of different precision (maybe not all plysrf closed etc..) then projecting all the wireframe to a plane and run curve boolean without a supplied point.(specific area target) will be the most certain way to create a coherent closed outline.
in my example above I only worked on the breps, but one could extract all possible curve/line data.
concerning the curve Boolean vs. region union, maybe have a look in the first link i posted, it will also work on just a bunch of open curves.
hope this gives some answers!






