如何使用Forge Data Management API在BIM360文档中查找Revit文档衍生品URN [英] How can I find Revit document derivatives URNs in BIM360 Docs using the Forge Data Management API

本文介绍了如何使用Forge Data Management API在BIM360文档中查找Revit文档衍生品URN的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将一些Revit文件存储在BIM360项目中。我正在尝试在Forge查看器中可视化这些文件。现在,Forge Viewer将不能直接处理Revit文件/文档,而是需要翻译后的‘svf’格式文件的‘urn’。

我可以使用Forge Model衍生品API将我的Revit文件转换为‘svf’文件,但这会消耗一些积分,而且我应该不能这样做,因为当将Revit文件上传到BIM360时,转换已经在那里进行。

然后我想知道,我如何才能找到我的Revit文档的底层‘svf’文件的‘urn’? 我在那里几乎找不到有帮助的资源,当浏览我的BIM360文件夹的内容,或者使用Forge Data Management API检查我的Revit文档的版本时,我应该能够访问响应中的派生对象,该对象表示可以由Forge查看器使用的派生模型。 https://forums.autodesk.com/t5/bim-360-api-forum/connecting-forge-viewer-with-bim-360/td-p/6742779

但对我来说,API响应中没有派生对象,参见下面的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.autodesk.com/data/v1/projects/:project_id/folders/:folder_id/contents

为什么我的响应包含的数据这么少?

推荐答案

首先感谢Eason的贡献。

由于我的派生对象为空,我尝试直接使用我的对象版本的‘urn’。

当使用我的问题中提到的FolderGet Content API方法列出我的所有文件夹文档时,我将获得‘data’项数组中的所有文档及其‘Included’版本数组中的所有版本。我们需要使用文档版本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对idurn:adsk.wipprod:fs.file:vf.l9pc9re6QOmeEVHvTCTlIQ?version=1进行编码。注意,结果将是dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLmw5cGM5cmU2UU9tZUVWSHZUQ1RsSVE/dmVyc2lvbj0,这在我的JS代码中是无效的,因此无法在Forge Viewer中加载文档,因为/。它需要替换为_。因此,最终将我的文档加载到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');
    }    

});

这篇关于如何使用Forge Data Management API在BIM360文档中查找Revit文档衍生品URN的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆