Autodesk Forge Viewer 如何获取线开始/停止的坐标 [英] Autodesk Forge Viewer How to get coordinates of line start/stop

查看:49
本文介绍了Autodesk Forge Viewer 如何获取线开始/停止的坐标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to do room highlighting in forge viewer.

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

In revit I have created lines that represent the borders of a room. After conversion to svf I know the dbids of those lines. Now I want to know the start and stop points (vertices) of those lines so that I can create a Three.Shape() of the room borders.

我从 dbId 得到 fragId

I get the fragId from dbId

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 有没有办法查看它的起点和终点(顶点)?这些顶点是世界空间还是局部空间?

Question: Once I know the fragId is there a way to see its start and stop points(vertices)? Also will those vertices be world space or local space?

推荐答案

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

This is what I ended up doing. Note make sure the model is finished loading before calling instanceTree. Also in my case the dbid and fragid where one to one, not sure if this will always be the case in the instance tree.

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

这篇关于Autodesk Forge Viewer 如何获取线开始/停止的坐标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆