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

ADN Club => AutoCAD .NET API => Тема начата: Nutson от 12-06-2022, 18:33:09

Название: Настройка фильтра выбора
Отправлено: Nutson от 12-06-2022, 18:33:09
Доброго дня, подскажите пожалуйста,
как мне  настроить фильтр что бы выбрать элементы по имени класса?
В моем случаем я хочу выбрать все элементы  AeccDbStructure, дампом я посмотрел что этому типу соответствует DXF код 100
Код - Auto/Visual Lisp [Выбрать]
  1. ((-1 . <Имя объекта: 2227d6afa10>) (0 . "AECC_STRUCTURE") (5 . "DEF39") (102 . "{ACAD_XDICTIONARY") (360 . <Имя объекта: 2227d6ba820>) (102 . "}") (330 . <Имя объекта: 222536d51f0>) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "VK_К2") (100 . "AeccDbEntity") (100 . "AeccDbGeo_aec") (100 . "AeccDbGeo") (100 . "AeccDbNetworkPartBase") (100 . "AeccDbNetworkPart") (100 . "AeccDbStructure"))
Однако при фильтре  TypedValue(100, "AeccDbStructure"), мне в выборку попадают все элементы чертежа.

Код - C# [Выбрать]
  1.  
  2.             TypedValue[] filter = new TypedValue[classNames.Count];
  3.             for (int i = 0; i < classNames.Count; i++)
  4.             {
  5.                 filter[i]=new TypedValue(100,classNames[i]); /// new TypedValue(100, "AeccDbStructure");  
  6.             }
  7.             PromptSelectionResult result= doc.Editor.SelectAll(new SelectionFilter( filter));
  8.             if (result.Status== PromptStatus.OK)
  9.  
Название: Re: Настройка фильтра выбора
Отправлено: Lemieux от 13-06-2022, 13:19:59
Что-то тут много групп с кодом 100.
Название: Re: Настройка фильтра выбора
Отправлено: Алексей Кулик от 13-06-2022, 18:51:42
Что-то у меня подозрения, что это больше в Civil API надо.
Название: Re: Настройка фильтра выбора
Отправлено: Nutson от 13-06-2022, 19:22:18
Конкретно мой случай, да, связан с сивилом. Но настройка фильтра, я думаю, это общая автокадовская тема. Допустим нужно найти полилинии по имени класса "AcDbPolyline".
Название: Re: Настройка фильтра выбора
Отправлено: Алексей Кулик от 13-06-2022, 20:20:04
ИМХО проблема в том, что для объектов Civil могут быть немного другие критерии выбора.
Название: Re: Настройка фильтра выбора
Отправлено: Александр Ривилис от 13-06-2022, 20:33:07
Доброго дня, подскажите пожалуйста,
как мне  настроить фильтр что бы выбрать элементы по имени класса?
В моем случаем я хочу выбрать все элементы  AeccDbStructure, дампом я посмотрел что этому типу соответствует DXF код 100
Код - Auto/Visual Lisp [Выбрать]
  1. ((-1 . <Имя объекта: 2227d6afa10>) (0 . "AECC_STRUCTURE") (5 . "DEF39") (102 . "{ACAD_XDICTIONARY") (360 . <Имя объекта: 2227d6ba820>) (102 . "}") (330 . <Имя объекта: 222536d51f0>) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "VK_К2") (100 . "AeccDbEntity") (100 . "AeccDbGeo_aec") (100 . "AeccDbGeo") (100 . "AeccDbNetworkPartBase") (100 . "AeccDbNetworkPart") (100 . "AeccDbStructure"))
Однако при фильтре  TypedValue(100, "AeccDbStructure"), мне в выборку попадают все элементы чертежа.

Код - C# [Выбрать]
  1.  
  2.             TypedValue[] filter = new TypedValue[classNames.Count];
  3.             for (int i = 0; i < classNames.Count; i++)
  4.             {
  5.                 filter[i]=new TypedValue(100,classNames[i]); /// new TypedValue(100, "AeccDbStructure");  
  6.             }
  7.             PromptSelectionResult result= doc.Editor.SelectAll(new SelectionFilter( filter));
  8.             if (result.Status== PromptStatus.OK)
  9.  
По группе 100 фильтровать нельзя. Фильтруйте по группе 0.