Room Numbering - Test point within a solid


#1

I’ve been following William’s fantastic post on room numbering with a curve. http://www.case-inc.com/blog/dynamo-renumbering-revit

I’m running into the issue where my rooms aren’t rectangles and the bounding box node idealizes my rooms into such. That means a specific point on my curve may contain several rooms (which I don’t want).

How do I test a point within a solid? I can get solid geometry out of my room, which preserves the shapes of my room but then how can I test a point within the solid.

Script - Bounding Boxes - Room Solids

Solids

 


#2

Hi,

You can make a bunch of points on the curve and then use “Geometry.DoesIntersect” to test if those points lie inside the solid. I believe it should be a faster method than straight away intersection, because it doesn’t try to calculate any intersection results. Alternatively you could try getting the solid centroid ( there’s a node with a similar name) and get the closest point to it that lies on the curve with the incredibly useful “Geometry.ClosestPointTo” node. Finally in both cases you can then get the parameter of that point on the curve, zip the list of room elements and parameters, sort and get only the elements.

I think I saw a similar example just recently, but I can’t seem to find it, so here’s my quick take on this:

2015-10-01_13-26-03

 


#3

I’m having a bit of an issue with William’s renumbering graph - in particular I can’t seem to get the List.FilterByBoolMask node to operate as a function for a List.Map. Image and definition attached in case anyone can advise.

sequential_room_numbering_NYCBXR

dynamoFail


#4

Hi Brian,

I have revised your script you will find it here sequential_room_numbering_NYCBXR. Its working now.

Untitled1


#5

You might want to check out this tutorial: http://parametricmonkey.com/2015/05/02/renumbering-rooms/

 


#6

or this Brian: http://archi-lab.net/door-numbering-v2-0-for-dynamo-0-8-0/


#7

actually this: http://archi-lab.net/room-numbering-with-dynamo/

but for the love of god its OLD. Don’t look at it. I take that back .