概要 - ActiveX メソッドを呼び出す(AutoLISP/ActiveX)

必要な ActiveX メソッドを特定したら、これを AutoLISP を使用して呼び出す方法を決める必要があります。指定する引数と、それらの引数のデータ タイプが分かっている必要があります。

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

『ActiveX/VBA リファレンス』に、ActiveX メソッドを使用するために必要な情報が記載されています。

たとえば、AddCircle メソッドのリファレンス ページには、このメソッドの定義が記載されています。

AddCircle メソッドの構文

RetVal = object.AddCircle(Center, Radius)
RetVal

Circle オブジェクト; 戻り値

新しく作成される円

Object

Block、ModelSpace コレクション、PaperSpace コレクション

このメソッドが適用されるオブジェクト。

Center

バリアント型(3 要素の倍精度浮動小数点数型配列); 入力のみ

球の中心を示す 3D WCS 座標

Radius

倍精度浮動小数点数型; 入力のみ

円の半径。正の数値でなければなりません。

リファレンスに示されている構文定義は、VBA プログラマ用に設計されているため、多少の慣れが必要かもしれません。

AddCircle の場合、構文は次のように定義されます。

RetVal = object.AddCircle(Center, Radius)

同じことを行うために必要な AutoLISP 構文は、次のようになります。

(setq RetVal (vla-AddCircle object center radius))

戻り値(VBA では RetVal)は、単純明解です。『ActiveX/VBA リファレンス』では、これを Circle オブジェクトとして定義しています。Visual LISP では、AutoCAD オブジェクトが ActiveX 関数によって返されるたびに、VLA オブジェクトのデータ タイプで返されます。

メソッド名(object.AddCircle)の前に示されている object は、vla 関数呼び出しの中では常に最初の引数になります。これは、クエリまたは修正しようとしている AutoCAD オブジェクトです。たとえば、次のようにして円を図面のモデル空間に追加します。

(vla-addCircle mSpace ...)

この例では、mspace は ModelSpace オブジェクトのことです。ModelSpace オブジェクトによって、現在の図面のモデル空間にアクセスできます。

引数 Center および Radius は、AutoLISP のプログラマにはなじみがないかもしれないデータ タイプを参照します。Center は配列として表す必要があります。これは、AutoLISP の 3 要素のリストと似ています。Radius は倍精度浮動小数点数型です。これは、AutoLISP では実数です。