必要な ActiveX メソッドを特定したら、これを AutoLISP を使用して呼び出す方法を決める必要があります。指定する引数と、それらの引数のデータ タイプが分かっている必要があります。
『ActiveX/VBA リファレンス』に、ActiveX メソッドを使用するために必要な情報が記載されています。
たとえば、AddCircle メソッドのリファレンス ページには、このメソッドの定義が記載されています。
RetVal = object.AddCircle(Center, Radius)
Circle オブジェクト; 戻り値
新しく作成される円
Block、ModelSpace コレクション、PaperSpace コレクション
このメソッドが適用されるオブジェクト。
バリアント型(3 要素の倍精度浮動小数点数型配列); 入力のみ
球の中心を示す 3D WCS 座標
倍精度浮動小数点数型; 入力のみ
円の半径。正の数値でなければなりません。
リファレンスに示されている構文定義は、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 では実数です。