Multi-model project support with sequential loading

Introduce ModelHandle and per-model GeometryStreamers so multiple IFC
files can be loaded simultaneously. Object IDs are globally unique
(monotonically increasing across models). File picker is now multiselect.
Each model gets a top-level tree node. Property lookup uses the correct
model's ifcopenshell::file. ViewportWindow supports hide/show/remove
per model via model_id filtering in the frustum cull pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dion Moult
2026-04-11 20:49:39 +10:00
parent 6f6bebf387
commit 83a3131276
7 changed files with 167 additions and 47 deletions
+2 -2
View File
@@ -40,7 +40,7 @@ int main(int argc, char* argv[]) {
QCommandLineParser parser;
parser.setApplicationDescription("IfcOpenShell IFC Viewer");
parser.addHelpOption();
parser.addPositionalArgument("file", "IFC file to open");
parser.addPositionalArgument("files", "IFC file(s) to open", "[files...]");
parser.process(app);
MainWindow window;
@@ -48,7 +48,7 @@ int main(int argc, char* argv[]) {
auto args = parser.positionalArguments();
if (!args.isEmpty()) {
window.openFile(args.first());
window.addFiles(args);
}
return app.exec();