Ну ты что, издеваешься?
Есть несколько видов объектов: графические (отрезки, полилинии, точки, тексты, атрибуты блоков) и неграфические (словари, расширенные данные, свойства файла).
Поведение динамического блока обуславливается наличием в его описании словарей - неграфических данных, которые в своем составе, судя по всему, содержат указатели на обрабатываемые примитивы. Для доступа к словарям
описания блока надо использовать код, аналогичный приведенному в #507.
Визуальное отображение Action обеспечивается несколькими arx-приложениями, работающими напрямую с графическим ядром acad.exe. Эти ручки, черточки и прочая лабуда - его в графических примитивах блоков нет!
Ты просил получить доступ к примитивам блока? Я сделал.
Тебе надо словари? Смотри #507. Или:
Код
_$ (setq lst (entget (TBLOBJNAME "block" (vla-get-EffectiveName (vlax-ename->vla-object (car (entsel))))) '("*")))
((-1 . <Имя объекта: 7edf9fb0>) (0 . "BLOCK") (330 . <Имя объекта: 7edf9f68>) (5 . "10E") (100 . "AcDbEntity") (67 . 0) (8 . "0") (62 . 5) (100 . "AcDbBlockBegin") (70 . 0) (10 0.0 0.0 0.0) (-2 . <Имя объекта: 7edd0430>) (2 . "Отвод Ст 159х4.5-1-ППУ-ПЭ") (1 . ""))
_$ (setq aa (cdr (assoc 330 lst)))
<Имя объекта: 7edf9f68>
_$ (entget aa)
((-1 . <Имя объекта: 7edf9f68>) (0 . "BLOCK_RECORD") (5 . "E5") (102 . "{ACAD_XDICTIONARY") (360 . <Имя объекта: 7edf5190>) (102 . "}") (330 . <Имя объекта: 7edf9c08>) (100 . "AcDbSymbolTableRecord") (100 . "AcDbBlockTableRecord") (2 . "Отвод Ст 159х4.5-1-ППУ-ПЭ") (360 . <Имя объекта: 7edf9fb0>) (340 . <Имя объекта: 0>)
(310 . "2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0")
(310 . "000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0")
(310 . "A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040")
(310 . "40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000")
(310 . "40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080")
(310 . "008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0")
(310 . "800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0")
(310 . "408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000")
(310 . "C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
(310 . "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
(310 . "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
(310 . "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4A4A4FF00000000000000000000000000")
(310 . "000000000000000000000000000000A4A4A4FF00000000000000000000000000000000000000000000000000000000A4A4A4FF00000000000000000000000000000000000000000000000000000000A4A4A4FF00000000000000000000000000000000000000000000000000000000A4A4A4FF000000000000000000000000")
(310 . "00000000000000000000000000000000A4A4A4FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
(310 . "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
(310 . "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
(310 . "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))
Вот aa и надо разбирать "по косточкам". Примерно так:
Код
_$ (entget (cdr (assoc 360 (entget aa))))
((-1 . <Имя объекта: 7edf5190>) (0 . "DICTIONARY") (330 . <Имя объекта: 7edf9f68>) (5 . "33EA") (100 . "AcDbDictionary") (280 . 1) (281 . 1) (3 . "ACAD_ENHANCEDBLOCK") (360 . <Имя объекта: 7edf5198>) (3 . "AcDbDynamicBlockRoundTripPurgePreventer") (360 . <Имя объекта: 7edf5458>))
И проходить по 360 группе.
Код
_$ (setq lst_dict (mapcar 'cdr (vl-remove-if-not '(lambda(x) (= (car x) 360)) (entget (cdr (assoc 360 (entget aa)))))))
(<Имя объекта: 7edf5198> <Имя объекта: 7edf5458>)
Попытки получить (entget) для каждого элемента моментально показывают наличие реакторов, завязанных на другие словари. в 360-й группе лежат действия на Visibility и Rotation - и Action, и Parameter:
Код
_$ (mapcar '(lambda(y) (mapcar '(lambda(z) (cdr(assoc 0 (entget (cdr z))))) (vl-remove-if-not '(lambda(x) (= (car x) 360)) (entget y)))) lst_dict)
(("BLOCKVISIBILITYPARAMETER" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKLINEARPARAMETER" "BLOCKSTRETCHACTION" "BLOCKLINEARPARAMETER" "BLOCKSTRETCHACTION" "BLOCKLINEARPARAMETER" "BLOCKSTRETCHACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKLINEARPARAMETER" "BLOCKSTRETCHACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLINEARPARAMETER" "BLOCKSTRETCHACTION" "BLOCKLINEARPARAMETER" "BLOCKSTRETCHACTION" "BLOCKLINEARPARAMETER" "BLOCKSTRETCHACTION") nil)
Еще раз говорю - это
неграфические данные! Но запутано там все конкретно для сторннего разработчика...