如果节点已经选中,可以如下实现关闭展开: let ms = viewer.modelstructure for(let i in ms.selectedNodes) { console.log(ms.selectedNodes[i]); ms.selectedNodes[i].forEach( k=>ms.tree.setCollapsed(ms.tree.delegates[0],k,true) ) }
冬哥说的是选中的情况,不过当我们选中构件又点击空白后这样的话模型树还是打开的,但是没有选中的构件。所以针对这种情况结合冬哥的代码做了一些改进。 第一步:获取所有除去第一级的父节点(因为1是第一级根节点,因为7.0之前使用包含1的数组操作会空白模型树~) 第二步:获取到的数组我们理解成ms.selectedNodes就行了。。剩下的就是循环了
如果节点已经选中,可以如下实现关闭展开: