程序变量保存到文件-通用性强
话不多说,贴源码,源码有些东西来自lee-mac,有些忘记来自哪里了:;;将变量处理成字符串
(defun processlist ( **l** / LM:Flatten **lf** **lstr** **la** **lr** **nn** )
(defun LM:Flatten ( **l** )
(if (atom **l**) (list **l**)
(append (LM:Flatten (car **l**)) (if (cdr **l**) (LM:Flatten (cdr **l**))))
)
)
(setq **lf** (LM:Flatten **l**))
(setq **lstr** (vl-prin1-to-string **l**))
**lstr**
)
;;将变量以表的形式储存到文件,目录可自己定义
(defun cfg-save (symbols / filename f data)
(setq
data
(apply
'list
(mapcar
'(lambda (x) (cons x (vl-symbol-value x)))
symbols
)
)
)
(setq acadpath(vlax-get-property (vlax-get-acad-object) 'Path));;获取CAD根目录,该目录可以自定义成其他目录
(setq filename (strcat acadpath "\\XXCFG.cfg"))
(IF (null (findfile filename ))
(progn ;若文件不存在
(setq f (open filename "w"))
(close f)
)
)
(setq f (open filename "w"))
(write-line (processlist data) f)
(close f)
)
;;从配置文件读取数据并赋值给变量
(defun cfg-read (/ filename f line text data)
(setq acadpath(vlax-get-property (vlax-get-acad-object) 'Path));;获取CAD根目录,该目录可以自定义成其他目录
(setq filename (strcat acadpath "\\XXCFG.cfg"))
(IF (null (findfile filename ))
(progn ;若文件不存在
(setq f (open filename "w"))
(close f)
)
)
(setq f (open filename "r")
text "")
(while (setq line (read-line f))
(setq text (strcat text line))
)
(close f)
(setq data (read text))
(mapcar '(lambda (x) (set (car x) (cdr x))) data)
)
例子:(setq v1 "test2" v2 "test2")
(setq symbols '(v1 v2))
;;保存变量
(cfg-save symbols )
;;读取变量
(cfg-read)
思路不错,谢谢分享{:1_12:}{:1_12:}{:1_12:} 这代码有用。感谢分享。 谢谢大佬无私奉献 好东西,刚好能用上,太感谢 这个不错学习了{:1_1:}
谢谢分享!!! 保存到注册表也可以啊 非常有用,下载保存了,谢谢! 谢谢分享~~ 正需要,支持楼主大人了! 很好的代码 lj524917100 发表于 2016-9-27 08:27
你可以根据自己的需要更改路径啊~~但是建议路径是cad可搜索的
保存路径也作为变量比较好 感谢 wangxin208 分享程序!!!
页:
[1]
2