Тема: Lisp: Как редактировать невидимые аттрибуты блоков(много)?

Создал блок с аттрибутами с пустыми значениями, которые не инициализируются при всавке, т.е. аттрибуты невидимы и их выделить/выбрать для редактирования нельзя. Я использую глобальное редактирование (ATTEDIT), но в нем нельзя(я не знаю) как выбрать конкретный блок для редактирования его аттрибутов. Блоков с одним именем много и надо выбрать только один.

Как редактироать невидимые аттрибуты блоков?

Re: Lisp: Как редактировать невидимые аттрибуты блоков(много)?

Как увидеть все аттрибуты блоков:
; Получение данных обо всех атрибутах блока
(defun C:GetAttDat ( / eb nb nsp dsp tsp av at db nameb)
(setq eb (entsel "Укажите блок"))
; Запрос у пользователя блока
(setq nb (car eb))
; Получение имени примитива указанного блока
(setq nsp (entnext nb))
; получение имени субпримитива блока
(setq dsp (entget nsp))
; получение списка с данными о субпримитиве
(setq tsp (cdr (assoc 0 dsp)))
; получение типа субпримитива
(while (not (= tsp "SEQEND"))
; пока тип субпримитива не SEQEND (конец составного  примитива)
(if (= (cdr (assoc 0 dsp)) "ATTRIB")
; если тип субпримитива ATTRIB (атрибут)
(progn
(setq av (cdr (assoc 1 dsp)))
; получение значения текущего атрибута
(setq at (cdr (assoc 2 dsp)))
; получение Тега (имени) текущего атрибута
(princ (strcat "\nЗначение атрибута с тегом " at " равно " av "\n"))
(getstring "Нажмите Enter")
(setq nsp (entnext nsp))
; получение имени следующего субпримитива
(setq dsp (entget nsp))
; получение списка с данными следующего субпримитива
(setq tsp (cdr (assoc 0 dsp)))
; получение типа следующего субпримитива
) ; end of progn
) ; end of if "ATTRIB"
) ; end of while "SEQEND"
(setq db (entget nb))   
; получение списка с данными о блоке
(setq nameb (cdr (assoc 2 db)))
; получение собственно имени блока
(princ (strcat "\nВ блоке " nameb " больше нет атрибутов\n"))
    (princ)
) ; end of defun

; варианты значений группы 70 определения атрибута блока
;    70    Attribute flags:
;        0 = Обычный атрибут
;        1 = Attribute is invisible (does not appear).
;        2 = This is a constant attribute.
;        4 = Verification is required on input of this attribute.
;        8 = Attribute is preset (no prompt during insertion).
Если среди получаемых аттрибутов Вы увидите ваши невидимые, то они должны быть видны и через _attedit и сможете их отредактировать.
Если среди получаемых аттрибутов вы не увидите ваши невидимые, то Вы неправильно их создаете.
Не понятно Ваше: "Я использую глобальное редактирование (ATTEDIT), но в нем нельзя(я не знаю) как выбрать конкретный блок для редактирования его аттрибутов. Блоков с одним именем много и надо выбрать только один".
Непонятно, как Вы все-таки собираетесь выбирать конкретный блок. Кроме того, блоков с одним именем не может быть много. Каждый блок в рисунке -это примитив и он имеет только одно уникальное имя.
ЗЫ Все аттрибуты вставленного блока, тэгов, значений по умолчанию и пр. созданного блока можно просмотреть (и отредактировать) с помощью и _.dbview из состава Express.
С уважением,

Re: Lisp: Как редактировать невидимые аттрибуты блоков(много)?

Я имел в виду программное редактирование блоков через комманды Автокада.
При редактировании значений аттрибутов блоков( комманда ATTEDIT) существует режим глобального редактирования, при котором фильтруются значения аттрибутов всех блоков по имени блока, тегу, значению аттрибута, а затем отфильтрованные значения аттрибутов можно редактировать.
При этом вводится имя блока (а не имя примитива блока). Получается невозможно в данном режиме обращаться к конкретному примитиву блока, а  только к группе примитивво блоков с данным именем.

Но это возможно посредством функций Лиспа работы  с примитивами(так как предложили вы).

Большое спасибо.