实际项目中,选中对象让其隐藏这个功能比较常见。项目中项目人员要对场景中的对象进行编辑、操作时,最好先隐藏掉不需要显示在工作场景中的对象。其实,隐藏掉暂不需编辑的对象,能降低电脑使用率、显存,更能提高软件和项目人员的工作效率。当需要使用隐藏的对象时,再“显示”出来。目的是为了辅助场景预览、编辑等。下面我们来看看具体实现过程吧。
1.思路
让某个选中对象不可见的思路是:获取选择集,通过选择集拿到选中对象的ID,然后根据ID来控制显隐。
2.代码
//获取图层管理器里所有图层
List<LayerInfo> layerInfos = SupermapGIS.Instance.Layers.LayerInfos;
for (int i = 0; i < layerInfos.Count; i++)
{
//遍历获取图层管理器里每个图层
Layer3D layer3D = layerInfos[i].Layer as Layer3D;
if (layer3D.Type == Layer3DType.S3M)
{
//获取S3M缓存图层
Layer3DS3MFile layer3DS3MFile = layerInfos[i].Layer as Layer3DS3MFile;
//获取图层的选择集
Selection3D selection3D = layer3D.Selection;
//获取选中对象的ID
int selectID = selection3D.LastSelectID;
//根据ID控制选择对象的显隐,让它不可见
layer3DS3MFile.SetObjectsVisible(new List<int> { selectID }, false);
//清空选择集
selection3D.Clear();
}
}