スクリーン上に庭園の歩道がいくつか作成されている可能性があります。複数同時に削除される可能性もあります。このような可能性についても、考えておく必要があります。
図形に関連付けられるリアクタは、オブジェクト リアクタです。図面内に複数の図形が存在する場合、それぞれの図形に対するリアクタが存在する可能性があります。リアクタがアタッチされた図形がどれだけ選択されていたかに応じて、ERASE[削除]コマンドなどの特定の編集イベントにより、多くのコールバックが起動されます。一方、編集リアクタはただ 1 つです。アプリケーションは、1 つの :vlr-commandEnded イベント リアクタをアタッチするだけです。
2 つの修正操作(ポリラインの頂点の位置の変更とポリラインの削除)のイベント シーケンスは、gp:command-ended 関数内の、実行される必要があるアクションで終了します。そこで、それぞれの場合に実行するアクションを決定しなければなりません。次の疑似コードに、手順の概要を示します。
Defun gp:command-ended (2nd version) Retrieve the pointer to the polyline (from a global variable) Conditional: If the polyline has been modified then: Erase the tiles Get information on the previous polyline vertex locations Get information on the new polyline vertex locations Redefine the polyline (straighten it up) Redraw the tiles End conditional expression If the polyline has been erased then: Erase the tiles End conditional expression End Conditional End function