; Anfang der Datei http://activex.autolisp.info/layreactor.html ; 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) ) ( (member(car argslist)'("DTEXT""MTEXT")) (text-start-callback reactor argslist) ) ( (member(car argslist)'("qsave")) (qsave-start-callback reactor argslist) ) ( (=(car argslist)"BHATCH") (bhatch-start-callback reactor argslist) ) ;( (=(car argslist)"qsave") ; (qsave-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) ) ( (member(car argslist)'("DTEXT""MTEXT")) (text-end-callback) ) ( (member(car argslist)'("qsave")) (qsave-end-callback) ) ( (=(car argslist)"BHATCH") (bhatch-end-callback) ) ;( (=(car argslist)"qsave") ;(qsave-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) ) ) ;Ansichtsfensterfaktor (defun xpfact ( / ) (caddr (trans '(0 0 1) 2 3)) ) ;(defun C:xpfact2 ( / ) ;(setq a (caddr (trans '(0 0 1) 2 3))) ;(vl-princ-to-string a) ;(setq b (/ 1 a)) ;(vl-princ-to-string b) ;) ;(defun c:vpfaktor ( / ) ; (rtos (last (trans '(0 0 1) 3 1))) ;) ;updatet die titelblattinfos (defun update ( / ) (command "UPDATETITLE") ) ; Vorher-Callback für Schraffuren (defun bhatch-start-callback(reactor argslist / layer) (setq layer "S_Schraffuren") (if(not(layer-object layer)) (create-layer layer '((Color . 140))) ) (setq *previous-layer*(get-current-layer)) (set-layer layer) ) ; Nachher-Callback für Schraffuren (defun bhatch-end-callback( / ) (if *previous-layer* (progn (vla-put-activelayer (current-document) *previous-layer* ) (setq *previous-layer* nil) ) ) ) ; Vorher-Callback für Texte (defun text-start-callback(reactor argslist / layer) (setq layer "T_Texte") (if(not(layer-object layer)) (create-layer layer '((Color . 140))) ) (setq *previous-layer*(get-current-layer)) (set-layer layer) ) ; Nachher-Callback für Texte (defun text-end-callback( / ) (if *previous-layer* (progn (vla-put-activelayer (current-document) *previous-layer* ) (setq *previous-layer* nil) ) ) ) ; Vorher-Callback für Speicherung (defun qsave-start-callback(reactor argslist /) (update) ) ; Vorher-Nachher für Speicherung (defun qsave-end-callback( / ) (princ "Titelblatt aktualisiert") ) ; Vorher-Callback für Bemassungen (defun dim-start-callback(reactor argslist / scale str layer) (setq scale(xpfact)) ;(setq scale2(/ 1 xpfact)) ;(or (if (eq 2 (getvar "cvport")) (setq mod 1)) ; (if (eq 1 (getvar "cvport")) (setq mod 2)) ; (if (eq 3 (getvar "cvport")) (setq mod 2)) ;(if (eq 1 (getvar "cvport")) (setq lay 1) ;) ;(if (eq 3 (getvar "cvport")) (setq fen 1) ;) (if (eq 1 (getvar "cvport")) (setq str "layout")) (if (eq 2 (getvar "cvport")) (setq str "model")) (if (eq 3 (getvar "cvport")) (setq str (vl-princ-to-string scale))) ;(setq str ;(cond ; ( (= scale 0.002 ) "1~500") ;( (= scale 0.005 ) "1~200") ;( (= scale 0.01 ) "1~100") ;( (= scale 0.02 ) "1~50") ;( (= scale 0.05 ) "1~20") ;( (= scale 0.1 ) "1~10") ;( (= scale 0.2 ) "1~5") ;( (= scale 1.0 ) "1~1") ;( 0 "1~XX") ;( (= lay 1 ) "layout") ;( (= mod 1 ) "modell") ;( (= fen 1 ) "test") ;) ;) (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