Automatisiertes Umbenennen von Bauteilen

konem

Mitglied
Seid gegrüßt!

Ich habe folgendes Problemchen:
ich benötige um die 500 Objekte, dessen Bezeichnung eine fortlaufende Nummer enthält, die aber nicht am Ende steht.

Beispiel:
Objekte "seat.01.Standing", "Catcher01.Standing" und "Pitcher01.Standing". Ich habe diese drei Objekte erzeugt, jedoch das ".Standing" in der Bezeichnung weggelassen. So konnte die Nummer bei jeder Kopie automatisch um 1 erhöht werden. Soweit recht praktisch. Aber nun habe ich das Problem, überall wieder das ".Standing" hinzuzufügen. Eigentlich hatte ich, als ich am Anfang der Arbeit stand kein Problem damit, das alles manuel zu machen. Aber mitlerweile hab ich keine mehr.

Gibt es eine Möglichkeit, in 3ds Max 7 Objekte automatisiert umzubenennen? Oder kann man die Objektliste exportieren, mit einem Textprogramm bearbeiten und wieder importieren? Oder kann man das Programm interne Skript dazu benutzen? Damit kenne ich mich allerdings überhaupt nicht aus. Habt ihr einen Tipp?

Grüße (^-^)/
 

Zinken

Erfahrenes Mitglied
Mit Maxscript sollte das kein Problem sein. Einfach alle Objekte auswählen und den Maxscript Listener öffnen (F11).
Dann gibts Du diese Zeile ein:
Code:
for obj in $ do(obj.name = obj.name + ".Standing")
Mit Shift+Return ausführen und fertig.
 

Zinken

Erfahrenes Mitglied
Haha, sehr nett von Dir. :D Ich wollte es ja nur mal loswerden, da in letzter Zeit die Rückmeldungen doch eher spärlich ausfallen...
 

konem

Mitglied
Locker bleiben Freunde :) War verhindert.
Bin dir sehr dankbar Zinken. Hast mir echt Arbeit erspart. Legst du Wert auf nen Keks? *nen Keks schenk und glücklich weiterhoppel*

(^-^)/
 

Zinken

Erfahrenes Mitglied
Auf Kekse lege ich eigentlich keinen gesteigerten Wert, ein einfaches "hat funktioniert" bevor der Thread als "erledigt" markiert wird genügt schon. ;)
Das hilft halt auch dem nächsten Leser einzuschätzen, ob die Lösung funktioniert oder ob ich Unsinn geschrieben habe und er sich das Ausprobieren sparen kann.
Gerade bei MaxScript, das sich nicht über "Undo" rückgängig machen lässt, kann das die Nerven schonen...
 

konem

Mitglied
Oh gut zu wissen, dass undo nicht möglich ist...

Kennst du einen Befehl, um eine Zahl in der Bauteilbezeichnung um 1 zu erhöhen/ zu verringern? Momentan sind die Zahlen eingekreist so wie hier: seat143.Standing. Ich könnte auch eine ältere Dataiversion nehmen, in der das ".Standing" noch nicht auftaucht. Ich habe schon versucht, das ".Standing" zu entfernen. Habe den Befehl genommen, den du mit gegeben hast, und einfach statt "+" ein "-" genommen. Ging leider nicht - war wohl zu einfach gedacht :)

Grüße (^-^)/
 

Zinken

Erfahrenes Mitglied
Dicht dran, aber doch vorbei... ;)
Hiermit kannst Du die Endung wieder entfernen:
Code:
for obj in $ do (obj.name = trimRight obj.name ".Standing")
Analog dazu gibt es logischerweise auch "trimLeft".

Die Objektnummer zu verändern ist nicht ganz so einfach, da der gesamte Name ja ein einziger String ist.
Dazu müsstest Du erstmal den Namen in einen Text- und einen Zahlenteil zerlegen, den Zahlenteil in eine
"echte" Zahl (integer, float) umwandeln, verändern und anschließend alles wieder zusammenbauen.
Dabei spielt es natürlich auch eine Rolle, ob die Nummerierung führende Nullen (also 01 statt 1) enthält
und ob diese erhalten bleiben sollen.

Da das Ganze dann doch deutlicher mehr als ein Einzeiler ist, stellt sich hier spontan die Frage nach dem Sinn...
 
Zuletzt bearbeitet: