过滤选择集
/// <summary>
/// 过滤选择集合
/// 调用方法如: ObjectIdCollection EntityCollection = GetSelection();
/// </summary>
/// <returns>对象集合</returns>
public static ObjectIdCollection GetSelection()
{
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
Entity entity = null;
DBObjectCollection entityCollection = new DBObjectCollection();
// 建立选择的过滤器内容
TypedValue[] values = new TypedValue[]
{
new TypedValue((int)DxfCode.Start,"Text")
};
SelectionFilter filter = new SelectionFilter(values);
PromptSelectionResult optSel = ed.GetSelection(filter);
if (optSel.Status == PromptStatus.OK)
{
using (Transaction transaction = db.TransactionManager.StartTransaction())
{
SelectionSet SS = optSel.Value;
foreach (ObjectId id in SS.GetObjectIds())
{
entity = (Entity)transaction.GetObject(id, OpenMode.ForWrite, true);
if (entity != null)
entityCollection.Add(entity);
}
transaction.Commit();
}
}
ObjectIdCollection ids = new ObjectIdCollection();
foreach (Entity ent in entityCollection)
{
ObjectId id = ent.ObjectId;
ids.Add(id);
}
return ids;
}