ADN Open CIS
Сообщество программистов Autodesk в СНГ

21/12/2013

Editor.SelectAll с фильтром выбора примитивов и слоёв

При использовании метода “Editor.SelectAll” можно создать фильтр выбора для отсеивания ненужных примитивов. Код ниже показывает как можно отфильтровать Отрезки и Круги, которые находятся только на определённых слоях (0, Layer1, Layer2).

Код - C#: [Выделить]
  1. [CommandMethod("LayerSelection")]
  2. public void LayerSelection()
  3. {
  4.     Document doc = Application.DocumentManager.MdiActiveDocument;
  5.     Database db = doc.Database;
  6.     Editor ed = doc.Editor;
  7.  
  8.     TypedValue[] filterlist = new TypedValue[2];
  9.     //select circle and line
  10.     filterlist[0] = new TypedValue(0, "CIRCLE,LINE");
  11.     //8 = DxfCode.LayerName
  12.     filterlist[1] = new TypedValue(8, "0,Layer1,Layer2");
  13.     SelectionFilter filter =  new SelectionFilter(filterlist);
  14.     PromptSelectionResult selRes = ed.SelectAll(filter);
  15.     if (selRes.Status != PromptStatus.OK)
  16.     {
  17.         ed.WriteMessage("\nОшибка метода selectAll");
  18.         return;
  19.     }
  20.     ObjectId[] ids = selRes.Value.GetObjectIds();
  21.  
  22.     ed.WriteMessage("Найдено примитивов: "
  23.                            + ids.Length.ToString() + "\n");
  24.  
  25. }

Источник: http://adndevblog.typepad.com/autocad/2012/06/editorselectall-with-entity-and-layer-selection-filter.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=408

Опубликовано 21.12.2013