リアクタを使用するときは、リアクタが一連のガイドラインに従うようにする必要があります。このようにしないと、リアクタの内部実装が変更されたときにアプリケーションで予期しない結果が起きることがあります。
リアクタは、次のガイドラインに従う必要があります。
ほとんどの場合に、リアクタの通知の順番を信頼しないことをお勧めします。たとえば、OPEN[開く]コマンドを使用すると、BeginCommand、BeginOpen、EndOpen、EndCommand イベントが発生します。しかし、これらのイベントはこの順番では発生するとは限りません。間違いなく信頼できる唯一のイベントの順番は、Begin イベントが、対応する End イベントの前に発生することです。
たとえば、commandWillStart() は常に commandEnded() の前に発生し、beginInsert() は常に endInsert() の前に発生します。より複雑な順番を信頼すると、将来新しい通知が採用されたり、既存の通知が整理し直された結果としてその順番が変更されたときに、アプリケーションに問題が発生する可能性があります。
特定の関数が特定の通知の間に呼び出されることは保証されていません。たとえば、オブジェクト A に対して :vlr-erased 通知を受け取ると、それはすべてオブジェクト A が削除されることを意味します。A に対する :vlr-erased 通知の後に B に対する :vlr-erased 通知を受けると、それはすべてオブジェクト A と B の両方が削除されることを意味し、常に A の後に B が削除されることは保証されていませんアプリケーションをこの詳細レベルまで拘束すると、将来のリリースでアプリケーションが正常に動作しない可能性が非常に高くなります。順番を信頼するのではなく、システムの状態を知らせるリアクタを信頼してください。
リアクタ コールバック関数の中から対話関数を実行しようとすると、イベントが発生した時点で AutoCAD がコマンドの処理を続けても、重大な問題が起こることがあります。したがって、getpoint、entsel、getkword などのユーザ入力取得関数、選択セットの操作や command 関数を使用するのは避けてください。
ダイアログ ボックスは対話関数とみなされ、AutoCAD の現在の操作に干渉する場合があります。しかし、メッセージ ボックスや警告ボックスは、対話関数とはみなされず、問題なく実行できます。
オブジェクトにコールバック関数を起動させるイベントが実行中の可能性があり、コールバック関数が呼び出されたときに AutoCAD で使用している可能性があります。したがって、同じオブジェクトに対してコールバック関数からオブジェクトを更新しようとしないでください。ただし、イベントを発生するオブジェクトから情報を問題なく読み込むことはできます。
たとえば、タイルで敷き詰められたフロアの境界にリアクタをアタッチするとします。フロアのサイズを変更すると、リアクタ コールバック関数が自動的に追加または取り去られて新しい領域にタイルが敷き詰められます。関数は新しい境界の領域を読み込むことはできますが、境界自体に対する変更を行うことはできません。
同じイベントを発生するリアクタ コールバック関数からアクションを実行すると、無限のループを作成することになります。たとえば、BeginOpen イベント内から図面を開こうとすると、AutoCAD は開いた図面の最大数に達するまでさらに図面を開き続けます。