forge 查看器中 nwc 文件的对象的 x、y、z 坐标

Posted

技术标签:

【中文标题】forge 查看器中 nwc 文件的对象的 x、y、z 坐标【英文标题】:x, y, z coordinates of an object for a nwc file in forge viewer 【发布时间】:2021-12-24 23:03:29 【问题描述】:

我正在尝试在 nwc 模型中查找对象的 x、y、z 坐标,并且我正在使用以下代码。

尽管此代码适用于 rvt 文件,但不适用于 nwc 模型。

有没有办法从 nwc 模型中获取 x,y,z 坐标?

getFragmentWorldMatrixByNodeId(nodeId) 
        let result = 
            fragId: [],
            matrix: [],
        ;
        let viewer = this.viewer;
        this.tree.enumNodeFragments(nodeId, function (frag) 

            let fragProxy = viewer.impl.getFragmentProxy(viewer.model, frag);
            let matrix = new THREE.Matrix4();

            fragProxy.getWorldMatrix(matrix);

            result.fragId.push(frag);
            result.matrix.push(matrix);
        );
        return result;
    

【问题讨论】:

【参考方案1】:

您提到您正在寻找“对象的 x,y,z 坐标”。你到底是什么意思?我将假设您想要对象边界框的中心点 的坐标,因为这是人们通常要求的。然而,在您的代码 sn-p 中,您检索的是整个变换矩阵,而不是位置。

如果边界框的中心点适合您,您可以像这样获得它:

function getObjectBoundingBox(model, dbid) 
    const tree = model.getInstanceTree();
    const frags = model.getFragmentList();
    let totalBounds = new THREE.Box3();
    tree.enumNodeFragments(dbid, function (fragid) 
        let fragBounds = new THREE.Box3();
        frags.getWorldBounds(fragid, fragBounds);
        totalBounds.union(fragBounds);
    , true);
    return totalBounds;


getObjectBoundingBox(viewer.model, 123).center();

【讨论】:

谢谢彼得,为我工作

以上是关于forge 查看器中 nwc 文件的对象的 x、y、z 坐标的主要内容,如果未能解决你的问题,请参考以下文章

在 Forge 查看器中从 Revit 模型重建对象组

如何在 Autodesk forge 2d 查看器中确定对象的起点和终点

在 Autodesk Forge 查看器中显示链接文件

在 forge 查看器中编辑 revit 文件

如何在 Forge 查看器中使用 svf 文件计算面积和体积

Navisworks 在 Forge 查看器中保存了视点