Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

Zone floor area is zero. Floor surfaces not recognized

asked 2015-03-10 01:35:01 -0600

mit011's avatar

updated 2015-03-10 09:07:07 -0600

I have been encountering this error because the floor surfaces of my model's 4th floor are not being recognized in OSM:

* Warning * No floor exists in Zone="ZONE-4N10", zone floor area is zero. All values for this zone that are entered per floor area will be zero.

Background info: My model has 4 levels. It is created in Revit, exported to gbxml, then imported to OSM for simulation. . All zones have 1+ spaces in them. All spaces in all zones have floors. The floors for zones on levels 1-3 are recognized by Openstudio but not the floors for level 4 zones. I have tried exporting only the 4th floor and do not encounter this error.

Not sure if this information will be helpful, but in my Revit model, the ceilings are "non-room bounding". This means that the floor is the only bounding element between any 2 stories. Openstudio will recognize the floor of the 4th level and the "ceiling" of the 3rd level as identical but reversed surfaces. However, the 4th level does not recognize any floor surfaces.

Why are these floors not being recognized in Openstudio?

edit retag flag offensive close merge delete


@mit011 can you post a link to your gbXML somewhere?

macumber's avatar macumber  ( 2015-03-10 08:59:05 -0600 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2015-03-10 09:05:19 -0600

updated 2015-03-10 11:01:32 -0600

To figure out why the fourth story is importing without a floor, it would help if you email the gbXML (actually both gbXML's would be great - whole building and isolated fourth story) to

To fix this specific model, should be pretty easy in the plugin.

  1. Open up one of the fourth story spaces. See if there is a ceiling where the floor should be. Either reverse the surface and change type to floor or add the missing surface. You should be able to add surface by redrawing one edge.
  2. Check third story ceiling to make sure it isn't a floor. If it is then reverse and change type.
  3. Repeat on other spaces.
  4. Run surface matching.
edit flag offensive delete link more


You are correct! Some spaces recognize both top and bottom bounding surfaces as floors. Other spaces, have ceiling and floor surfaces switched (spaces in lvl 1-3). OpenStudio was still able to run because the "floor" surface still existed, even if it was in the wrong location. The 4th floor was bounded by two "ceiling" surfaces so it did not run.

Questions now: 1) How can I quickly change surface types if they are incorrect? Manually doing so is tedious. Does a plugin for this (and reversing surfaces) exist? 2)Why does this occur in the first place? Is this due to poor practices in Revit?

mit011's avatar mit011  ( 2015-03-10 23:29:01 -0600 )edit

The trick to automating this is really about selecting the surfaces to alter. Once you do that very easy to have user script change surface type or flip the surface.

To demonstrate the issue for example, we don't want to take all roofs and change them into floors. We only want to take roofs that really shouldn't be roofs. If there is something useful in the surface name that identifies its intended use, that would help. Could also try to look for roofs with z value of 0. If it 10-50 surfaces and just need once probably easier to fix by hand, if there are hundreds, then could right script.

David Goldwasser's avatar David Goldwasser  ( 2015-03-11 11:03:11 -0600 )edit

The alternative to writing a script is to fix on the gbXML generation side. It is worth opening the gbXML in another application to see if you see the same thing there. It isn't uncommon for me to see gbXML's missing roofs and or ceilings coming from Revit. Typically what I see out of Vasari is much leaner because of the more constrained workflow. I think there are steps to follow for Revit that can affect the output.

David Goldwasser's avatar David Goldwasser  ( 2015-03-11 11:08:03 -0600 )edit

I've created example files to show my problem: []

Untitled.xml is exported from Revit. It shows that matching ceiling&floors reference the same surface. Upon xml import in skp, reversed surfaces are created so that the clg & flr reference diff surface names with the same dimensions. I run into the clg & flr surface switch.

Untitled_SKP is exported from Skp after manual surface type correction. The xml shows no floor surfaces which is unexpected due to the new rev. surfaces created. I tried to alter my original xml to

mit011's avatar mit011  ( 2015-03-17 22:32:27 -0600 )edit

imitate Untitled_SKP's correct info by changing the InteriorFloor surface types to Ceiling's. Skp automatically reverts my edits and the ceiling/floor error persists (gives me Warning: Changing surface type from 'RoofCeiling' to 'Floor' for surface 'su-7')

Also, I am new to ruby. Can you show me an example script that would change surface types?

mit011's avatar mit011  ( 2015-03-17 22:32:43 -0600 )edit

answered 2015-04-14 00:51:01 -0600

mit011's avatar

Wanted to give an update on my new findings. Upon various trials and closer inspection of the gbxml, I've noticed that the floor/ceiling surface type errors are affected by 1) space order naming in Revit and 2) Cartesianpoint order in GBXML.

1) If spaces are named from the top floor down (2nd floor spaces named before 1st floor spaces), floor and ceiling surface types should be accurately assigned. Spaces named from bottom up (1st floor spaces named before 2nd floor spaces) will encounter this error. You can see the naming sequence by creating a space schedule in Revit.

2) In GBXML's "surface id">"PlanarGeometry">"PolyLoop" section, the <cartesianpoint> order for ceilings are listed in a counter-clockwise fashion. Floor surfaces have CartesianPoint's listed in a counter-clockwise fashion. You can change one surface type to the other by switching the order of these coordinate points.

In my model, I jump from naming spaces from floor to floor (1st>4th>2nd>1st, etc). The naming sequence is more complicated so some floors are listed as ceilings while other floors on the same level are listed as ceilings. I have not been able to figure out a pattern, thus unable to write a script that will yield perfect surface type assignments. I can obviously manually switch the surfaces using the Openstudio Inspector but any change in my revit model will make this Sketchup file unusable, which is why I am trying to find a pattern in order to write scripts.

edit flag offensive delete link more


Sounds like this might be related to this issues?

macumber's avatar macumber  ( 2015-04-14 07:25:01 -0600 )edit

Yes, this is the exact same error I am encountering. His/her explanation is helpful, thanks! I just posted a solution on that page

mit011's avatar mit011  ( 2015-04-14 21:11:25 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer


Question Tools


Asked: 2015-03-10 01:35:01 -0600

Seen: 569 times

Last updated: Apr 14 '15