我们通过构造选择集,使用图层名过虑来得到某个层上所有对象,关于选择集的类说明参考: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; }