翻译Revit源文件时,可能会从提取器中恢复警告退出代码:-536870935



我一直在学习"转换Revit文件"、"生成房间和空间信息"教程。现在,我正忙于任务3,试图将Revit源文件转换为SVF2。

使用提供的Revit文件和以下请求POSThttps://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可恢复内部故障可能从提取器中恢复的警告退出代码:-536870935

我希望有人能告诉POST请求出了什么问题。我发现了一个类似的问题,但答案似乎不适用于这个问题。

事实上,我自己也尝试过同样的教程,它对我来说非常有效。只要你遵循每一步,你就应该得到想要的结果。

如果你在第三个任务中遇到错误,这表明你在任务2中可能做得不对。

您应该在任务2中检查任务3所依赖的几个步骤。请检查以下内容:

  • 请确保您的文件已完全上载。看看";上传文件";部分
  • 您必须通知OSS(Object Storage Service(上传操作完成。看看";完成上载";任务2中的部分

这些操作应确保您的文件已完全上传并准备好翻译为SVF2

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

当我问这个问题时,我使用以下代码使用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(),
]
);

它确实有效。我猜想使用CCD_;原始的"/二进制请求。

在Symfony中,它看起来像:

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

我不熟悉Lavarel,所以我可能不会在这方面提供太多帮助。

然而,您可以尝试使用另一个框架,如Nodejs,甚至.NET,来尝试并查看是否可以实现您想要的结果。

您可以遵循本教程,该教程将帮助您开始使用Nodejs或.NET框架在Autodesk平台上创建应用程序:https://forge-tutorials.autodesk.io/

您将使用模型导数API,然后您可以尝试按预期转换模型。

最新更新