Vlr-object-reactor

提供:GizmoLabs - だいたい CAD LISP なサイト
2016年9月5日 (月) 10:01時点におけるGizmon (トーク | 投稿記録)による版
構文
(vlr-object-reactor owners data callbacks)


機能
オブジェクト リアクタ オブジェクトを作成する。
リアクタ オブジェクトは図面データベースに追加されるが、不変リアクタになるわけではない。


引数
  • owners : 監視する図形オブジェクトを示す VLA オブジェクトの AutoLISP リスト。
  • data :リアクタ オブジェクトに関連付ける任意の AutoLISP データ。または、関連付けるデータが存在しない場合は nil。
  • callbacks : 次の形式のペアのリスト。
(event-name . callback_function)
event-name は、次の「オブジェクト イベント」の表にあるシンボルの 1 つ。callback_function は、イベントが発生したときに呼び出される関数を示すシンボル。 各コールバック関数は、次の 3 つの引数を受け入れる。
  • owner イベントを割り当てる VLA オブジェクトのオーナー。
  • reactor_object コールバック関数を呼び出した VLR オブジェクト。
list 個々のイベントに関連付ける特別なデータ要素のリスト。 個々のイベントに対するこのリストの内容については、「オブジェクト イベント コールバック データ」の 表を参照。


戻り値
reactor_object 引数。


オブジェクト イベント
名前 イベント
:vlr-cancelled オブジェクトの修正がキャンセルされた直後
:vlr-copied オブジェクトが複写された直後
:vlr-erased オブジェクトの削除フラグが設定された直後
:vlr-unerased オブジェクトの削除フラグが解除された直後
:vlr-goodbye オブジェクトがメモリから削除される直前
:vlr-openedForModify オブジェクトが修正される直前
:vlr-modified オブジェクトが修正された直後。修正がキャンセルされた場合は、:vlr-cancelled と :vlr-modifyUndone も呼び出される。
:vlr-subObjModified オブジェクトの従属図形が修正された直後。このイベントは、ポリラインやメッシュの頂点が修正されたときや、ブロック参照に所有されている属性が修正されたときに発生する。
:vlr-modifyUndone オブジェクトの修正が元に戻されたとき
:vlr-modifiedXData オブジェクトの拡張図形データが修正された直後
:vlr-unappended オブジェクトが図面データベースからアタッチ解除された直後
:vlr-reappended オブジェクトが図面データベースに再アタッチされた直後
:vlr-objectClosed オブジェクトの修正が完了した直後


オブジェクト イベント コールバック データ
名前 リストの長さ パラメータ
:vlr-cancelled
:vlr-erased
:vlr-unerased
:vlr-goodbye
:vlr-openedForModify
:vlr-modified
:vlr-modifyUndone
:vlr-modifiedXData
:vlr-unappended
:vlr-reappended
:vlr-objectClosed
0
:vlr-copied 1 コピーして作成されたオブジェクト(図形名)
:vlr-subObjModified 1 修正された従属オブジェクト(図形名)


サンプル
次のコードは、オブジェクト リアクタを myCircle オブジェクトにアタッチする。オブジェクトが修正されたとき (:vlr-modified) は常に応答し、修正イベントへの応答時に print-radius 関数を呼び出すリアクタを定義する。
(setq circleReactor (vlr-object-reactor (list myCircle)
  "Circle Reactor" '((:vlr-modified . print-radius))))