Fehlverhalten beim umbennen von Objekten


Thomas Wölfer
Thomas Wölfer

09. August 2010


In der Baustatik ist die “Reihenfolge” aller Elemente genau die Reihenfolge, die in der Dokumenten-Ansicht angezeigt wird. Diese Reihenfolge entsteht einfach durch die Reihenfolge, in der die Elemente definiert werden: Sie kommt also im Laufe der Arbeit “durcheinander” – zum Beispiel wenn man Objekten andere Namen gibt, oder wenn man Objekte löscht.

Nun kann man die Objekte aber nachträglich wieder ein eine andere Reihenfolge bringen: Dazu gibt es den Befehl “Objekte sortieren”. Damit kann man Objekte nach ein paar Kriterien sortieren und dabei auch umbennen lassen.

Jetzt passiert folgendes: Angenommen, man hat ein paar Streckenlager, und lässt diese erst nach X und dann nach Y sortieren, und außerdem neu benennen – dann klappt das zunächst. Wenn man aber danach ein weiteres Streckenlager anlegen will, dann bekommt das von Haus aus einen Namen, den es eigentlich schon gibt. Nicht schön.

Der Grund dafür ist ein Fehler mit dem ich mich heute relativ lange beschäftigt habe: Im Wesentlichen läuft es auf folgendes hinaus: Im “Umbennen” Schritt werden alle betroffenen Objekte nach einander umbenannt. Dabei wird eine Liste von “bekannten” Namen mitgeführt. Im Rahmen der Vergabe des neuen Namens wird der “alte” Name aus der Liste entfernt, und der neue eingetragen.

Wenn jetzt der alte Name eines Objektes dem neuen Namen eines Objektes entspricht, das bereits umbenannt worden ist, dann wird dieser Name aus der Liste entfernt. Resultat: Der Name ist nicht mehr “bekannt” und wird beim nächsten “normalen” Erzeugen eines Namens vorgeschlagen. Blöd.

Ab dem nächsten Update passiert das nicht mehr (wobei das interessanterweise schon vom ersten Tag an so war….) – bis dahin kann man sich notfalls folgendermaßen behelfen: Man nennt die Elemente zweimal um – und beim ersten Mal verwendet man nur “temporäre” Namen, also sowas wie “temp” und eine Numerierung ab “1”: Dann passiert das nicht mehr…

Kaum zu glauben wie kompliziert die einfachsten Vorgänge sein können…