Room2D geometries for Story "Story_" have floor elevations that are too different from one another to be a part of the same Story

Hi guys

I just tried exporting a large model with about 1900 zones from Revit to IES. As you can see in the model, I am able to export to .dfjson but not to .gem or .osm. In my case, I can only use a gem-file, so I’m really stuck here. Any idea, what the problem might be?

I’m using this version, which I think should be the newest
image

Hi, @labrosse - sorry to hear that! I’ll have a closer look after the Thanksgiving holidays.

Meanwhile, can you try to import the DFJSON model to Rhino and then user Rhino to create the GEM file?

If that didn’t work the next step is to share the DFJSON file with us.

Hi, @labrosse - Sorry for the delayed response. I watched your video now. Most likely that something goes wrong in the process of translating the DFJSON file to the GEM file.

  1. Were you able to use the workaround that I suggested above?
  2. Can you share the DFJSON file with me? I should be able to recreate the issue on our end.
  3. Finally, the log file should have some information about what goes wrong when you run the command. Can you share the log file with us, if you can’t share the DFJSON file? You can see the path to the log file in your screenshot.

Hi @mostapha

No worries! Here is the DFJSON- and log file
Debug_2022-11-25.00.log (34.4 KB)
DragonflyModel.zip (940.6 KB)

I tried opening the file in rhino, but got the following error

Failed to load model: System.ArgumentException: Command:
C:\Program Files/ladybug_tools\python\python -m dragonfly validate model "M:\17433\09_BEREGNINGER\09-06_OEVRIGE\Energi, indelima og dagslys\Indeklima\IES\DragonflyModel.dfjson"
dragonfly.cli.validate - ERROR - Model validation failed.
Building "Building 1[Building_6ee1cda9-d9b8-4827-bfbf-63529d05a149]" is invalid:
Story "EST - Stue[Story_]" is invalid:
Room2D geometries for Story "Story_" have floor elevations that are too different from one another to be a part of the same Story.
Traceback (most recent call last):
  File "C:\Program Files\ladybug_tools\python\lib\site-packages\dragonfly\building.py", line 226, in from_dict
    stories.append(Story.from_dict(s_dict, tolerance))
  File "C:\Program Files\ladybug_tools\python\lib\site-packages\dragonfly\story.py", line 150, in from_dict
    story = Story(data['identifier'], rooms, f2fh, fh, mult)
  File "C:\Program Files\ladybug_tools\python\lib\site-packages\dragonfly\story.py", line 85, in __init__
    'another to be a part of the same Story.'.format(identifier)
AssertionError: Room2D geometries for Story "Story_" have floor elevations that are too different from one another to be a part of the same Story.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files\ladybug_tools\python\lib\site-packages\dragonfly\model.py", line 255, in from_dict
    buildings.append(Building.from_dict(bldg, tol))
  File "C:\Program Files\ladybug_tools\python\lib\site-packages\dragonfly\building.py", line 228, in from_dict
    invalid_dict_error(s_dict, e)
  File "C:\Program Files\ladybug_tools\python\lib\site-packages\honeybee\typing.py", line 310, in invalid_dict_error
    raise ValueError('{} "{}" is invalid:\n{}'.format(obj_type, full_id, error))
ValueError: Story "EST - Stue[Story_]" is invalid:
Room2D geometries for Story "Story_" have floor elevations that are too different from one another to be a part of the same Story.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files\ladybug_tools\python\lib\site-packages\dragonfly\cli\validate.py", line 53, in validate_model
    parsed_model = Model.from_dfjson(model_json)
  File "C:\Program Files\ladybug_tools\python\lib\site-packages\dragonfly\model.py", line 326, in from_dfjson
    return cls.from_dict(data)
  File "C:\Program Files\ladybug_tools\python\lib\site-packages\dragonfly\model.py", line 257, in from_dict
    invalid_dict_error(bldg, e)
  File "C:\Program Files\ladybug_tools\python\lib\site-packages\honeybee\typing.py", line 310, in invalid_dict_error
    raise ValueError('{} "{}" is invalid:\n{}'.format(obj_type, full_id, error))
ValueError: Building "Building 1[Building_6ee1cda9-d9b8-4827-bfbf-63529d05a149]" is invalid:
Story "EST - Stue[Story_]" is invalid:
Room2D geometries for Story "Story_" have floor elevations that are too different from one another to be a part of the same Story.
   at Core.Utility.ExePythonCommand(String argument, String& results)
   at Core.Utility.ValidateDfModel(String dfJsonPath)
   at Core.Utility.DFJsonToHBJson(String dfJsonPath)
   at Pollination.RH.Import.PollinationImport.RunDFJsonImporter(String filename, RhinoDoc doc, FileReadOptions options)

That export was made directly using the architects model.


Since then, I’ve tried using a linked model and created the spaces manually to ensure that the spaces were created correctly. Doing so, I was able to export a GEM-file, but only some of the windows were included.

There aren’t any space separation lines at the facade, which I thought might be causing the problem.

Also, I wasn’t able to export the basement, as PO got stuck trying to compute the large parking area in the middle of the courtyard. I tried letting it run twice for over an hour without any progress.

If you need to check my model to figure out the problem, I will have to share it in a PM, as the project is still confidential.

@mostapha @labrosse this is probably because Revit allows you to create a room from let’s say Level 1, but then offset its base/top by 100m so that room in reality is in a completely different location. It’s still reporting to be created from Level 1 so it would be assigned to that Story, and then it fails this validation.

Look for rooms in this file that have big offsets for base/limit. That should be your clue.

Ps. This happens because when you create a new room, it will get assigned to whatever Level you are currently on (Floor Plans are assigned one level only, so if you are on a floor plan Level 1, it would have Level 1 assigned to it, and then Room picks that up and is also assigned Level 1 etc.).

Thank you @labrosse for sharing the file. I had a look and there are two sets of issues.

  1. All the story identifiers are set to Story_. This is invalid as the identifier for each story should be unique. @ksobon, how do you create these IDs for stories? I imagine there should be a way to make them unique. I manually fixed them for now.

  2. There are a few rooms in EST - Stue that has a different height 2.28m than the rest of the rooms 4.183m. Here is the list.

    • Forrum T.N1.EST.F
    • Forrum T.N2.EST.F
    • Forrum T.N3.EST.F
    • Forrum T.N4.EST.F
    • Forrum T.N5.EST.F
    • Forrum T.N5.E0.F

    @labrosse, from what I see you haven’t overwritten the heights. You should try that in step 3.

    It is probably easier to fix them in Rhino. I share the file with you in a private message.

For the missing apertures, I can see that the spaces are not touching the wall. If you draw a section you should be able to see why this is happening. I covered this in the AEC Tech workshop. I will share the video here when it is posted on YouTube.

@mostapha they should be assigned from Revit Level’s unique id. They should not be null. Getting a sample file would be nice.

Hi guys

Just send you the model on a privat message.

I did define an extrusion height, but I think that I entered the plenum height rather than the floor-to-floor height, which explains why the zones are so small.

Concerning the windows, I already tried to research this as I also thought it was strange, that the spaces didn’t extend all the way to the windows. I found this topic which debated the same thing, but they didn’t give any useful answers. Drawing room separation lines by the face of the wall won’t fixed the problem in my case.

@labrosse on the subject why this room doesn’t include apertures it’s because the wall that is bounding it doesn’t have any. You can see that from the section:

There are multiple walls modeled at the facade. They are meant to be finish walls, I am guessing but these finish walls won’t have windows in them, so they don’t get processed here.

I would turn off Room Bounding for the first wall:

1 Like

Assigning this to Konrad to check the issue for story IDs.

Well spotted @ksobon !
I think that the architects have model two walls to separate the “architectural wall” from the “structural wall”. The advantages of doing this is that architecs can exlude all structural component from their schedules, when they deliver data for LCA calculations. That way, they are not held responsible for the structural part of the model.

I’ll try that when I get to the office tomorrow. Thanks!

Hi guys

Just a little update. I went through the model an edited the inner concrete walls to ne non-room bounding. As a tip to others that might have the same problem, I used the ColourComposer function from NTI Tools to highlight whether the wall was room bounding or not, which made the process much easier to manage.


So now I have beautiful my model with 2030 zones, balconies as shading and context buildings directly from Revit! Did it in about 7-8 hours in total and expect to be able to do it faster now that I understand the mechanics.




Still have some of these annoying cases, where the rooms overlap. Haven’t figured out how to fix those yet.

Hi, @labrosse - this is great to see! I wonder if you could select those walls by type and then make all of them not be room bounding with a few clicks. Or are they already used in other places in the model?

For the annoying issue, I wonder if the small element is also room bounding, which makes the room line snap to it? See the green line here.

This can also be a good use case for using the automated align option so you don’t have to fix the Revit model.

@labrosse here’s my response to why this happens, and how to fix these.

https://watch.screencastify.com/v/NOGE3jYrsaCxTAxRjXdU

2 Likes

Thanks @ksobon that makes sense. The real conclusion is, that the architects that drew the model, made it super messy :sweat_smile:

I’ll try run through the model again and see if I can solve these small issues. I have already ungrouped the entire model (took over an hour because the model froze every time I try to select all model groups at once), so making these adjustments should be easier that it was for you on the model. Still, there’s a lot of these areas in the model, so crossing fingers, that it wont take too long

I did. I used Colour Composer to mark the walls, then a made all the relevant walls non-room bounding, but there were cases, where a part of the wall or maybe a single face here and there needed to be room bounding. In my case, the building is quite modular, so I would find a wall on the ground floor that needed to be room bounding and then I used the Selection Box function to isolate this wall and all similar walls on the storeys above, so that I can change the properties in one go instead of having to go through each floor (again, just writing this as a hint to future users). So it was this pre-processing that took time. And with a model of this scale, I’ve realized that you can’t expect to have a clean model in an hour.


Hi, @labrosse - nice workflow! Thank you for sharing them here.

Can you share the Dragonfly file with me for the model at this step, if you have a copy:

I’m not sure if you have used the new PO_GenAlignGrids command in the Rhino plugin but I hope with the combination of the PO_GenAlignGrids and PO_AlignToGrid commands we can bring down the time for fixing these models to less than an hour! :slight_smile: I know that’s an ambitious goal but I can’t see why we can’t get there for the extruded models.