概要 - オブジェクトのプロパティを取得、設定する(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>