Настройка фильтра выбора

Автор Тема: Настройка фильтра выбора  (Прочитано 8780 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн NutsonАвтор темы

  • ADN OPEN
  • Сообщений: 44
  • Карма: 6
Настройка фильтра выбора
« : 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.  

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 393
  • Карма: 21
Re: Настройка фильтра выбора
« Ответ #1 : 13-06-2022, 13:19:59 »
Что-то тут много групп с кодом 100.

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1119
  • Карма: 173
Re: Настройка фильтра выбора
« Ответ #2 : 13-06-2022, 18:51:42 »
Что-то у меня подозрения, что это больше в Civil API надо.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн NutsonАвтор темы

  • ADN OPEN
  • Сообщений: 44
  • Карма: 6
Re: Настройка фильтра выбора
« Ответ #3 : 13-06-2022, 19:22:18 »
Конкретно мой случай, да, связан с сивилом. Но настройка фильтра, я думаю, это общая автокадовская тема. Допустим нужно найти полилинии по имени класса "AcDbPolyline".

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1119
  • Карма: 173
Re: Настройка фильтра выбора
« Ответ #4 : 13-06-2022, 20:20:04 »
ИМХО проблема в том, что для объектов Civil могут быть немного другие критерии выбора.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Настройка фильтра выбора
« Ответ #5 : 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.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение