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
90-mal heruntergeladen
Größe: 32,39 KiB
Typ: text/xml
94-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
90-mal heruntergeladen
Größe: 32,39 KiB
Typ: text/xml
94-mal heruntergeladen
Größe: 35,13 KiB

Hallo Nemo,

ich habe es mal versucht, allerdings klappt das leider nicht, hast du eine Idee, woran es liegt?

Grüße Paul

Anhänge (1)

Typ: image/png
53-mal heruntergeladen
Größe: 11,43 KiB

SMT in welches die Zeilen eingefügt wurden hat als Versionsnummer nicht die neue Nummer erhalten od. die ID des SMT ist nicht (mehr) identisch mit den zu tauschenden SMT.

Moin,

teils übernimmt er die Attribute, aber er löscht die alten nicht und ein weiteres Problem, er ersetzt nicht den Dialog-Skript?

Grüße

es werden alle skripte getauscht. nur die parameter bleiben so wie sie waren, wie auch attribute die angehängt sind.
sollen hier änderungen erfolgen, müssen die in dem migrationsbereich beschrieben werden.

Für das Bearbeiten von Attributen (Modifizieren, Löschen, Hinzufügen) gibt es leistungsfähige Funktionen in Allplan, die man nach der Migration auf die SmartParts anwenden kann.