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

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

Мультивыноска с аннотацией из блока с атрибутами и nentsel

Ответ
Поиск в этой теме
Непрочитано 30.05.2019, 11:56 #1
Мультивыноска с аннотацией из блока с атрибутами и nentsel
kp+
 
идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091

Доброго времени суток уважаемым форумчанам!
Подскажите, PLS, как с помощью nentsel (или другой подобной функции) добраться до атрибута блока мультивыноски, указанного мышью?
Проблема в том, что мультивыноска с блоком с атрибутами распознается функцией nentsel как цельный объект Тогда как атрибуты самостоятельного блока распознаются nentsel как отдельные подобъекты, что весьма удобно
Есть ли более простой способ, чем раскопки DXF-внутренностей выноски, разворачивание словарей и пересчет координат атрибутов? И более элегантный, чем "взорвать" временную копию выноски для работы с "отпавшим" блоком аннотации обычными средствами?

Последний раз редактировалось kp+, 30.05.2019 в 12:07.
Просмотров: 3269
 
Непрочитано 30.05.2019, 12:53
#2
Кулик Алексей aka kpblc
Moderator

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


В принципе можно получить объект аннотации мультивыноски. Если заранее знаешь тэг атрибута - то все просто. Если нет - уже сложнее.
Конечная цель какая?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 30.05.2019, 14:11
#3
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Конечная цель какая?
Конечная цель - быстрое извлечение значений указанных мышью атрибутов и быстрая вставка текста в них же.

Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Если заранее знаешь тэг атрибута
В том и загвоздка, чтобы узнать, в какой из атрибутов ткнул мышью, заранее не зная о нем ничего, кроме координат.
В идеале хотелось бы найти что-то вроде метода "hittest" для таблицы. Жаль, что для мультивыносок ничего такого нет.
kp+ вне форума  
 
Непрочитано 30.05.2019, 15:11
1 | #4
koMon


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


Для встроенных блоков можно так (для пользовательских не пробовал, но в теории должно работать)
Код:
[Выделить все]
 
(setq current_mleader_dxf_list (entget (car (entsel))))
(if (not (zerop (cdr (assoc 296 current_mleader_dxf_list))))
	(setq current_mleader_block_attributes_list (mapcar 'cdr
															(vl-remove-if-not '(lambda (every_list_member)
																					(and
																						(= 302 (car every_list_member))
																						(/= "LEADER{" (cdr every_list_member))
																					)
																			   )
																			   current_mleader_dxf_list
															)
												)
	)
)
(foreach attribute_value current_mleader_block_attributes_list
	(entmod (setq current_mleader_dxf_list (subst (cons 302 (strcat attribute_value "_Changed")) (cons 302 attribute_value) current_mleader_dxf_list)))
)
в каждый атрибут не тыкнешь, но можно и диалог прикрутить на список атрибутов)
koMon вне форума  
 
Непрочитано 11.06.2019, 16:34
#5
koMon


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


что-то типа этого?
Миниатюры
Нажмите на изображение для увеличения
Название: Mblead_Edit.gif
Просмотров: 120
Размер:	3.16 Мб
ID:	215155  
koMon вне форума  
 
Автор темы   Непрочитано 12.06.2019, 09:41
#6
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Честно говоря, не совсем понял, что показывает GIF'ка. Если можно, прокомментируйте, PLS.
kp+ вне форума  
 
Непрочитано 12.06.2019, 11:34
#7
koMon


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


Редактирование атрибутов аннотативного блока мультивыноски по месту по 1-му клику. Назначение стиля мультивыноскам - это баловство)
ВСЕХ РОССИЯН С ДНЁМ РОССИИ!!!
koMon вне форума  
 
Непрочитано 12.06.2019, 16:41
#8
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от koMon Посмотреть сообщение
что-то типа этого?
Цитата:
Сообщение от koMon Посмотреть сообщение
Редактирование атрибутов аннотативного блока мультивыноски по месту по 1-му клику. Назначение стиля мультивыноскам - это баловство)
Спасибо за пояснения. Однако не вполне понятно зачем тут смайлик , что в этом такого то?
И второе, в gif используют команду MBLEADER_EDIT, понятно, что в авкаде ее может не быть и вообще команду можно назвать как угодно, но беглый поиск говорит, что в геометрическом ядре C3D Toolkit есть объекты класса MbLeader, а само ядро С3D используется, в том числе, в nanoCAD. Собственно GIF записано в наноКад или я что то попутал?
Boxa вне форума  
 
Непрочитано 13.06.2019, 09:50
#9
koMon


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


Цитата:
Сообщение от Boxa Посмотреть сообщение
Спасибо за пояснения. Однако не вполне понятно зачем тут смайлик
We don't need no education! We don't need no thought control! Я до сейчас думал, что само использование смайликов и их типов является исключительной прерогативой пишушего, а не читающего. И мне вдруг подумалось, а не свидетельствую ли я нарождение нового цензурного органа, Ministry of Truth, вот прямо здесь?!) Это была шутка. А если конткретно, то kp+, очень доходчиво описал [проблему], по крайней мере для меня, выборности атрибута, используемого в автокаде где бы то ни было с возможностью его редакирования/изменения по месту исключая всякие ненужные для конкретно этой цели окошки. Вялотекущий интерес со стороны лисп-энтузиастов к обозначенной проблеме абсолютно ничего не показал. Алексей написал, что можно, но сложно, а брякнутые мной лисп-предложения никоим образом не вызвали возбуждения у целевой аудитории. Не порядок подумалось мне и, я решил копнуть) Что касается смайлика, то скорее всего я его адресовал, таким же как я лисп-энтузиастам, к которым, Boxa, ты (ничего что на ты?) не относишься, ну и который тебе не понятен)

Цитата:
Сообщение от Boxa Посмотреть сообщение
что в этом такого то?
Да абсолютно НИ-ЧЕ-ГО! Аффтар написал, аффтар показал.

Цитата:
Сообщение от Boxa Посмотреть сообщение
И второе, в gif используют команду MBLEADER_EDIT
Это абсолютная игра букв в слове. Наверное лучше было бы назвать команду MBleeder_Edit. Что-то вроде распотрошить Mleader)))

Цитата:
Сообщение от Boxa Посмотреть сообщение
вообще команду можно назвать как угодно
Отвечено выше!

Цитата:
Сообщение от Boxa Посмотреть сообщение
Собственно GIF записано в наноКад или я что то попутал?
Собственно нет. GIF не записан в нанокад! Это Vanilla AutoCAD!)))
koMon вне форума  
 
Автор темы   Непрочитано 13.06.2019, 10:16
#10
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Цитата:
Сообщение от koMon Посмотреть сообщение
брякнутые мной лисп-предложения никоим образом не вызвали возбуждения у целевой аудитории
У "целевой аудитории" на прошлой неделе был небольшой завал на работе, поэтому протестировать программку сразу после публикации сообщения #4 не получилось. Но в любом случае спасибо, посмотрю на этих выходных, может смогу приспособить для своих нужд.
kp+ вне форума  
 
Непрочитано 13.06.2019, 11:27
#11
koMon


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


Цитата:
Сообщение от kp+ Посмотреть сообщение
У "целевой аудитории" на прошлой неделе был небольшой завал на работе, поэтому протестировать программку сразу после публикации сообщения #4 не получилось. Но в любом случае спасибо, посмотрю на этих выходных, может смогу приспособить для своих нужд.
kp+, эта программка вообще не по теме и тестить её не нужно, она тупо меняет все атрибуты...
koMon вне форума  
 
Непрочитано 13.06.2019, 20:44
#12
Alex.gomel


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


В надежде оказать хоть какое-нибудь содействие "целевой аудитории" и возврата темы к первоначальному вопросу:
Код:
[Выделить все]
 (setq def (vla-item (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
		    (vla-get-ContentBlockName (setq obj (vlax-ename->vla-object (car (entsel)))))))
(if (vlax-for x def (if (eq "AcDbAttributeDefinition" (vla-get-Objectname x)) (setq id (vla-get-ObjectID x))))
  (princ (vla-GetBlockAttributeValue obj id))
)
Alex.gomel вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Мультивыноска с аннотацией из блока с атрибутами и nentsel

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При программной вставке блока с многострочными атрибутами требуется пользовательский ввод каждой строки mikls LISP 2 27.11.2018 16:45
Проблема с атрибутами блока. Почему они невидимы? Linkor AutoCAD 8 15.12.2014 17:31
Вставка блока с атрибутами. Как сделать правильно? Kirill_Ja Программирование 7 18.03.2013 00:22
Мультивыноска и атрибут блока , автокад 2010, как увязать? Sirius2w AutoCAD 3 01.02.2010 14:47
Подсчет кабеля при помощи дин. блока с атрибутами serg01 AutoCAD 41 07.05.2009 09:34