Jump to content

nachträglicher Zugriff auf RPS-Regeln möglich?


---
 Share

Recommended Posts

Hallo,

ich benutze in vielen Auswerteprogrammen RPS-Ausrichtungen mit relativ vielen Punkten. Den RPS-Regelsatz erstelle ich innerhalb eines Skripts, indem ich für jeden Punkt eine Regel als dict verfasse und alle gemeinsam als Array an den "rps_rules" Parameter von gom.script.alignment.create_rps() übergebe. Sobald die RPS-Ausrichtung einmal definiert ist, habe ich jedoch offenbar keinen Zugriff mehr auf den Regelsatz, d.h. ich kann nicht z.B. einzelne Punkte gezielt blockieren.

Was funktioniert ist, das "Edit Creation Parameters" per Makro aufzunehmen. Dabei wird aber der gesamte Regelsatz noch einmal übergeben. Damit würden Änderungen in meinem ursprünglichen Regelsatz verloren gehen, bzw. ich müsste diese immer nachhalten, was sehr fehleranfällig ist.

Was ich mir wünsche ist also, auf den Regelsatz einer RPS-Ausrichtung nachträglich zugreifen zu können und dabei einzelne Regeln zu verändern und nicht den Regelsatz als Ganzes.

Danke!

 - Fabian

 

Link to comment
Share on other sites

Hallo,

wenn sie die RPS Ausrichtung per Skript erzeugt haben, dann könnte folgendes als Idee funktionieren:

elems = []
alignment = gom.app.project.alignments['RPS']
for rps_rule in (alignment.creation_sequence_args.get ('rps_rules')):
	print (rps_rule['comparison'])
	elems.append (rps_rule['comparison'])

Wie sie sehen, können sie das dictionary und den Zugriff darauf wieder bekommen. Dies geht aber nur, wenn die Ausrichtung per Skript erzeugt wurde. Wenn sie es interaktiv erzeugen, wird eine komprimierte, binäre Version genutzt, auf die sie vom Skripting keinen Einfluß haben (weder lesend och schreibend),

Und ich muss leider noch ein Wort der Einschränkung sagen: Es ist uns erlaubt zu jedem Zeitpunkt, die "gescriptete" Parametrik intern in eine binäre umzuwandeln, z.B. beim Speichern oder Laden eines Projektes, was diesen Ansatz dann obsolet macht und im vorgestellten Code zu einer Exception führen würde (was sie natürlich wiederum abfangen können).

Ein besserer Ansatz wäre es, die Dictionaries, die sie zum Erzeugen benutzen, weiterhin abgespeichert zu lassen (in einem weiteren dictionary zu jeder erzeugten RPS Ausrichtung), um dann im Falle einer Änderung auf diese Information zugreifen zu können und sie für das 'Edit creation' nutzen zu können. Dies lässt sich einfach natürlich nur während eines Skriptablaufes realisieren, ansonsten müssten sie über eine De/Serialisierung dieser Informationen Gedanken machen.

MfG,

Bernd Alpers

Link to comment
Share on other sites

 Share

×
×
  • Create New...