找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 9235|回复: 50

[原创]:轻松写CAD“启动组”函数(公开源代码)

[复制链接]
发表于 2004-4-1 16:53:47 | 显示全部楼层 |阅读模式

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

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

×
源程序在5楼

这是一组写 CAD“启动组”的函数,只要把:(hqd_wrStartup str)
函数写入你自已的程序里,该程序在AUTOCAD下次启动时就能自动加载。
  该API包含两个函数:

1. 读CAD“启动组”函数

   函数名: hqd_readStartup
   调用方法:该函数没有变量,可直接调用。
   返回值:表 否则为NIL。
   Example:(hqd_readStartup)

2. 写CAD“启动组”函数

   函数名: hqd_wrStartup
   调用方法:(hqd_wrStartup str)
   返回值:写入成功返回字符串,否则为NIL。
   Example:(hqd_wrStartup (findfile "hqd_WrStartup.lsp"))

本帖被以下淘专辑推荐:

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

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-4-2 12:18:42 | 显示全部楼层
  1. ;;当前配置
  2. (defun GetstartupKey ()
  3.   (strcat "HKEY_CURRENT_USER\"
  4.           (vlax-product-key)
  5.           "\\Profiles\"
  6.           (vlax-get-property
  7.             (vlax-get-property
  8.               (vlax-get-property (vlax-get-acad-object) 'Preferences)
  9.               'Profiles
  10.             )
  11.             'activeprofile
  12.           )
  13.           "\\Dialogs\\Appload\\Startup"
  14.   )
  15. )
  16. ;;自动加载文件数量
  17. (defun getStartNum (/ acProfile num)
  18.   (setq        num (vl-registry-read
  19.               (getstartupkey)
  20.               "NumStartup"
  21.             )
  22.   )
  23.   num
  24. )
  25. ;;获取加载文件列表
  26. (defun GetStartup (/ n startgroup)
  27.   (if (not (zerop (setq n (read (getstartnum)))))
  28.     (progn
  29.       (repeat n
  30.         (setq startgroup
  31.                (cons (vl-registry-read
  32.                        (getstartupkey)
  33.                        (strcat (itoa n)
  34.                                "Startup"
  35.                        )
  36.                      )
  37.                      startgroup
  38.                )
  39.         )
  40.         (setq n (1- n))
  41.       )
  42.     )
  43.   )
  44.   startgroup
  45. )
  46. ;;写自动加载
  47. ;; path 自动加载文件,包括全路径
  48. ;; 注意要用 \\ 代替 \
  49. (defun PutStartup (path / n)
  50.   (setq n (getstartnum))
  51.   (vl-registry-write
  52.     (strcat (getstartupkey)
  53.             "\"
  54.             (strcat (itoa (1+ n))
  55.                     "Startup"
  56.             )
  57.     )
  58.     path
  59.   )
  60.   (vl-registry-write
  61.     (strcat (getstartupkey)
  62.             "\\NumStartup"
  63.     )
  64.     (atoi (1+ n))
  65.   )
  66. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-4-1 19:11:59 | 显示全部楼层
CAD的启动组有时比较健忘。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2004-4-2 15:09:14 | 显示全部楼层

源代码

既然大家感兴趣,就贴出源代码大家共同讨论并完善。多谢eachy斑主捧场。

好像CAD各版本“启动组”在注册表中的位置不尽相同.


  1.   [FONT=courier new]
  2. ;;;2004-4-1 By HQD9639
  3. ;;;Version 0.1 FOR CAD2002
  4. (defun hqd_ReadStartup (/ Snum ldf Slst)
  5.    (setq Snum 1)
  6.    (setq Slst '())
  7.    (while (setq ldf (vl-registry-read (strcat "HKEY_CURRENT_USER\"
  8.                                     (vlax-product-key) "\\Profiles\"
  9.                                    (getvar "CPROFILE") "\\Dialogs\\Appload\\Startup"
  10.                             )
  11.                             (strcat (itoa Snum) "Startup")
  12.                 )
  13.           )
  14.           (setq Slst (append Slst (list ldf)))
  15.           (setq Snum (1+ Snum))  
  16.   )
  17.   (if Slst  Slst nil)
  18. )
  19. ;;;
  20. (defun hqd_WrStartup (lsptf / check_lf Snum ldf)
  21.   (if (= (type lsptf) 'STR)
  22.      (progn
  23.         (if (findfile lsptf)
  24.             (progn  
  25.                (setq check_lf T)
  26.                (setq Snum 1)
  27.                (while (setq ldf (vl-registry-read (strcat "HKEY_CURRENT_USER\"
  28.                                                       (vlax-product-key) "\\Profiles\"
  29.                                                       (getvar "CPROFILE") "\\Dialogs\\Appload\\Startup"
  30.                                                   )
  31.                                                   (strcat (itoa Snum) "Startup")
  32.                                 )
  33.                      )
  34.                      (if (equal ldf lsptf) (setq check_lf nil))   
  35.                      (setq Snum (1+ Snum))      
  36.                )
  37.                (if check_lf
  38.                   (progn
  39.                       (vl-registry-write (strcat "HKEY_CURRENT_USER\"
  40.                                              (vlax-product-key) "\\Profiles\"
  41.                                              (getvar "CPROFILE") "\\Dialogs\\Appload\\Startup"
  42.                                          )
  43.                                          (strcat (itoa Snum) "Startup") lsptf
  44.                       )
  45.                       (vl-registry-write (strcat "HKEY_CURRENT_USER\"
  46.                                              (vlax-product-key) "\\Profiles\"
  47.                                              (getvar "CPROFILE") "\\Dialogs\\Appload\\Startup"
  48.                                          )
  49.                                          "NumStartup" (itoa Snum)
  50.                      )  
  51.                      lsptf     
  52.                   )  
  53.                   nil
  54.               )
  55.            )
  56.            nil
  57.          )
  58.       )
  59.       nil
  60.   )  
  61. )
  62.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-4-2 15:22:02 | 显示全部楼层

Re: 源代码

最初由 hqd9639 发布
[B]既然大家感兴趣,就贴出源代码大家共同讨论并完善。多谢eachy斑主捧场。

好像CAD各版本“启动组”在注册表中的位置不尽相同.

[CODE]
  
;;;2004-4-1 By HQD9639
;;;Version 0.1 FOR CAD2... [/B]


我观察了2002 2004 2005 的键值(WinXP)是一样的,用98和2000的或许不同。

另:

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

使用道具 举报

发表于 2004-7-28 17:02:50 | 显示全部楼层
问个外行话,不知5楼楼主的代码怎么用?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-28 17:20:55 | 显示全部楼层
请问隐藏内容是什么呀?

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

使用道具 举报

发表于 2006-11-28 02:33:11 | 显示全部楼层
5楼的代码是没有主程序的,在4楼有,4楼eachy给限制掉了,好苛刻!目的是为了大家交流,还藏起来了,积分怎么又这么多,到现在我还不止到怎么弄几分呢,可心个人之,绝大多数都没有积分的,怎么交流呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-28 09:54:10 | 显示全部楼层
最初由 jx2008 发布
[B]5楼的代码是没有主程序的,在4楼有,4楼eachy给限制掉了,好苛刻!目的是为了大家交流,还藏起来了,积分怎么又这么多,到现在我还不止到怎么弄几分呢,可心个人之,绝大多数都没有积分的,怎么交流呢? [/B]


我觉得这网站太不厚道!!!
本来就为了交流学习用,
每人水平参差不齐,
还要东限制西限制!!!
严重抗议!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-28 18:19:32 | 显示全部楼层

Re: Re: 源代码

另:

加密的目的是为了促进论坛更好的交流,坚决不欢迎拿了就走,舍不得奉献的人。

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

使用道具 举报

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

使用道具 举报

已领礼包: 1261个

财富等级: 财源广进

发表于 2006-12-12 08:00:17 | 显示全部楼层
提供函数已经算很好的了,有了思路,自己研究就可以了。谢谢,看了自己用 NET 写了一个。

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

使用道具 举报

发表于 2007-3-14 20:12:07 | 显示全部楼层
这个代码是示范性质的,在某些特殊情况下会出错。注册表的读写有一些细节问题要考虑,不是这么简单的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-3-15 17:52:46 | 显示全部楼层
楼主的源代码很精彩。。。很感谢。。受教了。
第一个是-读CAD“启动组”函数,那么读取完了以后呢。能做什么?这个我知道一点点...
第二个是写CAD“启动组”函数,某个程序添加到启动组,没错吧。
我有一个问题:
最重要的是,加到启动组我觉得没必要用lisp来加进去吧! 我手动加就可以了。
如果要用到lisp达到半自动化的话,那么还应该有一个函数,就是把启动组的某个程序拿掉删除,
这样子的话。。。。这个程序就价值就提升不少。。。。呵呵。。
学习。。。学习。。。VLisp的函数还没记住呢。。。呵呵
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 13:46 , Processed in 0.264272 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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