リアクタ関数

提供:GizmoLabs - だいたい CAD LISP なサイト

AutoLISP のリアクタ関数は、次の通り。

  • AutoCADにおいてリアクタ関数を使用できるようにするためには、事前に (vl-load-com) を実行して関数をロードしておく必要がある。
関 数 説 明
(vl-load-com) AutoLISP のリアクタ サポート関数とその他の拡張 AutoLISP 関数をロードする。
(vl-load-reactors) リアクタ サポート関数をロードする。(下位互換用)
(vlr-acdb-reactor data callbacks) データベース(グローバル)リアクタ オブジェクトを作成する。
(vlr-add obj) 無効なリアクタ オブジェクトを有効にする。
(vlr-added-p obj) リアクタ オブジェクトが有効かどうかを調べる。
(vlr-beep-reaction [args]) ブザー警告音を鳴らす。
(vlr-command-reactor data callbacks) コマンド イベントを通知する編集リアクタを作成する。
(vlr-current-reaction-name) リアクタのコールバックの中から呼び出された場合に、現在のイベントの名前(シンボル)を返す。
(vlr-data obj) リアクタに関連付けられているアプリケーション固有のデータを返す。
(vlr-data-set obj data) リアクタに関連付けられているアプリケーション固有のデータを上書きする。
(vlr-deepclone-reactor obj data) ディープ クローン イベントを通知する編集リアクタ オブジェクトを作成する。
(vlr-docmanager-reactor obj data) MDI 関連のイベントを通知するリアクタ オブジェクトを作成する。
(vlr-dwg-reactor obj data) 図面イベント(図面ファイルを開く、閉じるなど)を通知する編集リアクタ オブジェクトを作成する。
(vlr-dxf-reactor obj data) DXF ファイルの読み込みまたは書き出しに関するイベントを通知する編集リアクタ オブジェクトを作成する。
(vlr-editor-reactor data callbacks) 編集(グローバル)リアクタ オブジェクトを作成する。
(vlr-insert-reactor data callbacks) ブロック挿入に関するイベントを通知する編集リアクタ オブジェクトを作成する。
(vlr-linker-reactor data callbacks) リンカー(グローバル)リアクタ オブジェクトを作成する。
(vlr-lisp-reactor data callbacks) LISP イベントを通知する編集リアクタ オブジェクトを作成する。
(vlr-miscellaneous-reactor data callbacks) 他の編集リアクタ タイプに属さない編集リアクタ オブジェクトを作成する。
(vlr-mouse-reactor data callbacks) マウス イベント(ダブルクリックなど)を通知する編集リアクタ オブジェクトを作成する。
(vlr-notification reactor) リアクタのコールバック関数が、関連する名前空間がアクティブでないときに実行されるかどうかを調べる。
(vlr-object-reactor owners data callbacks) オブジェクト リアクタ オブジェクトを作成する。
(vlr-owner-add reactor owner) オブジェクト リアクタのオーナーリストにオブジェクトを追加する。
(vlr-owner-remove reactor owner) オブジェクト リアクタのオーナーリストからオブジェクトを除去する。
(vlr-owners reactor) オブジェクト リアクタのオーナーリストを返す。
(vlr-pers reactor) リアクタを不変リアクタする。
(vlr-pers-list [reactor]) 現在の図面内の不変リアクタのリストを返す。
(vlr-pers-p reactor) リアクタが不変リアクタかどうかを調べる。
(vlr-pers-release reactor) リアクタを一時リアクタにする。
(vlr-reaction-name reactor-type) 指定されたリアクタ タイプに対して可能なすべてのコールバック条件のリストを返す。
(vlr-reaction-set reactor event function) リアクタにコールバック関数を追加または置き換える。
(vlr-reactions reactor) リアクタのペアのリスト(event-name . callback_function)を返す。
(vlr-reactors [reactor-type...]) 指定されたタイプのリアクタのリストを返す。
(vlr-remove reactor) リアクタを無効にする。
(vlr-remove-all [reactor-type]) 指定されたタイプのすべてのリアクタを無効にする。
(vlr-set-notification reactor 'range) 関連する名前空間がアクティブでないときにリアクタのコールバック関数が実行されるかどうかを設定する。
(vlr-sysvar-reactor data callbacks) システム変数の変更を通知する編集リアクタ オブジェクトを作成する。
(vlr-toolbar-reactor data callbacks) ツールバーのビットマップの変更を通知する編集リアクタ オブジェクトを作成する。
(vlr-trace-reaction ) [トレース]ウィンドウに 1 つまたは複数のコールバックの引数を出力する定義済みのコールバック関数。
(vlr-type reactor) リアクタのタイプを表すシンボルを返す。
(vlr-types ) すべてのリアクタ タイプを返す。
(vlr-undo-reactor data callbacks) UNDO[元に戻す]イベントを通知する編集リアクタ オブジェクトを作成する。
(vlr-wblock-reactor data callbacks) ブロックの書き出しに関するイベントを通知する編集リアクタ オブジェクトを作成する。
(vlr-window-reactor data callbacks) AutoCAD ウィンドウの移動またはサイズ変更に関するイベントを通知する編集リアクタ オブジェクトを作成する。
(vlr-xref-reactor data callbacks) 外部参照のアタッチまたは修正に関するイベントを通知する編集リアクタ オブジェクトを作成する。


リアクタとは

リアクタは、作図エディタにアタッチ、または図面内の特定の図形にアタッチするオブジェクト。 リアクタ オブジェクトは、何かが起きたときに呼び出される「コールバック関数」。

リアクタの種類

リアクタには、多くの種類があり、各種類は、1 つまたは複数の CAD イベントに応答する。

リアクタの分類は次の通り。

  • エディタ(編集)リアクタ … コマンドが実行されたとき、または図面が保存、閉じられたとき、または新しい図面が開かれたときに反応する。
  • リンカー リアクタ … 他の ObjectARX アプリケーションがロードまたはロード解除されるたびに反応する。
  • データベース リアクタ … オブジェクトが図面データベースに追加、変更、または消去されたときに反応する。
  • ドキュメント リアクタ … 新しい図面ドキュメントを開く、異なるドキュメント ウィンドウをアクティブにする、ドキュメントのロック状態を変更するなど、現在の図面ドキュメントに対して MDI モードでの変更が行われたときに反応する。
  • オブジェクト リアクタ … 関連付けられたオブジェクトが何らかの方法で変更されたときに反応する。


編集リアクタを除き、リアクタの種類は分類ごとに 1 つしかない。たとえば DXFリアクタは、DXF ファイルが読み込まれたときや書き出されたときに反応し、マウスリアクタは、ダブルクリックなどのマウスイベントに反応する。


リアクタの分類内には、リアクタにアタッチ可能な多くの特定イベントがある。CAD を使用して、ユーザは多くの種類のアクションを実行できる。応答すべきアクションを決定するのは、ユーザの責任で、そのアクションが決まると、これから作成する「自動呼び出し」をイベントにアタッチし、次に、そのイベントが発生したときに起動されるコールバック関数を書くことができる。

AutoLISP の一時リアクタと不変リアクタ

作成できるリアクタには、一時リアクタ(既定)と不変リアクタの 2 つのタイプがある。 一時リアクタは、図面を閉じると失われ、不変リアクタは、図面とともに保存され、次回図面を開いたときにも存在する。

不変リアクタを作成または除去するには、次の関数を使用することができる。

  • vlr-pers - リアクタを不変リアクタにする例
(vlr-pers circleReactor)
#<VLR-Object-Reactor>
  • vlr-pers-list - 現在の図面内のすべて不変リアクタのリストまたは特定のタイプの不変リアクタのリストを返す例。
(vlr-pers-list)
(#<VLR-Object-Reactor> #<VLR-Object-Reactor> (#<VLR-Object-Reactor>)

(vlr-pers-list :VLR-DWG-Reactor)
nil
  • vlr-pers-p - リアクタが不変リアクタかどうかを調べる例
(vlr-pers-p circleReactor)
 #<VLR-Object-Reactor>
  • vlr-pers-release - リアクタを一時リアクタにする例。
(vlr-pers-release circleReactor)
#<VLR-Object-Reactor>

関連記事