(defun LoadReactor ( / ReactorName found) (vl-load-com) (setq ReactorName "Mouse") (foreach ReactorGroup (vlr-Reactors) (if (eq (car ReactorGroup) ':VLR-Mouse-Reactor) (progn (foreach Reactor (cdr ReactorGroup) (if (eq (VLR-data Reactor) ReactorName) (setq found (cons 'T Found)) (setq found (cons 'nil Found)) ) ) ) ) ) (if (not (apply 'or found ) ) (progn (VLR-Mouse-Reactor ReactorName '((:vlr-beginDoubleClick . RE:DBL-Click)) ) (princ "Reactor loaded") ) (princ "Reactor allready loaded") ) (princ) ) (LoadReactor) ;############################################################################################### (defun RE:DBL-Click ( ;Reactor-Data ;~~~~~~~~~~~~~~~~ ReactorObj ReactorPoint ;~~~~~~~~~~~~~~~~ / ;LOCALS C_error EXPR_MapcarType Entlst ;SUBS ;mapcar-DataType ;~~~~~~~~~~~~~~~~ mapcar-DataType ;~~~~~~~~~~~~~~~~ ;escape-Dialogs ;~~~~~~~~~~~~~~~~ escape-Dialogs *AllreadySet_escape-Dialogs* ;~~~~~~~~~~~~~~~~ ) ;SUBS ;////////////////////////////////////////////////////////////////////////////// (defun escape-Dialogs (escape / escape Reactor ReactorCallBack TemporaryReactor) (if (null *AllreadySet_escape-Dialogs*) (if escape (progn ;global Variable to Cchek if allready Set ;--------------------------------------------- (setq *AllreadySet_escape-Dialogs* 'T) ;--------------------------------------------- ;Name of the temporary Reactor ;--------------------------------------------- (setq ReactorCallBack (read "temporaryCMD-Reactor")) ;--------------------------------------------- ;Set Command-Reactor ;--------------------------------------------- (setq TemporaryReactor (vlr-command-reactor 'nil (list (cons ':vlr-commandwillstart ReactorCallBack ) ) ) ) ;--------------------------------------------- ;set new *error*-Function from Template ;--------------------------------------------- (setq *error* (append '((msg / oldError)) (list (list 'setq 'olderror C_error ) (list 'vlr-remove TemporaryReactor ) '(setq *error* olderror) '(princ msg) '(princ) ) ) ) ) ;--------------------------------------------- ;Set CallBack-Function from Template ;--------------------------------------------- (eval (cons 'defun (append (cons ReactorCallBack '((Reactor Data / Reactor Data DT:SENDKEYS Store)) ) (list (list 'setq 'Store (eval ReactorCallBack) ) '(progn (defun DT:SENDKEYS (KEYS / WSCRIPT) (if (setq WSCRIPT (vlax-create-object "WScript.Shell")) (progn (vlax-invoke-method WSCRIPT (quote sendkeys) KEYS) (vlax-release-object WSCRIPT) ) ) (princ) ) ;--------------- (cond ((wcmatch (vl-princ-to-string (strcase (car Data))) "*BEDIT,*EATTEDIT") (progn (repeat 2 (DT:SENDKEYS "{ESC}")) ) ) ('T 'nil) ;<<-------------- ADD new here ) ;--------------- (vlr-remove reactor) ) (list 'setq ReactorCallBack 'Store ) ) ) ) ) ;--------------------------------------------- ;->->->->->->->->->->->->->->->->-> TemporaryReactor ;->->->->->->->->->->->->->->->->-> ) ) ) ) ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ (defun mapcar-DataType(expr.type_lst lst / expr.type_lst assoc-dottedPairs lstEpxrToEval i out) ; SUBS ;////////// (progn ;[assoc-dottedPairs (defun assoc-dottedPairs (assocBY lst / assocBY lst out) (setq i 0) (while (not out) (cond ((= (cdr (nth i lst)) assocBY) (setq out (nth i lst)) ) ((= (length lst) i) (setq out "no assoc") ) ) (setq i (+ 1 i)) ) (if (= Out "no assoc") nil out ) ) ;assoc-dottedPairs] ) ;\\\\\\\\\ ;MAIN ;///////// (mapcar '(lambda (Var / EpxrToEval) (setq EpxrToEval (assoc-dottedPairs (type Var) expr.type_lst)) (if EpxrToEval (eval (list (list 'eval (car EpxrToEval)) (quote Var))) Var ) ) lst ) ;\\\\\\\\\ ) ;////////////////////////////////////////////////////////////////////////////// ;MAIN ;************************************************************************************************** ;Store *error* ;########################### (setq C_error *error*) ;########################### ;Find all Ename's in the Selection ;---------------------------------------------------------------------------------------- (setq EXPR_MapcarType '( ( '(lambda (lst / ) (mapcar-DataType EXPR_MapcarType lst) ) . LIST ) ( '(lambda (ent / ) (setq Entlst (cons ent Entlst)) ) . ENAME ) ) ) (foreach Point ReactorPoint (mapcar-DataType EXPR_MapcarType (nentselp Point) ) ) ;---------------------------------------------------------------------------------------- ;Work the Ename's ;---------------------------------------------------------------------------------------- (foreach ForEnt (reverse Entlst) (eval '( (lambda (Ent / ) ;<--- add Locals here ;to DO ;****************************************** (escape-Dialogs 'T) (princ (strcat "\n**********\t\tPicked Object: " (vla-get-objectname (vlax-Ename->VLA-Object ent)) ) ) ;****************************************** ) ForEnt ) ) ) ;---------------------------------------------------------------------------------------- ;restore *error* ;########################### (setq *error* C_error) ;########################### ) ;############################################################################################### (princ "\n*** V02 ***") (princ)