イベントは、AutoCAD 内で発生する状態、または動作についての単なる情報提供であることを忘れないことが重要です。
イベントに応じるようにイベント ハンドラを記述できますが、たいていの場合、イベント ハンドラが起動するときには AutoCAD はコマンドの処理中です。そのためイベント ハンドラを AutoCAD およびそのデータベースと連携させて安全に動作させようとすると、処理の内容について一連の制限が生じます。
イベント ハンドラを記述するときは、イベントのシーケンスが考えたとおりの正確な順番で発生するとは考えないでください。たとえば OPEN[開く]コマンドを発行すると、BeginCommand、BeginOpen、EndOpen、および EndCommand のイベントがすべて発生します。しかし、これらのイベントはこの順番では発生しません。間違いなく信頼できる唯一のイベントの順番は、Begin イベントが、対応する End イベントの前に発生することです。前述の例では、イベントは次の順序で発生します。BeginCommand、BeginOpen、EndCommand、EndOpen、または BeginCommand、EndCommand、BeginOpen、EndOpen。
オブジェクト 1 を削除し、次にオブジェクト 2 を削除する場合、ObjectErased イベントをオブジェクト 1、次にオブジェクト 2 の順で受け取れるわけではありません。オブジェクト 2 の ObjectErased イベントを先に受け取る場合があります。
イベント ハンドラ内から対話的な機能を実行しようとすると、イベント発生時に AutoCAD がまだコマンドの処理中である可能性があるため、重大な問題が生じる場合があります。したがって、イベント ハンドラ内からの GetPoint、GetEntity、GetKeyword などの入力を取得するメソッドの使用や、選択セット操作および SendCommand メソッドの使用は常に避けるべきです。
ダイアログ ボックスは対話的な機能とみなされ、AutoCAD の現在の操作に干渉する可能性があります。メッセージ ボックスと警告ボックスは対話的な機能とみなされないため、安全に実行できます。しかし BeginModal、EndModal、Activate、Deactivate、および BeginRightClick イベントのイベント ハンドラの中でメッセージ ボックスを使用すると、予期しないシーケンスが発生することになります。
イベントを発生させたオブジェクトは、AutoCAD で使用するために開かれたままになっており、操作は現在進行中です。よって、イベント ハンドラから同じオブジェクトに情報を書き込むのは避けてください。しかし、イベントを発生させているオブジェクトから、安全に情報を読み出すことは可能です。たとえば、タイルが敷き詰められた床があり、床の境界にアタッチするイベント ハンドラを作成したとします。床のサイズを変更すると、イベント ハンドラはタイルを新しい領域に敷き詰めるために、自動的にタイルの数を増加または減少させます。イベント ハンドラは、境界の新しい領域を読み出すことはできますが、境界そのものには変更を加えられません。
同じイベントを発生させる同じ動作を実行した場合は、無限ループを作ることになります。たとえば BeginOpen イベント内からは、決して図面を開こうとしてはいけません。図面を開くと、AutoCAD は最大限度の数に達するまで、図面を開き続けることになります。