URN Problem Forge Model Derivative API - 无效的设计参数

Posted

技术标签:

【中文标题】URN Problem Forge Model Derivative API - 无效的设计参数【英文标题】:URN Problem Forge Model Derivative API - Invalid design parameter 【发布时间】:2020-05-31 20:56:44 【问题描述】:

我正在尝试翻译我之前上传到 Forge 存储桶的对象,但我遇到了参数错误。我假设 URN 是问题所在。我可以确认该对象已正确上传,因为我已经能够从存储桶中下载它。

我的代码如下:

我使用 getObjectDetails 调用来获取对象 URN 作为对象 ID:

static getObjectUrn (oAuth2TwoLegged, objectName, callback) 
    ObjectsApi.getObjectDetails(bucketKey, objectName, , oAuth2TwoLegged, oAuth2TwoLegged.getCredentials()).then((resp) => 
        callback(null, resp.body.objectId);
    , callback);

我得到了类似的东西: 瓮:adsk.objects:os.object:configtest2/f8d215f7-9ff0-474a-87b9-632ca745b39eresult.zip

我的请求正文如下所示:

let data = urn;
var buf = new Buffer(data, 'base64'); 
var plain_buf = buf.toString(); 
console.log(plain_buf); 

const resolvedTemplate = 
                        'input': 
                            "urn": plain_buf,
                            "compressedUrn": true,
                            "rootFilename": self.rootFilename
                        ,
                        'output': 
                            "destination": 
                              "region": "us"
                            ,
                            "formats": [
                              
                                "type": "svf",
                                "views": [
                                  "3d"
                                ]
                              
                            ]
                          ,
                    ;

我在编码前后尝试了几种不同的骨灰盒变体,但无济于事。我的根文件名为 PlaysetGA.iam,虽然这是一个 .zip 文件夹,所以我也尝试了文件夹内的路径,即 Playset/PlaysetGA.iam。

我查看了以下页面: https://forge.autodesk.com/en/docs/model-derivative/v2/tutorials/prepare-file-for-viewer/ 这个问题: Model Derivative API Post Job - 400 Bad Request "Invalid 'design' parameter"

这是我收到的回复: "diagnostic":"无效的'设计'参数。"

显然,我错过了一些东西。谢谢!

编辑: 我已经更新了我的 .zip 文件夹,所以我的根文件位于基本文件路径中。这是根目录:

Root folder

【问题讨论】:

【参考方案1】:

目前POST job 端点在rootFilename 参数中仅支持文件names,不支持文件paths。如果您想翻译 ZIP 文件,您需要确保根文件名直接在存档的根目录中可用。

【讨论】:

感谢您的回答!我扔了一个测试 .zip 并尝试了一下,但我仍然得到相同的答案。这些是我的编码输入: "input":"urn":"���v�(n7���,���r�(������-��:m�8i�� �Z��]��7k��w�6s�����m�*","compressedUrn":true,"rootFilename":"PlaysetGA.iam","output":"destination":" region":"us","formats":["type":"svf","views":["3d"]] 我希望你能看到我的错误。我需要删除'urn:' 编码前? 嗯,URN 似乎不对。该字符串只能由字母、数字和+/ 符号(en.wikipedia.org/wiki/Base64) 组成。你确定你正确地对原始字符串进行base64编码吗?尝试使用此网页对其进行编码:base64encode.org. 感谢您为我指明正确的方向。编码设置错误,其中一项功能已被弃用。【参考方案2】:

结果

var buf = new Buffer.from(unencoded_urn, 'ascii'); 
var plain_buf = buf.toString('base64'); 

是对从 ObjectsApi.getObjectDetails 函数中检索到 unencoded_urn 的 URN 进行编码的正确方法。

【讨论】:

以上是关于URN Problem Forge Model Derivative API - 无效的设计参数的主要内容,如果未能解决你的问题,请参考以下文章

哪个 base64 标准应该与用于 forge api 的 URN 一起使用?

如何从 revit 插件或使用 Forge api 为 Revit 文件创建 URN

Autodesk Forge - 发布作业 - 必须将文件放在存储桶中并使用正确的URN

如何获取上传的伪造文件的 URN?

处理 Autodesk Forge 查看器的错误

尝试从 BIM 360 URN 显示 SVF 时出错