ドローソフトや、CAD、3Dレンダリングソフト等では、キャンバスや3D空間に複数のオブジェクトを配置していくようなソフトの作りになっていることが多いと思います。 それらのオブジェクトはリストで管理できるようになっていて、かつリスト上でリネームができたりすることもよくあると思います。
ここで仮に、「オブジェクト名の重複禁止」の要件を含むソフトを作るケースを考えます。 その制約条件下では、リネームにより他のオブジェクトと名前が重複してしまう可能性がありますので、 リネーム処理の際に例えば
といった処理を加えることになります。 リネームの他にも、外部ファイル等から複数のオブジェクトを一括でインポートしたいときにも同様の処置が必要になるはずです。
そこで、こういう状況で役に立つことを期待して「リネーム、一括インポート時にオブジェクト名が重複しないように連番を振る処理」を作ってみましたので紹介します。
本プログラムは、オブジェクト名重複チェックと自動リネームを一度に実施する関数 ResolveDuplicateName と、その動作を見るためのGUIサンプルで構成されています。 リネーム処理、一括インポート処理のそれぞれを模した例を示します。