如何使用 SFV2 在伪造查看器中仅加载特定对象?

Posted

技术标签:

【中文标题】如何使用 SFV2 在伪造查看器中仅加载特定对象?【英文标题】:How can I load only specifc objects in the forge viewer using SFV2? 【发布时间】:2021-03-27 23:11:59 【问题描述】:

SVF2 的objectids/dbids 与 SVF1 不同。在这个SO-Answer 中,建议使用externalId 而不是objectid。但是,viewer.loadModel(svfUrl,ids:[dbIds...]) 使用 dbIds 仅加载指定的对象。如何使用 SVF2 和 https://developer.api.autodesk.com/modelderivative/v2/regions/eu/designdata/:urn /metadata/:guid/properties 端点仅加载指定的对象?我可以在任何地方访问svf2 objectIds吗?或者我可以在调用Viewer3d::loadModel时使用externalIds吗?

【问题讨论】:

【参考方案1】:

你是对的,“SVF1 dbIDs”和“SVF2 dbIDs”之间是有区别的——SVF2格式的ID是“持久的”,这意味着在同一设计文件的不同版本中,单个ID将引用相同的设计元素(在 SVF1 中并非如此)。

不幸的是,平台的某些部分(如loadModel 查看器方法和/modelderivative/v2/regions/eu/designdata/:urn /metadata/:guid/properties 端点)尚未“赶上” SVF2。在这些更新可用之前,您必须手动映射“在新旧 dbID 之间”,这本身就是另一个重要的任务。

【讨论】:

SVF2 是否使用 IfcGuid 而不是 externaIds?我尝试按照您的 SO 答案 here 的建议使用 viewer.model.getExternalIdMapping(onSuccessCallback, onErrorCallback)。但是,映射的主要键是 IfcGuids 而不是 /modelderivative/v2/regions/eu/designdata/:urn /metadata/:guid/properties 端点返回的 externalIds。 SVF2 是否也破坏了此功能? 是的,在 SVF2 中,IfcGUID 属性不再包含在属性中,因为它在 external_id 中使用。 那么有效地没有办法将 SVF1 属性映射到 SVF2 属性,或者是否存在? viewer.model.getExternalIdMapping/modelderivative/v2/regions/eu/designdata/:urn /metadata/:guid/properties 何时可以与 SVF2 一起使用? 支持 SVF1 ID 和 SVF2 ID 之间的清晰映射是一项正在进行的工作,但您也许可以开始尝试一些已在最新版本的 Forge Viewer 中添加的逻辑,例如例如,Model 类现在应该提供一个名为 remapDbId 的方法,该方法应该能够将“旧”dbID 映射到“新”dbID。 这将是我需要的功能。但是,根据源代码它只设置为2D模式而不是3D模式://F2D/PDF only -- mapping of F2D/PDF dbids to OTG property database v2 dbids ------------ this.setDbIdRemap = function (dbidOldToNew) if (this.is2d()) this.idRemap = dbidOldToNew; ;

以上是关于如何使用 SFV2 在伪造查看器中仅加载特定对象?的主要内容,如果未能解决你的问题,请参考以下文章

使用 LeafletLoader 而不是 PDFLoader 将 PDF 加载到伪造查看器中不起作用

在伪造查看器中保存和检索

伪造查看器中未显示文件

无法在伪造查看器中完全隐藏模型

在伪造查看器中恢复 sectionBox

模型伪造查看器中缺少 Autodesk.AEC.ModelData