お知らせ

--------------------------------------------------

プログラム作成/コンサルティングの申し込みはこちら

--------------------------------------------------

2010年10月25日月曜日

.NET - DLL ファイルを自動的にロードする(AutoCAD 2011)

先日いただいたアンケートで、.NET を自動的にロードする方法の質問があったので、今日はそれについて書こうと思います。

手動では、NETLOAD コマンドを実行して .DLL ファイルをロードすると、.NET で作成したコマンドが使用できるようになります。

ただし、これだと AutoCAD を起動する度に実行しなきゃいけないので、面倒ですよね。

そこで、勝手にロードされる方法としては、以下のような方法があります。

【acad.lsp でロードする】
acad.lsp に以下の記述を追加しておくと、AutoCAD 起動時に自動的にロードされます。
(例として、AVDO_Point.dll をロードする内容にしています。)

;---------------------------------------------------
(defun-q MYSTARTUP ()
(command "NETLOAD" "AVDO_Point.dll")
(princ)
)

(setq S::STARTUP (append S::STARTUP MYSTARTUP))
;---------------------------------------------------

acad.lsp がどこにあるかは、コマンド ラインに (findfile "acad.lsp") と入力すると確認できます。

そのとき nil が返ってきたら、acad.lsp がないということなので、メモ帳などで新たに作ってサポート ファイルの検索パスにあるどこかのフォルダに置いてください。

【レジストリにデマンドロードの設定を追加する】
これは、.NET で作ったアプリケーションをインストーラでインストールするときに、設定しておくときに使えばいいんじゃないかと思います。

でも、reg ファイルを作って手動でレジストリに追加するってこともできます。

reg ファイルの例としては、以下のとおりです。

;---------------------------------------------------
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R18.1\ACAD-9001:411\Applications\AVDO_Point]
"DESCRIPTION"="ACAD Video"
"LOADER"="C:\\Program Files\\Autodesk\\AutoCAD 2011\\acadvideo\\AVDO_Point.dll"
"LOADCTRLS"=dword:00000002
"MANAGED"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R18.1\ACAD-9001:411\Applications\AVDO_Point\Commands]
"AVDO_DDPTYPE"="AVDO_DDPTYPE"
"AVDO_Point"="AVDO_Point"
"AVDO_POINT_EVENT"="AVDO_POINT_EVENT"
"AVDO_POINT_EVENT_REMOVE"="AVDO_POINT_EVENT_REMOVE"


[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R18.1\ACAD-9001:411\Applications\AVDO_Point\Groups]
"AVDO_Point"="AVDO_Point"
;---------------------------------------------------

"LOADER"="C:\\Program Files\\Autodesk\\AutoCAD 2011\\acadvideo\\AVDO_Point.dll" のとことでロードする .DLL ファイルを指定しています。

"LOADCTRLS"=dword:00000004 のところで、どんなときにロードするかを指定しています。
dword:00000002 は、AutoCAD 起動時にロードするということです。
dword:00000004 は、コマンド実行時にロードするということです。ロードするものがいっぱいあって、AutoCAD の起動が遅い時とかはこれにしておく方がいいかも。
他の値もあるみたいですが、管理人はよく分かっていません。(ARX のときに使う値かも???)

[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R18.1\ACAD-9001:411\Applications\AVDO_Point\Commands] の下にコマンド名を書いています。

[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R18.1\ACAD-9001:411\Applications\AVDO_Point\Groups] の下に、コマンド グループ名を書いています。

0 件のコメント:

コメントを投稿