模型衍生 API 发布作业 - 400 错误请求“无效的‘设计’参数”

use*_*674 5 autodesk-forge autodesk-model-derivative

我已将 Revit 模型上传到我的 OSS 存储桶并尝试将文件转换为 svf,但我收到以下信息:

400 错误请求 {"diagnostic":"无效的 'design' 参数。"}

我是 Forge API 的新手,不确定哪里需要设计参数或它指的是哪里,因此我们将不胜感激。

POST https://developer.api.autodesk.com/modelderivative/v2/designdata/job

Headers
Authorization: Bearer {AccessToken}
Content-Type: application/json

Body
{
   "input": {
     "urn": "{MyDesignBase64Urn}",
     "compressedUrn": false,
     "rootFilename": "test-project.rvt"
   },
   "output": {
     "destination": {
       "region": "us"
     },
     "formats": [
       {
         "type": "svf",
         "views": [
           "2d",
           "3d"
         ]
       }
     ]
   }
 }
Run Code Online (Sandbox Code Playgroud)

Eas*_*ang 6

对于有人遇到过类似的问题

正如我们所讨论的,导致这个问题的主要原因是urn:在将上传的文件objectId转换为 base64URN 时丢失了。

通过PUT buckets/:bucket_key/objects/:object_name将模型文件上传到 Forge OSS 存储桶后,您将获得如下响应:

{
    "bucketKey": "mybucket",
    "objectId": "urn:adsk.objects:os.object:mybucket/rac_basic_sample_project.rvt",
    "objectKey": "rac_basic_sample_project.rvt",
    "sha1": "6d0defe9c4f8e36c7786254a3d07f9991dbf8d91",
    "size": 16474112,
    "contentType": "application/octet-stream",
    "location": "https://developer.api.autodesk.com/oss/v2/buckets/mybucket/objects/rac_basic_sample_project.rvt"
}
Run Code Online (Sandbox Code Playgroud)

上传模型的 URN 将是objectId上面的响应,即urn:adsk.objects:os.object:mybucket/rac_basic_sample_project.rvt。在通过 API POST 作业触发模型转换之前,objectId必须通过 Base64 编码器(例如这个工具)进行编码,它变成如下:

dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bXlidWNrZXQvcmFjX2Jhc2ljX3NhbXBsZV9wcm9qZWN0LnJ2dA==
Run Code Online (Sandbox Code Playgroud)

但是有两个无效符号,即=base64编码的URN末尾的两个。您必须按如下方式删除它们并使用此 URN,这是一个URL-safe Base64 (no padding)触发 Forge MD API 翻译作业的版本。

dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bXlidWNrZXQvcmFjX2Jhc2ljX3NhbXBsZV9wcm9qZWN0LnJ2dA
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此官方教程:https : //developer.autodesk.com/en/docs/model-derivative/v2/tutorials/prepare-file-for-viewer