Python-Beispiele

Instanz einer .NET Klasse erstellen

Dieses Beispiel zeigt, wie Sie eine .NET-Assembly der CLR (Common Language Runtime) als Referenz hinzufügen, und wie Sie eine Instanz einer Klasse erstellen.

Erstellen einer Instanz der Klasse Loehnert.TypeAndResult.Station
import clr (1)
clr.AddReference("Loehnert.TypeAndResult") (2)
from Loehnert.TypeAndResult import Station (3)

station = Station("my_station") (4)
1 Import des CLR (Common Language Runtime) Moduls
2 Um eine .NET-Assembly zu verwenden, muss diese der CLR als Referenz hinzugefügt werden
3 Den Typ Station aus dem Namespace Loehnert.TypeAndResult importieren
4 Aufruf des Konstruktors
Viele nützliche Tipps zur .NET Integration finden Sie in der IronPython .NET Integration Dokumentation

Messzyklus erstellen und Merkmal bewerten

Es sollen ein Messzyklus und ein Messprozess erstellt werden und ein Merkmal bewertet werden. Die Station hat ein Typdatenmodul und ein Werkstückmodul mit dem Namen WorkPiece. Es sind die Typdaten aus dem Typdaten-Beispiel geladen.

WorkPiece.SetWorkPiece("1234") (1)
measure_cycle = WorkPiece.GetNewMeasureCycle() (2)
measure_process = measure_cycle.AddNewMeasureProcess("HighVoltageTest") (3)

current = 0.004 # 4mA (4)
measure_process.EvaluateAttribute("Current", current) (5)

measure_process.Evaluate() (6)
measure_cycle.Evaluate() (7)
WorkPiece.RemoveWorkPiece() (8)
1 Werkstück (Prüfling) über eine ID laden. Die eindeutigen ID "1234" könnte z.B. eine Trace-ID oder eine Seriennummer sein
2 Messzyklus, für ein Werkstück, erstellen
3 Messprozess, für den Prozess "HighVoltageTest", erstellen
4 Messwert generieren, dieser würde von einem Messgerät erzeugt werden
5 Merkmal "Current" bewerten
6 Messprozess bewerten
7 Messzyklus bewerten
8 Werkstück aus dem Werkstückmodul entfernen

Abbildung 1 zeigt die Ergebnisansicht im Servicefenster des Werkstückmoduls. Die Gesamtklassifikation des Messzyklus wird in dem gewählten Beispiel als Nicht in Ordnung bewertet, da nicht alle Merkmale des HighVoltage-Prozesses gemessen wurden.

Beispiel Ergebnisansicht
Abbildung 1. Ansicht der Ergebnisse, Servicefenster des Werkstückmoduls
Prozess-, Parameter- und Merkmalnamen können per Drag’n’Drop aus dem Typdateneditor oder dem Servicefenster des Typdatenmoduls in das Script kopiert werden.

Einen Dialog anzeigen

In diesem Beispiel sehen Sie, wie Sie einen Dialog mit einem Eingabefeld anzeigen.

import clr
clr.AddReference("Loehnert.Controls") (1)
from Loehnert.Controls.Dialogs import DialogService

dialog = DialogService.GetDialogBuilder()\ (2)
.WithTitle("Eingabe Seriennummer")\ (3)
.WithInput(str, "Seriennummer")\ (4)
.WithOkButton().IsDefaultButton()\  (5) (6)
.WithCancelButton()\ (7)
.ThrowExceptionOnCancel()\ (8)
.Build()

result = dialog.Show() (9)

serial_number = result.Values[0] (10)
1 .NET-Assembly "Loehnert.Controls.dll" der CLR als Referenz hinzufügen
2 Einen "DialogBuilder" erstellen
3 Titel hinzufügen
4 Eingabefeld für eine Zeichenfolge hinzufügen
5 OK-Button hinzufügen
6 OK-Button als Standardbutton festlegen, dieser reagiert auf die Enter-Taste
7 Abbruch-Button hinzufügen
8 Bei Abbruch soll eine Ausnahme geworfen werden (siehe OperationCanceledException), diese führt zum Abbruch des Skripts
9 Dialog anzeigen
10 Die Seriennummer aus dem Ergebnis des Dialogs holen
Beispiel Eingabedialog
Abbildung 2. Ansicht des Eingabedialogs
Weitere Beispiele für Dialoge finden Sie in der Dokumentation des DialogBuilders.

Loggen

Dieses Beispiel erstellt einen Logger und erzeugt einen Logeintrag.

import clr

clr.AddReference("Loehnert.Lisrt")

from Loehnert.Lisrt.Messaging import MessageService
from Loehnert.Lisrt.Contracts import LogLevel

logger = MessageService.Instance.LoggerFactory.GetLogger("MyLogger") (1)
logger.Log(LogLevel.Info, "Das ist ein Logeintrag mit dem Log-Level Info") (2)
1 Einen Logger mit dem Namen "MyLogger" erstellen
2 Einen Logeintrag mit dem Log-Level "Info" erzeugen

Typdaten vererben

Das folgende Beispiel zeigt, wie Typdaten mittels Vererbung kombiniert werden können.

import clr

clr.AddReference("Caliburn.Micro")
clr.AddReference("Loehnert.TypeAndResult")
clr.AddReference("Loehnert.Lisrt.TypeAndResult")

from Caliburn.Micro import IoC
from Loehnert.TypeAndResult import TypeData as type_data_class
from Loehnert.TypeAndResult.Provider import ITypeDataProvider
from Loehnert.Lisrt.TypeAndResult.GeminiModule import GeminiTypeDataModule


def combine_type_data(types):
    provider = IoC.Get[GeminiTypeDataModule]().DefaultProvider  # type: ITypeDataProvider (1)
    combined_type_data = None
    for type_identifier in types:
        current_type_data = provider.Load(type_identifier)
        combined_type_data = current_type_data if combined_type_data == None else type_data_class.Inherit(combined_type_data, current_type_data) (2)

    return combined_type_data

types = ["Type_A", "Type_B", "Type_C"]
type_data = combine_type_data(types)
type_data.TypeIdentifier = "MySuperType" (3)
TypeData.SetTypeData(type_data) (4)
1 Standardtypdatenanbieter holen (z.B. XML-Dateidatenquelle)
2 Typdaten vererben
3 Die kombinierten Typdaten erhalten einen neuen Namen
4 Die Typdaten in das Typdatenmodul laden
inherit type datascript example
Abbildung 3. Klassendiagramm der Typdaten

Zuletzt geändert 19.01.2024