初期化、終了処理関数 LTCustomizer21 for AutoCAD LT リファレンスマニュアル

ActiveX
    Function init([cad_ver As String = "1"]) As Integer
    Function term() As Boolean
C/C++
    int WINAPI LTC_init(const wchar_t *cad_ver="1");
    int WINAPI LTC_term();

パラメータ
cad_ver:通信するCADの種類、バージョン。複数指定する場合はカンマで区切る。AutoCAD LTは0を指定する。AutoCAD 2014は19を指定。AutoCAD2000/2000i/2002は15を指定。AutoCAD2004/2005は16を指定。複数指定した場合の優先順位は左から順に優先されます。(例:init("0,19,15,14"))

AutoCADの各バージョンのこの数値は、AutoCAD起動前にVisualStudioのDDESPYユーティリティを予め起動して確かめてください。"AutoCAD.r数値.DDE"というサービス名をAutoCAD起動時に取得できるはずです。

何も指定しない場合、AutoCAD LTのみ通信します。(LTのバージョンは区別しませんがLT2014以降のバージョンになります)

OEMバージョンのAutoCADを使用する場合
OEMバージョンのAutoCADを使用する場合はDDEサーバーのサービス名が違うので、あらかじめ開発ツール(Visual Studioなど)の中にあるDDE SPYユーティリティを使用してサービス名を特定しておく必要があります。それからOEMバージョンを示す識別子'o'を使用して通信します。また、この識別子はこれまでの指定方法をより汎用化させたものです。したがってAutoCADやAutoCAD LTもこの識別子を使って初期化できます。
以下の例ではAutoCAD LTをoオプションを使って通信する時の例です。

例: init ("o'AutoCAD LT.DDE'")

シングルクオーテーションマークで区切ったものがDDEサービス名です。

返り値
成功した場合、1以上の値が返されます。複数のCADを指定している場合、通信に成功したCADのバージョンが引数の何番目に書かれてあるかその番号が返されます。上の例では、仮にAutoCAD2014が通信に成功した場合3が返されます。失敗した場合、0を返します。
Falseもしくは0: 失敗

説明

LTCustomizer21を初期化または終了処理を行います。初期化は必ず行ってください。またCのDLLとして使用する場合は必ずLTC_term()は実行してください。ActiveXとして使用する場合は、term()は呼び出さなくても構いません(何度もinit()する場合は必要です)。

LTCustomizer21使用アプリケーションから起動するCADの指定の仕方(LTC21.cfgの記述方法)

もし、指定のCADが起動されていない場合、LTC21.cfgに起動するCADを指定しておくことで、指定したCADを起動した後(CADのコマンドプロンプトが出るまで待ちます)、初期化処理を行うようになります。

LTCustomizer21は、LTC21.cfgを文字コードがUNICODE(UTF-16LE)で記述したテキストファイルで、LTCustomizer21使用アプリケーションのあるパスに存在するものと想定して読み込みます。

なお、LTC21.cfgの記述が間違うなどの理由により、指定のCADが起動しない場合は、すぐに関数が戻り(0が関数値となります)、もしくは起動してもコマンドプロンプトが表示されない(オーソライズされていないCADが出すダイアログボックスが出ているときなど)は約1分待った後、関数は0を返します。この待ち時間はLTC21.cfgの中でREADY TIME=待ち時間(単位は分)で変更可能です。

LTC21.cfgで指定したCADを起動するフォーマットは

RUN=acad.exeもしくはaclt.exeの存在するファイルのフルパス(ファイル名まで記述すること)
もしくは、
RUN=AutoCADもしくはAutoCAD LTのCLSID

もしくは

RUN=HKEY_から始まるレジストリ名
です。

 CLSIDとはアプリケーションを認識する一意な数値の羅列です。例えばAutoCAD 2014のCLSIDは{6A221957-2D85-42A7-8E19-BE33950D1DEB}です。現在利用しているAutoCAD LTまたはAutoCADが1つなら、レジストリエディタのHKEY_CLASSES_ROOT\AutoCADLT.Drawing\CLSID (AutoCAD LTの場合)、HKEY_CLASSES_ROOT\AutoCAD.Drawing\CLSID (AutoCADの場合)を参照すれば目的のCLSIDがわかります。


注意:

1. 64bitWindows上でLTCustomizer21を利用する場合LTCustomizer21は32bitアプリケーションなので(ver1.0現在)、64bitのAutoCAD/LTのCLSIDを指定しても64bitのレジストリ情報の読み取りが出来ませんので失敗します。そのためには32bitのレジストリエディタを起動して(WindowsのインストールディレクトリがC:\Windowsの場合C:\Windows\Wow64\regedit.exeにあります)、acadlt.exe(またはacad.exe)を示すレジストリを探してそれを指定します。

例えばAutoCAD 2014の場合
RUN=HKEY_CLASSES_ROOT\AutoCAD.Drawing.19\protocol\StdFileEditing\server
と記述すれば起動できます。

2. LTC21.cfgのRUN=部分は、余分なスペースやタブを入れないでください。

3. init()で指定するCADの数字部分とLTC21.cfgで記述するRUN=の部分の数は同じにしてください。例えば、AutoCAD LTの3つのバージョンに対応するアプリケーションを考えるならinit("1,1,1")と指定する必要があります。

4. LTC21.cfgは、 LTCustomizer21使用アプリケーションの起動パスと同一パスに置いて下さい。