Find Room Tags that have a Filled Region over them


I have been trying to find how to select some room tags that have a Filled Region over them I found something that let me get the point of the tag but I can’t seem to get the intersection thing figured out. I have tried several things, some of that I left here.

Tags and Filled Regions are both view dependent, so you’ll want to make sure you’re only comparing elements within the same view. You’re already filtering your tags by active view so you might as well do the same with your filled regions - especially since the node you’re using already has that as an output.

Bounding Boxes aren’t always the best option since they are always orthogonal to the world coordinate system and your filled regions may not be. They could be a reasonable option for your tags though - if you don’t just want to check the location point. For the filled regions I’d suggest converting the boundaries to a patched surface instead.

Using a surface and a point (or solid if you go the way of bounding boxes for tags), you can then get the geometry intersections instead of the bounding box ones and that should give you what you’re after.

Additionally, you may want to look into how the FilterByBoolMask node works. It uses a boolean list (filter) to separate the input list based on the corresponding boolean values.

I have been trying to research how to do a surface from a hatch boundary. Can you point me in the right direction?

You may be overthinking the specifics. The hatch boundary is just a list of curves. You can create a surface from a closed loop, so you just need to convert your list of curves into a singular polycurve (PolyCurve.ByJoinedCurves) and then patch (Surface.ByPatch).

I get the surface but now I find the tags are setting above it. The Z value of the tag head position is at 4.00 for all the tags. How do I set their little butts down?

Either move them with Geometry.Translate or create new points with no Z coordinate.


I can’t get anything to show the intersection of the tag and the surface. I have even thickened the surface. Any suggestions? Is it because it does not see a tag as an “Element”?

We can’t read the nodes in your image. Try exporting the workspace as an image when the node titles are visible. You’ll also want to make sure you’re using list levels or cross-product lacing so that every surface gets intersected with every point.


Can you see this now?

You’ll want to flatten your list of surfaces and still use lacing or list levels to get the appropriate intersection structure. But you should also be supplying that intersection boolean list to FilterByBoolMask.
https://dictionary.dynamobim.com/#/Core/List/Action/FilterByBoolMask


Well, it works, but I have to close it before I can go to another view and run it. It always had an error on the last node but it still works.
Using the Dynamo Player It reports the error but I don’t have to close it to get it to work in another view.

This is expected. You need to force the inputs to change. It would also “redo” your changes if you just rerun unless you’ve built in element binding to handle this.

Player is the correct fix here. However, it shouldn’t error just from changing views. What does the error actually say?

It’s saying you don’t have any elements to hide. So something is off with your logic somewhere.

But it is hiding the ones I want to be hidden?

Odd. There’s nothing interacting with the elements beforehand so I don’t see how it could be out of sync.

Well, now I have added a dialog box to be able to select any type of tag to be hidden. It is working fine, just leaving that error message every time.

Thanks @Nick_Boyts for pointing me in the right direction a few times. I am still so new to Dynamo. I ain’t scared though, I will go after anything. Lots of Google and questions from me but I am stretching my limit more and more.

1 Like