1. 程式人生 > 其它 >Autocad、中望CAD自動載入程式研究(登錄檔法、acad.rx、acaddoc.lsp或acad.lsp)

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上做的實驗