Get geometry inside

Hey
In the picture i have a area boundary, with blue lines, i want to sort the rooms by with area they are inside. Any ideas??

Hi @1065553,

A way to achieve this, is to create solids from the areas by using the curves you’ve extracted, and then test for intersection using the Element.IntersectSolid from the Bimorph package.

This workflow might need more filtering and grouping of curves, if its a large complex model though.

But its a start :slight_smile:

The node:
image

1 Like

Hey :slight_smile:

Could you show us the output of the nodes you have ?

If the outputs are polycurves, you can create SUrfaces from them (with Surface.ByPatch) and then compute the areas of the surfaces (with Surface.Area).

Once you have all the required areas, you can simply sort the areas, get the indices of the initial areas given the sorted areas, and then sort your elements with those indices.

1 Like

A third method, after Volume and Surface intersection, would be BoundingBox Intersection (maybe the fastest?)
You might need to join PolyCurves and/or use Group Curves from Archilab package.

Here a fast test:


2 Likes

Is there a way to change, so it’s not just intersect, but consumes.
I mean so it’s only boxes inside the box thats count?

You can try to copare the volume/area of the objects inside and the corresponding intersection. If it is the same, that means that the object your are looking at is contained in the bigger object.

Hi,
Do you by any chance know how to get the volume of the intersection?

I’m trying to find a way to extract all elements that are completely inside a mass volume.
The form of the mass is quite complex so BoundingBox have so far been a dead end to me, since it doesn’t seem to give me a true representation of the actual mass volume. Solids look more promising, but I can’t figure out how to get a hold of the elements that are completely inside the mass.

As you say I could use Element.IntersectsSolid if I could compare the volumes. But how do I get the volume of the intersection?

You can use Geometry.Intersect and then Solid.Volume