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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Получение значения ID пользовательского атрибута динамического блока

LISP. Получение значения ID пользовательского атрибута динамического блока

Ответ
Поиск в этой теме
Непрочитано 22.07.2020, 15:17
LISP. Получение значения ID пользовательского атрибута динамического блока
modest-bp
 
Регистрация: 15.04.2019
Сообщений: 58

Здравствуйте!
Подскажите, пожалуйста, каким образом получить значение ID атрибута у динамического блока.

Собственно, хочу сделать вот, что.
Сейчас при помощи
Код:
[Выделить все]
 
(setq obj (car (entsel))
... выбираю объект
далее при помощи функции (Get-ObjectID-x86-x64) от VVA
Код:
[Выделить все]
 
(setq ID (Get-ObjectID-x86-x64 obj)) 
... извлекаю ID выбранного объекта и отправляю его в переменную ID.

Вот вопрос в том, как при выборе вхождения динамического блока с пользовательским атрибутом, например, "ТИП", загнать ID этого атрибута в переменную, например, attrID? То есть чтобы одним кликом выбрать объект на чертеже, а извлечь при этом два индентификатора: ID объекта (вхождения блока) и ID нужного атрибута.

Изучил тему DwgRuLispLib: Получение указателей на атрибуты вхождения блока, но так и не понял, как мне склеить предложенные там решения с кодом своей команды. Откровенно говоря, вообще не разобрался, как там чего работает ((((

Спасибо за подсказку!
Просмотров: 8375
 
Непрочитано 27.07.2020, 20:08
1 | #21
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от modest-bp Посмотреть сообщение
; зачем в этом месте было присваивать picking_entity значение true?
skkkk уже ответил. Добавлю что можно не присваивать t этой переменной-триггеру, а просто объявить её и поменять условие while на отрицание триггер ну и поменять все сопутствующие назначения.

Цитата:
Сообщение от modest-bp Посмотреть сообщение
; picked_entity присвоили значение по entsel, но каждый элемент списка сделали самостоятельным списком, так?
Не так. Функция entsel при удачном завершении всегда возвращает список из точки и примитива, который попал в прицел в этой точке.

Цитата:
Сообщение от modest-bp Посмотреть сообщение
; picked_entity не пустая
Наоборот пустая, то есть пользователь ничего не выбрал.

Цитата:
Сообщение от modest-bp Посмотреть сообщение
а на её содержимое vl-catch-all-apply не возвращает ошибку аргумента
в этом случае присвоить picking_entity nil (зачем? То есть в начале мы дали t, а в этом случае - записываем nil)
При выполнении этого условия пользователь аварийно завершает функцию entsel, например нажав Esc. Триггер получает значение nil для безаварийного завершения пользовательский функции.

Цитата:
Сообщение от modest-bp Посмотреть сообщение
а также picked_entity является блоком
присваиваем block_found значение указателя picked_entity, конвертировав его из ename в vla-object
Если пользователь выбрал блок, то переменной block_found назначаем значение указателя на activex интерпретацию блока для дальнейшей его обработки. Проверяем наличие атрибутов у выбранного блока и если они есть проверяем есть ли среди них атрибут с заданным тэгом в начале пользовательский функции (который кстати можно сделать её аргументом) используя функцию vl-some. Указатель на каждый тестируемый атрибут присваиваем переменной attribute_found.

Цитата:
Сообщение от modest-bp Посмотреть сообщение
и снова не понимаю, как работает nil? Останавливает процедуру while picking_entity?
Да. Когда пользователем выбран блок, завершаем выполнение пользовательский функции и выводим в консоль ID блока и если найден искомый атрибут, то также и его ID. Но это всё можно подстраивать под свои критерии выбора объектов и условия прерывания пользовательский функции.
Ну вот как-то так)
koMon вне форума  
 
Автор темы   Непрочитано 28.07.2020, 00:05
#22
modest-bp


 
Регистрация: 15.04.2019
Сообщений: 58


Цитата:
Сообщение от skkkk Посмотреть сообщение
То есть, необязательно при подстановки переменной в качестве аргумента имя этой переменной должно совпадать с именем аргумента, которое указано в описании функции. Должен совпадать только тип переменной (в нашем случае - объект, причем обязательно - блок). И не нужно в используемой библиотечной функции менять ее имя с block-ref на obj. Вот что я имел в виду
Спасибо большое за участие!
Как раз с этим сегодня полдня разбирался. Вроде, разобрался, наконец, как функции объявляются и как вызываются))) Орлята учатся летать)
modest-bp вне форума  
 
Непрочитано 03.09.2020, 10:51
#23
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от skkkk Посмотреть сообщение
Если не невозможно.
skkkk, ты невозможность чего конкретно имел в виду?
Миниатюры
Нажмите на изображение для увеличения
Название: Table_Cell_Range.gif
Просмотров: 26
Размер:	1.24 Мб
ID:	229772  
koMon вне форума  
 
Непрочитано 03.09.2020, 11:40
| 1 #24
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


koMon, я имел в виду невозможность, а если быть точным, большую трудность в написании такого кода на первых порах обучения программированию.
Цитата:
Сообщение от skkkk Посмотреть сообщение
Для начала это будет трудновато, на мой взгляд. Если не невозможно.
Насколько я понял, modest-bp, хотел самостоятельно разобраться и написать код.
skkkk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Получение значения ID пользовательского атрибута динамического блока

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Значение атрибута в текстовое поле динамического блока zekatyumen Динамические блоки 19 28.01.2023 09:26
Как установить значения атрибутов динамического блока? Diam Finn .NET 3 14.01.2020 18:30
LISP. Помогите с лиспом по переименованию нескольких вхождений динамического блока в значение его атрибута. kirillwu LISP 43 09.07.2018 13:29
Изменение атрибута блока , который находится в блоке (из пространства модели) konservnii LISP 17 28.03.2017 15:22
Lisp. Как добраться до подсказки атрибута блока молодой человек LISP 8 25.11.2010 09:20