我们通过构造选择集,使用图层名过虑来得到某个层上所有对象,关于选择集的类说明参考:http://www.mxdraw.com/help/frames.htm?frmname=topic&frmfile=IMxDrawSelectionSet.htm

例如代码 C#:

private List<Int64> GetAllObjectsOnLayer(String sLayerName)
        {
            // 创建一个过滤数据连表对象。
            MxDrawResbuf filter = new MxDrawResbuf();
            // 把层名加入过滤条件,8是DXF组码,它代表sLayerName表示是的是一个层名。
            filter.AddStringEx(sLayerName, 8);
            //定义选择集对象
            MxDrawSelectionSet ss = new MxDrawSelectionSet();
            // 选择图上的所有对象。
            ss.Select(MCAD_McSelect.mcSelectionSetAll, null, null, filter);
            int i = 0;
            List<Int64> listId = new List<Int64>();
            // 遍历所有对象,得到对象id.
            for (; i < ss.Count;i++)
            {
                MxDrawEntity e =  ss.Item(i);
                listId.Add(e.ObjectID);
            }
            return listId;
        }
01-03 20:27
查看更多