Hallo zusammen,
vorab: mit LISP beschäftige ich mich seit 1-2 Tagen, mit wachsender Begeisterung.
Ich muß in ca. 70 (dynamischen) Blöcken die Zuweisung von Attributen zu einer Umkehraktion ändern. Einige Attribute sollen der U-Aktion hinzugefügt und andere entfernt werden.
Ursache (falls die Frage nach dem Warum?) ist die nachträgliche Einfügung von kundenspezifischen Attributen und die dann erforderliche Änderung der Attributreihenfolge (Kundenattribute vor bestehenden Attributen). Im AutoCAD scheinen Parameter wie Sichtbarkeit, Umkehrstatus usw. nicht am Attributname verankert zu sein - nicht besonders gelungen...
Also habe ich dazu folgendes Script entworfen:
(defun c:ATT_KORR_FLIP ()
;Systemvariable BACTIONBARMODE auf <0> setzen (Standard <1> um Umkehraktion auswählen zu können
(command "BACTIONBARMODE" "0")
;Sichbarkeitsstatus auf "Normal" setzen
(command "_-BVSTATE" "SETZEN" "Normal" )
;Umkehraktion auswählen
(sssetfirst(setq AUSWAHL(ssget "_x" (list '(0 . "*flipaction*")(cons 410 (getvar "ctab")))))AUSWAHL)
;Umkehraktion aktivieren und Funktion Ändern auswählen
(command "BACTIONSET" "Ä"
;Objekte zum Ändern auswählen
(sssetfirst(setq STKRBEZ(ssget "_X" (list '(0 . "ATTDEF")'(2 . "STKRBEZ") (cons 410 (getvar "ctab")))))STKRBEZ)
)
)
Das Script wählt auch das zum Aktionssatz hinzuzufügende Attribut mit Namen "STKRBEZ" aus - fügt es aber nicht der Umkehraktion hinzu.
Ausgabe:
...
>Befehl: BACTIONSET
>Auswahlsatz für Aktionsobjekt angeben [Neu/Ändern] <Neu>: Ä
>
>Zum Aktionssatz hinzuzufügendes Objekt auswählen oder [Entfernen]:
>Befehl: nil
Lasse ich die Zeile "(sssetfirst(setq STKRBEZ(ssget "_X" (list '(0 . "ATTDEF")'(2 . "STKRBEZ") (cons 410 (getvar "ctab")))))STKRBEZ)" im Script weg, bleibt der Ablauf natürlich stehen bei:
>Zum Aktionssatz hinzuzufügendes Objekt auswählen oder [Entfernen]:
Füge ich dann genau diese Zeile per Hand (Copy&Paste) ein und bestätige mit 2x Enter wird das Attribut wie gewünscht der Umkehraktion hinzugefügt. Ich habe also einen Fehler in der Auswahl oder deren Bestätigung...
Grüsse & Danke
Karsten
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP