« PDF作成の自動化・省力化 [6] (CADのPDF化 : LISPスクリプト部分) | トップページ | AutoCAD LT カスタマイズ [2](図面ファイルを開く) »

2009年7月17日 (金)

AutoCAD LT カスタマイズ [1](AutoCAD LTへのコマンド送信)

今、ある仕事で"AutoCAD LT"のカスタマイズをしています。
AutoCAD LTはレギュラー版AutoCADやIntelliCADとは違ってLISPやC言語プログラムインターフェース(AutoCADのADS, IntelliCADのSDS)が使えないので独特のプログラミングをしなければなりません。

入手した文献「使える!AutoCAD&LT カスタマイズブック」(中森隆道/井澤文秀共著 ソフトバンククリエイティブ)を参考に仕事を進めている。

仕事で対象としている環境は
AutoCAD LT 2004
Access 2000
Visual Basic 6
です。


[1] SendKeysが確実にAutoCADへコマンドを送信しない。

まずテストプログラムをExcelで作成してみました。上記文献ではVBAからAutoCADへコマンドを送信する方法として

AppActivate "AutoCAD"
SendKeys "コマンド文字列...."

という方法が使われています。
ところがこの方法でテストプログラムを作成してExcelのボタンイベントから実行してみると、どうも動作が確実でないのです。AutoCADはアクティブになったけど、その後のコマンドがAutoCADへ送信されないでどこかへ(?)行ってしまった、という現象が高頻度で発生します。

AppActivateでアクティブウインドウが切り替わるよりも先にSendKeysが実行されてしまうのだろうか?
AppActivateとSendKeysの間にWin32APIのSleep()を入れることではだめだった。

結局、この現象の原因とか対処方法を深く調べることはしないで、Win32APIのよる方法(WM_COPYDATAメッセージによる)を進めることにした(上記文献では第7章と第8章で述べられている)。この方法の方がコマンドの送信先ウインドウを明示的に指定できるので確実な動作が期待できるかもしれない。

具体的にはAutoCADへコマンドを送信する関数をC言語で作成し、VB/VBAからも呼べるDLLにまとめました。開発環境としてVisual C++ Ver 6 を使用。

« PDF作成の自動化・省力化 [6] (CADのPDF化 : LISPスクリプト部分) | トップページ | AutoCAD LT カスタマイズ [2](図面ファイルを開く) »

ソフトウエア」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: AutoCAD LT カスタマイズ [1](AutoCAD LTへのコマンド送信):

« PDF作成の自動化・省力化 [6] (CADのPDF化 : LISPスクリプト部分) | トップページ | AutoCAD LT カスタマイズ [2](図面ファイルを開く) »