如何获取到构件fragId?

发布于 2022-09-04 20:23:27 字数 60 浏览 17 评论 0

1、如何获取某一个构件的fragId?
2、如何获取到所有构件fragId 和 dbId的映射关系?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

节枝 2022-09-11 20:23:28

第一个问题可参考一下这个帖子:
https://segmentfault.com/q/10...

转瞬即逝 2022-09-11 20:23:27

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。

榕城若虚 2022-09-11 20:23:27

假设model为你获取的模型对象,如viewer.model
model.getFragmentList().fragments可以获取fragId
model.getFragmentList().fragments.fragId2dbId可以获取dbId

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文