概要 - オブジェクト リアクタを使用する(AutoLISP/ActiveX)

他の AutoCAD のリアクタと異なり、オブジェクト リアクタは特定の AutoCAD 図形(オブジェクト)にアタッチされます。

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

オブジェクト リアクタを定義するときは、リアクタをアタッチする図形を指定する必要があります。オブジェクト リアクタを作成する vlr‑object‑reactor 関数には、次の引数を指定する必要があります。

注意: オブジェクトがオブジェクト リアクタのオーナー リストに含まれているときは、コールバック関数でそのオブジェクトを変更できません。変更しようとすると、エラー メッセージが表示されて、AutoCAD がクラッシュすることがあります。

たとえば、次の文は、1 つのオーナーに対するオブジェクト リアクタ(myCircle で示されるオブジェクト)を定義してから、文字列 Circle Reactor をリアクタにアタッチして、ユーザが myCircle を変更すると print-radius 関数を呼び出すよう AutoCAD に指示しています。

(setq circleReactor (vlr-object-reactor (list myCircle)
  "Circle Reactor" '((:vlr-modified . print-radius))))

リアクタ オブジェクトは、変数 circleReactor に格納され、この変数を使用してリアクタを参照できます。オーナーのリストを定義するときは、VLA オブジェクトだけを指定する必要があり、図形名オブジェクトは指定できません。コールバック関数は ActiveX メソッドだけを使用して AutoCAD オブジェクトを修正でき、また ActiveX メソッドは処理対象として VLA を要求するため、VLA オブジェクトを指定する必要があります。このような Ename オブジェクトは、vlax-ename->vla-object 関数を使用して VLA オブジェクトに変換することができます。

リアクタ オブジェクトにデータをアタッチする

データは、オブジェクト リアクタが vlr-object-reactor で作成されたときにアタッチすることができます。データは、後から vlr-data-set を使用して変更することができます。

リアクタに常にデータを指定する必要はなく、代わりに nil を指定できます。しかし、オブジェクトに複数のリアクタがアタッチされていることがあります。特定のテキスト文字列、またはアプリケーションが使用できるその他のデータを含めて、オブジェクトにアタッチされているさまざまなリアクタを区別できるようにすることができます。