Family.inRoom question


#1

Only recent started working with Dynamo. I am impressed with all the work you all do with dynamo. It opens a lot of possibilities to extent the functionality of Revit for me.

I now use the node family Family.InRoom from Koppevi. I notice that in one instance I had a family that is for the major part inside the room. The node list this item as not in the room. While I check my schedule inside Revit it assigns a room name and number to this item. Is there a reason for this difference?

In Room or Not

 

 

 

 

 

 

 

 

 

 

 

I’am not familiar enough (yet) with dynamo and python to delve into this node myself.

 


#2

Enlint, so that is interesting.

basically it is a quite simple code.

we have two lists. one for rooms the other for objects.

the objects in revit have “location points” or “location lines”.

the python code uses a revit api funtion that checks if a point is within a room.

thats it.

 

maybe you send me your example that i may find out what went wrong in your case

peter.

 

 


#3

Peter,

One thing that i noticed right away is that Location Point of a family is always the 0,0,0 point or the intersection of the two reference planes in the family. Sometimes that family could be built where the geometry is located away from that center point. In that situation family could report being/not being in a room wrongly.

 


#4

Also, since Revit 2014 a lot of families now have a room calculation point. If that gets moved to an adjacent room (or is not located at the placement point of the family in the family file), that might be another reason.


#5

I just updated the package. now the Family.LocationPoints node shows the extracted point geometries in dynamo.


#6

Schedule

Test

 

Peter,

Thanks for you help. I tried with your version 0.03. Still the difference, Revit reports all three items inside the room (see schedule). Dynamo only one.

For your information I am running with Revit 2015 and dynamo 0.7.5.3566.

Attached the stripped revit file (Test) for your review.

 

 

 

 

 

 

 

 

 


#7

Enlint, the solution was easier than expected!

inspecting your family i found out, that the origin is misplaced:

as you see the origin is outside the family (the circle at the northern intersection of the reference planes)

origin

 

 

 

 

 

 

changing the origin (select the center reference plane and change in properties “Defines Origin”)

save and voila :wink:

even if the geometry is intersecting the families are in the rooms

room

 


#8

Peter,

 

Thanks for looking into it. I did the origin on purpose as I normally want it on a fixed distance from the wall. But this does not entirely answer my question

What my actual question is, why does, while the items are in the exact same position, revit reports a room number/name (see my schedule) while dynamo does not.

 

You see the same thing happening with the whiteboard. Revit reports a room name/number (see earlier screenshots). Dynamo does not.

So something is different how Revit and Dynamo determine in room.

 

 

 

 

 

 


#9

different calculation methods.

only the russion knows :wink:


#10

You could try a different approach. Have you dabbled in bounding boxes and their boolean intersections? That’s probably what Revit’s built-in method is using. And as a matter of fact, Julien Benoit’s steam nodes package has a really neat node called “Tool.GetSurroundingElements” that deals with a similar user cases. I have a hunch you will love that node:

Capture

 

In the example above I’ve got two rooms and 4 desks. One room contains two desks, the other a single desk and the last desk is outside the rooms. If you give a tiny tolerance to the node, it should perform similar to Revit’s room check.


#11

Hi,

I am very new to Dynamo and was trying to see which rooms contained a particular family type. I came across the “Family.InRoom” node but I can’t seem to get it to work, can you use it with the “family types” node and are there any other reason why this might not be working?

dynamo

Thanks :slight_smile: