簡體   English   中英

Model 存儲在 BIM360 Docs 中的 Revit 模型的衍生翻譯

[英]Model Derivative Translation of Revit Models stored in BIM360 Docs

我正在開發一個應用程序,以使用數據管理和模型衍生 API 將已發布到雲的 Revit 模型轉換為 IFC 格式,並且遇到了模型衍生 API 的兩個關鍵問題。

1. 模型衍生翻譯問題:

我遇到了翻譯失敗錯誤,該錯誤也在其他線程中彈出

code:"Revit-UnsupportedFileType"
message:"<message>The file is not a Revit file or is not a supported version.</message>"
type:"error"
code:"TranslationWorker-RecoverableInternalFailure"
message:"Possibly recoverable warning exit code from extractor: -536870935"
type:"error

但是我的情況有些獨特,其他答案不適用。 以前的案例因 Revit 版本不正確(顯然翻譯可能適用於 2016 版本但不適用於 2019 版本)或文件上傳過程中的損壞而失敗。 這不適用於我,因為此 model 的 .rvt 到 .svf 翻譯成功,只有 my.rvt 到.ifc 翻譯失敗,而且我沒有通過應用程序上傳,而是訪問已經在 BIM360 文檔上的文件。

此行為的另一個奇怪部分是 .rvt->.ifc 轉換已成功用於相同 model 的早期版本。 這使我相信可能存在文件大小問題,即最新版本的 model 太大而無法翻譯,盡管我在模型衍生文檔中沒有發現文件大小的任何限制。

2. 模型衍生下載問題:

在從服務器再次下載到客戶端之前,通過我的服務器路由已翻譯文件的下載,以便使用三足 OAuth 令牌,這意味着必須下載相同的文件兩次(一次從數據管理 api 端點到服務器,第二次從服務器到客戶端)。 這對於大型模型是有問題的。 目前,我的解決方案是將三足 OAuth 令牌和文件 URI 傳遞給客戶端,並將請求 go 直接從客戶端傳遞到 Autodesk 端點,盡管我認為這是不好的做法。

我還沒有找到包含此下載端點的任何示例,NodeJS 對我來說是最佳選擇。 另外我希望有一個內容長度 header 附加到此端點,以便更好地了解下載進度。

我的問題的相關端點都在這里: https://forge.autodesk.com/en/docs/model-derivative/v2/tutorials/translate-source-file-to-obj/

翻譯:

curl -X 'POST' -H 'Authorization: Bearer WmzXZq9MATYyfrnOFpYOE75sL5dh' -H 'Content-Type: application/json' -v 'https://developer.api.autodesk.com/modelderivative/v2/designdata/job' -d
'{
  "input": {
    "urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bW9kZWxkZXJpdmF0aXZlL0E1LmlhbQ"
  },
  "output": {
    "formats": [
      {
        "type": "obj"
      }
    ]
  }
}'

注意:我在此端點上使用了“type”:ifc 而不是“type”:obj,作為我的 output 格式; 這不是問題。

核實:

curl -X 'GET' -H 'Authorization: Bearer RWLzh098vuF3068r73FI7nF2RORf' -v 'https://developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bW9kZWxkZXJpdmF0aXZlL0E1LmlhbQ/manifest'

下載:

curl -X 'GET' -H 'Authorization: Bearer RWLzh098vuF3068r73FI7nF2RORf' -v 'https://developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bW9kZWxkZXJpdmF0aXZlL0E1LmlhbQ/manifest/urn%3Aadsk.viewing%3Afs.file%3AdXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bW9kZWxkZXJpdmF0aXZlL0E1LmlhbQ%2Foutput%2Fgeometry%2Fbc3339b2-73cd-4fba-9cb3-15363703a354.obj'

意味着必須下載相同的文件兩次(一次從數據管理 api 端點到服務器,第二次從服務器到客戶端)。 這對於大型模型是有問題的。

嘗試在您的后端設置代理服務來中繼用戶請求並指導他們獲取衍生品並將令牌注入其標頭中,這樣令牌就不會暴露給客戶端,因此文件不必物理地降落在您的后端中間人 - 請參閱此處獲取示例。

一旦我們到達第一個問題的底部,將更新這個答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM