Show page source of resolve_duplicate_name #121847

= オブジェクトリストでオブジェクトの名前が重複しないように連番を振る処理
== はじめに
ドローソフトや、CAD、3Dレンダリングソフト等では、キャンバスや3D空間に複数のオブジェクトを配置していくようなソフトの作りになっていることが多いと思います。
それらのオブジェクトはリストで管理できるようになっていて、かつリスト上でリネームができたりすることもよくあると思います。
 * 例:Inkscapeのオブジェクトリスト
[[Embed(example_of_object_list.png)]]

ここで仮に、「オブジェクト名の重複禁止」の要件を含むソフトを作るケースを考えます。
その制約条件下では、リネームにより他のオブジェクトと名前が重複してしまう可能性がありますので、
リネーム処理の際に例えば
 * 名前が重複した場合はにエラーメッセージを出してリネームを強制キャンセルする
 * リネームした名前の末尾に連番を振る
といった処理を加えることになります。
リネームの他にも、外部ファイル等から複数のオブジェクトを一括でインポートしたいときにも同様の処置が必要になるはずです。

そこで、こういう状況で役に立つことを期待して「リネーム、一括インポート時にオブジェクト名が重複しないように連番を振る処理」を作ってみましたので紹介します。

== 処理例
本プログラムは、オブジェクト名重複チェックと自動リネームを一度に実施する関数 ResolveDuplicateName と、その動作を見るためのGUIサンプルで構成されています。
リネーム処理、一括インポート処理のそれぞれを模した例を示します。
 * リネーム処理
[[Embed(auto_numbering_on_rename.png)]]

 * インポート処理
[[Embed(auto_numbering_on_import.png)]]

== ライセンス
 * Boost License v1.0

== ソース
 * [/downloads/users/40/40027/resolve_duplicate_name.zip/ ソース]