同一NWD模型转SVF/SVF2后,SVF调用getLayersRoot返回空,求官方图层API
问题解答
原因分析
经典SVF格式与SVF2格式的图层存储架构完全不同:
- SVF2采用了全新的图层管理系统,
viewer.impl.getLayersRoot()正是为这套新系统设计的API,因此能正常获取图层根节点。 - 经典SVF的图层并非以独立的图层树结构存在,而是作为模型节点层级中的一类特殊节点(
Layer类型)存储,所以调用针对SVF2的API会返回空值。
获取SVF模型图层的官方API
要获取经典SVF模型的所有图层,可以通过搜索模型节点中类型为Layer的元素实现,示例代码如下:
// 获取模型根节点 const modelRoot = viewer.model.getDocumentNode().getRoot(); // 搜索所有Layer类型节点 const svfLayers = modelRoot.search({ 'type': 'Layer' }); // 遍历输出图层信息 svfLayers.forEach(layer => { console.log('图层名称:', layer.name, '图层ID:', layer.id); });
另外,也可以通过遍历模型节点树的方式逐个筛选图层节点,不过上述search方法是更简洁的官方推荐方式。
内容的提问来源于stack exchange,提问作者Murru Stefano
相关产品推荐
相关产品推荐

