Формат файла, который будет загружен в Autodesk Forge

#autodesk-forge #autodesk-viewer #autodesk-model-derivative

Вопрос:

Я следую инструкциям на веб-сайте 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, но проблема возникает при проверке состояния конечной точки, чтобы проверить состояние преобразования файла в формат .svf, чтобы я мог использовать файл в программе просмотра.

Ошибка, которую он возвращает, такова

имя : Пузырь LMV прогресс : завершен Сообщения : Tr-работнику не удалось загрузить. 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>
 

Комментарии:

1. Не могли бы вы поделиться своим телом запроса forge.autodesk.com/en/docs/model-derivative/v2/tutorials/… ?

2. А пока не могли бы вы попробовать мои сценарии почтальона здесь: github.com/yiskang/forge.api.postman

3. мы просто публикуем данные с помощью lucee. — пожалуйста, смотрите фрагмент кода в оригинальном сообщении

4. Извините, я не знаком с Люси. Но если вы загружаете один файл RVT для перевода, значение compressedUrn должно быть false . В противном случае перевод завершится ошибкой. Кстати, чтобы переопределить результаты неудачного перевода, вам нужно добавить дополнительный заголовок запроса x-ads-force: true , если урна не изменится.

5. Большое вам спасибо, замена compressUrn на false и x-ads-force = true решила проблему, и теперь я могу отображать файлы.

Ответ №1:

Для одного перевода RVT значение compressedUrn должно быть ложным. В противном случае перевод завершится ошибкой.

 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 (ZIP-файл, содержащий RVT хоста и связанные RVT) значение compressedUrn должно быть равно true, и rootFilename оно должно быть указано в имени файла RVT хоста. Например, у вас есть составная модель RVT с именем as sample-buidling.zip . Он содержит хост 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"
         ]
       }
     ]
   }
 }'
 

Если перевод не удался или вы хотите переопределить существующий переведенный результат, загрузив обновленный файл без изменения урны, нам необходимо загрузить файл с областью действия OAuth data:write , добавив дополнительный заголовок запроса x-ads-force: true при вызове задания POST следующим образом:

 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"
         ]
       }
     ]
   }
 }'