laravel 提取程序中可能可恢复的警告退出代码:转换Revit源文件时为-536870935

njthzxwz  于 2022-11-18  发布在  其他
关注(0)|答案(3)|浏览(147)

我一直在跟随Translate a Revit File, Generating Room and Space Information教程。现在我困在任务3试图翻译一个Revit源文件到SVF 2。
使用提供的Revit file和以下请求POST https://developer.api.autodesk.com/modelderivative/v2/regions/eu/designdata/job

// Headers
[
 'Authorization' => ...,
 'Content-Type'  => 'application/json',
 'x-ads-force'   => true,
]
// Body
[
  "input" => [
    "urn" => "<some urn>",
    "compressedUrn" => false
  ],
  "output" => [
    "destination" => [
      "region" => "EMEA"
    ],
    "formats" => [
      [
        "type" => "svf2",
        "views" => [
          "2d",
          "3d"
        ],
        "advanced" => [
          "generateMasterViews" => true
        ]
      ]
    ]
  ]
]

我总是收到以下消息:
Revit-UnsupportedFileType该文件不是Revit文件或不是受支持的版本。TranslationWorker-RecoverableInternalFailure可能可从提取程序中恢复的警告退出代码:-536870935
我希望有人能告诉什么是错误的POST请求。我发现了一个similar question,但答案似乎不适用于这个问题。

dldeef67

dldeef671#

实际上我自己也试过这个同样的教程,它在我这边效果很好。只要你遵循每一步,你就应该得到想要的结果。
如果您在第三个任务中遇到错误,则表明您在第二个任务中可能没有正确执行某些操作。
您应该在任务2中检查任务3所依赖的几个步骤。请检查以下内容:

  • 请确保您的文件已完全上载。请查看教程任务2中的“上载文件”部分。
  • 必须通知OSS(对象存储服务)上载操作已完成。请查看任务2中的“完成上载”部分。

这些操作应确保您的文件已完全上载并准备好转换为SVF2

**注意:**在执行所有这些过程时,请确保您的访问令牌有效,因为它只在一个小时内有效。如果令牌过期,您必须通过再次向Forge发送验证请求来获取新的令牌。

yeotifhr

yeotifhr2#

当我提出这个问题时,我使用以下代码通过Laravel的http客户端将文件上载到Autodesk:

$response = Http::attach( 'file', $file->getContent(), $file->getClientOriginalName() )
->put( $signed_url );

这确实上传了文件,一切都适用于压缩模型。但正如问题中所解释的,像.ipt.rvt这样的普通源文件没有翻译。
我猜Laravel在请求中添加了一些东西,以某种方式损坏了Autodesk的文件。使用以下请求:

$response = Http::withHeaders( [
     'Content-Disposition' => 'attachment; filename='.$file->getClientOriginalName(),
      'Content-Length'      => $file->getSize(),
] )
    ->send(
        'PUT',
         $signed_url,
         [
              'body' => $file->getContent(),
          ]
     );

它确实工作。我猜使用send,发送一个“原始”/二进制请求。
在Symfony中,它看起来像这样:

$response = HttpClient::create()->request(
   'PUT',
    $signed_url,
    [
       'body' => $file->getContent(),
        'headers' => [
              'Content-Disposition' => 'attachment; filename='.$file->getClientOriginalName(),
               'Content-Length' => $file->getSize()
          ]
      ]
);
w51jfk4q

w51jfk4q3#

我不熟悉Lavarel,所以在这方面我可能不会提供太多帮助。
但是,您可以尝试使用另一个框架,如Nodejs或甚至.NET,看看是否可以达到您想要的结果。
您可以按照本教程进行操作,该教程将帮助您开始使用Nodejs或.NET Framework在Autodesk平台上创建应用程序:https://forge-tutorials.autodesk.io/
您将使用模型衍生API,然后可以尝试按预期转换模型。

相关问题