1、如何获取某一个构件的fragId?2、如何获取到所有构件fragId 和 dbId的映射关系?
第一个问题可参考一下这个帖子:https://segmentfault.com/q/10...
//假定选择到构件 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);
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。
假设model为你获取的模型对象,如viewer.modelmodel.getFragmentList().fragments可以获取fragIdmodel.getFragmentList().fragments.fragId2dbId可以获取dbId
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(3)
第一个问题可参考一下这个帖子:
https://segmentfault.com/q/10...
1、获取通过构件的dbId获取
2、获取到所有构件fragId 和 dbId的映射关系
如下图可以得到fragId与index的映射关系的Map,key为dbId,value为index,这一步可以拿到当前模型中的所有的dbId。
遍历获取fragId
特别注意一下上面代码中加粗的部分,开始的时候缺失这一步,造成一直没有获取正确的fragId,原因如下
A、enumNodeFragments 方法传入的dbId必须是number类型的
B、本来dbidToIndex返回的是一个key-value都是number的map,但是map经过for遍历之后,把key的类型全部转化为了string。所以必须要先转为number才能正确获取到fragId。
假设model为你获取的模型对象,如viewer.model
model.getFragmentList().fragments可以获取fragId
model.getFragmentList().fragments.fragId2dbId可以获取dbId