张和平 发表于 2013-8-16 08:58:14

[LISP函数]保存变量至txt,从txt读取变量

;保存peace系统变量,保存到cad安装目录下的PEACESYSVAL.TXT by PEACE 2013/05/25
(defun PEACE:SaveSysVarPeace(valname valvalue infotext / acadpath f datalist data valvalue_old i isthere)
(setq acadpath(vlax-get-property (vlax-get-acad-object) 'Path))
(if (= infotext "")(setq infotext "no infotext"))
(if (null (findfile "PEACESYSVAL.TXT"))
    (progn ;若文件不存在
      (setq f (open (strcat acadpath "\\PEACESYSVAL.TXT") "w"))
      (prin1 (list valname valvalue infotext) f)
      (close f)
    )
    (progn ;若文件已存在
      (setq datalist '())
      (setq f (open (strcat acadpath "\\PEACESYSVAL.TXT") "r"))
      (while (setq data (read-line f))
      (setq datalist (cons data datalist))
      )
      (close f)
      (setq datalist (reverse datalist))
      (setq       i 0
            isthere 0)
      (repeat (length datalist)
      (if (= valname (car (read (nth i datalist))))
          (progn
          (setq datalist (subst (vl-prin1-to-string (list valname valvalue infotext)) (nth i datalist) datalist))
          (setq isthere 1)
          )
      )
      (setq i (1+ i))
      )
      (if (= 1 isthere)
      (progn
          (setq f (open (strcat acadpath "\\PEACESYSVAL.TXT") "w"))
          (prin1 (read (nth 0 datalist)) f)
          (close f)
          (setq i 1)
          (setq f (open (strcat acadpath "\\PEACESYSVAL.TXT") "a"))
          (repeat (- (length datalist) 1)
            (write-line "" f)
            (prin1 (read (nth i datalist)) f)
            (setq i (1+ i))
          )
          (close f)
      )
      (progn
          (setq f (open (strcat acadpath "\\PEACESYSVAL.TXT") "a"))
          (write-line "" f)
          (prin1 (list valname valvalue infotext) f)
          (close f)
      )
      )
    )
)
(princ)
)
;读取peace系统变量 by PEACE 2013/05/25
(defun PEACE:ReadSysVarPeace( / acadpath data datalist i f)
(setq acadpath(vlax-get-property (vlax-get-acad-object) 'Path))
(if (findfile "PEACESYSVAL.TXT")
    (progn
    (setq datalist '())
    (setq f (open (strcat acadpath "\\PEACESYSVAL.TXT") "r"))
      (while (setq data (read-line f))
      (setq datalist (cons data datalist))
      )
      (reverse datalist)
    (close f)
    (setq i 0)
    (repeat (length datalist)
      (set (read (car (read (nth i datalist)))) ;注意字符和表之间的转换,字符串是不能作为变量名的
         (cadr (read (nth i datalist)))       ;car对字符串也是不起作用的
      )
      (setq i (1+ i))
    )
    )
nil
)
)

10105 发表于 2014-3-9 19:44:58

{:soso_e179:}

kkt123 发表于 2015-2-12 11:12:40

:Q:Q获得列表框指定的宏工程对象:Q

vlisp2012 发表于 2015-5-24 07:55:18

:D多谢分享了!!!!

sicky111 发表于 2016-12-29 21:53:16

这个很好用。

cq_qg68 发表于 2017-2-24 09:01:34

很好用!谢谢分享

凝思 发表于 2017-3-21 10:18:39

正需要,支持楼主大人了!

spacevalue 发表于 2018-6-16 11:16:50

感谢分享。。。。。。。。。。。

fengyun7000 发表于 2018-10-6 12:17:22

点个赞,必须的

kqqt6236 发表于 2019-1-18 00:14:01

谢谢分享。

香远益清 发表于 2020-1-4 10:26:00

正需要,支持楼主大人了!

MUYIY 发表于 2022-6-7 23:07:59

支持楼主{:1_1:}{:1_1:}{:1_1:}
页: [1]
查看完整版本: [LISP函数]保存变量至txt,从txt读取变量