概要 - AutoCAD Application オブジェクトにアクセスする(VBA/ActiveX)

Application オブジェクトは、AutoCAD のオブジェクト モデルのルート オブジェクトです。

注: AutoLISP での ActiveX のサポートは Windows のみに制限されています。

Application オブジェクトから、他の任意のオブジェクトやオブジェクトに割り当てられているプロパティやメソッドにアクセスできます。AutoLISP で ActiveX 関数を使用できるようにする前に、これらの関数を使用できるようにする ActiveX サポート コードをロードしておく必要があります。次の関数呼び出しによって、ActiveX のサポートが有効になります。

(vl-load-com)

この関数は、まず最初に ActiveX サポート コードが既にロードされているかどうかをチェックし、ロードされている場合は、何も行いません。ActiveX サポートがまだロードされていない場合、vl-load-com は ActiveX サポートと AutoLISP 言語のその他の拡張関数ををロードします。

注: ActiveX を使用するアプリケーションはすべて、vl-load-com を呼び出すことから始めてください。アプリケーションで vl-load-com を呼び出さないと、既に他のプログラムで ActiveX サポート関数をロードしていない限り、そのアプリケーションは失敗します。

ActiveX サポート関数をロードした後、AutoCAD オブジェクトにアクセスする最初のステップは、AutoCAD Application オブジェクトへの接続を確立することです。この接続を確立するには、次の例に示すように vlax‑get‑acad‑object 関数を使用します。

(setq acadObject (vlax-get-acad-object))

vlax‑get‑acad‑object 関数は、AutoCAD Application オブジェクトにポインタを返します。

上の例では、ポインタは acadObject 変数に格納されます。この戻り値は、VLA-オブジェクト(Visual LISP ActiveX オブジェクト)という一意の Visual LISP のデータ タイプとして存在します。

ActiveX 関数を使用して AutoCAD オブジェクトを参照するときは、VLA オブジェクト タイプを指定する必要があります。このため、entget 関数を使用してオブジェクトにアクセスしてから、そのオブジェクトを ActiveX 関数を使用して参照するということはできません。entget 関数は、ename というデータ タイプのオブジェクトを返します。ActiveX 関数でこのオブジェクトを直接使用することはできませんが、vlax-ename->vla-object 関数を使用してこのオブジェクトを VLA オブジェクトに変換できます