Die Oberfläche ist wie ein Layer oder eine Schraffur eine Ressource, die über eine ID angesprochen wird.
Bei Layer und Schraffur gibt es neben der ID (Zahl) noch einen Namen, der aber nur "Dekoration" ist. Dieser kann z.T. auch doppelt vergeben sein! Am Element in der Datenbank wird nur die ID (Zahl) gespeichert. Den Namen kann man beliebig ändern, ohne dass die ID (Zahl) am Element falsch wird.
Im Gegensatz zum Layer oder der Schraffur besitzt die Oberfläche keine eindeutige ID als Zahl, sondern die ID besteht aus dem Unterordner und dem Namen der Oberfläche.
Demzufolge ist es sogar höchst unerwünscht, dass sich diese ID in Form des Namens ändert!
Denn durch eine Änderung der ID (des Namens) der Oberfläche wird dieser an allen Elementen im Projekt plötzlich ungültig, weil diese Oberfläche dann nicht mehr gefunden wird!
Deswegen gibt es keine direkte Funktion zum Umbenennen von Oberflächen!
Kann man leicht ausprobieren, indem man eine .surf-Datei im Prj\design-Ordner umbenennt!
Danach hagelt es Fehlermeldungen über nicht gefundene Öberlächen.
Es fehlt demzufolge eine Funktion, die Oberflächen umbenennt, und anschliessend alle Vorkommen des alten Namens im Projekt ersetzt!
Eigentlich ist es die Funktion: Oberläche A gegen Oberläche B austauschen, projektweit.
Schon bei der Beschreibung der Funktion merkt man, daß das sicher etwas aufwändig wird: Alle 9999 Teilbilder zu durchsuchen, um eine
Oberfläche zu ersetzen!
Aber das muss man evtl. gar nicht!
Es würde reichen, eine "Umbenennungs-Liste" für die Oberflächen zu führen, wo drin steht:
Oberfläche A ist jetzt Oberfläche B
Wenn man diese Liste beim Öffnen eines Teilbildes "abarbeitet", erreicht man denselben Effekt! Der Austausch der Oberflächen
erfolgt "unbemerkt" in den Teilbildern, mit denen man arbeitet (die man öffnet).
Damit das nur "einmalig" erfolgt, müßte natürlich in der "Liste" vermerkt werden, in welchen Teilbildern der Austausch schon stattgefunden hat. Es sollte also demzufolge evtl. eine kleine Datenbank sein.
Für die ganz "Korrekten" sollte es auch noch eine Funktion geben, die Ersetzung sofort in allen Teilbildern durchzuführen (kann länger dauern) und dann den Eintrag für die Ersetzung aus der Datenbank zu löschen.
Das "Austauschen" in den Teilbild-Elementen hat natürlich auch Grenzen: z.B. wenn die Oberfläche in den "Parametern" des Objekts
gespeichert ist (wie bei SmartParts), und nicht aus der Representation aktualisiert wird. Da hilft es nichts, die Oberfläche
im Makro / auf der Makrofolie zu ändern, beim nächsten Aktualisieren des SmartParts ist die alte Oberfläche wieder da :-(
Man müßte auch die Oberfläche in den "Parametern" austauschen (nicht unmöglich).
Gleiches trifft auf andere, komplexe Bauteile zu (PythonParts, Geländer, Fassade, Treppe, Plugins)
All diesem "Austausch-Kram" kann man auf 2 Arten aus dem Weg gehen:
1. Benutze Oberflächennamen semantisch
D.h. statt Holz_Ahorn_quer.surf verwende Fensterrahmen.surf und ändere nur dessen Inhalt (Textur, Farbe usw.) bei Bedarf
2. Benutze Farben als Oberflächenzuweisung semantisch
Farbe 15 ist z.B. immer der Fensterrahmen , dieser Farbe kann man dann unterschiedliche .surf-Datein zuordnen
Ganz ohne Austausch der Oberflächen an den Elementen wirkt das dann projektweit!
Methode 1. macht sich bei SmartPart-Fenstern und -Türen ganz gut.
Methode 2. geht als einziges bei Fenstern/Türen in Fassaden.