我目前正在寻求尝试获得一个非常简单的解决方案,作为概念证明,然后再继续伪造。我已经完成了基本的应用程序快速入门指南和基本的扩展指南以及它自己与我使用Autodesk管道3D创建的文件完美匹配的查看器(尝试作为dwg文件和dwfx)。
我所要做的就是改变模型的颜色,我可以找到的所有指南都使用类似的方法,但它们都要求你获取FragID列表以应用材料
var it = viewer.model.getData().instanceTree;
var allDbIds = Object.keys(it.nodeAccess.dbIdToIndex);
for (var i=0; i<allDbIds.length; i++) {
var dbid = allDbIds[i];
var fragIds = []
try {
it.enumNodeFragments(dbid, function(fragId){
fragIds.push(fragId)
})
}catch(error) {
console.error(error);
}
fragIds.forEach(function(fragId) {
//code to actually change colour
})
它设法让dbid很好并带回许多但是当它试图获得碎片ID时它不会带回任何东西。它没有打破它只是带回来,但我很难找到实际查看为什么或从哪里开始的地方
答案 0 :(得分:0)
首先要在fragIds
循环之外定义for
数组,这样它在每次迭代时都不会被覆盖。
您可以使用以下代码将特定材料设置为fragId:
fragIds.forEach((fragId) => {
model.getFragmentList().setMaterial(
fragId, material)
})
请查看此主题以获取有关主题的更多信息: