如何使用Forge Data Management API在BIM360文档中查找Revit文档衍生品URN [英] How can I find Revit document derivatives URNs in BIM360 Docs using the Forge Data Management API
问题描述
我将一些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屋!