Is it possible to translate and view recap RCP files in forge?
I see that RCP files are on the list of supported translations however it is my understanding that RCP files are just the recap project files and not the actual point files.
I tried running translations on both the RCP file and a zip file of the RCP and the support folder with the RCS file however it fails on both with a "Extractor error code -1"
{
"type": "manifest",
"hasThumbnail": "false",
"status": "failed",
"progress": "complete",
"region": "US",
"urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6emlwdGVzdGJ1Y2tldC9hc2RmLnppcA",
"version": "1.0",
"derivatives": [
{
"name": "asdf.rcp",
"hasThumbnail": "false",
"status": "failed",
"progress": "complete",
"messages": [
{
"type": "error",
"message": "Extractor error code -1",
"code": "TranslationWorker-InternalFailure"
}
],
"outputType": "svf",
"children": [
{
"guid": "63322a82-93e7-4d04-9c9c-844c23037ba6",
"type": "geometry",
"role": "3d",
"name": "scene"
}
]
}
]
}
I may be just misunderstanding the Recap format but does anyone know if this is possible?
Thanks.
As per Xiaodong's comment it seems point clouds from laser scans aren't supported yet, only ReCap Photo.
I was trying a laser scan project which is why it did not work.
Related
Response while initiating a translate:
{
"bucketKey": "suresh_ferzia_india_120",
"objectId": "urn:adsk.objects:os.object:suresh_ferzia_india_120/:delman.stp",
"objectKey": ":delman.stp",
"sha1": "4e0bb47f3c7e1fd22138040bde9e9be130ea2095",
"size": 930988,
"contentType": "application/octet-stream",
"location": "https://developer.api.autodesk.com/oss/v2/buckets/suresh_ferzia_india_120/objects/:delman.stp"
}
Everything seems to work fine with the above API. But when I try fetching it's status using get manifest API, I get the following error:
{
"urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6c3VyZXNoX2ZlcnppYV9pbmRpYV8xMjAvOmRlbG1hbi5zdHA",
"derivatives": [
{
"hasThumbnail": "false",
"name": "_delman.stp",
"progress": "complete",
"messages": [
{
"type": "error",
"message": "Possibly recoverable warning exit code from extractor: -536870943",
"code": "TranslationWorker-RecoverableInternalFailure"
}
],
"outputType": "svf",
"status": "failed"
}
],
"hasThumbnail": "false",
"progress": "complete",
"type": "manifest",
"region": "US",
"version": "1.0",
"status": "failed"
}
Could someone help me understand this error?
Please do the following:
confirm that the size of the uploaded object (930988) is the same as the actual file on your system; if they're different, perhaps there's some issue in the upload logic and the content of the object in the Forge bucket is corrupted
try removing the : from the file name as this could be causing issues as well
if possible, share the STEP file with us via forge (dot) help (at) autodesk (dot) com (confidentially; we would not share it with anyone outside of Autodesk) so that we can debug the issue on our end
This is how I post a new job:
{
"url": "/modelderivative/v2/designdata/job",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"x-ads-force": "true"
},
"data": {
"input": {
"urn": "BASE64_URL_ENCODED_OBJ_URN"
},
"output": {
"formats": [
{
"type": "svf",
"views": [
"3d",
"2d"
]
}
]
}
}
}
And this is the manifest I see when the conversion is over:
{
"type": "manifest",
"hasThumbnail": "true",
"status": "success",
"progress": "complete",
"region": "US",
"urn": "XXX",
"version": "1.0",
"derivatives": [
{
"name": "XXX.nwd",
"hasThumbnail": "true",
"status": "success",
"progress": "complete",
"outputType": "svf",
"children": [
{
"guid": "3c9bb37d-0385-4857-ab04-2e6e3ef6a7c4",
"type": "geometry",
"role": "3d",
"name": "XXX.nwc",
"status": "success",
"hasThumbnail": "true",
"progress": "complete",
"viewableID": "cache",
"useAsDefault": true,
"children": [
{
"guid": "XXX",
"type": "view",
"role": "3d",
"name": "Default",
"status": "success",
"camera": [
308.925903,
507.011261,
625.618591,
38.749268,
-60.60965,
89.572029,
-0.27886,
-0.585863,
0.760922,
1.38983,
0.785398,
1,
0
],
"useAsDefault": true,
"hasThumbnail": "true",
"children": [
{
"guid": "XXX",
"type": "resource",
"urn": "urn:adsk.viewing:fs.file:XXX/output/0/0_100.png",
"role": "thumbnail",
"mime": "image/png",
"resolution": [
100,
100
]
},
{
"guid": "XXX",
"type": "resource",
"urn": "urn:adsk.viewing:fs.file:XXX/output/0/0_200.png",
"role": "thumbnail",
"mime": "image/png",
"resolution": [
200,
200
]
},
{
"guid": "XXX",
"type": "resource",
"urn": "urn:adsk.viewing:fs.file:XXX/output/0/0_400.png",
"role": "thumbnail",
"mime": "image/png",
"resolution": [
400,
400
]
}
]
},
{
"guid": "XXX",
"type": "resource",
"urn": "urn:adsk.viewing:fs.file:XXX/output/0/0.svf",
"role": "graphics",
"mime": "application/autodesk-svf"
}
]
},
{
"guid": "XXX",
"type": "resource",
"urn": "urn:adsk.viewing:fs.file:XXX/output/0/properties.db",
"role": "Autodesk.CloudPlatform.PropertyDatabase",
"mime": "application/autodesk-db",
"status": "success"
}
]
}
]
}
Of course, the Authorization header is added with a generated token
For some reason, all I can see is that only the svf file has been generated.
However, when I use the extractor, I get the full model with all the graphics files.
After downloading all the files in the manifest above, and rendering the viewer, I get an error, saying there are files missing (which makes sense, since I have only one file - 0.svf)
I tried to follow the documentation as closely as possible, but it still doesn't work.
This happens with every Navisworks model that I upload not just a specific one, so I'm clearly doing something wrong.
What am I missing?
Background: the Model Derivative API converts a design file (e.g. NWD) into a web-friendly format (SVF). This format is actually a collection of files, images and databases, including the .pf. The URN is just an identifier of this collection of files on Forge server.
The manifest response indicates how the translation process went and the major outputs, like thumbnail, viewables or others, like OBJ or IFC (where applicable).
Now the extractor iterate through the manifest response and list all files that are part of the URN, including .pf, it uses this Nodejs code (also in .NET and PHP).
EDIT
Assuming you have downloaded all files properly, you need to point to the SVF file on your folder structure. The following file (from here) shows a super basic example.
var myViewerDiv = document.getElementById('MyViewerDiv');
var viewer = new Autodesk.Viewing.Private.GuiViewer3D(myViewerDiv);
var options = {
'env' : 'Local',
'document' : './shaver/0.svf'
};
Autodesk.Viewing.Initializer(options, function() {
viewer.start(options.document, options);
});
I’m sorry to hear that you’re having problems.
(edit) It looks like Augusto and I posted simultaneously. His EDIT to the original post is very likely more accurate than my guess here.
I’ll need to step through the process myself to understand what’s happening, since I don’t do a lot of coding in Forge. (It looks like Augusto is watching the discussion and will likely be testing this at his end, along with the other staff on the forge.help alias.)
It looks like you have retrieved the manifest correctly, and you just need to iterate over the URNs of the children to explicitly retrieve the remaining dependencies. If you look at the github code from the extractor example, you will see some methods such as getManifest, listAllDerivativeFiles, and downloadAllDerivativeFiles that might demonstrate what you’re missing: https://github.com/cyrillef/extract.autodesk.io
(edit) It's also worth noting that the .SVF file is actually a zip-archive where the viewer will find many of the other dependencies on its own.
We are experiencing erratic translation behaviour, and have been now for a few days. Some examples:
single .ipt files not translating (Inventor 2016 and 2014 tested)
An .ipt file that won't translate as a single file translates fine when uploaded as part of an assembly, where it can clearly be viewed.
Step and SolidWorks files that have worked previously no longer translating.
We can translate a small number of assemblies successfully, which indicates it is not a problem with our code. Below is a typical manifest that we are getting from these errors.It's a step file that was exported from Inventor 2016. It successfully translates and is viewable within A360 but not with the Forge APIs.
{
"type": "manifest",
"hasThumbnail": "false",
"status": "failed",
"progress": "complete",
"region": "US",
"urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6Y2Fkc2hhcmUtZGV2LWJ1Y2tldC9TaGFmdC5zdHA",
"version": "1.0",
"derivatives": [
{
"name": "Shaft.stp",
"hasThumbnail": "false",
"status": "failed",
"progress": "complete",
"messages": [
{
"type": "error",
"code": "ATF-1025",
"message": [
"The file: {0} is corrupt or invalid.",
"C:\\worker\\viewing-atf-lmv\\tmp\\job-1\\6\\Shaft.stp"
]
},
{
"type": "error",
"message": "Possibly recoverable warning exit code from extractor: -536870943",
"code": "TranslationWorker-RecoverableInternalFailure"
}
],
"outputType": "svf"
}
]
}
I had almost the same problem with this exact message.
In my case, the cause of the problem was that the stream of the file i was uploading wasn't on it's beggining, so i just did a fileStream.Seek(0, SeekOrigin.Begin); and then it worked for me.
At Autodesk University we were able to use the forge API to use a model that was in models.autodesk.io and show it in a web page via the viewer API.
I want to be able to upload our own .rvt file to use so I can make a more contextually meaningful demo for my company.
The upload fails every time at the end with an error that just says "???".
I asked our folks to make sure there were no links in the file and its pretty light weight so I am not sure why it fails.
I tried to use the model derivative API "manually" via a series of REST calls (using POSTman) with no luck either but a little bit more info on my response:
{
"type": "manifest",
"hasThumbnail": "false",
"status": "failed",
"progress": "complete",
"region": "US",
"urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6d2VndGVzdGJ1Y2tldC9Pd2luZ3NNaWxscy5ydnQ",
"version": "1.0",
"derivatives": [
{
"name": "OwingsMills.rvt",
"hasThumbnail": "false",
"status": "failed",
"progress": "complete",
"messages": [
{
"type": "error",
"code": "Revit-UnsupportedFileType",
"message": "<message>The file is not a Revit file or is not a supported version.</message>"
},
{
"type": "error",
"message": "Possibly recoverable warning exit code from extractor: -536870935",
"code": "TranslationWorker-RecoverableInternalFailure"
}
],
"outputType": "svf"
}
]
}
Update:
Tried by converting my file to .ifc and received an even more cryptic error message...see my json response below:
{
"type": "manifest",
"hasThumbnail": "false",
"status": "failed",
"progress": "complete",
"region": "US",
"urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6d2VndGVzdGJ1Y2tldC9Pd2luZ3NNaWxscy5pZmM",
"version": "1.0",
"derivatives": [
{
"name": "LMV Bubble",
"hasThumbnail": "false",
"status": "failed",
"progress": "complete",
"messages": [
{
"type": "error",
"message": "Unrecoverable exit code from extractor: -1073741829",
"code": "TranslationWorker-InternalFailure"
}
],
"outputType": "svf"
}
]
}
The Model Derivative API doesn't support every version of Revit file. In my experience it has only support current and 2 previous Revit versions.
Have you tried re-saving the file with a more recent version of Revit ?
Got it working. Had a designer author in 2016 and it worked this time. Thanks.
Following the Model Derivative "Prepare a File for the Viewer" after I have successfully uploaded and converted file I call the manifest url
how do I then download the converted files in the manifest. If I only know the refrence urn?
(i.e.) How would I get the coverted svf "urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bW9kZWxkZXJpdmF0aXZlL0E1LnppcA/output/1/A5.svf"
or the thumbnail
"urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bW9kZWxkZXJpdmF0aXZlL0E1LnppcA/output/1/A5.svf.png01_thumb_200x200.png"
Is there a api call that can be used to return the actual location?
Edit: The end result is I want to create something like the [extractor] (http://extract.autodesk.io/) does. With all the files I need to run the viewer locally
Edit2:The Manifest I get back from call after fileUploda
Result{
"type": "manifest",
"hasThumbnail": "true",
"status": "success",
"progress": "complete",
"region": "US",
"urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6Z3JlZ2JpbWJ1Y2tldC9yYWNfYmFzaWNfc2FtcGxlX3Byb2plY3RfdGVzdC5ydnQ",
"derivatives": [
{
"name": "rac_basic_sample_project_test.rvt",
"hasThumbnail": "true",
"status": "success",
"progress": "complete",
"outputType": "svf",
"children": [
{
"name": "{3D}",
"hasThumbnail": "true",
"role": "3d",
"status": "success",
"type": "geometry",
"progress": "complete",
"children": [
{
"name": "{3D}",
"role": "3d",
"camera": [
...
],
"status": "success",
"type": "view",
"progress": "complete"
},
{
"type": "resource",
"urn": "urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6Z3JlZ2JpbWJ1Y2tldC9yYWNfYmFzaWNfc2FtcGxlX3Byb2plY3RfdGVzdC5ydnQ/output/Resource/3D_View/_3D_/_3D_.svf",
"role": "graphics",
"mime": "application/autodesk-svf"
},
{
"type": "resource",
"role": "thumbnail",
"urn": "urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6Z3JlZ2JpbWJ1Y2tldC9yYWNfYmFzaWNfc2FtcGxlX3Byb2plY3RfdGVzdC5ydnQ/output/Resource/3D_View/_3D_/_3D_1.png",
"resolution": [
100,
100
],
"mime": "image/png",
"status": "success"
},
The Request I try to send but get a 404
https://developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6Z3JlZ2JpbWJ1Y2tldC9yYWNfYmFzaWNfc2FtcGxlX3Byb2plY3RfdGVzdC5ydnQ/manifest/urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6Z3JlZ2JpbWJ1Y2tldC9yYWNfYmFzaWNfc2FtcGxlX3Byb2plY3RfdGVzdC5ydnQ/output/Resource/3D_View/_3D_/_3D_1.png
Is there anything wrong with that call to modelderivative?
Cyrille Fauvel implemented this, so it is in his GitHub repo:
https://github.com/cyrillef/extract.autodesk.io
https://github.com/cyrillef/extract-php-view.and.data.api
You can also take a look at the implementation of the NPM View & Data Package for the time being. It is still using the v1 API endpoints but we are currently working on providing wrappers for multiple programming languages on the v2 endpoints
Using the derivativeurn GET worked
I also had to make sure the derivativeUrn was encoded
(JAVA) derivativeUrn = URLEncoder.encode(derivativeUrn, "UTF-8");