icon

Support Forum

[Frage] V2025-1 - Eigene SmartParts tauschen [Gelöst]


Hallo,
wir haben eigene Smartparts, immer wenn wir Veränderungen machen, stehen wir vor dem Problem: Wie kann ich die neue Version auf die bestehenden in anderen Projekten übernehmen, ohne dass dann dort die geänderten Attribute und Längen zurückgesetzt werden?

Gruß!
Jürgen

Allplan Ingenieurbau V10 bis V2025

Lösung anzeigen Lösung verbergen

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.

Anhänge (2)

Typ: text/xml
0-mal heruntergeladen
Größe: 32,39 KiB
Typ: text/xml
1-mal heruntergeladen
Größe: 35,13 KiB

Dafür gibt es die Funktion "SmartPart Version übertragen".

Die Funktion "SmartPart Version übertragen" setzt einen entsprechenden Migrationsroutine im Parameterscript voraus.

Das ganz ist hier beschrieben, und wird bei einer Forums-Suche nach "Migration Smartpart" gefunden.

Das wichtigste bei der Migrationsroutine ist, das die Version entspr. hochgesetzt wird:

IF MIGR_VERSION > GLOB_VERSION THEN
... ! vorherigen Migrationen auf Version 6.2
IF GLOB_VERSION = "6.2" AND MIGR_VERSION > GLOB_VERSION THEN
NEWPARAMETER ...
DELPARAMETER ...
SETVERSION "6.21"
ENDIF
END
ENDIF

Danke ich gebe es an meinen Kollegen weiter...

Gruß!
Jürgen

Allplan Ingenieurbau V10 bis V2025

Hallo Nemo,

das ganze funktioniert aber nur wenn die "Vorgängerversion" diesen Skript auch schon hatte, oder?
Und hast du zufällig ein Smartpart wo du das mal angewendet hast um mal ein funktionierendes Beispiel zu haben?

Grüße Paul

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.

Anhänge (2)

Typ: text/xml
0-mal heruntergeladen
Größe: 32,39 KiB
Typ: text/xml
1-mal heruntergeladen
Größe: 35,13 KiB