|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
vla-get-activeselectionset и Region
Инженер LISP
Минск
Регистрация: 11.05.2005
Сообщений: 6,996
|
||
Просмотров: 4225
|
|
||||
Судя по всему дело не в самом REGION, а в том что команда _REGION портит ActiveSelectionSet
![]() |
||||
![]() |
|
||||
Сообщений: n/a
|
У меня есть предположение и даже почти уверенность в следующем:
Все объекты, участвовавшие в работе некоторой команды AutoCAD записываются в некоторый внутренний набор. При вызове свойства activeselectionset указатели на все примитивы из этого внутреннего набора копируются в именованный набор CURRENT. Именно указатель на этот набор и возвращает свойство документа activeselectionset. При выполнении команды REGION во внутренний набор попадает примитив, участвующий в ней, например полилиния. Но команда REGION при установке по умолчанию системной переменной DELOBJ удаляет полилинию. При попытке получить свойство activeselectionset AutoCAD пытается скопировать указатель на удаленную полилинию в набор CURRENT и, естественно выдает ошибку. Установите DELOBJ в 0 и проверьте! |
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Цитата:
Кстати после создания региона при DELOBJ=1 (ssget "_P") nil :? >VVA А зачем вам именно активный набор? Есть много других способов получить желаемый результат. К примеру (ssget "_I") т. е. все примитивы с подсвеченными ручками или перед созданием региона, запомнить последний примитив и идти от него функцией (entnext). Вроде работает если вы бага не обнаружите ![]() |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Задача стояла наоборот, если есть, то расчленить регионы. Вначале так и делал (setq ssnab (ssget "_X" '((0 . "REGION"))))Но конструкция (command "_EXPLODE" ssnab) расчленяет только один регион
![]() Идея пришла одна: vla-explode. Не прошло через активный набор, сделал чере цикл по ssnab и (vla-Explode (vlax-ename->vla-object (ssname ssnab i))) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,409
|
> VVA : Я понимаю, что это не гуд, но тем не менее можно попробовать нечто типа:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |