找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1981|回复: 5

[研讨] 关于 Getenv / Setenv

[复制链接]
发表于 2014-10-3 23:24:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 Free-Lancer 于 2014-10-3 23:48 编辑

getenv / setenv 是环境变量存取函数,做一个测试
(getenv "mydata") => nil
(setenv "mydata" "1.0") => "1.0" 这里需要 string 格式
(getenv "mydata") => "1.0")

关闭 ACAD,重新启动后
(getenv "mydata") => "1.0"

自定义的 "mydata" 竟然保存了!问题是这个变量保存到哪里了?

在注册表搜索可以看到保存在这里

HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R19.1\ACAD-D001:804\FixedProfile\General

用这个方法可以将一些数据保存,然后每个图形都可以共享了

评分

参与人数 1D豆 +5 收起 理由
lucas3 + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-10-3 23:53:11 | 显示全部楼层
不外乎注册表,文件了。应该在注册表里面。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-10-4 00:26:25 | 显示全部楼层
QQ截图20141003235440.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-4 11:09:19 | 显示全部楼层
本帖最后由 Free-Lancer 于 2014-10-4 11:10 编辑

这个写注册表不知道和管理员模式有无关系

如果在非管理员下可以写入是不是有些记录可以这样往注册表写
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-10-17 22:54:18 | 显示全部楼层
WIN7 64位 需要管理员身份才能修改注册表。
个人认为,插件全局变量最好不要在注册表中保存,一来图纸较多时增加了注册表的负荷,二来没有管理员身份登录时,无法修改这些系统变量;VLISP的全局变量,我倾向于保存在词典中:

  1. ;;; 读取或创建自己的词典数据
  2. (defun ss-ldata-get  (dict l)
  3.   (if (snvalid dict)
  4.     (mapcar (function (lambda (a / b)
  5.    (if (and (car a) (= (type (car a)) 'STR) (snvalid (car a)))
  6.      (if (setq b (vlax-ldata-get dict (car a) nil));_(vlax-ldata-get "GSLS" "#gsls_ctbl#" nil)
  7.        (set (read (car a)) (read b))
  8.        (if (and (cdr a) (= (type (cdr a)) 'STR) (snvalid (cdr a)))
  9.          (progn (vlax-ldata-put dict (car a) (cdr a))
  10.          (set (read (car a)) (read (cdr a)))))))))
  11.      l)
  12.     )
  13.   )
  14. ;;; 保存自己的词典数据
  15. (defun ss-ldata-put  (dict l)
  16.   (if (snvalid dict)
  17.     (mapcar (function (lambda (a / b)
  18.    (if (and (car a) (= (type (car a)) 'STR) (snvalid (car a)))
  19.      (if (or (setq b (vl-prin1-to-string (eval (read (car a)))))
  20.       (setq b (cdr a)))
  21.        (vlax-ldata-put dict (car a) b)))))
  22.      l)
  23.     )
  24.   )

使用举例:

  1. (defun c:ss_CSSZ(/ dialog_name dialog_column_name)
  2.   (setq dialog_name    "高山流水结构工具箱"
  3. dialog_column_name "全局参数设置")
  4.   (ss-ldata-get "GSLS" (list (cons "#GSLS_CTBL#" "100.0")
  5.          (cons "#GSLS_HTBL#" "1.0")
  6.          (cons "#GSLS_WK_PYJL#" "0.0")
  7.          (cons "#GSLS_pline_union_max_distance#" "5.0")
  8.          (cons "gsls_pline_wid" "50.")
  9.          (cons "gsls_pline_off" "200.")
  10.          (cons "CS_YDIS" "1.2")
  11.          (cons "gsls_hatchpat_path" ""F:\\\\结构填充图案"" )
  12.          (cons "gsls_hgj_gjzj" "30.0")
  13.                 (cons "gsls_filletrad" "100.0")))
  14.   (if (= (init initlist-acad "dlg" "gslstool.ini") 1)
  15.     (progn
  16.      (ss-ldata-put "GSLS" (list (cons "#GSLS_CTBL#" "100.0");_(vlax-ldata-get "GSLS" "#GSLS_CTBL#")
  17.          (cons "#GSLS_HTBL#" "1.0")
  18.          (cons "#GSLS_WK_PYJL#" "0.0")
  19.          (cons "#GSLS_pline_union_max_distance#" "5.0")
  20.          (cons "gsls_pline_wid" "50.")
  21.          (cons "gsls_pline_off" "200.")
  22.          (cons "CS_YDIS" "1.2")
  23.          (cons "gsls_hatchpat_path" ""F:\\\\结构填充图案"" )
  24.          (cons "gsls_filletrad" "100.0")))
  25.     (princ "\n高山流水结构工具箱全局参数初始化成功!")
  26.     )
  27.     (princ "\n***初始化失败,命令被取消***"))
  28.   (princ)
  29.   )

点评

ldata 保存是最简单易用方法,环境变量一直没有见到 Autodesk 全面官方介绍  详情 回复 发表于 2014-10-18 09:33
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-18 09:33:07 | 显示全部楼层
高山流水 发表于 2014-10-17 22:54
WIN7 64位 需要管理员身份才能修改注册表。
个人认为,插件全局变量最好不要在注册表中保存,一来图纸较多 ...

ldata 保存是最简单易用方法,环境变量一直没有见到 Autodesk 全面官方介绍



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 05:26 , Processed in 0.178841 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表