Hallo Peter,
hilft dir das folgende kleine LISP-Programm ?
; Ändern eines Attributwertes in einem Block
; Alle erforderlichen Angaben werden beim Aufruf übergeben
; z.B. (Att_aendern "Mein_Block" "TXT1" "Hier neuer Text")
; Ist der Block mehrmals vorhanden, wird die Änderung bei ALLEN Blöcken vorgenommen
(defun Att_aendern (Block_Name Attribut_Name Neuer_Wert / Block_Set Attribut Alter_Wert i)
(SETVAR "CMDECHO" 0)
(setq Block_Set (ssget "X" (list (cons 0 "INSERT") (cons 2 Block_Name)))
i 0)
(Repeat (sslength Block_Set)
(setq Attribut (entnext (ssname Block_Set i)))
(While (AND Attribut (/= (cdr (assoc 2 (entget Attribut))) Attribut_Name))
(setq Attribut (entnext Attribut))
) ; while
(if Attribut
(progn
(setq Alter_Wert (cdr (assoc 1 (entget Attribut))))
(entmod (subst (cons 1 Neuer_Wert) (cons 1 Alter_Wert) (entget Attribut)))
(entupd Attribut)
))
(setq i (1+ i))
) ; Repeat
(princ)
) ; defun
Schönes Wochenende
Helmut
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP