Autodesk Forge Viewer支持深度展示装配,最大层数限制取决于实际情况。一般情况下,若装配结构合理,深度展示无上限。以下是一个示例代码,展示了如何在Forge Viewer中展示装配结构:
// 初始化Viewer
const viewer = new Autodesk.Viewing.Private.GuiViewer3D(document.getElementById('viewer'));
// 载入装配文件
const documentId = 'urn:mydocumentId';
Autodesk.Viewing.Initializer({ env: 'AutodeskProduction' }, () => {
const config3d = {
extensions: ['MyExtension'],
api: 'derivativeV2',
};
viewer.start();
Autodesk.Viewing.Document.load(documentId, (doc) => {
const viewables = doc.getRoot().getDefaultGeometry();
viewer.loadDocumentNode(doc, viewables).then(() => {
// 调整视角以展示整个装配结构
viewer.autocam.setHomeViewFrom(viewables);
});
}, (err) => {
console.error(err);
}, config3d);
});
// 自定义扩展
class MyExtension extends Autodesk.Viewing.Extension {
constructor(viewer, options) {
super(viewer, options);
this.viewer = viewer;
}
load() {
const instanceTree = this.viewer.model.getInstanceTree();
let rootId = instanceTree.getRootId();
let depth = 0;
// 遍历整个装配结构,读取深度信息
instanceTree.enumNodeChildren(rootId, (childId) => {
const curDepth = instanceTree.getDepth(childId);
depth = Math.max(depth, curDepth);
}, true);
console.log(`The depth of current assembly is ${depth}.`);
return true;
}
unload() {
return true;
}
}
Autodesk.Viewing.theExtensionManager.registerExtension('MyExtension', MyExtension);