bowlingbrad
2012-01-18, 05:19 PM
Auginauts,
I've scavenged some code regarding a close reactor and I don't know what is causing the "invalid AutoCAD command: nil" message. It occurs at the beginning of EVERY command I type in. I just want this reactor to recognize CLOSE, SAVE, QSAVE, QUIT.
Thanks!
(vl-load-com)
(defun smart-command-reactor (commands StartCallback EndCallback / ended)
(vl-load-reactors)
(setq ended
(vlr-command-reactor nil
'(
(:vlr-commandEnded . internal-commandEnded)
(:vlr-commandCancelled . internal-commandEnded)
(:vlr-commandFailed . internal-commandEnded)
)
)
)
(vlr-remove ended)
(vlr-command-reactor
(list
ended
StartCallback
EndCallback
(if (listp commands)
(mapcar 'strcase commands)
(list (strcase commands))
)
)
'((:vlr-commandWillStart . internal-commandWillStart))
)
)
(defun internal-commandWillStart (reactor args / data result)
(setq data (vlr-data reactor))
(if
(and
(member (car args) (last data))
(setq result (apply (cadr data) (list (car args))))
)
(progn
(vlr-data-set
(car data)
(list (caddr data) result)
)
(vlr-add (car data))
)
)
)
(defun internal-commandEnded (reactor args / data)
(setq data (vlr-data reactor))
(vlr-remove reactor)
(apply
(car data)
(list
reactor
(vlr-current-reaction-name)
(car args)
(cadr data)
)
)
)
(if *my-smart-close-reactor* (vlr-remove *my-smart-close-reactor*))
(setq *my-smart-close-reactor*
;;;;;;;;;;;;;;;;;;;;;;; I'm assuming something has to be put below here to catch the nil
(smart-command-reactor
'("CLOSE" "SAVE" "QSAVE" "QUIT")
(function
(lambda (cmdname)
(if (not gp-project-stds)
(alert "GP Project Standards cannot be found for this file!\nPlease contact your Administrator")
(gp-project-stds)
);end if
)
)
(function
(lambda (data)
(if (= nil data)
(progn
(princ "Done.")
(setvars data)
(sssetfirst nil)
(setq app nil adoc nil)
);end progn
);end if
)
)
)
)
(defun setvars (data)
(mapcar
(function
(lambda (v / r)
(setq r (getvar (car v)))
(setvar (car v) (cdr v))
(cons (car v) r)
)
)
data
)
)
I've scavenged some code regarding a close reactor and I don't know what is causing the "invalid AutoCAD command: nil" message. It occurs at the beginning of EVERY command I type in. I just want this reactor to recognize CLOSE, SAVE, QSAVE, QUIT.
Thanks!
(vl-load-com)
(defun smart-command-reactor (commands StartCallback EndCallback / ended)
(vl-load-reactors)
(setq ended
(vlr-command-reactor nil
'(
(:vlr-commandEnded . internal-commandEnded)
(:vlr-commandCancelled . internal-commandEnded)
(:vlr-commandFailed . internal-commandEnded)
)
)
)
(vlr-remove ended)
(vlr-command-reactor
(list
ended
StartCallback
EndCallback
(if (listp commands)
(mapcar 'strcase commands)
(list (strcase commands))
)
)
'((:vlr-commandWillStart . internal-commandWillStart))
)
)
(defun internal-commandWillStart (reactor args / data result)
(setq data (vlr-data reactor))
(if
(and
(member (car args) (last data))
(setq result (apply (cadr data) (list (car args))))
)
(progn
(vlr-data-set
(car data)
(list (caddr data) result)
)
(vlr-add (car data))
)
)
)
(defun internal-commandEnded (reactor args / data)
(setq data (vlr-data reactor))
(vlr-remove reactor)
(apply
(car data)
(list
reactor
(vlr-current-reaction-name)
(car args)
(cadr data)
)
)
)
(if *my-smart-close-reactor* (vlr-remove *my-smart-close-reactor*))
(setq *my-smart-close-reactor*
;;;;;;;;;;;;;;;;;;;;;;; I'm assuming something has to be put below here to catch the nil
(smart-command-reactor
'("CLOSE" "SAVE" "QSAVE" "QUIT")
(function
(lambda (cmdname)
(if (not gp-project-stds)
(alert "GP Project Standards cannot be found for this file!\nPlease contact your Administrator")
(gp-project-stds)
);end if
)
)
(function
(lambda (data)
(if (= nil data)
(progn
(princ "Done.")
(setvars data)
(sssetfirst nil)
(setq app nil adoc nil)
);end progn
);end if
)
)
)
)
(defun setvars (data)
(mapcar
(function
(lambda (v / r)
(setq r (getvar (car v)))
(setvar (car v) (cdr v))
(cons (car v) r)
)
)
data
)
)