马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 Lispboy 于 2013-6-7 02:14 编辑
 - ;|
- 保存当前系统变量到系统变量堆栈
- 保存编程常用的系统变量
- 参数:L----T (保存常用系统变量)
- L--系统变量表 '("osmode" "cmdecho" ....)
- 返回值:T
- 说明:由于使用了全局系统变量堆栈,可以嵌套使用,和XD::SYSVAR:POP 配对使用
- |;
- (defun XD::SYSVar:PUSH (l)
- (if (eq l 't)
- (setq l (list "BLIPMODE" "CECOLOR" "CHAMFERA"
- "CHAMFERB" "CHAMFERC" "CHAMFERD"
- "CHAMMODE" "CIRCLERAD" "CLAYER"
- "CMDDIA" "CMDECHO" "FILEDIA"
- "FILLETRAD" "FILLMODE" "HIGHLIGHT"
- "LTSCALE" "MEASUREMENT" "MIRRTEXT"
- "MTEXTED" "OFFSETDIST" "ORTHOMODE"
- "OSMODE" "PELLIPSE" "PICKADD"
- "PICKAUTO" "PICKBOX" "PICKFIRST"
- "PICKSTYLE" "PLINETYPE" "PLINEWID"
- "PSLTSCALE" "TEXTFILL" "TEXTSIZE"
- "TEXTSTYLE" "TRIMMODE""UCSAXISANG"
- )
- )
- )
- (XD::STACK:PUSH "SYSTEMVAR" (mapcar
- '(lambda (x)
- (list x (getvar x))
- )
- l
- )
- )
- t
- )
测试嵌套使用:
 - (defun c:tt()
- (setvar "osmode" 0)
- (setvar "cmdecho" 0)
- (princ "\nosmode=")
- (princ (getvar "osmode"))
- (princ "\ncmdecho=")
- (princ (getvar "cmdecho"))
- (XD::SYSVAR:PUSH t)
- (setvar "osmode" 1)
- (setvar "cmdecho" 1)
- (princ "\n osmode=")
- (princ (getvar "osmode"))
- (princ "\n cmdecho=")
- (princ (getvar "cmdecho"))
- (XD::SYSVAR:PUSH '("osmode" "cmdecho"))
- (setvar "osmode" 0)
- (setvar "cmdecho" 1)
- (princ "\n osmode=")
- (princ (getvar "osmode"))
- (princ "\n cmdecho=")
- (princ (getvar "cmdecho"))
- (XD::SYSVAR:POP)
- (princ "\n osmode=")
- (princ (getvar "osmode"))
- (princ "\n cmdecho=")
- (princ (getvar "cmdecho"))
- (XD::SYSVAR:POP)
- (princ "\nosmode=")
- (princ (getvar "osmode"))
- (princ "\ncmdecho=")
- (princ (getvar "cmdecho"))
- (princ)
- )
- 命令: tt
- osmode=0
- cmdecho=0
- osmode=1
- cmdecho=1
- osmode=0
- cmdecho=1
- osmode=1
- cmdecho=1
- osmode=0
- cmdecho=0
复制代码 上面这个演示,每层返回上层后,都恢复在上层时候保存的系统变量值。 |