无法读取未定义的 属性 'enumNodeFragments'

Cannot read property 'enumNodeFragments' of undefined

我正在尝试使用 Autodesk-forge 平台更改 3D 查看器中元素的颜色,为此我使用了 Daniel Du 的 API https://forge.autodesk.com/cloud_and_mobile/2015/12/change-color-of-elements-with-view-and-data-api.html。 但问题是 运行 我得到这个 The error Pict

还有这个函数:

Autodesk.Viewing.Viewer3D.prototype.setColorMaterial = function(objectIds, color) {
        var material = addMaterial(color);

        for (var i=0; i<objectIds.length; i++) {

            var dbid = objectIds[i];

            //from dbid to node, to fragid
            viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, function () {
                var it = viewer.model.getData().instanceTree;
                console.log(it);

                it.enumNodeFragments(dbid, function (fragId) {          
                    var renderProxy = viewer.impl.getRenderProxy(viewer.model, fragId);
                    console.log("r prox : " + renderProxy);

                    renderProxy.meshProxy = new THREE.Mesh(renderProxy.geometry, renderProxy.material);

                    renderProxy.meshProxy.matrix.copy(renderProxy.matrixWorld);
                    renderProxy.meshProxy.matrixWorldNeedsUpdate = true;
                    renderProxy.meshProxy.matrixAutoUpdate = false;
                    renderProxy.meshProxy.frustumCulled = false;

                    viewer.impl.addOverlay(overlayName, renderProxy.meshProxy);
                    viewer.impl.invalidate(true);

                }, false);

            });

        }

    }

希望任何人都能解决这个问题...

很可能您是 运行 加载实例树之前的这段代码,这会引发错误 Cannot read 属性 'enumNodeFragments' of undefinedit 变量上。您需要在 运行 该代码之前等待 Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT

也看看