| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > vla-Select и Фильтры

vla-Select и Фильтры

Ответ
Поиск в этой теме
Непрочитано 03.08.2008, 10:57 #1
vla-Select и Фильтры
DANZZ
 
Проектировщик
 
Омск
Регистрация: 05.05.2006
Сообщений: 91

Подскажите пожалуйста, пользуюсь кодом из книги Полещука и Лоскутова для выбора объектов с использованием фильтра, как задать фильтр, чтоб в набор вошли все блокии с именами "ОСНОВНОЙ_ШТАМП" И "ДОПОЛНИТЕЛЬНЫЙ_ШТАМП"?

Код:
[Выделить все]
(defun pl:obj-filter-select-all (sel filter / i)
  (vla-Select sel acSelectionSetAll nil nil             
    	(vlax-safearray-fill                            
   		(vlax-make-safearray vlax-vbinteger      
		  	(setq i (cons 1 (length filter))) 
		)
      		(mapcar (function car) filter)           
	)
   	(vlax-safearray-fill
	  	(vlax-make-safearray vlax-vbVariant i)   
      		(mapcar (function cdr) filter)           
      	)
  )
  )
Код:
[Выделить все]
(setq filter '((2 . "ОСНОВНОЙ_ШТАМП")(2 . "ДОПОЛНИТЕЛЬНЫЙ_ШТАМП")))
(setq sel (vla-get-ActiveSelectionSet active_document))
(vla-Clear sel)
(pl:obj-filter-select-all sel filter)
(princ (vla-get-count sel))
Возращает 0
Хотя на самом деле таких блока 2, один ОСНОВНОЙ_ШТАМП и один ДОПОЛНИТЕЛЬНЫЙ_ШТАМП

Почему они не попали в семейство?

И вопрос просто для интереса:
По какому принципу примитивы вносятся в набор:рендомайзом, слева направо, справо на лево или както еще?

Последний раз редактировалось DANZZ, 03.08.2008 в 12:34.
Просмотров: 3062
 
Автор темы   Непрочитано 03.08.2008, 12:56
#2
DANZZ

Проектировщик
 
Регистрация: 05.05.2006
Омск
Сообщений: 91


Кажись понял почему так происходит, фильтр сначала фильтрует все по (2 . "ОСНОВНОЙ_ШТАМП"), а затем из того что осталось фильтрует по (2 . "ДОПОЛНИТЕЛЬНЫЙ_ШТАМП"), естественно остается 0

Вот так все работает

Код:
[Выделить все]
(setq filter '((-4 . "<OR")(2 . "ОСНОВНОЙ_ШТАМП")(2 . "ДОПОЛНИТЕЛЬНЫЙ_ШТАМП")(-4 . "OR>")))
(pl:obj-filter-select-all sel filter)
Вот сам и разобрался
Тему можно удалить

Последний раз редактировалось DANZZ, 03.08.2008 в 13:02.
DANZZ вне форума  
 
Непрочитано 03.08.2008, 17:17
#3
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Если кому это интересно фильтр работает также
если блоки перечислять через запятую
(без пробелов):
Код:
[Выделить все]
(setq filter '((2 . "ОСНОВНОЙ_ШТАМП,ДОПОЛНИТЕЛЬНЫЙ_ШТАМП")))
~'J'~
fixo вне форума  
 
Непрочитано 04.08.2008, 01:10
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Сюда же - посмотреть на wcmatch (для лиспа) и like (для VBA). Там много интересного
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > vla-Select и Фильтры

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Команда SELECT и предварительный выбор Admin AutoCAD 33 03.03.2014 15:09
Устойчивость мет. балки Net Конструкции зданий и сооружений 104 26.09.2011 20:14
не работает Quick Select misht AutoCAD 3 01.09.2007 14:17
Фильтры слоев Vova AutoCAD 12 03.12.2004 16:38