var dbid = 1234;
var bounds = new THREE.Box3();
var box = new THREE.Box3();
var instanceTree = NOP_VIEWER.impl.model.getData().instanceTree;
var fragList = NOP_VIEWER.impl.model.getFragmentList();
instanceTree.enumNodeFragments(dbid, function (fragId) {
console.log('fragId:' + fragId);
//某几何单元的全局坐标系包围盒
fragList.getWorldBounds(fragId, box)
//合并计算最终整个构件包围盒
bounds.union(box);
//某几何单元的全局坐标系变换矩阵
//从中读取平移或旋转数值
//由于构件的几何单元应该都是同步变换,所以这些矩阵初始值应该是一样的
var fm = new THREE.Matrix4();
fragList.getWorldMatrix(fragId,fm);
console.log('frag matrix:' + JSON.stringify(fm));
}, true)
发布评论
评论(1)
你是需要构件的坐标,还是其它什么坐标信息? 如果是构件,viewer加载的是几何面片,而非设计软件有所谓‘位置’信息。
viewer提供的是构件的变换矩阵信息,通过以下代码可以拿到。如果只是希望有个基准点,可以考虑用包围盒的中心,以下代码也有演示: