(vlr-remove-all) (setq *cmd-reactor-added* nil) ; Funktion zum Setzen der Reaktoren (defun add-cmd-reactors( / ) (vl-load-com) (if(not *cmd-reactor-added*) (progn (vlr-command-reactor nil '( (:vlr-commandWillStart . cmd-start-callback)) ) (vlr-command-reactor nil '( (:vlr-commandEnded . cmd-end-callback)) ) (setq *cmd-reactor-added* 'T) ) ) ) ; allgemeine Cmd-Callback-Funktion ; (vor der Befehlsausführung) (defun cmd-start-callback(reactor argslist / ) (if(=(type(car argslist))'STR) (cond ((member(strcase(car argslist)) '("QLEADER" "LEADER") ) (LAYER-start-callback "LEADER") ) ((member(strcase(car argslist)) '("XLINE" ) ) (LAYER-start-callback "XLINE") ) ((member(strcase(car argslist)) '("LINE" "CIRCLE" "ARC" "PLINE") ) (LAYER-start-callback "LINIENLAYER") ) ((member(strcase(car argslist)) '("TEXT""MTEXT") ) (LAYER-start-callback "TEXTLAYER") ) ) ) ) ; allgemeine Cmd-Callback-Funktion ; (nach der Befehlsausführung) (defun cmd-end-callback(reactor argslist / ) (LAYER-end-callback) ) ; Macht einen Layer aktuell (defun set-layer(name / ) (vla-put-ActiveLayer (current-document) (vla-item(document-layers)name) ) ) ; gibt das Vla-Object zu einem ; Layernamen zurück (defun layer-object(name / result) (vlax-for layer(document-layers) (if (=(strcase name) (strcase(vla-get-name layer)) ) (setq result layer) ) ) result ) ; Erzeugt einen neuen Layer (defun create-layer(name props / newlayer) (setq newlayer (vla-add (document-layers) name) ) (foreach prop props (vlax-put-property newlayer (car prop)(cdr prop) ) ) newlayer ) ; Ermittelt den aktuellen Layer (defun get-current-layer( / ) (vla-get-activelayer (current-document) ) ) ; Gibt die Layer-Collection zurück (defun document-layers( / ) (vla-get-layers (current-document) ) ) ; gibt die aktuelle Zeichnung zurück (defun current-document( / ) (vla-get-activedocument (vlax-get-acad-object) ) ) ; Vorher-Callback für Schraffuren (defun LAYER-start-callback( layer) (if(not(layer-object layer)) (create-layer layer '((Color . 4))) ) (setq *previous-layer* (get-current-layer)) (set-layer layer) ) ; Nachher-Callback für Schraffuren (defun LAYER-end-callback( / ) (if *previous-layer* (progn (vla-put-activelayer (current-document) *previous-layer* ) (setq *previous-layer* nil) ) ) ) ; Sicherstellen, dass die ActiveX- ; Funktionen geladen sind (vl-load-com) ; Reaktoren beim Laden starten (add-cmd-reactors) ; Ende Datei