; 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" "DIMORDINATE")) (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" "DIMORDINATE")) (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 200.0 ) "1-200") ( (>= scale 150.0 ) "1-150") ( (>= scale 100.0 ) "1-100") ( (>= scale 75.0 ) "1-75") ( (>= scale 50.0 ) "1-50") ( (>= scale 25.0 ) "1-25") ( (>= scale 20.0 ) "1-20") ( (>= scale 15.0 ) "1-15") ( (>= scale 10.0 ) "1-10") ( (>= scale 5.0 ) "1-5") ( (>= scale 4.0 ) "1-4") ( (>= scale 3.0 ) "1-3") ( (>= scale 2.5 ) "1-2_5") ( (>= 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 "GS_DIM_M" str)) (if(not(layer-object layer)) (create-layer layer '((Color . 12))) ) (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)