无法读取未定义的 属性 '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 undefined 在 it 变量上。您需要在 运行 该代码之前等待 Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT。
也看看 。
我正在尝试使用 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 undefined 在 it 变量上。您需要在 运行 该代码之前等待 Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT。
也看看