AutoCADでプログラムしてて便利だなと思った機能の1つにUndo機能があります。 デバッグ中に色々動かして、エラーが出るとUndo→再度実行なんてことができたり。 で、内部的にどうなってるかと言うのを『動きから考察』してみました。
AutoCADは、内部的にOODB(オブジェクト指向DB)で管理されている。 この中に、ArcやPolylineといった図形情報や、色、幅、厚さなどの付加情報が入っている。 AutoCADでコマンドを実行した場合、自動的にOODBのセーブポイントを作ってくれるらしく、Undo機能は前回のセーブポイントまで戻ることによって行われます。
つまり、 OODBに管理されているデータにのみUndoは機能 します。 Managerなどで管理されているCacheなどには対応せず、Undoによる不整合が発生 することも多々あります。
また、 セーブポイントが作られるのは、あくまでコマンド です。 各種Eventで行われる変更にはセーブポイントが作られず 、Undoはできません。 (Ctrl+zでは、_u [Command]というコマンドが実行されています。これに対応させる為には、やはり、単純にOODBへのCommitだけではなく、コマンド実行にしなければダメそうです)
このあたりを踏まえていくと、良いAutoCADのライブラリができて行きそうですね。
