我如何从已翻译的 compressed/zip revit 文件中获取 link 文件的列表?

How can i get the list of link files from a translated compressed/zip of revit file?

我翻译了一个包含多个 link 文件的 revit 文件。在查看器中,我可以浏览根 Revit 模型中的所有元素,包括使用 'Model Browser' 默认扩展名的 link 文件中的所有元素。甚至我还创建了一个自定义扩展,从中我可以隔离每个对象类型的所有元素。

现在,我想创建一个像 'Model Browser' 这样的扩展,它将根文件名显示为顶部或父节点,所有 link 文件名显示为子节点 node.I,通过单击每个 link 文件,该 link 文件中的所有元素都应在查看器中隔离,通过单击根文件,包括所有 link 文件元素在内的所有元素都应显示 .

有关信息,我的应用程序是使用 C# 和 JavaScript 在 .Net 平台中构建的。

任何人都可以告诉我哪个 api,我可以试试吗?如果有人分享示例或 url 我可以获得帮助,那也会非常有帮助。

提前致谢!

您可以利用 AecModelData 获取链接模型数据并从 Forge Viewer 中的 PropertyDB 重建关系。

如果对象来自链接的 RVT,您可以检查其外部 ID。如果外部 ID 包含斜杠符号,则表示它来自链接的 RVT。这是一个例子:

  • 对象外部 ID:ffa0b0a8-8aab-48f9-beb5-dba5d9b4968f-0010cfee/e021b7a9-1e57-428c-87db-8e087322cd49-0015a0f6
  • 来自 AECModelData 中 linkedDocuments 的实例 ID:ffa0b0a8-8aab-48f9-beb5-dba5d9b4968f-0010cfee

可以看到斜杠左边的GUID与上面提到的实例id相匹配

要获取链接的RVT模型名称,我们可以重用AECModelData的linkedDocuments中的instanceId来再次获取我们需要的信息。这是给您的代码片段,假设实例 ID 为 ffa0b0a8-8aab-48f9-beb5-dba5d9b4968f-0010cfee:

function getExternalIdMappingAsync( model ) {
    return new Promise( ( resolve, reject ) => {
        model.getExternalIdMapping(
            map => resolve( map ),
            error => reject( error )
        );
    });
}

function getPropertiesAsync( dbId, viewer ) {
    return new Promise( ( resolve, reject ) => {
        viewer.getProperties(
            dbId,
            result => resolve( result ),
            error => reject( error )
        );
    });
}

//1.  Get external id mapping for converting external id to Viewer's dbId
let externalIdMapping = await getExternalIdMappingAsync( viewer.model );
let dbId = externalIdMapping['ffa0b0a8-8aab-48f9-beb5-dba5d9b4968f-0010cfee'];

//2. Get properties of the linked model instance
let propResult = await getPropertiesAsync( dbId, viewer )

//3. Find the type name property for its value
let linkNameProp = propResult.properties.find( prop => prop.displayName == 'Type Name' || prop.attributeName == 'Type Name' );
let linkName = linkNameProp.displayValue; //!<<< This is linked RVT name

这是我的测试截图:

希望对你有帮助~