我已经将多个imodels合并到一个文件中,如下所示(来自iModeljs测试代码):
const mergedIModelFileName: string = "...path/combined.bim";
const mergedDb = SnapshotDb.createEmpty(mergedIModelFileName, {
rootSubject: { name: "Merge Test" },
});
const campusSubjectId: Id64String = Subject.insert(
mergedDb,
IModel.rootSubjectId,
"Campus"
);
const garageSubjectId: Id64String = Subject.insert(
mergedDb,
IModel.rootSubjectId,
"Garage"
);
const buildingSubjectId: Id64String = Subject.insert(
mergedDb,
IModel.rootSubjectId,
"Building"
);
mergedDb.saveChanges("Create Subject hierarchy");
if (true) {
const campusIModelFileName = "...path/source1";
const campusDb = SnapshotDb.openFile(campusIModelFileName);
const transformer = new IModelTransformer(campusDb, mergedDb, {
targetScopeElementId: campusSubjectId,
});
await transformer.processSchemas(new BackendRequestContext());
transformer.context.remapElement(IModel.rootSubjectId, campusSubjectId);
await transformer.processAll();
transformer.dispose();
mergedDb.saveChanges("Imported Campus");
campusDb.close();
}
if (true) {
const garageIModelFileName =
"...path/source2";
const garageDb = SnapshotDb.openFile(garageIModelFileName);
const transformer = new IModelTransformer(garageDb, mergedDb, {
targetScopeElementId: garageSubjectId,
});
transformer.context.remapElement(IModel.rootSubjectId, garageSubjectId);
await transformer.processAll();
transformer.dispose();
mergedDb.saveChanges("Imported Garage");
garageDb.close();
}
if (true) {
const buildingIModelFileName =
"...path/source3";
const buildingDb = SnapshotDb.openFile(buildingIModelFileName);
const transformer = new IModelTransformer(buildingDb, mergedDb, {
targetScopeElementId: buildingSubjectId,
});
await transformer.processSchemas(new BackendRequestContext());
transformer.context.remapElement(IModel.rootSubjectId, buildingSubjectId);
await transformer.processAll();
transformer.dispose();
mergedDb.saveChanges("Imported Building");
buildingDb.close();
}
mergedDb.close();它给出了合并的imodel文件。然而,它提供了具有不同视图的合并的imodel文件。
我想要和需要的是看到我合并在一个视口中的所有模型。有没有这样做的IModelTransformOptions?如果可能的话,如果你能给我一些代码来解释,我将非常感激。
发布于 2021-07-15 08:39:17
您可以使用或不使用IModelTransformer来实现这一点,这取决于您最终想要得到什么。
一旦有了合并的iModel,就可以使用ViewCreator3D.createDefaultView函数创建包含合并模型中所有3D模型的默认视图。
如果希望合并现有的SpatialViewDefinition,可以创建IModelTransformer的子类并覆盖onTransformElement和shouldExportElement,以形成一个组合的视图definition+model选择器。
https://stackoverflow.com/questions/68373873
复制相似问题