如何在 BIM 360 上获取模型之间的链接?

Posted

技术标签:

【中文标题】如何在 BIM 360 上获取模型之间的链接?【英文标题】:How can I get links between models on BIM 360? 【发布时间】:2021-03-22 16:59:40 【问题描述】:

我正在尝试构建一个脚本,将文件从 Project Files 子文件夹传输到 Plans 子文件夹。

在我的 BIM 360 Docs 中,我有链接的 .rvt 模型(例如链接到建筑 3D 模型的 HVAC 模型)。当我下载链接模型(手动或通过 Forge API)时,我会得到一个 .zip 文件,其中包含所有链接模型。

是否可以通过 Forge API 检查哪些模型链接到一个项目,以及这些链接模型存储在哪个文件夹中?

感谢您的帮助。

编辑:我尝试通过调用 versions/:version_id/relationships/refs 来获取这些链接,但它只显示我从文件中制作的副本。

我尝试获取的链接是在 Revit 中通过 Insert > Link Revit > Add... 创建的,然后从 BIM 360 中选择一个文件。

另外,当手动上传此类文件(带有链接模型)时,要正确执行此操作,我需要在 BIM 360 中选择“上传链接文件”选项,然后选择父文件。

【问题讨论】:

GET:Version/Refs 可以告诉链接文件,GET:item 可以告诉父文件夹urn,通过它可以知道文件存放在哪个文件夹。但我似乎没有找到表明这是否是复合文件的标志。我需要进一步检查并回复您 【参考方案1】:

在获得一个文件的一个版本 id 后,您可以调用 versions/:version_id/relationships/refs。它会告诉这个文件与其他文件的关系。在结构中,fromId 是根文件,toId 是外部参照文件。因此,如果 fromId 与 version_id 相同,则意味着您正在检查的该文件是根文件。否则,它是一个外部参照(链接)文件。

并且在关系中,它还会告诉所有外部参照文件的信息。

以下是我的测试文件的示例。

根文件为 urn:adsk.wipprod:fs.file:vf.z4KMn52OT5OIuKamXnzmFw?version=1

链接的文件是 urn:adsk.wipprod:fs.file:vf.bIJqAo5-TrCmyMy07ELifw?version=1

使用根文件的版本号:

https://developer.api.autodesk.com/data/v1/projects/ /versions/urn%3aadsk.wipprod%3afs.file%3avf.z4KMn52OT5OIuKamXnzmFw%3fversion%3d1/relationships/refs

它返回结构:

  "data": [
    
        "type": "versions",
        "id": "urn:adsk.wipprod:fs.file:vf.bIJqAo5-TrCmyMy07ELifw?version=1",
        "meta": 
            "refType": "xrefs",
            "fromId": "urn:adsk.wipprod:fs.file:vf.z4KMn52OT5OIuKamXnzmFw?version=1",
            "fromType": "versions",
            "toId": "urn:adsk.wipprod:fs.file:vf.bIJqAo5-TrCmyMy07ELifw?version=1",
            "toType": "versions",
            "direction": "from",
            "extension": 
                "type": "xrefs:autodesk.core:Xref",
                "version": "1.0",
                "schema": 
                    "href": "https://developer.api.autodesk.com/schema/v1/versions/xrefs:autodesk.core:Xref-1.0"
                ,
                "data": 
            
        
    
],

【讨论】:

感谢您的回答。不幸的是,这不适用于我的情况。当我调用versions/:version_id/relationships/refs 时显示的唯一链接是我制作的文件副本。我正在寻找的链接是在 Revit 上通过 Insert > Link Revit > Add... 创建的,然后从 BIM 360 中选择一个文件。另外,我不知道这是否会有所帮助,但是在手动上传模型时,要做它正确我需要选择“上传链接文件”选项,然后选择父文件。 是的,选择 [上传链接的文件] 完全适用于使用 Insert>>Link Revit>>Add 定义源文件的情况。 [上传链接文件]告诉BIM360哪个是根文件,然后它会检查引用(从根文件),并知道引用文件的名称,并将它们定位在BIM360的同一文件夹中。在 Forge Viewer 中加载根文件时,它还可以加载引用的文件。我可能不清楚你的情况。是否可以制作有关步骤的短视频?或快照。谢谢【参考方案2】:

我在 BIM360/ACC 上跟踪 Revit 文件之间的链接也遇到了很多麻烦,经过大量研究,情况似乎如下:

无法获取复合设计模型的链接/参考(例如,可下载为 zip 文件) 对于非复合模型,您提到的 relationships/refs 端点将正确返回传入和传出引用

要检查项目(revit 文件)是否为复合设计,请检查projects/:project_id/items/:item_id/versions。这将返回一个版本数组,每个版本都带有 attributes.extension.data.isCompositeDesign (bool)。如果您找到 isCompositeDesign=false 的版本,您可以使用relationships/refs 端点来获取(该版本的)所有引用。

一旦存在未发布更改的引用项,模型将变为复合模型。有关复合设计的更多详细信息,请参阅 here,有关创建云兼容链接/参考的疑难解答,请参阅 here。

复合设计模型将包含所有参考文件,包括一个 zip 文件中的源文件。值得注意的是,zip 文件将包含引用的引用,即。它确实遵循参考。换句话说:如果复合设计模型引用的模型本身就是复合设计,则 zip 文件将不包含复合设计参考的 zip 文件,而是没有其引用的参考(rvt 文件) .这使得在模型通常包含子参考(参考的参考)并且并非参考链上的所有模型都是未触及的已发布模型的现实世界场景中使用设计自动化非常困难(如果不是不可能的话)。

【讨论】:

以上是关于如何在 BIM 360 上获取模型之间的链接?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Postman 在 BIM 360 中获取项目的图像?

如何从 BIM 360 模型中提取元数据

如何从 BIM 360 问题有效负载中检索链接的文档?

如何使用 BIM360 存储的 dwfx 文件在网页中实现模型查看器

Autodesk Forge:如何在 BIM 360 Docs 中查找模型的 svf 文件的 URL

如何在 .NET 中获取分配给 BIM360 项目的用户