Autocad、中望CAD自动加载程序研究(注册表法、acad.rx、acaddoc.lsp或acad.lsp)
一、使用注册表
假设你的arx文件名字是aaa.arx绝对路径是c:\aaa.arx
(1)Autocad:拿cad13做例子
在注册表路径下HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R19.0\ACAD-B001:804\Applications
(2)ZWCAD:中望CAD机械版2017
注册表路径:HKCU\Software\ZwSoft\Zwcadm\2017\zh-CN\Applications
新建子项aaa(名字随意起,只要不重复)
在项下新建如下两个值
LOADCTRLS 类型:DWORD 值:2
LOADER 类型:字符串 值:D:\ObjectARX 2013\samples\database\ARXDBG\x64\Debug\arxdbg.arx
这个是写在当前用户下(HKEY_CURRENT_USER),也可以写在HKEY_LOCAL_MACHINE下,写在当前机器下,那么对于任意一个用户都是自动加载的
Atuocad2014及以上步骤一致,但是需要注意cad14以上的版本需要添加你arx所在路径到可信任路径上
以Autocad2014为例:
HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R19.1\ACAD-D001:804\Profiles\
<<未命名配置>>\Variables
下新建值 TRUSTEDPATHS 值类型:可扩展字符串
值:你arx所在路径在本文中就是C:\
如果值已经存在则修改值,点击修改,在字符串最后加上;c:\就可以了
我举得例子是在未命名配置下举得例子,你需要那个配置就在那个配置下的Variables做如上修改
附注:注册表键值"LOADCTRLS"控制说明,控制ARX程序的加载方式(上例中使用的是Ox02随CAD启动一起加载)
0x01:Load the application upon detection of proxy object.
当代理对像被控知时加载相应ARX程序.
0x02:Load the application upon AutoCAD startup.
当AutoCAD启动时加载相应ARX程序.
0x04:Load the application upon invocation of a command.
当输入命令时加载相应ARX程序.
0x08:Load the application upon request by the user or another application.
当有用户或别的程序请求时加载相应ARX程序.
0x10:Do not load the application.
从不加载该应用程序.
0x20:Load the application transparently.
显式加载该应该程序.(不知该项译法是否有误)
使用批处理进行注册例子:
@echo off
set TargetPath=%1
if "%TargetPath%" == "" (Set TargetPath=ZcPluginsLoader.zrx)
echo TargetPath=%TargetPath%
if not exist "%TargetPath%" (Set TargetPath=%~dp0%TargetPath%)
reg add HKCU\Software\ZwSoft\Zwcadm\2017\zh-CN\Applications\ZcPlugin /f
reg add HKCU\Software\ZwSoft\Zwcadm\2017\zh-CN\Applications\ZcPlugin /v LOADER /t REG_SZ /d %TargetPath% /f
reg add HKCU\Software\ZwSoft\Zwcadm\2017\zh-CN\Applications\ZcPlugin /v LOADCTRLS /t REG_DWORD /d 2 /f
二:acad.rx实现自动加载arx(中望为zwcad.rx)
我的arx路径是C:\myarx\test.arx
1.在 C:\myarx\ 下新建acad.rx文件
在里面写入test.arx(注意如果有多个arx,则每一个arx文件名 占据一行)
2.这种方法必须保证 acad.rx 所在路径在搜索路径下,对注册表做如何修改
HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R19.0\ACAD-B001:804\Profiles\<<未命名配置>>\General
下的ACAD在里面的路径中添加C:\myarx; 注意最后必须以分号结尾 切记
当然我这里实在默认的配置(<<未命名配置>>),并且是在cad13上做的实验
请大家根据自己的实际情况做改变
三.acaddoc.lsp或acad.lsp实现自动加载arx(中望为zwcaddoc.lsp/zwcad.lsp)
我的arx路径是C:\myarx\test.arx
1.在 C:\myarx\ 下新建acaddoc.lsp文件(也可以创建acad.lsp只不过acad.lsp只能在autocad启动时加载一次)
在里面写入
(defun S::STARTUP() ;函数名不可以改变
(arxload " test .arx") ;test .arx 为相对路径也可用绝对路径
)
我从网上看到的代码是
(defun S::STARTUP() ;函数名不可以改变
(command "_netload" "my.dll"); my.dll为相对路径也可用绝对路径
) 这个代码不能成功,应该不是这个代码不正确,应该是随着版本升级atuolisp函数也发生了变化
2.如同第一种方法所示你需要将autocad.lsp所在文件夹的路径添加到acad中(你不加进去cad怎么知道去哪加载acaddoc.lsp呢)对注册表做如何修改
HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R19.0\ACAD-B001:804\Profiles\<<未命名配置>>\General
下的ACAD在里面的路径中添加C:\myarx; 注意最后必须以分号结尾 切记
当然我这里实在默认的配置(<<未命名配置>>),并且是在cad13上做的实验