【问题标题】:Format of file to be uploaded to Autodesk Forge要上传到 Autodesk Forge 的文件格式
【发布时间】:2021-09-01 00:24:46
【问题描述】:

我正在关注 Autodesk 网站上的教程 https://forge.autodesk.com/developer/idea/viewer-app

还有

https://forge.autodesk.com/en/docs/model-derivative/v2/tutorials/prep-file4viewer/task2-upload_source_file_to_oss/

我能够进行身份验证,创建存储桶,看来我也可以上传我的文件。

我正在上传一个 .rvt 文件,但在 ping 状态端点以检查文件转换为 .svf 格式的状态时出现问题,以便我可以在查看器中使用该文件。

它返回的错误是

名称:LMV 泡泡 进度:完成 留言: Tr worker 下载失败。 TranslationWorker-InternalFailure 输出类型:svf 状态:失败

这会导致查看器库中出现错误代码,因为似乎没有文件 onDocumentLoadFailure() - 错误代码:9

我已经多次按照教程进行操作,除了这部分之外,所有过程都出现了。

我尝试过使用不同的 rvt 文件、zip 文件,但似乎没有任何效果。

    <cffunction name="convertFile" access="public" returntype="any" description="I convert a file for autodesk">
    <cfargument name="token" type="string" required="true">
    <cfargument name="urn" type="string" required="false" default="">
    <cfargument name="filename" type="string" required="true">

<cfoutput>
<cfsavecontent variable="jsonstring">
{
"input": {
"urn": "#toBase64(arguments.urn)#",
"rootFilename": "#arguments.filename#",
"compressedUrn": true
},"output": {
"destination": {
"region": "us"
},"formats": [
{"type": "svf",
"views": [
"2d",
"3d"]}]}}
</cfsavecontent>
</cfoutput>

        <cfhttp url="https://developer.api.autodesk.com/modelderivative/v2/designdata/job" method="post">
            <cfhttpparam type="header" name="Authorization" value="Bearer #arguments.token#">
            <cfhttpparam type="header" name="Content-Type" value="application/json">
            <cfhttpparam type="body" value="#trim(jsonstring)#">                
        </cfhttp>
        <cfset var returnObj = {}>
        <cfif isJSON(cfhttp.filecontent)>
            <cfset returnObj = deserializeJSON(cfhttp.filecontent)>
        </cfif>
        <cfreturn returnObj>        
    </cffunction>

【问题讨论】:

  • 您能分享一下forge.autodesk.com/en/docs/model-derivative/v2/tutorials/…的请求正文吗?
  • 同时,你能在这里试试我的邮递员脚本吗:github.com/yiskang/forge.api.postman
  • 我们只是使用 lucee 发布数据。 - 请参阅原始帖子中的代码 sn-p
  • 对不起,我对 lucee 不熟悉。但如果您要上传单个 RVT 文件进行翻译,compressedUrn 的值应该是 false。否则,翻译将失败。顺便说一句,要覆盖失败的翻译结果,您需要添加一个额外的请求标头x-ads-force: true,如果 urn 没有改变。
  • 非常感谢,将 compressUrn 换成 false 和 x-ads-force = true 解决了这个问题,我现在可以渲染文件了。

标签: autodesk-forge autodesk-viewer autodesk-model-derivative


【解决方案1】:

对于单个 RVT 转换,compressedUrn 的值应为 false。否则翻译会失败。

curl --location --request POST 'https://developer.api.autodesk.com/modelderivative/v2/designdata/job' \
--header 'Authorization: Bearer {{YOUR_ACCESS_TOKEN}}' \
--header 'Content-Type: application/json' \
--data'{
   "input": {
     "urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6WU9VUl9CVUNLRVRfS0VZL3JtZV9hZHZhbmNlZF9zYW1wbGVfcHJvamVjdC5ydnQ" //!<<< e.g., base64 encoded URN: urn:adsk.objects:os.object:YOUR_BUCKET_KEY/rme_advanced_sample_project.rvt
   },
   "output": {
     "formats": [
       {
         "type": "svf",
         "views": [
           "2d",
           "3d"
         ]
       }
     ]
   }
 }'

相反,对于复合 RVT 模型(包含主机 RVT 和链接 RVT 的 ZIP 文件),compressedUrn 的值应为 true,并且应将 rootFilename 指定给主机 RVT 文件名。例如,您有一个名为 sample-buidling.zip 的复合 RVT 模型。它包含主机 RVT (sample-arch.rvt) 和链接的 RVT (sample-str.rvt)

curl --location --request POST 'https://developer.api.autodesk.com/modelderivative/v2/designdata/job' \
--header 'Authorization: Bearer {{YOUR_ACCESS_TOKEN}}' \
--header 'Content-Type: application/json' \
--data'{
   "input": {
     "urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6WU9VUl9CVUNLRVRfS0VZL3NhbXBsZS1idWlkbGluZy56aXA" //!<<< e.g., base64 encoded URN: urn:adsk.objects:os.object:YOUR_BUCKET_KEY/sample-buidling.zip,
     "rootFilename": "sample-arch.rvt",
     "compressedUrn": true
   },
   "output": {
     "formats": [
       {
         "type": "svf",
         "views": [
           "2d",
           "3d"
         ]
       }
     ]
   }
 }'

如果翻译失败或者您想通过上传更新的文件而不更改 URN 来覆盖现有的翻译结果,我们需要在调用 POST 作业时上传具有 OAuth 范围 data:write 的文件添加额外的请求标头 x-ads-force: true像这样:

curl --location --request POST 'https://developer.api.autodesk.com/modelderivative/v2/designdata/job' \
--header 'Authorization: Bearer {{YOUR_ACCESS_TOKEN}}' \
--header 'Content-Type: application/json' \
--header 'x-ads-force: true' \
--data'{
   "input": {
     "urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6WU9VUl9CVUNLRVRfS0VZL3JtZV9hZHZhbmNlZF9zYW1wbGVfcHJvamVjdC5ydnQ" //!<<< e.g., base64 encoded URN: urn:adsk.objects:os.object:YOUR_BUCKET_KEY/rme_advanced_sample_project.rvt
   },
   "output": {
     "formats": [
       {
         "type": "svf",
         "views": [
           "2d",
           "3d"
         ]
       }
     ]
   }
 }'

【讨论】:

    猜你喜欢
    • 2017-01-12
    • 2019-10-21
    • 2017-12-07
    • 2018-10-11
    • 2019-03-24
    • 2017-10-04
    • 2020-07-27
    • 2022-12-22
    • 2021-08-16
    相关资源
    最近更新 更多