繁体   English   中英

如何使用 Forge 数据管理 API 在 BIM360 Docs 中找到 Revit 文档衍生 URN

[英]How can I find Revit document derivatives URNs in BIM360 Docs using the Forge Data Management API

我有一些 Revit 文件存储在 BIM360 项目中。 我正在尝试在 Forge Viewer 中可视化这些文件。 现在 Forge Viewer 不能直接使用 Revit 文件/文档,但需要“svf”格式的翻译文件的“urn”。

我可以使用 Forge Model Derivative API 将我的 Revit 文件转换为“svf”文件,但这会消耗一些积分,我不应该这样做,因为在将 Revit 文件上传到 BIM360 时,翻译已经发生.

当时我想知道,如何找出 Revit 文档的底层“svf”文件的“urn”? 在浏览我的 BIM360 文件夹的内容或使用 Forge 数据管理 API 检查我的 Revit 文档的版本时,我发现很少有资源可以帮助我,我应该能够在响应中访问派生 object,它代表派生的 Z20F35E630DAF49DB8CFA4 Forge 查看器使用。 https://forums.autodesk.com/t5/bim-360-api-forum/connecting-forge-viewer-with-bim-360/td-p/6742779

但是对我来说,在 API 响应中没有派生 object,请参见下面的 API 响应示例(出于安全目的,我混淆了一些数据):

 {
                         "type":  "versions",
                         "id":  "urn:adsk.wipprod:fs.file:vf.XXXXXXXXXXXXXXXXXXXX?version=1",
                         "attributes":  "@{name=139200.33_Amenities Building_R21.rvt; displayName=139200.33_Amenities Building_R21.rvt; createTime=2021-09-03T04:24:18.0000000Z; createUserId=XXXXXXXXXX; createUserName=Holmes Consulting; lastModifiedTime=2021-09-03T04:28:02.0000000Z; lastModifiedUserId=XXXXXXXXXXXX; lastModifiedUserName=XXXXXXXXXX; versionNumber=1; storageSize=19808256; fileType=rvt; extension=}",
                         "links":  "@{self=; webView=}",
                         "relationships":  "@{item=; links=; refs=; downloadFormats=; derivatives=; thumbnails=; storage=}"
                     },

我正在使用上面提供的链接中使用的 API 调用: https://developer.api.autodeskcontent.com/data/v1/project_folders/project:

为什么我的回复包含这么少的数据?

请在relationships.data.derivatives的 id 值中找到它。 例如,

"derivatives": {
    "data": {
        "type": "derivatives",
        "id": "dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLkVueWtrU3FjU0lPVTVYMGhRdy1mQUM_dmVyc2lvbj0x"
    },
    // ...
},

或检查这一行: https://github.com/Autodesk-Forge/learn.forge.viewhubmodels/blob/nodejs/routes/datamanagement.js#L155

const viewerUrn = (version.relationships != null && version.relationships.derivatives != null ? version.relationships.derivatives.data.id : null);

首先感谢 Eason 的贡献。

由于我的衍生产品 object 是空的,我尝试直接使用我的 object 版本的“骨灰盒”。

当使用我的问题中提到的文件夹获取内容 API 方法列出我的所有文件夹文档时,我在“数据”项数组中获取所有文档,并在“包含”版本数组中获取它们的所有版本。 我们需要使用文档版本 id 来构建 urn。 请参阅下面的示例:

 "included":  [
                     {
                         "type":  "versions",
                         "id":  "urn:adsk.wipprod:fs.file:vf.l9pc9re6QOmeEVHvTCTlIQ?version=1",
                         "attributes":  "@{name=139200.33_Amenities Building_R21.rvt; displayName=139200.33_Amenities Building_R21.rvt; createTime=2021-09-03T04:24:18.0000000Z; createUserId=XXXXXX; createUserName=XXXXXXXX; lastModifiedTime=2021-09-03T04:28:02.0000000Z; lastModifiedUserId=XXXXXXXXXXXX; lastModifiedUserName=XXXXXXXXXXXX; versionNumber=1; storageSize=19808256; fileType=rvt; extension=}",
                         "links":  "@{self=; webView=}",
                         "relationships":  "@{item=; links=; refs=; downloadFormats=; derivatives=; thumbnails=; storage=}"
                     },

现在 id 必须是 base64 编码。 我正在使用https://www.freeformatter.com/base64-encoder.html编码 id urn:adsk.wipprod:fs.file:vf.l9pc9re6QOmeEVHvTCTlIQ?version=1 请注意,结果将是 dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLmw5cGM5cmU2UU9tZUVWSHZUQ1RsSVE/dmVyc2lvbj0,这在我的 JS 代码中无效,无法在 Forge 查看器中加载文档,因为 /. 它需要替换为_。 所以最终将我的文档加载到 Forge 查看器中的 JS 部分看起来像这样:

var documentId = 'urn:dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLmw5cGM5cmU2UU9tZUVWSHZUQ1RsSVE_dmVyc2lvbj0x'; //139200.33_Amenities Building_R21.rvt

Autodesk.Viewing.Initializer(options, function() {

    var htmlDiv = document.getElementById('forgeViewer');
    viewer = new Autodesk.Viewing.GuiViewer3D(htmlDiv);
    viewer.start();
    Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);

    function onDocumentLoadSuccess(viewerDocument) {
        // Choose the default viewable - most likely a 3D model, rather than a 2D sheet.
        var defaultModel = viewerDocument.getRoot().getDefaultGeometry();
        viewer.loadDocumentNode(viewerDocument, defaultModel);
    }

    function onDocumentLoadFailure() {
        console.error('Failed fetching Forge manifest');
    }    

});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM