加载多个文档时如何设置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 中的查询从索引中获取多个文档到其他索引

如何在开发多个包时处理多个作曲家自动加载器

如何在 swift 中使用多个部分的骨架加载?

每次加载应用程序时,如何防止 Firestore 加载整个用户数据

如何在同一个页面加载两个或多个百度的 UEditor HTML 编辑器

当两个 Ajax 请求被并行调用时,我看到多个加载掩码