Autodesk Forge 模型衍生 API:在 Autodesk Forge 衍生子项中找不到“图形”角色
Posted
技术标签:
【中文标题】Autodesk Forge 模型衍生 API:在 Autodesk Forge 衍生子项中找不到“图形”角色【英文标题】:Autodesk Forge Model Derivative API: Can't not find 'graphics' role in autodesk forge derivatives children 【发布时间】:2020-11-10 10:20:22 【问题描述】:我想将 .rvt 文件转换为 .svf。 我正在使用 java SDK。(仅限,不是 node.js,C#)
首先我必须得到衍生子代。
这是我获取衍生子的源代码。
ObjectsApi objectsApi = new ObjectsApi();
ApiResponse<BucketObjects> objects = objectsApi.getObjects("test", 100, null, null, forgeOAuth,
forgeOAuth.getCredentials());
String base64Urn = "";
// iterate each items of the bucket
for (int i = 0; i < objects.getData().getItems().size(); i++)
ObjectDetails eachItem = objects.getData().getItems().get(i);
base64Urn = DatatypeConverter.printBase64Binary(eachItem.getObjectId().getBytes());
ObjectDetails eachItem = objects.getData().getItems().get(0);
base64Urn = DatatypeConverter.printBase64Binary(eachItem.getObjectId().getBytes());
ApiResponse<Manifest> manifest = derivativesApi.getManifest(base64Urn, "", forgeOAuth, forgeOAuth.getCredentials());
但这不适合获得“图形”角色。 它为我提供 Autodesk.CloudPlatform.PropertyDatabase、3d、一些缩略图
以下是 manifest.getData() 的结果集
class Manifest
urn: dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6cDE4MDE3Ni8xODAyMTVfMTAwXzNfQTEwMS5ydnQ
type: manifest
progress: complete
status: success
hasThumbnail: true
region: US
derivatives: [class ManifestDerivative
name: 180215_100_3_A101.rvt
hasThumbnail: true
outputType: svf
progress: complete
status: success
children: [class ManifestChildren
type: resource
role: Autodesk.CloudPlatform.PropertyDatabase
guid: 6fac95cb-af5d-3e4f-b943-8a7f55847ff1
name: null
phaseNames: null
viewableID: null
hasThumbnail: null
mime: application/autodesk-db
urn: urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6cDE4MDE3Ni8xODAyMTVfMTAwXzNfQTEwMS5ydnQ/output/Resource/model.sdb
progress: null
status: success
resolution: []
modelGUID: null
objectIds: []
messages: null
camera: []
, class ManifestChildren
type: geometry
role: 3d
guid: 3cb8c807-d232-58e3-31d1-f4f89ad98945
name: 3D
phaseNames: Phase 1
viewableID: ecda35ed-79db-4c54-8ae1-3bb64e7f3640-000473bc
hasThumbnail: true
mime: null
urn: null
progress: complete
status: success
resolution: []
modelGUID: null
objectIds: []
messages: null
camera: []
]
, class ManifestDerivative
name: null
hasThumbnail: null
outputType: thumbnail
progress: complete
status: success
children: [class ManifestChildren
type: resource
role: thumbnail
guid: db899ab5-939f-e250-d79d-2d1637ce4565
name: null
phaseNames: null
viewableID: null
hasThumbnail: null
mime: image/png
urn: urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6cDE4MDE3Ni8xODAyMTVfMTAwXzNfQTEwMS5ydnQ/output/preview1.png
progress: null
status: success
resolution: [100, 100]
modelGUID: null
objectIds: []
messages: null
camera: []
, class ManifestChildren
type: resource
role: thumbnail
guid: 3f6c118d-f551-7bf0-03c9-8548d26c9772
name: null
phaseNames: null
viewableID: null
hasThumbnail: null
mime: image/png
urn: urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6cDE4MDE3Ni8xODAyMTVfMTAwXzNfQTEwMS5ydnQ/output/preview2.png
progress: null
status: success
resolution: [200, 200]
modelGUID: null
objectIds: []
messages: null
camera: []
, class ManifestChildren
type: resource
role: thumbnail
guid: 4e751806-0920-ce32-e9fd-47c3cec21536
name: null
phaseNames: null
viewableID: null
hasThumbnail: null
mime: image/png
urn: urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6cDE4MDE3Ni8xODAyMTVfMTAwXzNfQTEwMS5ydnQ/output/preview4.png
progress: null
status: success
resolution: [400, 400]
modelGUID: null
objectIds: []
messages: null
camera: []
]
]
相同的 revit 文件在 C# 中运行良好。
"urn": "urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6cDE4MDE3Ni90ZXN0LmR3Zng/output/99c9d5d0-fa02-c7ed-15a9-6a62ec928cd2/0.svf",
"role": "graphics",
"mime": "application/autodesk-svf",
"guid": "87f5601a-158a-10fb-f22a-c828d008e178",
"type": "resource",
"status": "success"
我能否获得让衍生子项具有“角色”:“图形”、“mime”:“应用程序/autodesk-svf”的方法?
【问题讨论】:
【参考方案1】:如果您的目标只是“将 .rvt 文件转换为 .svf”,则根本不必担心 Java 代码中清单的结构。使用 Forge Model Derivative 服务转换设计会生成各种输出(缩略图、2D 图纸、3D 视图、属性数据库等),然后,选择所需的 2D 图纸或 3D 视图通常由客户端上的 javascript 代码处理一边。
例如,在这个tutorial 中,JavaScript 代码查找并加载“默认”派生,但您也可以使用search 方法查找具有特定role
和/或mime
值的所有可视项.
【讨论】:
感谢您的回答!但我的目标不仅仅是将 .rvt 文件转换为 .svf。我的最终目标是在本地环境中加载 3D 视图。所以我想下载所有文件以在本地环境中加载 3D 视图,例如 .svf、*.json.gz、.sdb 扩展名。我可以通过客户端的 JavaScript 代码或 java 下载各种输出(缩略图、2D 表、3D 视图、属性数据库等)吗? 啊,我明白了。我不知道 Java 的任何选项,但是是的,有几种方法可以下载整个 SVF 包,例如,通过关注forge.autodesk.com/blog/forge-svf-extractor-nodejs,或使用github.com/petrbroz/forge-convert-utils 作为命令行工具。以上是关于Autodesk Forge 模型衍生 API:在 Autodesk Forge 衍生子项中找不到“图形”角色的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Autodesk 模型衍生 API 元数据中的 objectids 与 Forge Viewer 模型 dbids 匹配?
Autodesk Forge 设计自动化/模型衍生 API - 查看器缓存 svf 文件