保存和恢复系统变量
本帖最后由 kucha007 于 2022-11-13 12:54 编辑Lee Mac写的,简洁明了!整理了一下分享出来。
https://www.cadtutor.net/forum/topic/61171-codes-system-variables/?do=findComment&comment=505290
(defun C:TT (/ *error* New_vars Old_vars)
(defun *error* (msg)
(foreach xx Old_vars (if xx (apply 'setvar xx)))
(princ)
)
;---------------------
(setq New_vars '(
(cmdecho 0);取消回显
(OSMode 0);禁用捕捉
(PICKSTYLE 0);取消编组
(expert 5);禁止提示冲突(默认Yes)
)
)
(setq Old_vars (mapcar
'(lambda (a / b)
(if (setq b (getvar (car a)))
(progn
(apply 'setvar a)
(list (car a) b)
)
)
)
New_vars
)
)
;---------------------
(progn
;;做某些事
)
;---------------------
(foreach xx Old_vars (if xx (apply 'setvar xx)))
(princ)
)感觉也可以这样用:(defun K:SysVar ()
(if (not *Old_vars*)
(progn
(setq *New_vars* '(
(cmdecho 0);取消回显
(OSMode 0);禁用捕捉
(PICKSTYLE 0);取消编组
(expert 5);禁止提示冲突(默认Yes)
)
)
(setq *Old_vars* (mapcar
'(lambda (a / b)
(if (and
(setq b (getvar (car a)))
(/= b (cadr a))
)
(progn
(apply 'setvar a)
(list (car a) b)
)
)
)
*New_vars*
)
)
(setq *New_vars* nil)
)
(progn
(foreach xx *Old_vars* (if xx (apply 'setvar xx)))
(setq *Old_vars* nil)
)
)
(princ)
)
(defun C:TT ()
(defun *error* (msg)
(K:SysVar);恢复系统变量
(princ)
)
(K:SysVar);记录并修改系统变量
;你的程序
(K:SysVar);恢复系统变量
(princ)
)
涉及外部变量得这样用= =
(setq BrdLay '("TC-填充边界线" 1));设置边界线图层
(setq *Old_SysVar* '());清空变量,避免出错
(setq *Old_SysVar*
(mapcar
'(lambda (a / b)
(if (setq b (getvar (car a)))
(progn
(apply 'setvar a)
(list (car a) b)
)
)
)
(list
(list "CLAYER" (car BrdLay)) ;图层
(list "cecolor" (rtos (cadr BrdLay) 2 2)) ;图层颜色
(list "PICKSTYLE" 0) ;忽略编组选择
(list "cmdecho" 0) ;关闭回显
)
)
);记录参数 感谢大佬分享 学习了~ 提取的这个做函数相当方便 谢谢分享! 感谢大佬的热心分享 全是科技,学习一下 请问有没错误处理的变量恢复代码 xman00 发表于 2022-11-14 15:49
请问有没错误处理的变量恢复代码
最后不是有吗?*error*那个就是 kucha007 发表于 2022-11-14 17:06
最后不是有吗?*error*那个就是
好的,看到了,感谢。
页:
[1]