基于Chris的提议(如果可以的话):
- ;;;--------------------------------------------------------------------;
- ;;; SysvarChanged reactor function:
- (defun SysvarChanged:Reactors ()
- (cond
- (*Reactor_SysvarChanged*)
- ((setq *Reactor_SysvarChanged*
- (vlr-sysvar-reactor
- "Monitor System Variable changes"
- '((:vlr-sysVarChanged . Callback:SysvarChanged))))))
- (prompt "\n \n >> SysvarChanged Reactors Loaded ")
- (princ))
- ;;;--------------------------------------------------------------------;
- ;;; SysvarChanged callback function:
- (defun Callback:SysvarChanged (Rea Cmd / item)
- (cond
- ((= "CLAYER" (car Cmd)) ; Layer changed
- (progn
- (cond (*elevList*)
- ((setq *elevList*
- '(("[color=red]Layer1[/color]" . [color=red]elev1[/color])
- ("[color=red]Layer2[/color]" . [color=red]elev2[/color])
- ("[color=red]Layer3[/color]" . [color=red]elev3[/color])
- ;; ...etc.
- ))))
- (if (setq item (assoc (getvar 'clayer) *elevList*))
- (setvar 'elevation (cdr item)))))
- ;; ... Add other conditions here
- )
- (princ))
- ;;;--------------------------------------------------------------------;
- ;;; Conditional load reactor function:
- (defun Reactor:Start (/ vrsn)
- (vl-load-com)
- (cond
- ((or (vl-string-search "R17.2" (setq vrsn (vlax-product-key))) ; 2009
- (vl-string-search "R18.1" vrsn)) ; 2011
- (SysvarChanged:Reactors))))
- ;;;--------------------------------------------------------------------;
- (princ)
|