das ganze funktioniert aber nur wenn die "Vorgängerversion" diesen Skript auch schon hatte, oder?
Nein, die Migration macht immer das Script des SmartPart mit der höheren Versionsnummer.
Das SmartPart welches migriert werden soll, braucht kein Migrationsscript
Ich habe mal ein sehr einfaches Beispiel gemacht: Eine Stütze.
In Version 1.0 wird nur eine rechteckige Stütze als 2D-Rechteck und 3D-Quader erzeugt.
Aber bereits mit allen Formatierungen und Flächendarstellungen (auch im Schnitt).
Diese SmartPart-Stütze hat Version 1.0.
Irgendwann will man dann dieses SmartPart erweitern, damit z.B. auch runde Stützen erzeugt werden können.
Dazu habe ich eine dieser SmartPart-Stützen kopiert, und dort Erweiterungen vorgenommen:
1. neuen Parameter "shp_tp" für die Form
2. neuen Parameter "rad" für den Radius einer Rundstütze
3. Scripte erweitert, damit obige Paramter eine Rundstütze erzeugen
4. Version auf "1.1" hochgesetzt
5. Das Migrations-Script am Anfang des Parameterscripts eingefügt:
IF MIGR_VERSION > GLOB_VERSION THEN
IF GLOB_VERSION = "1.0" AND MIGR_VERSION > GLOB_VERSION THEN
NEWPARAMETER 5 , "shp_tp" , 1 , `Form` , "" , -1 , 0 , 0 , 0 , 0 , 1
NEWPARAMETER 1 , "rad" , ref_x/2 , `Radius` , "" , -1 , 0 , 0 , 0 , 0 , 1
SETVERSION "1.1"
ENDIF
!IF GLOB_VERSION = "1.1" AND MIGR_VERSION > GLOB_VERSION THEN
!NEWPARAMETER ...
!DELPARAMETER ...
!SETVERSION "1.2"
!ENDIF
END
ENDIF
Wie man sieht, muss man im Migrationsscript lediglich die neu hinzugekommenen Parameter erzeugen,
oder nicht mehr verwendete Parameter löschen. Danach wird mit dem Befehl SETVERSION "1.1" die Version auf die neue Version hochgesetzt, und (wichtig) die Ausführung des Parameter-Script mit END beendet.
Die geänderten (neuen) Scripte werden dann automatisch in das zu migrierende SmartPart kopiert.
Mit einer dieser SmartPart-Stützen der Version 1.1 kann man nun mit der Funktion "SmartPart Version übertragen" ältere SmartPart-Stützen (Version 1.0 und kleiner) auf einen Rutsch in die Version 1.1 überführen. Die unveränderten Parameter behalten dabei ihre Werte bei, neue Parameter werden angelegt, sämtliche Scripte kopiert, und die Version auf 1.1 hochgesetzt.