[英]How to Upload a worksharing Revit model in BIM360 Docs using Autodesk Forge Data Management API
[英]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"
},
// ...
},
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.