概要 - オブジェクトのプロパティを取得、設定する(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 タイプ ライブラリのラッパー関数ですが、他のタイプ ライブラリのラッパー関数の名前は使用している接頭語によって変わります。タイプ ライブラリを読み込むと、[該当]ウィンドウを使用して使用可能な関数を確認することができるので理想的です。ただし、読み込まれたタイプ ライブラリの一部のプロパティ、メソッド、定数はラップされません。

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

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

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/VBA リファレンス』のプロパティを説明している項目で、定義済み定数をリストしています。これらの定数は、Visual LISP ActiveX 関数の呼び出しの中で使用できます。

オブジェクトを更新する

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

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

(vla-update object)