明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4431|回复: 12

[经验] 自动启动的方法有哪些?

[复制链接]
发表于 2016-2-28 17:48:33 | 显示全部楼层 |阅读模式
20明经币
我知道有这么几种方法:
1、用appload放到启动组里面,但似乎无法用lisp自动实现
2、修改acad.lsp文件
3、修改acad.mnl文件
之前用了学院派工具箱,发现它没有动这3个地方,后来发现它修改了注册表,但是这个注册表的位置是如何确定的,比如我在CASS里面加载,它是修改了HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.2\ACAD-4001:804\Profiles\CASS80\General里面的ACAD项,但是如果在CAD2002里面加载,它是修改了HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R15.0\ACAD-1:804\Profiles\<<未命名配置>>\General里面的ACAD项,这个注册表的位置是如何确定的呢?

最佳答案

查看完整内容

楼主要求的注册表位置可以通过下面的代码读到 再用vl-registry-write就可以修改了
发表于 2016-2-28 17:48:34 | 显示全部楼层
楼主要求的注册表位置可以通过下面的代码读到

  1. (vl-registry-read
  2.   (strcat "HKEY_CURRENT_USER\\"
  3.           (vlax-product-key)
  4.           "\\Profiles\\"
  5.           (getvar "CPROFILE")
  6.           "\\General"
  7.   )
  8.   "ACAD"
  9. )


再用vl-registry-write就可以修改了
回复

使用道具 举报

发表于 2016-2-29 11:37:48 | 显示全部楼层
做个标记 坐等答案。
回复

使用道具 举报

发表于 2016-2-29 12:38:01 | 显示全部楼层
下面是我的工具箱的安装程序,看看能用上吗




;;将此文件拖入ACAD绘图区即可自动安装L工具箱
(vl-load-com)

(defun load_ltools(/ GetFileAtt SetFileAtt vldos-copy fl fr fw item l_str att)
  (defun GetFileAtt (fp / fso fl attr)
    (if  (and fp (/= "" fp))
      (progn
      (setq fso (vlax-create-object "Scripting.FileSystemObject"))
      (setq fl (vlax-invoke-method fso 'GetFile fp))
      (setq attr (vlax-get-property fl 'Attributes))
      (vlax-release-object fl)
      (vlax-release-object fso)
      )
    )
    attr
  )
  (defun SetFileAtt (fp flag / fso fl)
    (if  (and fp (/= "" fp) flag)
      (progn
      (setq fso (vlax-create-object "Scripting.FileSystemObject"))
      (setq fl (vlax-invoke-method fso 'GetFile fp))
      (vlax-put-property fl 'Attributes flag)
      (vlax-release-object fl)
      (vlax-release-object fso)
      )
    )
  )
  (Defun vldos-copy (from to / sys folder)
    (if (setq sys (vlax-get-or-create-object "Shell.Application"))
      (progn
        (if (setq folder (vlax-invoke-method sys 'namespace to))
           (progn
             (vlax-invoke-method folder 'copyhere from (+ 4 16))
             (vlax-release-object folder)
           )
        )
        (vlax-release-object sys)
      )
    )
    (princ)
  )

  (if (not (wcmatch (strcase (getenv "ACAD")) (strcat "*" (strcase path) "*")))
    (setenv "ACAD" (strcat path ";" (getenv "ACAD")))
  )
  (if (>= 20 (atoi (substr (getvar "acadver") 1 4)) 17)
    (progn
    (vldos-copy (strcat path "\\DWG To PDF LT.pc3") (getenv "PrinterConfigDir"))
    (vldos-copy (strcat path "\\DWG To PDF LT.pmp") (getenv "PrinterDescDir"))
    )
  )
  (if (setq fl (findfile "acaddoc.lsp"))
    (progn
      (setq fr (open fl "r"))
      (while (setq item (read-line fr))
        (setq l_str (append l_str (list item)))
      )
      (close fr)
      (setq l_str (append (vl-remove "(load \"ltools\" nil)" l_str) (list "(load \"ltools\" nil)")))
      (if (setq fr (open fl "w"))
        (progn
          (foreach itm l_str (write-line itm fr))
          (close fr)
        )
        (progn
          (setq att (GetFileAtt fl))
          (SetFileAtt fl 0)
          (setq fr (open fl "w"))
          (foreach itm l_str (write-line itm fr))
          (close fr)
          (SetFileAtt fl att)
        )
      )
    )
    (if (setq fw (open (strcat path (if (wcmatch path "*\\") "" "\\") "acaddoc.lsp") "w"))
      (progn
        (write-line "(load \"ltools\" nil)" fw)
        (close fw)
      )
      (prompt "\n无法自动加载L工具箱!")
    )
  )
  (setenv "ltools-menuon" "0")
  (load str nil)
  (c:loadlt)
  (prompt "\n安装成功,点击工具面板上的“卸载程序”可自动卸载!")
)

(cond
  ((not (>= 20.0 (atoi (substr (getvar "acadver") 1 4)) 16.0)) (prompt "\n安装失败,不支持的AutoCAD版本!"))
  (c:loadlt (prompt "\n已安装了L工具箱,不需要再安装!"))
  (T
    (princ "\n")
    (setq path (getvar "lastprompt"))
    (if (wcmatch (strcase path) "*(LOAD \"*")
      (setq str (vl-string-search "(LOAD \"" path)
            path (substr path (+ str 8) (- (vl-string-search "\")" path) str 7))
      )
    )
    (if (and path (setq path (vl-string-translate "/" "\\" (vl-filename-directory path)))
             (setq str (strcat path (if (wcmatch path "*\\") "" "\\") "ltools.vlx"))
             (findfile str)
        )
      (load_ltools)
      (progn
        (while (and (setq str (getfiled "请选择安装目录下的“ltools.vlx”文件" "ltools" "vlx" 0)) (not (wcmatch (strcase str) "*LTOOLS.VLX"))))
        (if str
          (progn
            (setq path (substr str 1 (- (strlen str) 12)))
            (if (not (wcmatch path "*\\*")) (setq path (strcat path "\\")))
            (load_ltools)
          )
          (prompt "\n安装失败,你已取消了L工具箱的安装!")
        )
      )
    )
  )
)
(setq path nil str nil load_ltools nil)
(princ)
回复

使用道具 举报

 楼主| 发表于 2016-2-29 17:25:17 | 显示全部楼层
ludaweb 发表于 2016-2-29 12:38
下面是我的工具箱的安装程序,看看能用上吗

你采用的是修改安装目录下的acaddoc.lsp文件
回复

使用道具 举报

发表于 2016-2-29 18:41:30 | 显示全部楼层
qiuhai1991 发表于 2016-2-29 17:25
你采用的是修改安装目录下的acaddoc.lsp文件

对的,如果是原生态的CAD,是没有acaddoc.lsp文件的,这个安装文件把你的程序目录添加到CAD的支持目录里面,然后在你程序目录里面生成一个acaddoc.lsp文件并添加程序加载内容保存。
如果安装过其他的CAD软件,比方说天正,天正目录里面会有acaddoc.lsp,这个安装文件则把你的程序目录添加到CAD的支持目录里面,然后在当前的acaddoc.lsp文件内添加你的程序加载内容并保存。


这个是一个比较绿色的软件安装方法,我这里还有卸载程序的部分,也就是删除acaddoc.lsp文件内添加的内容,取消cad支持目录。
回复

使用道具 举报

发表于 2016-2-29 21:05:54 | 显示全部楼层
其实使用网上安装打包程序可以制成exe 安装文件,通过在里面编写脚步,可以自动加载和安装目录自定义及CAD搜索路径定义
回复

使用道具 举报

发表于 2016-3-2 22:37:30 | 显示全部楼层
j15tty 发表于 2016-2-29 21:05
其实使用网上安装打包程序可以制成exe 安装文件,通过在里面编写脚步,可以自动加载和安装目录自定义及CAD搜 ...

这个打包成exe程序怎么弄啊
回复

使用道具 举报

发表于 2016-3-2 23:17:05 | 显示全部楼层
陈进佳 发表于 2016-3-2 22:37
这个打包成exe程序怎么弄啊

置顶贴子
http://bbs.mjtd.com/forum.php?mo ... &fromuid=361828
回复

使用道具 举报

发表于 2016-3-3 15:37:28 | 显示全部楼层
jltx123456 发表于 2016-3-2 23:17
置顶贴子
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=35156&fromuid=361828

网盘崩溃..........
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-20 20:29 , Processed in 0.195960 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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