Search code examples
autodesk-forgeautodesk-viewerautodesk-model-derivative

autodesk translate to svf failed


I was following the steps from this tutorial to convert a file to svf format in order to be able to view it using the autodesk viewer. https://forge.autodesk.com/en/docs/model-derivative/v2/tutorials/prep-file4viewer/

I was trying to convert a dwg file to svf. I got to task 3 step 1 with no problem, but in step 2, when I make the request, I get the following response :

{"urn":"dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6YnVja2V0MTJzL3Zpc3VhbGl6YXRpb25fLV9hZXJpYWwuZHdn",
"derivatives":[{"hasThumbnail":"false","name":"visualization_-_aerial.dwg","progress":"complete",
"messages":[{"type":"error","code":"AutoCAD-InvalidFile",
"message":"Sorry, the drawing file is invalid and cannot be viewed. 
\n- Please try to recover the file in AutoCAD, and upload it again to view."},
{"type":"error","message":"Unrecoverable exit code from extractor: -1073741831",
"code":"TranslationWorker-InternalFailure"}],
"outputType":"svf","status":"failed"}],
"hasThumbnail":"false","progress":"complete","type":"manifest","region":"US","version":"1.0",
"status":"failed"}

I tried to view the file using their online viewer and was able to view it perfectly so I know that there's nothing wrong with the file. What could be the possible reason for this error?

Edit :

After I obtained access token and created bucket, I used this request to upload file to the bucket (Step 2 of Task 2) :

curl -X PUT -v 'https://developer.api.autodesk.com/oss/v2/buckets/{bucketname}/objects/visualization_-_aerial.dwg' -H 'Authorization: Bearer {TOKEN}' -H 'Accept-Encoding: gzip, deflate' --data-binary '{PATH_TO_FILE}/visualization_-_aerial.dwg'

The response to this is 200OK.

Then I used the online tool given in the tutorial to convert urn to base 64 encoded urn.

Here's the job post request (Step 1 of task 3) I sent :

curl -X POST  'https://developer.api.autodesk.com/modelderivative/v2/designdata/job' -H 'Authorization: Bearer {TOKEN}' -H 'x-ads-force: true' -H 'Content-Type: application/json' -d '{ "input": { "urn": "{URN}", "compressedUrn": true, "rootFilename": "visualization_-_aerial.dwg" }, "output": { "destination": { "region": "us" }, "formats": [{ "type": "svf", "views": ["2d", "3d"], "advanced": {"generateMasterViews": true} } ] } }'

the response to this is "success"

and the get request to check the status of the translation :

curl -X GET 'https://developer.api.autodesk.com/modelderivative/v2/designdata/{URN}/manifest' -H 'Authorization: Bearer {TOKEN}'

the response to this is what I included above.

The file is actually uploaded to the bucket and I was able to view it at https://oss-manager.autodesk.io/# but even there, it shows translation failed.

Edit 2: Here's an image of the response from https://oss-manager.autodesk.io/ get manifest request (used dev tools to get this)

enter image description here


Solution

  • Based on the comments added to the previous answer it seems like the issue is with the upload part. As you can see in the tutorial it's using

    --data-binary '@PATH_TO_DOWNLOADED_ZIP_FILE'
    

    The @ symbol is important, without it you'll get a reply like this

    {
    "bucketKey" : "adam",
    "objectId" : "urn:adsk.objects:os.object:adam/test.dwg",
    "objectKey" : "test.dwg",
    "sha1" : "cb54c0750e9201bbfa6da6adad6b496bec11a111",
    "size" : 27,
    "contentType" : "application/x-www-form-urlencoded",
    "location" : "https://developer.api.autodesk.com/oss/v2/buckets/adam/objects/test.dwg"
    * Connection #0 to host developer.api.autodesk.com left intact
    }
    

    Look at the size: 27 - that's definitely not right. And so when I try to translate the file I get the same error messages that you got.

    However, if I add the @ symbol then all is good:

    curl -X PUT -v 'https://developer.api.autodesk.com/oss/v2/buckets/{bucketname}/objects/test.dwg' -H 'Authorization: Bearer {TOKEN}' -H 'Accept-Encoding: gzip, deflate' --data-binary '@/Users/nagyad/Downloads/test.dwg'
    

    Note: I'm on a Mac, on Windows the path will look a bit different

    Reply I got this time:

    {
    "bucketKey" : "adam",
    "objectId" : "urn:adsk.objects:os.object:adam/test.dwg",
    "objectKey" : "test.dwg",
    "sha1" : "d17e9156c948caed3a98788836e6c1f3d5fddadc",
    "size" : 55727,
    "contentType" : "application/x-www-form-urlencoded",
    "location" : "https://developer.api.autodesk.com/oss/v2/buckets/adam/objects/test.dwg"
    * Connection #0 to host developer.api.autodesk.com left intact
    }
    

    And this time when I tried to translate the file, it succeeded.