【问题标题】:Why these linked files are missing?为什么这些链接的文件丢失了?
【发布时间】:2020-01-31 04:03:39
【问题描述】:

我正在尝试上传带有链接文档的 revit 文件。

所有文档都在同一个文件夹和同一个桶中。任何时候。

1 - 您需要将文件上传到存储桶。完成!

2 - 您需要使用此端点为复合源文件创建引用: https://forge.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-references-POST/

好的,让我们看看我是否可以创建对无效文件的引用...

OK Forge 发现我的一个参考文件不存在! 不错。

现在让我们发送有效文件:

好的,应该没问题。

现在让我们进入最后一步...让我们开始将文件转换为 SVF 的工作!

Forge 说链接文件丢失,为什么?

这里是请求...

参考资料:

{
    "urn": "urn:adsk.objects:os.object:federado/PL076-ARQ-EMB.rvt",
    "filename":"PL076-ARQ-EMB.rvt",
    "references": [
        {"urn":"urn:adsk.objects:os.object:federado/PL076-HID-EMB.rvt", "metadata": {"Teste":"Gabriel"}},
        {"urn":"urn:adsk.objects:os.object:federado/PL076-INC-EMB.rvt", "metadata": {"Teste":"Gabriel"}},
        {"urn":"urn:adsk.objects:os.object:federado/PL076-ACO-EMB.rvt", "metadata": {"Teste":"Gabriel"}},
        {"urn":"urn:adsk.objects:os.object:federado/PL076-ARQ-TOR01-FAC.rvt", "metadata": {"Teste":"Gabriel"}},
        {"urn":"urn:adsk.objects:os.object:federado/PL076-ARQ-TOR01-OPC01.rvt", "metadata": {"Teste":"Gabriel"}},
        {"urn":"urn:adsk.objects:os.object:federado/PL076-ELE-EMB.rvt", "metadata": {"Teste":"Gabriel"}},
        {"urn":"urn:adsk.objects:os.object:federado/PL076-ENG-EMB.rvt", "metadata": {"Teste":"Gabriel"}},
        {"urn":"urn:adsk.objects:os.object:federado/PL076-EST-CORDOALHAS.rvt",  "metadata": {"Teste":"Gabriel"}},
        {"urn":"urn:adsk.objects:os.object:federado/PL076-EST-EMB.rvt","metadata": {"Teste":"Gabriel"}}
    ]

}

工作

{
   "input": {
     "urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZmVkZXJhZG8vUEwwNzYtQVJRLUVNQi5ydnQ",
     "checkReferences": true
    },
   "output": {
     "formats": [
        {
          "type": "svf",
          "views": [
            "2d",
            "3d"
          ]
        }
     ]
   }
}

如您所见,第一个请求使用 URN 而不编码为 Base64,第二个请求使用 URN 参数上的编码。那是因为他们的文档说应该是这样的。

那么,您猜到为什么链接丢失了吗?

【问题讨论】:

    标签: autodesk-forge


    【解决方案1】:

    不幸的是,据我所知,reference API of the Model Derivate 目前不支持 Revit 文件。请上传包含主机 RVT 及其到 Forge OSS 的链接的 ZIP,并使用此请求正文触发翻译作业:

    {
       "input": {
         "urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZmVkZXJhZG8vUEwwNzYtQVJRLUVNQi56aXA",
         "compressedUrn": true,
         "rootFilename": "PL076-ARQ-EMB.rvt"
       },
       "output": {
         "formats": [
           {
             "type": "svf",
             "views": [
               "2d",
               "3d"
             ]
           }
         ]
       }
     } 
    

    如果这些模型已上传到您自己托管的 Forge OSS 存储桶中且尚未删除,则您必须下载包含主机和链接的所有文件并将其打包为 zip 并再次重新上传以进行翻译。

    通常情况下,Forge OSS 会在 24 小时后自动删除所有上传的文件,使用临时存储桶保留策略(我们的代码示例和教程中的默认策略,您可以随意更改,详见OSS Retention Policy page

    但是,还有另一种方法可以在同一查看器场景中查看所有模型 - 使用 Forge Viewer 将从 RVT 转换的单个 SVF 模型加载到同一场景中。它以查看器的聚合/多模型场景而闻名。你可以选择任何一种方式来实现你想要的。

    顺便说一句,

    多模型场景下,可以通过viewer.impl.modelQueue().getModels()获取加载模型,通过viewer.getAggregateSelection()获取选择集。

    如果您的模型是从 zip 文件翻译的,您可以通过所选元素的外部 ID 确定它是否来自链接文件。 Revit 模型的外部 ID 是 Revit API 中的 Element.UniqueId。 Revit 中的每个元素都有一个唯一的 GUID,称为 UniqueId,并在将元素放置到 Revit 视图时分配。

    在 Forge Viewer 中,您可以通过调用 viewer.getProperties( dbId ) 获取项目的外部 id。对于来自链接的项目,外部看起来像 65e0379f-2c38-40b3-b403-2979327abc7a-00080a4e/22858843-3747-4f42-8654-519948201028-000eaf08。里面会有一个/ 斜线。

    希望对您有所帮助。干杯!

    【讨论】:

    • 这取决于您选择的存储桶策略,通常在 24 小时后使用临时策略将其删除。如果它们没有被自动删除并且您想将它们链接在一起,您必须下载所有包含主机和链接的文件,然后将它们打包到一个 zip 文件中并再次加载进行翻译。参考 API 目前不支持我上面提到的 Revit 文件。
    • 另一种使用 Forge Viewer 在同一查看器场景中加载从 RVT 转换而来的单个 SVF 模型的方法。它以查看器的聚合/多模型场景而闻名。你可以选择任何一种方式来实现你想要的。
    • 多模型场景下,可以通过viewer.impl.modelQueue().getModels()获取模型
    • 如果您的模型是从 zip 文件翻译过来的,您可以通过所选元素的外部 id 确定它是否来自链接文件。外部 id 内会有 / 斜线。
    • 由于时间差异,请抓住您的消息。我已将上面的 cmets 添加到答案部分。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 2021-11-22
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    相关资源
    最近更新 更多