Update… v2 has been published in Bakery package as:
Create Floors From Rooms v2.dyf

All kinds of weirdness with Package Manager at the moment, so I am sharing my entire ‘packages’ folder including Bakery and dependencies for 0.8.2 at this link:

It uses a two different methods to get Room Boundary outlines: first try is with a Clockwork node, next try is by Element.Geometry. It also sets the Room Number to the newly created Floor Comments parameter.

Just letting you all know that this new node has just been published in the Bakery package:
Create Floors From Rooms v1.dyf

The scope:
This ‘version 1’ node takes the Room elements, converts to Element.Geometry, grabs the face at the host level, gets the curves from the face, uses Konrad Sobon’s Group Curves node to assist with making the Polycurves, then matches the right Polycurve with the outer boundary using a bounding box method. Then, it feeds the outline to a Floor creation node (after matching link Level-host Level if necessary), and then sets Element Id, Room Number and Room Name as one string to the parameter you select.

You can use it across links with some other Bakery nodes too, which would look something like this:

Unfortunately, sometimes the builtin Element.Geometry node will fail to convert the Room to a solid. This warrants further investigation, but only affected about 15 rooms of 718 in this particular test. In the meantime, I simply report which rooms fail in the ‘geometry failure’ output:

Future improvements needed:

  • handle Element.Geometry failures with some other method
  • cut out Floor Openings where voids are present in the Room space
  • match Base Offsets by moving created floors to correct height
  • get approximate Room Height by Volume and drive or report desired Floor Thickness

Here is the 1 minute demo:

And the dyn:

If you are on Dynamo 0.9 or newer, you may want to check out Marcello’s Direct Shape method over at:
Simply Complex: Create 3D Rooms in Revit Using DynamoBIM

Its a long-winded title, but its only one Dynamo node… Just added to the Bakery package, called Collect Elements in Rooms and Show Detailed List. Basically, it takes a list of Rooms and a list of Elements and then tells you which Rooms those Elements are in. It also works across linked files, so you can have a fixture model, link in the Architectural containing Rooms, and use those to do the comparison.

Once we have the Room that an element lives in (mostly thanks to Konrad’s work on Family.InRoom, which I have altered a little bit here), we can do lots of things. I used a Cycle and LaceShortest to get a 1:1 list of Room:Element. This makes it easier to do things with the resulting combined lists. Like, one of the outputs of the node is a detailed 6 index list, which can be directly exported to Excel. The list in Excel can then be filtered by Room. You can choose two parameters from Rooms, two from the Elements, and it also gives you the Element Ids of both:

I could have added headers to the list in Dynamo, but I didn’t do it for this first version (yet):

We can also take a parameter from a Room (like Room Name or Room Number) and then write it directly into a parameter in the Elements, like this:

This shows the Mark parameter populated with Room Name:

Or, we can take two parameters from linked Architectural rooms, and drive two Shared Parameters in every element in the current model. I ran the following node to set parameters for about 2500 elements in just a couple of minutes:

Or, we can use another Bakery node to do a wildcard search and collect elements from one Category across multiple links, and then check against these:

While this is a basic implementation at this stage (and no doubt there may be some hiccups), it demonstrates a powerful concept: to be able to take a mixture of linked Rooms and/or linked Elements and determine their relationship, then export that data or use it to instantly drive other parameters in Revit.

Goooo Dynamo!

Interesting post by troywright on AUGI, in relation to setting up segregated links as room bounding in your Revit MEP file:  
We have this issue frequently, as with major projects we will receive different models for architectural fitout, shell and core and facades etc. 

The solution we have (in your example) is to; 
– Link the structural model into architectural as an overlay, set to room bounding 
– In your MEP model link in the structural model and the architectural model. 

That’s it. Essentially it is an extra step, but it means that the architectural model knows it is bound by the structural model, even though it is only an overlay! I think someone else mentioned this method earlier but with worksets. I can’t see a point in doing this as the nested structural model is an overlay, so it’s irrelevant. 

Another issue you may have is that your spaces act up when an architectural model has floor finishes set to room bounding that are higher than the level they are on. To fix this just change all of your levels to have a calculation height above that of the floor finish.

via 2014 MEP Spaces

I know you can use various addins (like Case Extrude Rooms to 3D Mass) to make a form out of a Room element in Revit. However, there is a vanilla Autodesk way you could go about this:

  1. Export a Revit view to Navisworks with all of the Room-related export boxes ticked in the Navisworks Exporter addin
  2. Open / append the NWC in Navisworks
  3. Turn off everything except the Room objects that the Navisworks Exporter created
  4. Export the scene to FBX, convert to DWG, import it to a family, place that family back in the project (using parts of this workflow). Use origin-to-origin linking to get things right.

You could then use the Room 3D element “family” in an Interference Check, to determine what elements exist in Rooms (this would only work for Categories that support Interference Check in Revit).

In almost every case, I prefer Structural Columns over architectural Columns in Revit.  However, the architectural versions can easily be made Room Bounding.  How do we do this for Structural Columns?

Change the “Material for Model Behaviour” property in Family Category and Parameters to be Concrete or Precast Concrete.

Strangely enough, changing back to Other after reloading this Family had no effect – I could not make it non-Room Bounding again…

EDIT: In the comments, Chris describes the behaviour of Structural Columns in the Project – “Deleting the columns and placing new columns with the material as “other” will make the space non-room bounding again.”

See image:

Part of knowing What Revit Wants, is also knowing what it Does Not want.  Sometimes, you can push the hack (or workaround) that step or two too far… and the result is unpredictable, buggy and kinda useless.

In the past, I have used various methods to create inplace or component families that are not ‘officially’ or natively available.  In this particular instance, I used the IFC round trip method to force the creation of an Inplace family with Category set to Rooms.  I also pushed this into a Component (loadable) family.

Great!  I have Room families.  But guess what?   The result is unpredictable, buggy and kinda useless.

In fact, if you open these projects, make some Room Separation lines and then try to place a Room, I would estimate that in 95% of cases, your Revit has already crashed.  The families will not accept a tag, and they won’t schedule.  They seem to just sit there, destabilizing your Revit environment.  So why post about it?  Well, basically so that you can add this workaround to the aforementioned list of something that Revit (currently) does not want.

I have provided both 2013 and 2014 versions for your download and testing here:
RVTs that will crash Revit

Revit deals in realities.  The reality is, many Rooms are not rectangular.  So we can forgive vanilla Revit for not having a built in tool or method that could only really ‘guess’ at X and Y room dimensions for irregularly shaped rooms.

There are two workarounds that I think can be useful:

  1. A Room Schedule that calculates X and Y dimensions for rectangular rooms only
  2. A Model Family with built in nested annotation labels that needs to be manually stretched and updated to the assumed X / Y dimensions of the Room.  Just place the family and then adjust the grips.

I can’t take credit for the Calculation method.  This uses a formula based on Perimeter and Area to establish calculated values for X and Y room dimensions in a Schedule.  I downloaded an RVT back in 2008 that demonstrated this method — from … somewhere.

Similarly, I can’t really take credit for the Model Family with Annotation Labels idea for the family either.  Daryl Gregoire posted it years ago in a series of videos, and it was mentioned in this post as well.

Download this file to see both methods in action.  Be sure to review both the Floor Plan and the Schedules to see how it all works together.

I chose Casework because it has built in X, Y and Z parameters – meaning I did not have to use Shared Parameters.  I control visibility by placing these Casework families on a secondary Design Option.  You could actually use a standard Casework Tag instead of the built in annotation if you prefer.  The Casework Schedule is filtered by Type Comments, and the other good thing about Casework is that we can Schedule the Room that the Model family lives in.

Feel free to comment, even if you think both methods are a bad BIM idea 😉