【问题标题】:Autodesk Forge Viewer How to get coordinates of line start/stopAutodesk Forge Viewer 如何获取线开始/停止的坐标
【发布时间】:2016-12-19 14:04:15
【问题描述】:

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

在 revit 中,我创建了代表房间边界的线条。转换为 svf 后,我知道这些行的 dbid。现在我想知道这些线的起点和终点(顶点),以便我可以创建房间边界的 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 有没有办法查看它的起点和终点(顶点)?这些顶点也是世界空间还是局部空间?

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    这就是我最终要做的。注意确保模型在调用 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-29
      • 2017-06-28
      • 2019-11-14
      • 2020-11-21
      • 2020-04-06
      • 2021-11-27
      • 2021-02-21
      • 2017-05-05
      相关资源
      最近更新 更多