[CommandMethod("вв_(ПТО_№2:выбор по фильтру)")]
public void Vibor_Setup()
{
Document doc = acadApp.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
//выбираем объекты по заданным критериям
TypedValue[] acTypValAr = new TypedValue[2];
acTypValAr.SetValue(new TypedValue((int)DxfCode.Start, FiltrPerem.nameObj), 0); //фильтр по типам примитивов
acTypValAr.SetValue(new TypedValue((int)DxfCode.LayerName, FiltrPerem.nameLayer), 1); //фильтр по именам слоев
// Назначение критериев фильтра объекту SelectionFilter
SelectionFilter acSelFtr = new SelectionFilter(acTypValAr);
// Запрос выбора объектов на чертеже
PromptSelectionResult acSSPrompt;
acSSPrompt = ed.GetSelection(acSelFtr);
try
{
using (Transaction trans = db.TransactionManager.StartTransaction())
{
List<ObjectId> objects = new List<ObjectId>();
//перебираем выбранные объекты и заносим в public List'ы для дальнейшего использования
foreach (ObjectId asObjId in acSSPrompt.Value.GetObjectIds())
{
objects.Add(asObjId)
}
ed.SetImpliedSelection(objects.ToArray());
ac_Vibor.objects.Clear();
ac_Vibor.objects.AddRange(objects.ToArray());//список объектов, который в дальнейшем будет использоваться при вызове других команд
trans.Commit();
}
}
catch (System.NullReferenceException)
{
ed.WriteMessage("\nНичего не найдено!!!");
}
catch (Autodesk.AutoCAD.Runtime.Exception ex)
{
acadApp.ShowAlertDialog(ex.Message);
}
}