自动启动的方法有哪些?
我知道有这么几种方法: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-read
(strcat "HKEY_CURRENT_USER\\"
(vlax-product-key)
"\\Profiles\\"
(getvar "CPROFILE")
"\\General"
)
"ACAD"
)
再用vl-registry-write就可以修改了 做个标记 坐等答案。 下面是我的工具箱的安装程序,看看能用上吗
;;将此文件拖入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) ludaweb 发表于 2016-2-29 12:38 static/image/common/back.gif
下面是我的工具箱的安装程序,看看能用上吗
你采用的是修改安装目录下的acaddoc.lsp文件
qiuhai1991 发表于 2016-2-29 17:25 static/image/common/back.gif
你采用的是修改安装目录下的acaddoc.lsp文件
对的,如果是原生态的CAD,是没有acaddoc.lsp文件的,这个安装文件把你的程序目录添加到CAD的支持目录里面,然后在你程序目录里面生成一个acaddoc.lsp文件并添加程序加载内容保存。
如果安装过其他的CAD软件,比方说天正,天正目录里面会有acaddoc.lsp,这个安装文件则把你的程序目录添加到CAD的支持目录里面,然后在当前的acaddoc.lsp文件内添加你的程序加载内容并保存。
这个是一个比较绿色的软件安装方法,我这里还有卸载程序的部分,也就是删除acaddoc.lsp文件内添加的内容,取消cad支持目录。 其实使用网上安装打包程序可以制成exe 安装文件,通过在里面编写脚步,可以自动加载和安装目录自定义及CAD搜索路径定义 j15tty 发表于 2016-2-29 21:05 static/image/common/back.gif
其实使用网上安装打包程序可以制成exe 安装文件,通过在里面编写脚步,可以自动加载和安装目录自定义及CAD搜 ...
这个打包成exe程序怎么弄啊
陈进佳 发表于 2016-3-2 22:37 static/image/common/back.gif
这个打包成exe程序怎么弄啊
置顶贴子
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=35156&fromuid=361828 jltx123456 发表于 2016-3-2 23:17 static/image/common/back.gif
置顶贴子
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=35156&fromuid=361828
网盘崩溃..........
页:
[1]
2