|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
26.05.2017, 09:33 | #1 | |
Проблема извлечения атрибутов одного блока из набора блоков
Регистрация: 23.10.2013
Сообщений: 23
|
||
Просмотров: 2842
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
Ну так правильно - ты зачем используешь (while (/= nil (setq blok (entnext blok))) ? Вот тебе код и проходит по всей базе, пока до конца не дойдет.
P.S. Может, проще будет все же через ActiveX?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 23.10.2013
Сообщений: 23
|
Я чета думал, что (while (/= nil (setq blok (entnext blok))) проходится только по подпримитивам примитива под переменной blok. Яж с начала из набора выдергиваю один объект (setq blok (SSNAME (ssget '((0 . "INSERT"))) N)). Или (entnext) только с наборами работает?
Книжка толстая, ActiveX с середины идет |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,848
|
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 23.10.2013
Сообщений: 23
|
Спасибо за ссылку, воспользуюсь. Но мне бы еще для понимания на пальцах показать, как работает энтот (entnext). Он берет следующий примитив из объекта который я ему даю к примеру (entnext blok)? Где blok - не набор, а отдельный обект типа: <Имя объекта: 7ffffbfa960>. Почему (while (/= nil (setq blok (entnext blok))) перебирает не конкретный блок, а весь набор? Набор жеж яж функции не даю. Если бы я набор дал, то (entnext), по идее, должен только блоки как примитивы перебрать не смотря на подпримитивы (состав конкретного блока). Али как?
----- добавлено через ~3 ч. ----- Переформулирую вопрос. В чем принципиальная разница обработки функцией (attrr) результатов присвоения между этим: (setq blok (SSNAME (ssget '((0 . "INSERT"))) N)) и этим: (setq blok (entlast)) ? З.Ы. По ссылке сходил. Заработала только последняя функция (на другие акад ругается, что не знает). Ну как заработала, выдает что-то вроде #<VLA-OBJECT IAcadAttributeReference 0000000057773238>. Вот... Поиск конечно дал результат, и нашел _dwgru-conv-value-vla-to-list под твоим же авторством, но акад и тут сказал "не знаю такую". Как загружать библиотеки _dwgru-....? |
|||
|
||||
Регистрация: 23.04.2015
Сообщений: 163
|
Цитата:
entnext ищет по всей базе, поэтому в цикле надо не на nil проверять, а ждать появления конца последовательности - seqend. В справке по этой функции можно поподробнее почитать. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Неудаляемый слой в атрибуте блока. Смысл синхронизации атрибутов? | АлексЮстасу | AutoCAD | 4 | 04.06.2016 01:59 |
Невозможно изменить вид атрибутов блока | Nick Fur | AutoCAD | 2 | 23.05.2016 08:50 |
Как отключить отображение параметров атрибутов блока на палитре свойств. | Amiskey | AutoCAD | 2 | 03.11.2015 20:36 |
Поля атрибутов вложенного блока не отображают своих значений | hwd | AutoCAD | 7 | 23.12.2009 08:40 |
Изменение характеристик атрибутов в вхождении блока | zenon | AutoCAD | 9 | 27.11.2008 14:43 |