; Anfang der Datei ; Funktion zum Setzen des Reaktors (defun add-cmd-reactors( / ) (vl-load-com) (vlr-command-reactor nil '( (:vlr-commandWillStart . cmd-start-callback)) ) (vlr-command-reactor nil '( (:vlr-commandEnded . cmd-end-callback)) ) ) ; 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 / ) (cond ( (member(car argslist)'("DIMLINEAR""DIMALIGNED" "DIMRADIUS""DIMANGULAR" "DIMBASELINE""DIMDIAMETER" "DIMCONTINUE""QLEADER")) (dim-start-callback reactor argslist) ) ) ) ; allgemeine Cmd-Callback-Funktion ; (nach der Befehlsausführung) (defun cmd-end-callback(reactor argslist / ) (cond ( (member(car argslist)'("DIMLINEAR""DIMALIGNED" "DIMRADIUS""DIMANGULAR" "DIMBASELINE""DIMDIAMETER" "DIMCONTINUE""QLEADER")) (dim-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 Bemassungen (defun dim-start-callback(reactor argslist / scale str layer) (setq scale(getvar"dimscale")) (setq str (cond ( (>= scale 20.0 ) "1~20") ( (>= scale 10.0 ) "1~10") ( (>= scale 5.0 ) "1~5") ( (>= scale 4.0 ) "1~4") ( (>= scale 3.0 ) "1~3") ( (>= scale 2.0 ) "1~2") ( (>= scale 1.0 ) "1~1") ( (>= scale 0.5 ) "2~1") ( (>= scale 0.33) "3~1") ( (>= scale 0.25) "4~1") ( (>= scale 0.20) "5~1") ( (>= scale 0.10) "10~1") ( 1 "1~XX") ) ) (setq layer(strcat "Bem_" str)) (if(not(layer-object layer)) (create-layer layer '((Color . 11))) ) (setq *previous-layer*(get-current-layer)) (set-layer layer) ) ; Nachher-Callback für Bemassungen (defun dim-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