Self-intersecting polygon (areas with voids)

Hi guys

I’m doing a definition that takes data from Areas and applies them to Rooms lying within the Areas. This works fine (I btw found that curve.patch and geometry.doesintersect runs a lot faster than a containment test - nice) as long as there are no Areas with ‘voids’ - this will result in self-intersecting polygons. Unfortunately I cannot seem to find a solution for this problem.

Do you have any input on this?


I’m not sure what do you mean by self intersecting polygons in this case.
Anyway I tried recreating this, although I don’t have Collector.Areas node, and it seems working.

Can you explain what is the problem exactly?

Hi Viktor

The problem occurs when you have a situation like shown below (a “void” within the area);

In that case, neither Polygon.ByPoints nor PolyCurve.ByJoinedCurves seem to do the trick.

… just thinking; would it be possible to do test if one curve lies within another and then do a Geometry.Trim / Geometry.IntersectAll like discussed here?

Hi again!
Try this:
rm area.dyn (21.8 KB)

It checks if the area has a void and should work for both areas with or without void. It uses solid booleans though so for a large number of areas it could be slow.

Hi Viktor

Thanks for the definition - unfortunately I’m not able to make it work. Is it possible for you to post an corresponding rvt file? Would be much appreciated!

… could also be areas within areas! It seems strange that this shouldn’t be a relatively simple thing to accomplish.

@Christian_Boggild_Sc i am having troubles doing something similar. Did you work out a solution?

Unfortunately not. I had to work around it by removing voids prior to running the definition. I still need to solve it though - I’ll let you know.