热度 3|||
;;图层反映器应用 ;;功能:禁止某个图层(如图层"2")设置为当前层,以保证不在该图层上画物体 (defun c:tt () ;;建立反应器 (or *sysVarvlr* (setq *sysVarvlr* (vlr-editor-reactor nil '((:vlr-sysVarWillChange . sysVarWillChange) ;_ 回调函数 (:vlr-sysVarChanged . sysVarchange)))) ;_ 回调函数 ) (princ) ) ;;回调函数 (defun sysVarWillChange(reactor_object lst) (if (= "CLAYER" (car lst)) (setq *savelayer* (getvar "CLAYER")) ;_ 保存当前层名称 ) (if (= "2" *savelayer*) (setq *savelayer* "0")) ;_ 图层"2"为禁止图层,若当前层为禁止层,则默认为"0层" ) ;;回调函数 (defun sysVarchange (reactor_object lst) (if (and (= "CLAYER" (car lst)) (= "2" (getvar "CLAYER")) ;_ 图层"2"为禁止图层,可自行修改 ) (progn (vlr-remove reactor_object) ;_ 停用图层反应器 (setvar "CLAYER" *savelayer*) ;_ 恢复当前层 (vlr-add reactor_object) ;_ 启用反应器 ) ) (princ) )