无法读取未定义的属性“enumNodeFragments”
Posted
技术标签:
【中文标题】无法读取未定义的属性“enumNodeFragments”【英文标题】:Cannot read property 'enumNodeFragments' of undefined 【发布时间】:2018-08-25 06:01:40 【问题描述】:我正在尝试使用 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);
);
希望任何人都可以解决这个问题...
【问题讨论】:
【参考方案1】:您很可能在加载实例树之前运行此代码,这会引发错误无法读取 it 变量上未定义的属性“enumNodeFragments”。在运行该代码之前,您需要等待 Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT。
也可以看看previous question about modifying materials in the viewer。
【讨论】:
以上是关于无法读取未定义的属性“enumNodeFragments”的主要内容,如果未能解决你的问题,请参考以下文章
NextJS:未捕获的类型错误:无法读取未定义的属性(读取“属性”)