加载多个文档时如何设置model.getDocumentNode?
Posted
技术标签:
【中文标题】加载多个文档时如何设置model.getDocumentNode?【英文标题】:How to set model.getDocumentNode when loading multiple documents? 【发布时间】:2019-02-15 01:11:05 【问题描述】:我从查看器中的多个转换后的 revit 文件加载多个模型。 在这些模型中的每一个中,我都将点与所选元素相关联。 为了以后能够重用这些点,我需要:
-
它来自哪个 revit 文档 -> models[x].myData.urn : ok
Revit 文档中的哪个视图(模型)取自它 -> model.getDocumentNode 返回 null(当我使用 viewerApp 加载单个模型时不是这种情况)。这导致 node.model.getDocumentNode().data.guid 是视图的 guid 无法访问。哥
Dbid -> 出现在选择事件中:好的
Guid -> 我构建了一个 2 路映射表 (dbidguid) 来获得我需要的东西:好的(对更直接的方法开放,但是好的)
主要问题是第二点,在查看器中加载多个模型时如何设置model.getDocumentNode?p>
谢谢你,
【问题讨论】:
【参考方案1】:您可以在加载过程中收集文档 URN 和模型 GUID:
function load(urn)
viewerApp.loadDocument(
'urn:' + urn,
function onDocumentLoadSuccess(doc)
const viewables = viewerApp.bubble.search( 'type': 'geometry' );
if (viewables.length > 0)
const path = doc.getViewablePath(viewables[0].data);
const viewer = viewerApp.getCurrentViewer();
const options = /* your options */ ;
viewer.loadModel(path, options, function onModelLoadSuccess(model)
model._myURN = urn;
model._myGUID = viewables[0].data.guid;
);
);
【讨论】:
在加载时是一个选项。谢谢。是否有任何 API 计划会在未来版本中淘汰此方法? 好问题@Fabien。由于该方法仅使用公共且非常常用的 API,因此我认为它不会很快被淘汰。以上是关于加载多个文档时如何设置model.getDocumentNode?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过在 Firestore 中的查询从索引中获取多个文档到其他索引
每次加载应用程序时,如何防止 Firestore 加载整个用户数据