Share icon indicating copy to clipboard operation
Share copied to clipboard

System: Load multiple ifc into a scene

Open MarkusSteinbrecher opened this issue 3 years ago • 13 comments

Original requirements

We currently see the following use cases that require loading multiple IFC into a scene:

  1. Engineering disciplines: as an architect or engineer I want to be able to load multiple models, e.g. the architecture model and the HVAC model into one scene to compare them visually
  2. Big projects: as an architect I want to load multiple models of one project, i.e. models of multiple houses into the scene to see the whole project
  3. Versioning: as an architect or engineer I want to load different versions of a model into a scene to compare them visually

Besides the core functionality of loading two models we see the following requirements:

  • UI load - need to create screens on how to load multiple models (add, drag n drop, select from list)
  • UI toggle - have an icon in the UI that allows toggling whole models on and off
  • Collision detection - for the backlog, add collision detection
  • Show diffs - for the backlog, show/highlight diffs of models

Solution

  1. There are two types of models. The first loaded model is considered the "main model", models that are being added to the scene are considered "attached models".
  2. In the treeview all models - both main models and attached models - are represented as root nodes in the tree.
  3. In the treeview there is a button "attach model" to attach additional models
  4. In the treeview on each attached model there is a button to detach them (unload)
  5. Both main models and attached models can be shown/hidden with the existing toggle functionality
  6. The Bldrs URL only specifies the main model, additional models are not part of the URL
  7. Matrix Widget API allows to list, attach and detach models
  8. Matrix Widget API messages must specify which model to operate on - if omitted it defaults to the main model

MarkusSteinbrecher avatar Jul 06 '22 06:07 MarkusSteinbrecher

@pablo-mayrgundter - does the work you did with the cars, address this issue?

OlegMoshkovich avatar Jul 19 '22 21:07 OlegMoshkovich

No. I think we want to use the IFCjs loader to handle multiple models. Let's leave this open to track that.

pablo-mayrgundter avatar Jul 26 '22 11:07 pablo-mayrgundter

Apparently this is already possible with ifc.js: https://stackoverflow.com/questions/68222208/how-to-load-multiple-files-in-ifc-js

MarkusSteinbrecher avatar Aug 24 '22 09:08 MarkusSteinbrecher

Updated the description. I propose to start with the easiest version in the UI and just add a "add model" to the "Open IFC" screen. What do you think?

MarkusSteinbrecher avatar Sep 07 '22 09:09 MarkusSteinbrecher

Sounds good as a start @pablo-mayrgundter

OlegMoshkovich avatar Sep 08 '22 12:09 OlegMoshkovich

I think we have two related concepts here: Levels of a building and Layers of a building. "Show me MEP & Architecture for level 4 of the building" includes both of these.

I propose 2 tool icons (on right side), one for each:

  • Section tool has the usual stack of squares, and allows toggling floors on and off.
  • Layer tool is next to it, different icon, and allows toggling e.g. MEP & architecture on and off.
    • Layer tool also includes a "+" symbol, which triggers a file upload of an IFC that creates a new layer, that can also be toggled.

Separately, loading files in the top-level search dialog area is always "start a new project by removing all current content", or perhaps there's a checkbox to leave current content. However, that raises the problem of whether the new content is in its own layer, and if so why not use the layer tool approach.

Talked with Oleg on this.. think we need some mocks.

pablo-mayrgundter avatar Sep 08 '22 16:09 pablo-mayrgundter

Not sure I agree to the "layer tool" ... this is about loading another ifc model into a scene. The "layer tool" in my view would be one ifc model but I mark MEP as a layer inside that. Maybe this is just naming but if I want to upload another ifc into a scene I am not searching for "layer tool", especially if that other model is another building and not a specialized model of the same building. Regarding the mock ups: I am sure we can come up with a nice ui over time ... for now adding a "load additional model" on the open screen would work I think.

MarkusSteinbrecher avatar Sep 08 '22 16:09 MarkusSteinbrecher

Ok, as discussed, this is really just loading top-level models, i.e. with separate trees, no particular merging of layers (how do we know what's a layer?). Good good

pablo-mayrgundter avatar Sep 13 '22 08:09 pablo-mayrgundter

Fits to product strategy: yes Estimation: needs R&D work for Layering, potentially Q1

Adrian62D avatar Dec 02 '22 15:12 Adrian62D

@pablo-mayrgundter do you see an issue if we start with this one already even though the core/rendering refactoring on your end is in progress?

Adrian62D avatar Apr 21 '23 05:04 Adrian62D

Really depends how complex this will be. If it's pretty simple, then it's ok as we're not committing too much work before the new datamodel is active. So I'd suggest a day or two looking at it to see if there's a quick approach.

pablo-mayrgundter avatar Apr 24 '23 11:04 pablo-mayrgundter

We analyzed the requirements and updated the issue description accordingly. We think it's doable with an OK-ish amount of effort and will tackle this one.

Adrian62D avatar May 05 '23 10:05 Adrian62D

Good to hear.

IFCjs has support for this, and we'll be following that API for the new datamodel.

pablo-mayrgundter avatar May 09 '23 11:05 pablo-mayrgundter