首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将两个模型合并为一个(使用IModelTransformer)

如何将两个模型合并为一个(使用IModelTransformer)
EN

Stack Overflow用户
提问于 2021-07-13 03:23:51
回答 1查看 67关注 0票数 0

请救救我。我试图将两个模型合并到一个输出bim文件中。

source1 = test1.bim,源2= test2.bim输出= output.bim

当我使用快照打开output.bim文件时,test1和test2应该都有,这意味着它应该有test1和test2的两个元素。

我看了看https://github.com/imodeljs/imodeljs/issues/87。然而,它只写着“使用IModelTransformer”。

我还查看了https://www.itwinjs.org/learning/backend/imodeltransformation/

https://github.com/imodeljs/imodeljs/tree/master/test-apps/imodel-transformer

https://github.com/imodeljs/imodeljs/blob/master/core/backend/src/test/standalone/IModelTransformer.test.ts

文件,但还没找到。

有人能给我一个示例代码吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-13 23:51:49

在转换器测试中,有一个示例显示从磁盘加载并合并的一些快照iModels:https://github.com/imodeljs/imodeljs/blob/master/core/backend/src/test/standalone/IModelTransformer.test.ts

这一过程如下:

  1. 创建一个空的" merge“iModel
  2. ,为每个要合并的模型插入一个主题,依次打开每个模型以合并,将此iModel的根主题重新映射到"merge”模型中插入的主题,并运行转换器来导出从“模型到合并”的所有内容,并将其导入"merge“iModel。请注意这里需要的targetScopeElementId .

简单地说,它应该类似于:

代码语言:javascript
复制
const mergedDb = SnapshotDb.createEmpty("/tmp/merged.bim", { rootSubject: { name: "Merge Test" } });
// prepare some subjects to merge onto
const model1SubjectId = Subject.insert(mergedDb, IModel.rootSubjectId, "Model1Subject");
const model2SubjectId = Subject.insert(mergedDb, IModel.rootSubjectId, "Model2Subject");

// merge first source model
const sourceModel1 = SnapshotDb.openFile("/tmp/sourceModel1.bim");
const transformer1 = new IModelTransformer(sourceModel1, mergedDb, { targetScopeElementId: model1SubjectId });
transformer1.context.remapElement(IModel.rootSubjectId, source1SubjectId);
await transformer1.processAll(); // export everything from sourceModel1 and import into merged

// merge second source model
const sourceModel2 = SnapshotDb.openFile("/tmp/sourceModel2.bim");
const transformer2 = new IModelTransformer(sourceModel2, mergedDb, { targetScopeElementId: model2SubjectId });
transformer2.context.remapElement(IModel.rootSubjectId, source2SubjectId);
await transformer2.processAll(); // export everything from sourceModel2 and import into merged

sourceModel1.close();
sourceModel2.close();
mergedDb.saveChanges();

还请确保使用processSchemas导入任何模式,链接测试有一个显式示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68356106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档