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