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

Втавляю(INSERT) блок  с аттрибутами с подавленным диалогом запроса значений аттрибутов (ATTERQ 0).
Затем изменяю значения аттрибутов командно (ATTEDIT). Для этого выбраю аттрибуты (SELECT) и меняю их значения. Удобно было бы использовать LAST, но он выбирает только один последний аттрибут, а не весь блок. Можно использовать WINDOW, но это не очень удобно.
Как выбрать именно "необходимый" блок.
 
Есть ли какие либо оптимальные способы решения этой задачи?
Спасибо!

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

(defun lastent1    (/ SS Ent)
  (setq SS (ssget "L"))
  (if SS
   (progn (setq Ent (ssname SS 0))
     (setq SS nil)
     ) ;_ end of progn
   ) ;_ end of if
  Ent
  )

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

Спасибо!
Но я бы хотел узнать подробнее об использовании данной функции.
В командной строке Автокад для выбора прдлагает следующее
"Select Attributes:
Expects a point or Window/Last/Crossing/BOX/Fence/WPolygon/CPolygon"

Вот часть моего кода:
(command "ATTEDIT" "Y" "*" "*" "*" "LAST" "V" "R" "NEWSTRNAMEN" "")
LAST -- этим параметром выбирается аттрибут для изменения (в данном случае последний аттрибут из многих, которые необходимо изменить)

Я так понимаю данная процедура здесь не может быть применима. Прав ли я?

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

Лучше через (entget)/(entmod)

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

Poprobuy etu funkciju, dolzhno rabotat' bez wsjakih (command...).
Esli est' woprosy pischi.

(defun att_edit ( / block att att_name att_value get_value value_new value seqend )

    (setq block (car(entsel)))
    (if block
        (progn
            (setq att (entnext block))
            (setq seqend (cdr (assoc 0 (entget att))))
            (while (not (eq seqend "SEQEND"))
                (setq att_name (cdr (assoc 2 (entget att))))
                (setq att_value (cdr (assoc 1 (entget att))))
                (princ (strcat "\n" att_name " = " att_value))
                (setq get_value (getstring T (strcat "\nNew value or [" att_value "] : ")))
                (if (eq get_value "")
                    (setq value_new att_value)               
                    (setq value_new get_value)               
                ); end if
                (setq value (subst (cons 1 value_new) (assoc 1 (entget att)) (entget att)))
                (entmod value)
                (entupd att)               
                (setq att (entnext att))
                (setq seqend (cdr (assoc 0 (entget att))))
            ); end while
        ); end progn
    ); end if
); end defun

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

Большое спасибо!
Реально помогло решить проблему не только работы с аттрибутами без диалога, но редактирования невидимых аттрибутов, которые не выбираются командой "SELECT".