![](/img/trans.png)
[英]Autodesk Forge Viewer how to get a screenshot of the part of a model
[英][Autodesk Forge viewer]How to get the dbIds of the objects in a specified layer
我有一个从2d DWG
转换而来的SVF
文件,并已成功加载到Viewer
。
现在,我要查询图层中某些对象的属性/属性。
到目前为止,这是我所做的:
let layer = viewer.model.getLayersRoot().children.find(x=> x.name==='Marker');//find the layer named by 'Marker'----{name: "Marker", index: 72, id: 71, isLayer: true}
let objectTree = viewer.model.getData().instanceTree;//get the Object Tree and its One-dimensional array of dbIdList
// stuck here
// looking for some method like objectTree.getIdListInLayer(layerId)
任何建议表示赞赏。
不幸的是,当前可能无法执行此操作。 请参考这篇文章:
根据Eason Kang的回答,目前尚无官方方法来实现这一目标。 因此,剩下的唯一方法是迭代dbIdList。 这是代码:
function query(dbId, model, layerName) {
if (!dbId) return Promise.resolve(null);
return new Promise(resolve => {
model.getProperties(dbId, x => {
let layerProp = x.properties.find(x => x.displayName === 'Layer' && x.displayValue === layerName);
resolve(!!layerProp ? x : null);
});
});
}
Promise.all(Object.keys(objectTree.nodeAccess.dbIdToIndex).map(dbId => query(dbId = dbId - 0, viewer.model, layerName = 'Marker')))
.then(function(resultList) {
resultList = resultList.filter(x => !!x);
console.table(resultList); //this is all the objects in the Marker layer
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.