【问题标题】:How can I add and image or svg next to node?如何在节点旁边添加图像或 svg?
【发布时间】:2020-02-06 05:26:47
【问题描述】:

我想在平面图上的某些节点旁边添加图像、svg 甚至创建三个图形。

这是我获取节点位置的方法dbId

function getLeafFragIds(model, leafId) {
            const instanceTree = model.getData().instanceTree;
            const fragIds = [];

            instanceTree.enumNodeFragments( leafId, function( fragId ) {
                fragIds.push( fragId );
            });

            return fragIds;
        }

        function getComponentGeometry( viewer, dbId ) {

            const fragIds = getLeafFragIds( viewer.model, dbId );

            let matrixWorld = null;

            const meshes = fragIds.map( function( fragId ) {

                const renderProxy = viewer.impl.getRenderProxy( viewer.model, fragId );

                const geometry = renderProxy.geometry;
                const attributes = geometry.attributes;
                const positions = geometry.vb ? geometry.vb : attributes.position.array;

                const indices = attributes.index.array || geometry.ib;
                const stride = geometry.vb ? geometry.vbstride : 3;
                const offsets = geometry.offsets;

                matrixWorld = matrixWorld || renderProxy.matrixWorld.elements;

                return {
                    positions,
                    indices,
                    offsets,
                    stride
                };
            });

            return {
                matrixWorld,
                meshes
            };
        }

有没有一种方法可以用来在节点旁边放置或绘制一些东西?我看过一些与THREE.ImageUtils.loadTexture();setMaterial() 相关的代码,但问题是我不知道如何定义节点旁边的确切位置

如果我们谈论这样的几何图形:

let geometry = new THREE.BoxGeometry(1,1,1);
let material = new THREE.MeshBasicMaterial({color: 0x00ff00});
let cube = new THREE.Mesh(geometry, material);

如何定义它靠近node的位置?

谢谢

【问题讨论】:

    标签: javascript autodesk-forge


    【解决方案1】:

    您可以通过计算其边界框的中心来获取节点的位置,最简单的方法是使用查看器的内置单位:

    viewer.select(nodeid); //select the target component so the selector knows which component to fit selection bounds
    const box = viewer.utilities.getBoundingBox();
    const position = box.center();
    viewer.select(); //clear selection if necessary
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 2022-08-18
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      • 2016-08-17
      • 2021-09-09
      相关资源
      最近更新 更多