Floor/Roof Layer Geometry

Is it possible to get the geometry (i.e. solid) of specific layer/layers of a roof or floor?

Hi @peter1343 Genius Loci have some nodes fro compound layers could probably help, or a way with parts…

Right, I guess I should make parts. Thanks!

I am not seeing this node in the Rhythm package. Was it removed? I found a MakeParts node in the Steamnodes package, but it is not behaving reliably, giving errors, sometimes providing output sometimes not even when it is making the parts (and I am making sure there aren’t already parts.)

Hi be sure you have the latest rhythm, think it will give null if already part

I was able to achieve what I wanted with the GeniusLoci nodes. I didn’t get the full solid geometry but I got the surfaces I needed, had to write a little Python script to calculate the distance from the bottom surface to the bottom of the layer’s surface I wanted.

One issue though with this is that the surfaces extend past the corner they should join, as shown thus:

I don’t suppose there is any way to easily clean that up… trim surfaces to corner?

yeah there could be some few easy ways, try a search here in the forum

I did a search but didn’t find anything that wasn’t extremely complex

It is complex :wink: take a look how ampersand do it…

Could you point me to the topic?

Here is maybe a simpler question, is there a node that can give me a curve for the intersection point of the two surfaces? I tried geometry.intersect but it is giving me surfaces. I’ve made a workaround for the above issue but still need that curve.

Might want to try an outside corner, and two sided wall as well.

What is your end goal in this exercise?

This was working well and now the Genius Loci node is doing some weird stuff. First it was giving all null values, now this

If i understand right is when you intersect 2 surfaces it give surfaces, get the perimeter curves and intersect them, set lacing to cross in the intersect node and it will give curves and points, filter for your point and use a prune duplicate and use these points for trim…or with custom nodes here is some exemples with different packages…hope it what you mean

1 Like

Thanks for the tip to set lacing to cross for the intersect node, I get both surfaces and curves. How can I filter just for curves?

You could try remove if not node

1 Like

Remove if not type? What do I provide as an input, specifically? The code block won’t let me use a class name. Not sure the syntax.

try as here…

1 Like

It seems the bug I am encountering is not with the Genius Loci node but probably Revit API, somewhere in this code block (copied from the Genius Loci node):

bottom = HostObjectUtils.GetBottomFaces(element)
for b in bottom:
bottomFace = element.GetGeometryObjectFromReference(b)
bottomFaces.append(bottomFace.ToProtoType())

I tried using it in my own Python node as a test. Sometimes it just doesn’t work, and returns null values, at least in Revit 2022 and Dynamo 2.12, especially it seems with monoslope roofs.