Gegeben ist:
ein Kreis-Objekt auf Layer1, Objektfarbe VonLayer (hier rot)
ein Text-Objekt auf Layer2, Objektfarbe VonLayer (hier gelb)
eine Attributsdefinition auf Layer3, Objektfarbe VonLayer (hier grün)
Alle zusammen werden in einen Block gepackt Name BL1.
Die Blockreferenz ist auf Layer4 abgelegt, Objektfarbe VonLayer (hier blau)
Nun wird ein Tool (Quellcode siehe unten) gestartet, dessen Aufgabe es sein soll, alle Zeichnungsobjekte
mit einer einheitlichen Farbe (Objektfarbe z.B. 2) auszustatten.
Problem:
Im derzeitigen Programmstand wird die Blockreferenz äußerlich auf die Objektfarbe umgestellt,
die Blockbestandteile (Kreis und Text) verändern jedoch nicht die Farbe.
Das im Block enthaltenen Attribut ändert seine Farbe wunschgemäß.
Frage:
Welche Anpassungen sind im Quellcode nötig, damit Kreis und Text ebenfalls die Farbe ändert?
Quellcode:
(defun C:hgf ()
(initget (+ 1 2 4) )
(setq neufa (getint "\n\nNeue Farbnummer für alle Objekte eingeben <252> : ") )
(setq ename (entnext) anzahl 0)
(while ename
(setq eliste (entget ename) altfa (assoc 62 eliste) neuwert (cons '62 neufa) )
(if altfa
(setq eliste (subst neuwert altfa eliste) )
(setq eliste (reverse (cons neuwert (reverse eliste))) )
);endif
(entmod eliste) (entupd ename)
(setq ename (entnext ename) anzahl (+ anzahl 1))
);endwhile
(princ "\nEs wurden ") (princ anzahl) (princ " Objekte erfolgreich bearbeitet!")
(princ)
);enddefun
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP