繁体   English   中英

Autodesk Forge Viewer如何获取线条起点/终点的坐标

[英]Autodesk Forge Viewer How to get coordinates of line start/stop

我正在尝试在伪造查看器中突出显示房间。

在revit中,我创建了代表房间边界的线。 转换为svf后,我知道了这些行的出价。 现在,我想知道这些线的起点和终点(顶点),以便创建房间边界的Three.Shape()。

[编辑]我从dbId获得了fragId

function getFragIdFromDbId(viewer, dbid){
var returnValue;
 var it = viewer.model.getData().instanceTree;       
it.enumNodeFragments(dbid, function(fragId) {
  console.log("dbId: " + dbid + " FragId : " + fragId);
  returnValue =  fragId;
}, false);
return returnValue;
}

问题:一旦知道fragId,就可以查看其起点和终点(顶点)了吗? 这些顶点还会是世界空间还是局部空间?

这就是我最终要做的。 请注意,在调用instanceTree之前,请确保模型已完成加载。 同样在我的情况下,dbid和fragid是一对一的,不确定在实例树中是否总是这种情况。

function getFragIdFromDbId(viewer, dbid) {
 var returnValue;
 var it = viewer.model.getData().instanceTree;
 it.enumNodeFragments(dbid, function (fragId) {
  console.log("dbId: " + dbid + " FragId : " + fragId);
  returnValue = fragId;
 }, false);
 return returnValue;
}

...

// only need the start vertex
var floatArray = [];
for (var i = 0; i < dbidArray.length; i++) {
var fragId = getFragIdFromDbId(viewer, dbidArray[i]);
var mesh = viewer.impl.getRenderProxy(viewer.model, fragId);
var matrixWorld = mesh.matrixWorld;
var lmvBufferGeometry = mesh.geometry;
var lmvFloatArray = lmvBufferGeometry.vb; //this will have an array of 6  values 0,1,2 are start vertext , 3,4,5 are end vertex

floatArray.push(lmvFloatArray[0]);
floatArray.push(lmvFloatArray[1]);
floatArray.push(lmvFloatArray[2]);

}
//use matrixWorld to convert array to worldSpace

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM