扩展 Autodesk Forge:将我自己的扩展添加到包后,我的控制面板无法连接到 Revit 模型

2024-04-06

我用过这个包(https://github.com/petrbroz/forge-iot-extensions-demo https://github.com/petrbroz/forge-iot-extensions-demo)。之后,我添加了自己的扩展代码(RobotExt.js)。我的扩展的控制面板和图标已添加到 Autodesk Forge 网站。但不幸的是,控制面板不起作用。

There are these errors: enter image description here

这是我的扩展文件的源代码:

class RobotExtension extends Autodesk.Viewing.Extension {
    constructor(viewer, options) {
        super(viewer, options);
        this.viewer = viewer;
        //this.tree = null;
        this.tree = this.viewer.model.getData().instanceTree;
        this.defaultState = null;
        this.customize = this.customize.bind(this);
        this.createUI = this.createUI.bind(this);
        this.setTransformation = this.setTransformation.bind(this);
        this.getFragmentWorldMatrixByNodeId = this.getFragmentWorldMatrixByNodeId.bind(this);
        this.assignTransformations = this.assignTransformations.bind(this);
        this.findNodeIdbyName = this.findNodeIdbyName.bind(this);
    }

    load() {
        console.log('RobotExtension is loaded!');
        this.createUI();
        this.setTransformation();

        return true;
    }
    unload() {
        console.log('RobotExtension is now unloaded!');
        this.viewer.restoreState(this.defaultState);

        return true;
    }

    setTransformation() {
        let tree = this.tree;
    
        /* ====================== right 0 ================= */
        let ID_BaseRod = 4806;
        let ID_LowerArmBody = 4806;

        let Pivot_BaseRod = new THREE.Mesh(new THREE.BoxGeometry(20, 20, 20), new THREE.MeshBasicMaterial({ color: 0xff0000 }));
        let Position_BaseRod = this.getFragmentWorldMatrixByNodeId(ID_BaseRod).matrix[0].getPosition().clone();
        //print the returned value from getFragmentWorldMatrixByNodeId method and using this we can inspect the....
       


        let ID_BaseRod15 = 4886;
        let ID_LowerArmBody15 = 4886;

        let Pivot_BaseRod15= new THREE.Mesh(new THREE.BoxGeometry(0.1, 0.1, 0.1), new THREE.MeshBasicMaterial({ color: 0xff0000 }));
        let Position_BaseRod15 = this.getFragmentWorldMatrixByNodeId(ID_BaseRod15).matrix[0].getPosition().clone();
        //print the returned value from getFragmentWorldMatrixByNodeId method and using this we can inspect the....
        // output of the fucntion(method) whether working or not
        console.log(Position_BaseRod15);
        Pivot_BaseRod15.position.x = 0;
        Pivot_BaseRod15.position.y = Position_BaseRod15.y;
        Pivot_BaseRod15.position.z = Position_BaseRod15.z-2.84;
        viewer.impl.scene.add(Pivot_BaseRod15);
        console.log(Pivot_BaseRod15);

        let Helper_LowerArmBody15 = new THREE.Mesh();
        let Position_LowerArmBody15 = this.getFragmentWorldMatrixByNodeId(ID_LowerArmBody15).matrix[0].getPosition().clone();
        Helper_LowerArmBody15.position.x =  Position_LowerArmBody15.x + Math.abs(Position_LowerArmBody15.x - Pivot_BaseRod15.position.x);
        Helper_LowerArmBody15.position.y =  -Position_LowerArmBody15.y + Math.abs(Position_LowerArmBody15.y - Pivot_BaseRod15.position.y);
        Helper_LowerArmBody15.position.z =  -Position_LowerArmBody15.z + Math.abs(Position_LowerArmBody15.z - Pivot_BaseRod15.position.z);
        Pivot_BaseRod15.add(Helper_LowerArmBody15);
        console.log(Position_LowerArmBody15);



        

Stackoverflow 中出现限制字符错误,我不得不删除代码的某些部分。

[![在此处输入图像描述][2]][2]


In the setTransformation扩展类的方法,您有以下代码行:

viewer.impl.scene.add(Pivot_BaseRod1);

The viewer但是,变量未定义。该行代码应该如下所示:

this.viewer.impl.scene.add(Pivot_BaseRod1);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

扩展 Autodesk Forge:将我自己的扩展添加到包后,我的控制面板无法连接到 Revit 模型 的相关文章

随机推荐