Autocad、中望CAD自动加载程序研究(注册表法、acad.rx、acaddoc.lsp或acad.lsp)

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上做的实验  

 

Autocad、中望CAD自动加载程序研究(注册表法、acad.rx、acaddoc.lsp或acad.lsp)_第1张图片

 

你可能感兴趣的:(objectarx)