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

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

Получение ID атрибута динамического блока по клику на сам атрибут

Ответ
Поиск в этой теме
Непрочитано 06.11.2024, 14:47 #1
Получение ID атрибута динамического блока по клику на сам атрибут
shokilele
 
Регистрация: 06.11.2024
Сообщений: 5

Добрый день! Подскажите пожалуйста, как можно получить ID атрибута внутри динамического блока без привязки к его тегу (просто кликом по атрибуту).
Просмотров: 584
 
Непрочитано 06.11.2024, 14:58
#2
Кулик Алексей aka kpblc
Moderator

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


ID - это хендл, что ли? Так он у каждого вхождения атрибута будет свой и капитально отличаться от хендла описания атрибута
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.11.2024, 15:00
#3
name02


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


Может более раскрытое описание цели данного действия позволит нам найти решение?
name02 вне форума  
 
Автор темы   Непрочитано 06.11.2024, 15:12
#4
shokilele


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



Сейчас у меня есть вот такой динамический блок "Ведомость деталей" в котором несколько видимостей: П-шка, Г-шка и тд. Для каждой видимости, например Г-шка, как на скриншоте, существуют атрибуты, отвечающие за длины сторон этой гнутой детали. В одном из атрибутов собирается суммарная длина гнутой детали посредством поля. Поскольку для каждой видимости атрибут с суммарной длиной гнутой детали свой, то необходимо получать ObjectId конкретного атрибута, в зависимости от видимости.

Все это я хочу сделать для связи спецификации и блока ведомости детали.
Миниатюры
Нажмите на изображение для увеличения
Название: Ведомость деталей.png
Просмотров: 38
Размер:	12.2 Кб
ID:	265396  Нажмите на изображение для увеличения
Название: Ведомость деталей 1.png
Просмотров: 38
Размер:	62.3 Кб
ID:	265397  

Последний раз редактировалось shokilele, 06.11.2024 в 16:12.
shokilele вне форума  
 
Автор темы   Непрочитано 06.11.2024, 15:19
#5
shokilele


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


Ранее использовал такой код, для получения значения МТекста в виде связанного поля
Код:
[Выделить все]
 ve(defun C:ID ( / obj ID)  
 	(setq obj (car (entsel "\nВыберите объект для определения его ID:")))
	(if obj 
		(setq ID (Get-ObjectID-x86-x64 obj)) 
		(princ "\nОбъект не выбран.") 
	) 
	(if ID  
		(progn 
			(copyToclipboard (strcat "%<\\AcObjProp Object(%<\\_ObjId " ID ">%).TextString>%")) ;;; 
			(princ (strcat "\n%<\\AcObjProp Object(%<\\_ObjId " ID ">%).TextString>%")) 
		) 
		(princ "\nID не определен.") 
	) 
	(princ) 

) 
(vl-load-com)
(defun Get-ObjectID-x86-x64 (obj / util)
  (setq util (vla-get-Utility (vla-get-activedocument (vlax-get-acad-object))))
  (if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj)))
  (if (= (type obj) 'VLA-OBJECT)
     (if (> (vl-string-search "x64" (getvar "platform")) 0)
       (vlax-invoke-method util "GetObjectIdString" obj :vlax-False)
       (rtos (vla-get-objectid obj) 2 0)
     )
  )
)
(defun copyToclipboard ( text / htmlfile result)
 (setq result
        (vlax-invoke
            (vlax-get
                (vlax-get
                    (setq htmlfile (vlax-create-object "htmlfile"))
                   'ParentWindow
                )
               'ClipBoardData
            )
           'SetData
            "Text"
            text
        )
    )

    (vlax-release-object htmlfile)
    result
)

(princ "C:ID2CLP")
(princ)
shokilele вне форума  
 
Непрочитано 06.11.2024, 16:41
1 | #6
koMon


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


ну так nentsel выберет атрибут если по нему кликнуть.
(setq obj (car (nentsel "\nВыберите объект для определения его ID:")))
__________________
K Lisp
koMon вне форума  
 
Непрочитано 07.11.2024, 07:45
#7
name02


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


Цитата:
Сообщение от shokilele Посмотреть сообщение
Все это я хочу сделать для связи спецификации и блока ведомости детали.
Ты собираешься спецификацию собирать как - вручную тыкать в каждый атрибуты с длинами?
name02 вне форума  
 
Автор темы   Непрочитано 07.11.2024, 08:53
#8
shokilele


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


koMon, спасибо! Это действительно помогло!

----- добавлено через ~2 мин. -----
name02, да, пока машинально ручками тыкать собирался. Со временем постараюсь изучить способы для автоматизации этого процесса. Не подскажите идейку в какую сторону двигаться?
shokilele вне форума  
 
Непрочитано 07.11.2024, 09:23
#9
name02


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


В какую сторону двигаться - чисто по удобству твоего использования.
Для себя я решил таким образом:
Так как у меня много листов с разным оборудованием, то решил действовать через блоки.
В блоке организовал атрибуты с идентификатором оборудования, количеством K (в метрах например) и количеством в штуках N (для случаев, если нужно учесть например 6 отрезков трубы длиной 4 м каждый)
В программе я выделяю необходимые блоки (фильтр по имени блока, имени слоя) и далее суммируется количество оборудования по идентификатору.
В итоге я получаю список из идентификатора оборудования и суммарного количества.
На основании списка формируется таблица и вручную указывается точка вставки с таблицей спецификации. Т.е. автоматического обновления таблицы по изменению данных в блоках нет. Для меня это слишком сложно, да и не нужно, как оказалось.

Для меня такой подход оказался удобным и его я смог реализовать.
name02 вне форума  
 
Автор темы   Непрочитано 07.11.2024, 10:46
#10
shokilele


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


koMon, Это действительно решило мою проблему! Спасибо большое!
shokilele вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Получение ID атрибута динамического блока по клику на сам атрибут

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать ссылку в одном атрибуте блока на значение другого атрибута? konstryktor AutoCAD 1 28.06.2018 12:16
Атрибут аннотативного динамического блока sergeev_2005 Динамические блоки 15 17.02.2015 15:00
Lisp. авто-нумерация атрибута блока. DonJad LISP 10 26.10.2014 02:04
Установка параметров динамического блока в VBA тормозит bars4 Программирование 4 01.10.2012 10:27
Странное поведение динамического блока высотной отметки hwd Динамические блоки 12 08.09.2011 11:15