マニュアルを書いた当時はその仕様通りだったのですが、その後のバージョンアップにより記載のあるもの以外にもさまざまな処理時にも呼び出されることがあります。
基本的にはコンパクト化されるのは何らかの操作を行った後なので、CreateやSelectなどのメニューから呼び出されるタイプのプラグインの場合、プラグインのメイン処理部が呼び出されてその処理が終了するまでの間はインデックスが変わることはほとんどないと考えてよいです。
しかし、Station\x2cCommand型の常駐プラグインの場合は、メッセージが来るまでの待機中には他の処理によりインデックスは常に変更される可能性があると考えてください。そのため、Station\x2cCommandプラグインで頂点・面に対して何らかの情報を保持する場合、インデックスではなくユニークIDを用いたアクセスを行うようにしてください。
2007-12-29 14:59
どうもありがとうございました。
最初からユニークIDを使うつもりではいるのですが、Compactが呼ばれるタイミングがわかれば、
追加した面・頂点については配列サイズの比較で検出できるかな、と思いまして…
(削除した分についてはUndoで復元される可能性があるので検出できなくてもいいや、と)
どうやらそうもいかないみたいなので、OnObjectModifiedのたびに総当たりするようにします。
(OnObjectModifiedのときにどこの頂点や面が追加・削除されたかの情報がもらえるといいなぁ…ボソ)
2008-01-02 13:34