使用 Revit 链接模型的最佳方法是啥?

Posted

技术标签:

【中文标题】使用 Revit 链接模型的最佳方法是啥?【英文标题】:What is best way to use Revit linked model?使用 Revit 链接模型的最佳方法是什么? 【发布时间】:2019-01-29 13:16:44 【问题描述】:

理想情况下,在查看器中时,目标是在查看器中加载/卸载链接模型。 这样,不同的工程层(结构/水/电/...)可以随意显示/隐藏。

为此,我尝试了几个选项,但没有一个是完全适合的(据我所知)。

我尝试从 zip 文件上传所有内容。 Upload linked Revit models for Forge Viewer https://forge.autodesk.com/cloud_and_mobile/2016/07/translate-referenced-files-by-derivative-api.html 这没关系,对于 [rst_advanced_sample_project.rvt+Technical_school-current_m.rvt] 或 Forge-Test-Harness-Node.js/Revit.zip 等模型。

这种方式给我留下了 2 个问题:

我无法加载/卸载链接 更新单个链接需要完整的 zip 上传

我尝试手动创建引用 https://developer.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-references-POST/

正在进行中,目前,我看不到我的链接是否被考虑在内,但我希望与上述相同。

聚合模型 https://forge.autodesk.com/blog/aggregate-multi-models-sequence-forge-viewer

元素是分开的,可能需要一些对齐,但都会显示出来。 缺点是元素信息,尤其是模型浏览器显示无关的东西。

无论解决方案如何,有没有办法在查看器中卸载模型/链接?

谢谢

【问题讨论】:

【参考方案1】:

关于 Revit 模型中的模型聚合,您可能会采用错误的对齐设置。

通常,Forge 查看器默认将加载的模型放置在模型边界框中心的全局偏移处。所以,在第一个模型之后加载的所有模型都必须设置与第一个模型相同的 globalOffset,这是我回答 here 的全局偏移对齐代码 sn-p。

function _onGeometryLoaded( event ) 
   if( urns.length <= 0 ) 
       viewer.removeEventListener(
         Autodesk.Viewing.GEOMETRY_LOADED_EVENT,
         _onGeometryLoaded
       );
       return;
   

   viewer.loadModel( urns[0],  globalOffset: event.model.getData().globalOffset  );
   urns.splice( 0, 1 );
 

 viewer.addEventListener(
   Autodesk.Viewing.GEOMETRY_LOADED_EVENT,
   _onGeometryLoaded
 );

 viewer.loadModel( urns[0] );
 urns.splice( 0, 1 );

对于具有共享坐标的 Revit 模型,您可以通过这种方式加载模型,详情请参阅here。

var loadOptions = 
  applyRefPoint: true,
  globalOffset:  x:0, y:0, z:0 
;

viewer.loadModel(
            svfUrl, 
            loadOptions,
            onLoadModelSuccess,
            onLoadModelError
);

【讨论】:

感谢您的反馈。在深入了解之前这里是我发现的一些限制之后,你能告诉我它们是否是解决它们的方法:1-当从-a-zip/Post-references 加载 rvt 模型和链接时,在树中,我们只看到一个模型。是否可以将链接模型分开? 2-加载多个模型时,一切都很好,但是当卸载模型时,有时可以,有时,所有模型都从场景中卸载?它是已知的? 对于第一个,zip 中的所有模型都将转换为单个模型,这与您在 Navisworks 中看到的不同。 关于第二个,这取决于你调用的查看器api,但我没有看到任何信息。关于你问题中的这一部分,所以我不知道发生了什么。你能分享你上面的代码sn-ps吗? 2- NOP_VIEWER.impl.unloadModel(modelArray[0].modelObj) 是我用来卸载模型的。 第一,所有链接的Revit文件的InstanceTree在Forge翻译后都会合并到宿主RVT中,所以在Navisworks中看不到相同的模型结构层次。以上就是我的意思,很抱歉造成混淆。

以上是关于使用 Revit 链接模型的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用链接下载 Revit 模型

Revit API。从主模型元素所在的链接模型中获取一个房间

使用 Zend Framework 模型定义表关系方法的最佳代码位置是啥?

Revit API获取链接模型中构件

使用 JavaScript 或 jQuery 编写带有 GET 参数的链接的最佳方法是啥

是否可以通过 Revit API 或 FORGE API 在 Revit 模型中加载新的 Cloud (BIM 360) 链接?