使用Model Derivatives API时,为什么我看不到所有的.pf(图形)文件

时间:2018-05-13 08:14:32

标签: autodesk-forge

这是我发布新工作的方式:

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

这是转换结束后我看到的清单:

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

当然,Authorization标头添加了生成的标记

出于某种原因,我只能看到只生成了svf文件。 但是,当我使用extractor时,我会获得包含所有图形文件的完整模型。

下载清单中的所有文件并渲染查看器后,我收到错误,说有文件丢失(这是有道理的,因为我只有一个文件 - 0.svf

我尽可能地密切关注documentation,但它仍然无法运作。

我上传的每个Navisworks模型都会发生这种情况,而不仅仅是特定的模型,所以我显然做错了。

我错过了什么?

2 个答案:

答案 0 :(得分:1)

背景Model Derivative API将设计文件(例如NWD)转换为网络友好格式(SVF)。这种格式实际上是文件,图像和数据库的集合,包括.pfURN只是Forge服务器上此文件集合的标识符。

清单响应表明翻译过程如何以及主要输出,如缩略图,可视图或其他内容,如OBJ或IFC(如适用)。

现在,提取器遍历清单响应并列出属于URN的所有文件,包括.pf,它使用此Nodejs代码(也在.NET中和PHP)。

修改

假设您已正确下载所有文件,则需要指向文件夹结构上的SVF文件。以下文件(from here)显示了一个超级基本示例。

  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);
  });

答案 1 :(得分:0)

我很遗憾听到你有问题。

(编辑)看起来像Augusto和我同时发布。他对原始帖子的编辑很可能比我猜测的更准确。

我需要自己逐步完成这个过程,以了解发生了什么,因为我没有在Forge中做很多编码。 (看起来Augusto正在观看讨论,并且很可能会在他的最后测试这个,以及其他工作人员在forge.help别名。)

看起来你已经正确检索了清单,你只需要遍历子进程的URN来显式检索剩余的依赖关系。如果你看一下提取器示例中的github代码,你会看到一些方法,比如getManifest,listAllDerivativeFiles和downloadAllDerivativeFiles,它们可能会证明你缺少的东西:https://github.com/cyrillef/extract.autodesk.io

(编辑)还值得注意的是.SVF文件实际上是一个zip-archive,其中查看者可以自己找到许多其他依赖项。