Dimitar / Andreas
I will look into your suggestions. Did not know about “Tool.GetSurroundingElements.” That looks like what I need. I actually did use the normals trick, but it sucks to do when you have lots of panels.
This came up in a façade mullion exercise for exterior curtainwall. We have an irregular facetted design where every panel is at a different angle, and I have to place the mullion that goes in between each panel, whose angle is the bisector if the two panels to either side. As there are about 8,000 panels on two towers, I needed to find a way to do this with a script.
I tried reading the wall locations, but they were created “by face” from a Rhino import, since the design is produced with Grasshopper. This places all the walls on a single level with top and bottom offsets. I would solve the problem in a small test file, but when implementing it on the real thing the fact that all walls were hosted on a single level created real problems with list structure and nesting.
I eventually solved it by taking the curve location of the walls, and intersecting them as a surface extrusion with a cuboid around the bounding box of each curtainwall. This gave me clean rectangular boxes that where for the most part going in the same direction, and whose faces extracted in a predictable manner. Before this I was trying to get the geometry from the panels themselves, which was a mess because some panels’ normals were flipped (Grasshopper created them that way), others did not clean up at intersections, and any non rectangular ones would report their edges in odd orders when extracted.
Here is what it looks like: