明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1015|回复: 8

ACADXXXX.LSP ACADXXXXDOC.LSP 启动组--加载自适应

[复制链接]
发表于 2021-12-3 19:30 | 显示全部楼层 |阅读模式
本帖最后由 尘缘一生 于 2021-12-3 23:39 编辑

如题:
程序自启动,有几种方式,其中ACADXXXX.LSP  ACADXXXXDOC.LSP  启动组加载方式,也是难以取舍。
比如:启动组方式吧,发现确实有些电脑,注册表BUG,造成启动组方式失败,

为此写了这段程序进行尝试,求得安装BUG烦心,完善与优化之路还需时日。。。

程序会选择 上述方式之一,启动组方式作为备选,
由于我没有使用CAD2022,版本号是否是24.1  ,如果不是,或者其他版本号有误,请告知下

题外话:为什么我在发帖,每次都得退出一次,再登录进来才成呢?

  • ;;cad版本判断-------(一级)----------
  • (defun slcadver (/ num str)
  •   (setq num (atof (substr (getvar "ACADVER") 1 4)))
  •   (cond
  •     ((= num 15.0) (setq str "acad2000.lsp")) ;_CAD2000
  •     ((= num 15.1) (setq str "acad2002.lsp")) ;_CAD2002
  •     ((= num 16.0) (setq str "acad2004.lsp")) ;_CAD2004
  •     ((= num 16.1) (setq str "acad2005.lsp")) ;_CAD2005
  •     ((= num 16.2) (setq str "acad2006.lsp")) ;_CAD2006
  •     ((= num 17.0) (setq str "acad2007.lsp")) ;_CAD2007
  •     ((= num 17.1) (setq str "acad2008.lsp")) ;_CAD2008
  •     ((= num 17.2) (setq str "acad2009.lsp")) ;_CAD2009
  •     ((= num 18.0) (setq str "acad2010.lsp")) ;_CAD2010
  •     ((= num 18.2) (setq str "acad2012.lsp")) ;_CAD2012  
  •     ((= num 19.0) (setq str "acad2013.lsp")) ;_CAD2013
  •     ((= num 19.1) (setq str "acad2014.lsp")) ;_CAD2014
  •     ((= num 20.0) (setq str "acad2015.lsp")) ;_CAD2015
  •     ((= num 20.1) (setq str "acad2016.lsp")) ;_CAD2016
  •     ((= num 21.0) (setq str "acad2017.lsp")) ;_CAD2017
  •     ((= num 22.0) (setq str "acad2018.lsp")) ;_CAD2018
  •     ((= num 23.1) (setq str "acad2020.lsp")) ;_CAD2020
  •     ((= num 24.1) (setq str "acad2022.lsp")) ;_CAD2022
  •   )
  •   (if (= str nil)
  •     (cond
  •       ((= num 15.0) (setq str "acad2000doc.lsp")) ;_CAD2000
  •       ((= num 15.1) (setq str "acad2002doc.lsp")) ;_CAD2002
  •       ((= num 16.0) (setq str "acad2004doc.lsp")) ;_CAD2004
  •       ((= num 16.1) (setq str "acad2005doc.lsp")) ;_CAD2005
  •       ((= num 16.2) (setq str "acad2006doc.lsp")) ;_CAD2006
  •       ((= num 17.0) (setq str "acad2007doc.lsp")) ;_CAD2007
  •       ((= num 17.1) (setq str "acad2008doc.lsp")) ;_CAD2008
  •       ((= num 17.2) (setq str "acad2009doc.lsp")) ;_CAD2009
  •       ((= num 18.0) (setq str "acad2010doc.lsp")) ;_CAD2010
  •       ((= num 18.2) (setq str "acad2012doc.lsp")) ;_CAD2012  
  •       ((= num 19.0) (setq str "acad2013doc.lsp")) ;_CAD2013
  •       ((= num 19.1) (setq str "acad2014doc.lsp")) ;_CAD2014
  •       ((= num 20.0) (setq str "acad2015doc.lsp")) ;_CAD2015
  •       ((= num 20.1) (setq str "acad2016doc.lsp")) ;_CAD2016
  •       ((= num 21.0) (setq str "acad2017doc.lsp")) ;_CAD2017
  •       ((= num 22.0) (setq str "acad2018doc.lsp")) ;_CAD2018
  •       ((= num 23.1) (setq str "acad2020doc.lsp")) ;_CAD2020
  •       ((= num 24.1) (setq str "acad2022doc.lsp")) ;_CAD2022
  •     )   
  •   )
  •   str
  • )

  • ;;写acadxxxx.lsp 自启动语句-----0000级加载---
  • (defun writsetup (/ files lst k strk i str)
  •   (if (setq files (findfile (slcadver)))
  •     (progn
  •       (setq lst (sl_getfile files))
  •       (repeat (setq i (length lst))
  •         (setq strk (nth (setq i (1- i)) lst))
  •         (if (wcmatch strk (strcat "*" "三领设计" "*"))
  •           (setq k t)      
  •         )
  •       )
  •       (if (/= k t)
  •         (progn
  •           (setq str (T-string-subst "/" "\\" (strcat "(load " "\"" (slpath sl-path0) "\\" "三领设计.VLX" "\"" ")")))
  •           (writeendstr files str)
  •         )
  •       )
  •     )
  •   )
  • )
  • ;;主程序部分
  • (if (setq files (findfile (slcadver))) ;;判断acadxxxx.lsp有无启动语句
  •   (progn
  •     (setq lst (sl_getfile files))
  •     (repeat (setq i (length lst))
  •       (setq strk (nth (setq i (1- i)) lst))
  •       (if (not (wcmatch strk (strcat "*" "三领设计" "*")))
  •         (progn
  •           (writsetup) ;;没有写入
  •           (delStartupSuite (strcat (slpath sl-path0) "\\" "三领设计.VLX") "三领设计")  ;删除启动组方式
  •         )
  •       )
  •     )
  •   )
  •   (addToStartupSuite (strcat (slpath sl-path0) "\\" "三领设计.VLX"))   ;没有acadxxxx.lsp加启动组方式
  • )









本帖子中包含更多资源

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

x
发表于 2021-12-4 08:25 | 显示全部楼层
感谢楼主的探索精神。
发表于 2021-12-4 09:15 | 显示全部楼层
谢谢楼主的尝试
发表于 2021-12-4 10:33 | 显示全部楼层
本帖最后由 e2002 于 2021-12-4 10:36 编辑

不建议去改这些系统文件,
要自动加载你的工具,不如直接提供<YourTools>.cuix,然后把加载vlx(fas,lsp)/arx/dll等的语句写在同名的<YourTools>.mnl 中。

另外:1. 每个版本对应的 VerNum可以在帮助文档中查到。
          2. 这个版本与VerNum的对应关系,设为一个 list ,在代码中用assoc获取对应的sYear值,而不是一行又一行的重复写语句。
 楼主| 发表于 2021-12-5 19:24 | 显示全部楼层
本帖最后由 尘缘一生 于 2021-12-5 19:27 编辑
e2002 发表于 2021-12-4 10:33
不建议去改这些系统文件,
要自动加载你的工具,不如直接提供.cuix,然后把加载vlx(fas,lsp)/arx/dll等的 ...
经过几天测试,代码解决我的问题,
MNL文件还是得放CAD支持路径?还是任何一个支持路径?

点评

同名的 xxxx.cuix 与 xxxx.mnl 放在同一个文件夹(其中还有其他的如 dll,vlx...),把这个文件夹加入 Support Path即可。  发表于 2021-12-5 22:25
 楼主| 发表于 2021-12-6 21:07 | 显示全部楼层
本帖最后由 尘缘一生 于 2021-12-6 21:08 编辑
e2002 发表于 2021-12-4 10:33
不建议去改这些系统文件,
要自动加载你的工具,不如直接提供.cuix,然后把加载vlx(fas,lsp)/arx/dll等的 ...

作个万一失败,补救的,慢慢测试

  • ;创建自启动slmenu.mnl文件-----(一级)-----
  • (defun create_mnl (/ mnlpath str)
  •   (setq mnlpath (strcat (slpath sl-path0) "\\" "SLMENU.mnl"))
  •   (setq str (t-string-subst "/" "\\" (strcat "(load " "\"" (slpath sl-path0) "\\" "三领设计.VLX" "\"" ")")))
  •   (rewritefile mnlpath (list str))        
  • )


;;!!!!!!!!!!!!!!!!0000级加载!!!!!!!!!!!!!!!!!!
(defun sl0000 (/ files lst i)
        ;; (vla-put-displayscrollbars (vla-get-display (vla-get-preferences *Acad*)) 0) ;_关闭滚动条,浩辰测试错误
        (sl-lujing) ;;加载三领设计到搜索路径
        ;;(quzds) ;;运行一次,把记录数据增加1次,已移动到绘图比例
        (slcsh0)  ;;变量设置1
        (if (/= sl-path0 nil)
                (progn
                        (slcsh)  ;;变量设置2
                        (set-dimsty 0) ;;标注变量设置并置为当前
                        ;;(xlr-autolayer);------防止天正崩溃(舍弃自动图层)----
                        (menu00) ;;菜单系统
                        (load (strcat (slpath sl-path0)  "\\" "实用程序" "\\" "slsystem.vlx"))
                        (if (/= (setq files (findfile (slcadver))) nil);;判断acadxxxx.lsp有无启动语句
                                (progn
                                        (setq lst (sl_getfile files))
                                        (repeat (setq i (length lst))
                                                (setq strk (nth (setq i (1- i)) lst))
                                                (if (not (wcmatch strk (strcat "*" "三领设计" "*")))
                                                        (progn
                                                                (writsetup) ;;没有写入
                                                                (delstartupsuite (strcat (slpath sl-path0) "\\" "三领设计.VLX") "三领设计")        ;删除启动组方式
                                                        )
                                                )
                                        )
                                )
                                (if (/= (addtostartupsuite (strcat (slpath sl-path0) "\\" "三领设计.VLX")) nil) ;没有acadxxxx.lsp加启动组方式
                                        (princ)
                                        (create_mnl)
                                )
                        )
                        (yhstartcx);;加载用户目录下程序
                        (slwg)  ;;自检
                )
                (sl-lujing)
        )
)
(sl0000)
 楼主| 发表于 2021-12-8 19:46 | 显示全部楼层
e2002 发表于 2021-12-4 10:33
不建议去改这些系统文件,
要自动加载你的工具,不如直接提供.cuix,然后把加载vlx(fas,lsp)/arx/dll等的 ...

经测试,发现MNL方式还是不大好,最后还是选择,两种

  • ;;!!!!!!!!!!!!!!!!0000级加载!!!!!!!!!!!!!!!!!!
  • (defun sl0000 (/ files lst i)
  •   ;; (vla-put-displayscrollbars (vla-get-display (vla-get-preferences *Acad*)) 0) ;_关闭滚动条,浩辰测试错误
  •   (sl-lujing) ;;加载三领设计到搜索路径
  •   ;;(quzds) ;;运行一次,把记录数据增加1次,已移动到绘图比例
  •   (slcsh0)  ;;变量设置1
  •   (if (/= sl-path0 nil)
  •     (progn
  •       (slcsh)  ;;变量设置2
  •       (set-dimsty 0) ;;标注变量设置并置为当前
  •       ;;(xlr-autolayer);------防止天正崩溃(舍弃自动图层)----
  •       (menu00) ;;菜单系统
  •       (load (strcat (slpath sl-path0)  "\\" "实用程序" "\\" "slsystem.vlx"))
  •       (if (/= (setq files (findfile (slcadver))) nil);;判断acadxxxx.lsp有无启动语句
  •         (progn
  •           (setq lst (sl_getfile files))
  •           (repeat (setq i (length lst))
  •             (setq strk (nth (setq i (1- i)) lst))
  •             (if (not (wcmatch strk (strcat "*" "三领设计" "*")))
  •               (progn
  •                 (writsetup) ;;没有写入
  •                 (delstartupsuite (strcat (slpath sl-path0) "\\" "三领设计.VLX") "三领设计")  ;删除启动组方式
  •               )
  •             )
  •           )
  •         )
  •         (if (/= (addtostartupsuite (strcat (slpath sl-path0) "\\" "三领设计.VLX")) nil) ;没有acadxxxx.lsp加启动组方式
  •           (princ)
  •           (create_mnl)
  •         )
  •       )
  •       (yhstartcx);;加载用户目录下程序
  •       (slwg)  ;;自检
  •     )
  •     (sl-lujing)
  •   )
  • )
  • (sl0000)

发表于 2022-4-24 16:11 | 显示全部楼层
大师说的对

有些电脑启动加载失效
不知何因?
CAD启动组不自动加载?同一个文件有的电脑能自动加载,有的电脑无法加载,
大师能指点一下?谢谢


本帖子中包含更多资源

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

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-29 03:23 , Processed in 0.194627 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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