autodesk-forge - 如何获取到构件fragId?
本文介绍了autodesk-forge - 如何获取到构件fragId?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
1、如何获取某一个构件的fragId?
2、如何获取到所有构件fragId 和 dbId的映射关系?
解决方案
1、获取通过构件的dbId获取
//假定选择到构件
var sel = NOP_VIEWER.getSelection();
//考察第一个对象
var dbId = sel[0];
//获取模型树
var it = NOP_VIEWER.model.getData().instanceTree;
//遍历此对象含有的fragment id
it.enumNodeFragments(dbId, function(fragId) {
console.log(fragId);
},
false);
2、获取到所有构件fragId 和 dbId的映射关系
viewer.model.getData()
.instanceTree.nodeAccess.dbIdToIndex;
如下图可以得到fragId与index的映射关系的Map,key为dbId,value为index,这一步可以拿到当前模型中的所有的dbId。
遍历获取fragId
for(var thisdbId in dbidToIndex)
{
console.log(typyof(thisdbId));//**string**
**var eachDbId = parseInt(thisdbId);**
it.enumNodeFragments(eachDbId, function(fragId) {
console.log('dbid:' + eachDbId + 'fragid:' + fragId);
},
false);
}
特别注意一下上面代码中加粗的部分,开始的时候缺失这一步,造成一直没有获取正确的fragId,原因如下
A、enumNodeFragments 方法传入的dbId必须是number类型的
B、本来dbidToIndex返回的是一个key-value都是number的map,但是map经过for遍历之后,把key的类型全部转化为了string。所以必须要先转为number才能正确获取到fragId。
这篇关于autodesk-forge - 如何获取到构件fragId?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文