概要 - オブジェクトのプロパティを取得、設定する(AutoLISP/ActiveX)

オブジェクトのプロパティには、タイプ ライブラリを読み込むことによって作成されたラッパー関数を使用するか、直接 vlax-get-property および vlax-put-property 関数を使用することでアクセスできます。

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

vl-load-com 関数で ActiveX サポート関数をロードしたら、vla-get- および vla-put- 関数を使用してオブジェクトのプロパティの値を取得および設定することができます。

vla-get-propertyname 関数はオブジェクトのプロパティを返し、vla-put-propertyname 関数は値をオブジェクトのプロパティに割り当てます。これらの関数には、次の引数が必要です。

たとえば、次の例は AutoCAD アプリケーション オブジェクトの ActiveDocument プロパティを返します。

(vla-get-ActiveDocument (vlax-get-acad-object))
#<VLA-OBJECT IAcadDocument 00302a18>

vla- で始まる関数は、AutoCAD タイプ ライブラリのラッパー関数ですが、他のタイプ ライブラリのラッパー関数の名前は使用している接頭語によって変わります。

注: AutoCAD LT では、サードパーティ製の ActiveX ライブラリを読み込んだり、使用したりする機能はサポートされていません。

ラッパー関数に加えて、vlax-get-property 関数を使用してオブジェクトのプロパティの値を返すことができます。vlax-put-property 関数はオブジェクトのプロパティに値を割り当てます。これらの関数には、次の引数が必要です。

ラッパー関数が使用できる場合でも、vlax-get-property (および vlax-put-property)を使用することができます。

たとえば、次の例は AutoCAD アプリケーション オブジェクトの ActiveDocument プロパティを返します。

(vlax-get-property (vlax-get-acad-object) 'ActiveDocument)
#<VLA-OBJECT IAcadDocument 00302a18>

定数を使用する

ときには、オブジェクトのプロパティを更新するために、定義済み定数を使用できます。たとえば、円の色を緑に設定するには、数字のインデックス値を指定する代わりに、定数 acGreen を使用できます。

(vla-put-color myCircle acGreen)

『ActiveX リファレンス』のプロパティを説明している項の下に、定義済み定数がリストされています。AutoLISP の ActiveX 関数呼び出しの中でこれらの定数を使用できます。

オブジェクトを更新する

オブジェクトのプロパティを変更しても、すぐには AutoCAD 図面内のオブジェクトの表示に反映されないことがあります。AutoCAD はプロパティの変更をすぐには反映しないことにより、一度に複数のプロパティを変更できるようにしています。

図面ウィンドウを明示的に更新する必要があるときは、vla-update 関数を呼び出します。

(vla-update object)

読み込んだライブラリを使用する(Windows 版 AutoCAD のみ)

ActiveX タイプ ライブラリを読み込むことができます。ライブラリを読み込む際に、ラッパー関数の名前にプレフィックス(省略可能)を付けることができます。ライブラリを読み込んだ後、[該当]ウィンドウを使用して、使用可能なラッパー関数を確認できます。ただし、読み込まれたタイプ ライブラリの一部のプロパティ、メソッド、定数はラップされません。

たとえば、Microsoft Word アプリケーション オブジェクトの CommandBars プロパティの取得に使用できるラッパー関数はありませんが、次の文を実行することで取得できます。

(setq ComBars (vlax-get-property msw 'CommandBars))
#<VLA-OBJECT CommandBars 0016763c>