Ein Out Skript anlegen

Im letzten Abschnitt haben wir gelernt, wie wir ein In-Skript erstellen und die Maske so befüllen, dass in dieser der aktuelle Achsabstand der Konstruktion angezeigt wird.

Nun wird es Zeit, dass wir ein Out-Skript erstellen, mit der wir den Wert, den der Benutzer in der Maske dann wirklich eingestellt hat, benutzen, um die Konstruktion einzustellen.

Also legen wir uns ein Out – Skript an. Das muss wieder im UI Ordner liegen. Ich nenne es Demo_Out.ui. Das Out Skript muss dann natürlich auch wieder in der Konfigurations-XML eingetragen werden.

<XML>
    <config tag=“900.001.010.510.100″ ui=“demo“ in=“Demo_In“ out=“Demo_Out“/>
</XML>

Auch das Out-Skript hat eigentlich immer einen bestimmten Inhalt, den man benötigt. Wir müssen wieder das Modul SegmentConfig laden, genauso wie das Modul kkp.

Diesmal muss die SegmentConfig aber keine XML erstellen sondern eine XML einlesen, damit wir diese verwenden können.

# -*- coding: utf-8 -*-
import kkp
import SegmentConfig as SC
if __name__ == ‚__main__‘:
    sc = SC.SegmentConfig()
    sc.fromfile(kkp.Get_Projektdir() + „\\segmentConfig_ui.xml“)

Als nächstes schreiben wir uns eine Funktion, damit wir in Zukunft noch erkennen können, dass wir nun den Achsabstand einstellen wollen.

# -*- coding: utf-8 -*-
import kkp
import SegmentConfig as SC
def setAchsabstand(sc):
    pass
if __name__ == ‚__main__‘:
    sc = SC.SegmentConfig()
    sc.fromfile(kkp.Get_Projektdir() + „\\segmentConfig_ui.xml“)
    setAchsabstand(sc)

In dieser Funktion lesen wir nun das Objekt spinAchsabstand aus.

# -*- coding: utf-8 -*-
import kkp
import SegmentConfig as SC
def setAchsabstand(sc):
    objAchsabstand = sc.findByName(„spinAchsabstand“)
    if objAchsabstand is None:
        return #Wenn das Objekt spinAchsabstand nicht vorhanden ist, brechen wir die Funktion ab.
    pass
if __name__ == ‚__main__‘:
    sc = SC.SegmentConfig()
    sc.fromfile(kkp.Get_Projektdir() + „\\segmentConfig_ui.xml“)
    setAchsabstand(sc)

Nun können wir den Wert abfragen.

# -*- coding: utf-8 -*-
import kkp
import SegmentConfig as SC
def setAchsabstand(sc):
    objAchsabstand = sc.findByName(„spinAchsabstand“)
    if objAchsabstand is None:
        return #Wenn das Objekt spinAchsabstand nicht vorhanden ist, brechen wir die Funktion ab.
    sAchsabstand = objAchsabstand.findProperty(‚value‘)[‚value‘]
    pass
if __name__ == ‚__main__‘:
    sc = SC.SegmentConfig()
    sc.fromfile(kkp.Get_Projektdir() + „\\segmentConfig_ui.xml“)
    setAchsabstand(sc)

Da der Wert ein String ist, die Funktion zum Einstellen eines Parameters aber eine Fließkommazahl (float) verlangt, müssen wir den Wert noch konvertieren.

def setAchsabstand(sc):
    objAchsabstand = sc.findByName(„spinAchsabstand“)
    if objAchsabstand is None:
        return #Wenn das Objekt spinAchsabstand nicht vorhanden ist, brechen wir die Funktion ab.
    sAchsabstand = objAchsabstand.findProperty(‚value‘)[‚value‘]
    dAchsabstand = float(sAchsabstand)

Und jetzt müssen wir diesen Wert einfach nur noch der KKP API übergeben und den Parameter einstellen.

# -*- coding: utf-8 -*-
import kkp
import SegmentConfig as SC
def setAchsabstand(sc):
    objAchsabstand = sc.findByName(„spinAchsabstand“)
    if objAchsabstand is None:
        return #Wenn das Objekt spinAchsabstand nicht vorhanden ist, brechen wir die Funktion ab.
    sAchsabstand = objAchsabstand.findProperty(‚value‘)[‚value‘]
    dAchsabstand = float(sAchsabstand)
    kkp.Set_Parameter(100 , „998.998.9998“ , dAchsabstand)
    pass
if __name__ == ‚__main__‘:
    sc = SC.SegmentConfig()
    sc.fromfile(kkp.Get_Projektdir() + „\\segmentConfig_ui.xml“)
    setAchsabstand(sc)

Und schon können wir die Maske öffnen, einen Wert für den Achsabstand eintragen und wenn wir auf „OK“ klicken, wird der neue Wert eingestellt.

Und da wir unserer Spin Box einen Mindestwert und auch einen Maximalwert gegeben haben, kann der Anwender keine Werte außerhalb dieses Bereiches eintragen.

Übrigens die Min-Und-Max Werte sind auch nur Properties und können vom In-Skript jederzeit verändert werden, beispielsweise, wenn kein Glas, sondern eine Hohlkammerplatte gewählt wurde.