Python-Ausdrücke


<< Klicken um Inhaltsverzeichnis anzuzeigen >>

Navigation:  Module und Plug-ins > 2analyze >

Python-Ausdrücke


Im Folgenden finden Sie die Anleitung zum Plug-in Python-Ausdrücke.

 

warndreieck_klein

Bitte beachten

Um mit dem Plug-in arbeiten zu können, müssen einige Voraussetzungen erfüllt werden. Details dazu können im Kapitel Python nachgelesen werden.

 

Inhalt des Kapitels

1. Einführung in das Plug-in

 1.1 Funktion und Features

2. Interface

 2.1 Aufbau

 2.2 Plug-in-Menü

 2.3 Plug-in Fenster

3. Optionen

4. Neues Statement erstellen und bearbeiten

5. Python Skripte online ausführen

6. Skript Referenz

 

 

1. Einführung in das Plug-in

1.1 Funktion und Features

Mit Hilfe des Plug-ins Python-Ausdrücke können Python-Skripte eingelesen und verarbeitet werden.

Die Skripte und die darin enthaltenen Parameter können dabei über eine graphische Benutzeroberfläche manipuliert und ausgeführt werden.

Die Ergebnisse der Skriptdurchläufe können anschließend mit den in SimAssist zur Verfügung stehenden Plug-ins ausgewertet und visualisiert werden.

 

info_icon_neu

Hinweis

Seit SimAssist Version 9.0 ist es möglich, einige der mitgelieferten Skripte auch online zu verwenden, ohne das eine lokale Python Installation nötig ist.

 

2. Interface

2.1 Aufbau

20241217_python_overview

Abbildung 1 - Übersicht

 

Der Aufbau des Plug-ins ist dreigeteilt.

Im oberen Bereich befindet sich das Menü, mit unterschiedlichen Buttons zur Bedienung des Plug-ins, unterteilt in die Kategorien Pfade, Abfragen und Daten. Diese werden in 2.2 Plug-in-Menü genauer erläutert.

Im Bereich darunter auf der linken Seite befindet sich der Datenbereich. Hier werden alle an SimAssist angebundenen Daten aufgelistet und können von hier aus per Drag&Drop zum Plug-in hinzugefügt werden.

Rechts daneben befindet sich das Plug-in Fenster. Hier findet die eigentliche Arbeit mit dem Plug-in statt.

 

2.2 Plug-in-Menü

In nachstehender Tabelle werden die Funktionen der einzelnen Buttons genauer beschrieben.

Button

Beschreibung

button_script_folder

Öffnet den Order über den Windows Explorer, in dem die Python Skripte abgelegt sind.

Standardpfad: ...\Plugins\p_sp_4python\Scripts

button_python_folder

Öffnet den Order über den Windows Explorer, in dem die Python Installation abgelegt ist.

Dieser Ordner muss vor der erstmaligen Verwendung des Plug-ins in den Optionen festgelegt werden.

button_python_path

Öffnet den Windows Explorer, um den Pfad zur lokalen Python Installation festzulegen.

Alternativ kann dieser Pfad in den Optionen des Plug-ins eingestellt werden.

20241217_python_button

Öffnet einen Dialog, in dem die Serveradresse eingegeben werden kann, um Python Skripte online auszuführen.

Details siehe Python Skripte online ausführen.

button_new

Öffnet eine neue Ansicht, um ein neues Python Statement zu erstellen.

button_edit

Öffnet eine neue Ansicht, in der das ausgewählte Skript bearbeitet werden kann.

button_copy

Kopiert die ausgewählten Skripte.

Das neue Skript wird zur Liste der vorhandenen Skripte hinzugefügt, jedoch nicht automatisch ausgeführt

button_delete

Löscht die ausgewählten Skripte aus der Liste

button_reset_all

Setzt die Ergebnisse aller Skripte in der Liste zurück, unabhängig von der Auswahl/Markierung

button_reset

Setzt die Ergebnisse der ausgewählten Skripte in der Liste zurück

button_execute

Führt die ausgewählten Skripte aus. Während die Skripte ausgeführt werden, wird in der Statusleiste der Fortschritt angezeigt.

Über das X-Icon kann die Ausführung jederzeit abgebrochen werden.

status_test_script

button_execute_all

Führt alle Skripte in der Liste aus, unabhängig von der Auswahl

 

 

2.3 Plug-in Fenster

Nachfolgende Tabelle gibt einen Überblick über die möglichen Statusänderungen, sowie die Elemente der Übersichtsliste:

Name der Spalte

Beschreibung

Status

Die Spalte Status kann folgende Ausprägungen anzeigen:

icon_Status_1 zeigt an, dass das Skript noch nicht ausgeführt wurde

icon_Status_2 zeigt an, dass das Skript erfolgreich abgearbeitet wurde

icon_Status_3 zeigt an, dass beim Ausführen des Skripts Fehler aufgetreten sind

Im Fehlerfall kann eine kurze Info darüber sofort angezeigt werden, in dem der Cursor über das Icon platziert wird.

Außerdem wird der Fehler in der SimAssist Log-Datei protokolliert. Diese ist über das SimAssist Hauptmenü über den Button Logdatei aufzurufen.

Daten

Das Datenbank-Icon icon_daten zeigt an, dass das ausgeführte Skript erfolgreich Daten zurückgegeben hat

Name

Name, welcher beim Erstellen des Ausdrucks im Bereich Name angegeben wurde

Kategorie

Beschreibungstext, welcher beim Erstellen des Ausdrucks im Bereich Kategorie angegeben wurde

Pythonskript

Name des verwendeten Skripts

 

 

3. Optionen

In diesem Abschnitt werden die Plug-in spezifischen Optionen aufgelistet und erläutert:

python_optionendialog

Abbildung 2 - Optionendialog

 

Option

Beschreibung

Python

Pfad zu Python

Vollständiger Pfad zur installierten Pythonanwendung (python.exe)

Python Debuggen

Pipename

Leer lassen, um die Python-Skripte automatisch auszuführen. Ein eingegebener Wert definiert den Namen der Pipe für den Pipeserver.

Dies kann zum Debuggen von Pythonskripten verwendet werden. Wenn die Pipe über einen Namen definiert wird, dann muss das Pythonskript extern gestartet werden.

Pythonausgabe protokollieren

Wenn aktiviert, werden Konsolenausgaben von Python in die SimAssist Logdatei geschrieben. Die Konsolenausgaben können sehr umfangreich sein und die Dauer der Ausführung des Skriptes beeinflussen.

Time-outs

Ausführungs Time-out

Definiert eine Zeit in Sekunden [s], innerhalb der die Berechnung im Pythoncode abgeschlossen sein muss und das Schreiben des Ergebnisses begonnen werden muss. Default-Wert: 600 Sekunden

Eingangsdaten Time-out

Definiert eine Zeit in Sekunden [s], innerhalb der Python die Eingangsdaten über die Pipeverbindung auslesen muss. Default-Wert: 60 Sekunden

Ergebnis Time-out

Definiert eine Zeit in Sekunden [s], innerhalb der das Ergebnis über die Pipeverbindung übertragen werden muss. Default-Wert: 60 Sekunden

Verbindungs Time-out

Definiert eine Zeit in Sekunden [s], innerhalb der sich Python mit dem Pipeserver verbinden muss. Default-Wert: 10 Sekunden

 

 

4. Neues Statement erstellen und bearbeiten

Ein Klick auf den Button Neu öffnet eine neue Ansicht, in der ein neues Python Statement erstellt werden kann.

Die Buttons in der Kategorie Pfade im Menü haben die gleiche Funktion, wie in 2.2 Plug-in Menü beschrieben

Der Button Skript testen testet das (neue) Python Statement.

Der Unterschied zwischen Skript testen und Ausführen besteht darin, dass beim Testen des Skripts auch die XML-Daten protokolliert werden, welche im Zuge der Ausführung des Skripts hin und hergeschickt werden.

Diese ausführliche Protokollierung kann die Fehlersuche ggf. erleichtern. (Diese Funktion steht nur bei vorhandener, lokaler Python Installation zur Verfügung)

 

 

overview_script_empty

Abbildung 3 - Neues Statement erstellen

Im Feld Name ist ein Name für das neue Statement zu vergeben

Im Feld Kategorie ist kann eine Kategorie für das Statement vergeben werden

Im Feld Beschreibung kann eine solche eingetragen werden

 

Ist die Checkbox bei Ergebnis puffern gesetzt, so werden alle Daten im Speicher gepuffert.

Ist die Checkbox nicht gesetzt, werden die Berechnungen bei jedem Laden des Projektes erneut durchgeführt

 

Ein Klick auf die Zeile Pythonskript oder auf das Dropdown-Icon icon_dropdown öffnet ein Dropdown, in dem alle verfügbaren Skripte aufgelistet werden. (Online-Skripte werden nur bei aktiver Verbindung angezeigt)

 

Ein Klick auf das X-Icon icon_reload_scripts löscht die Auswahl der aktuellen Skripte und lädt den Inhalt des angebundenen Skriptordners neu. Dadurch wird auch die Dropdownliste aktualisiert

 

Ein Klick auf das Icon mit den drei Punkten icon_skriptfolder öffnet den Ordner, in dem die verfügbaren Pythonskripte abgelegt sind.

 

Solange noch kein Skript aus dem Dropdown ausgewählt ist, bleibt die Anzeige leer, wie in nebenstehender Abbildung zu sehen.

 

Sobald ein Skript ausgewählt wird, wird es ausgelesen und auf der Oberfläche angezeigt (siehe Abbildung 4).

 

 

Die in Abbildung 4 gezeigten Inhalte sind abhängig vom jeweiligen Skript.

Wie diese Inhalte parametriert werden können, wird im Kapitel Skript Referenz beschrieben.

 

Um Daten zu einem neuen Statement hinzuzufügen, können entweder ganze Tabellen oder einzelne Spalten aus dem Datenbereich via Drag&Drop zum Plug-in hinzugefügt werden (siehe Abbildung 5).

overview_script_edited

Abbildung 4 - Neues Statement mit Skript

 

python_statement_adding_Data_7.0

Abbildung 5 - Daten zum Statement hinzufügen

 

Anschließend werden alle verfügbaren Spalten aus der Tabelle oder die manuell hinzugefügten Spalten angezeigt (siehe Abbildung 6).

Über das Info-Icon icon_datentypen können die im Pythonskript hinterlegten bzw. für den Bereich nötigen Datentypen eingeblendet werden.

Für die Bereiche Stellgrößen, Zielgrößen und Kategorische Parameter bedeutet die Angabe [Numeric], dass in diesem Bereich nur numerische Datentypen zulässig sind.

Die Angabe [Int64] bei der Spalte ExpNr bedeutet, dass diese Spalte den Datentyp Integer besitzt (siehe Abbildung 7).

python_statement_data_added

Abbildung 6 - Daten hinzugefügt

python_statement_datentypen_eingeblendet

Abbildung 7 - Datentypen einblenden

 

Jetzt können in diesem Beispiel aus dem Bereich nicht zugewiesen die verfügbaren Spalten mit Hilfe von Drag&Drop auf die zur Verfügung stehenden Bereiche Stellgrößen, Zielgrößen und Kategorische Parameter verteilt werden.

python_statement_moving_columns_7.0

Abbildung 8 - Spalten verteilen

Die beiden Symbole neben dem Cursor icon_columns und icon_columns_2 deuten an, wo die zu verschiebende Spalte eingefügt wird.

Dabei kommt es auch darauf an, von wo aus die einzufügende Spalte in den Zielbereich gezogen wird.

 

Sobald alle Bereiche mit Spalten befüllt sind, kann über die Buttons im Menü die Ausführung des Skriptes gestartet werden.

Sobald das Skript einmal erfolgreich ausgeführt wurde, stehen die Ergebnisdaten über die Datenanbieterschnittstelle (Reiter Datenanbieter) zur Verfügung.

python_statement_dataprovider

Abbildung 9 - Datenanbieterschnittstelle

 

 

5. Python Skripte online ausführen

Über den Button Verbindung kann ein Dialog geöffnet werden, um eine Verbindung zum Server herzustellen.

Dabei muss folgende Adresse angegeben werden: https://simassist-python.simplan.de/

20241217_python_serverdialog_abgemeldet

Abbildung 10 - Serverdialog

 

Ein Klick auf Anmelden öffnet den Browser. Dort kann sich entweder mit bestehendem Account eingeloggt oder ein neuer (kostenloser) Account angelegt werden, bestehend aus Mail-Adresse, Passwort und optionalem Benutzernamen.

20241217_python_browser_anmelden

Abbildung 11 - Anmeldung am Server

20241217_python_browser_registrieren

Abbildung 12 - Registrierung

 

Nach erfolgreicher Anmeldung erscheint ein Bestätigungsbildschirm. Im Dialog in SimAssist wird jetzt angezeigt, dass der User angemeldet ist.

Über den Button Konto löschen kann das angelegte Benutzerkonto jederzeit wieder gelöscht werden.

20241217_python_serverdialog_angemeldet

Abbildung 13 - Erfolgreich angemeldet

 

 

6. Skript Referenz

In diesem Kapitel werden beispielhaft einzelne Elemente eines Python-Skripts aufgeschlüsselt und erklärt. Die graphische Oberfläche zu diesem Skript ist in Abbildung 14 zu sehen.

overview_script_reference

Abbildung 14 - graphische Oberfläche zu script_reference.py

 

 

#pyplugin: If the script starts with '#2pyplugin', SimAssist will recognise it as a python script which can be executed with Pythondefinition plugin

#This line is ignored by SimAssist, but the '#Description' tag in the next line defines the description text.

#Description:This is an example script definition without python code.

#

# ----------------------------------

# ---  Structure for parameters  ---

# ----------------------------------

#Each line which starts with "Parameter:" defines one parameter, additional attributes are separated by pipe: i.e. #Input:Attribute1|Attribute2|Attribute3 etc.

#Attribute1: Parametername, supports i18n, i.e. <i18n><en>Title</en><de>Titel</de></i18n> (mandatory)

#Attribute2: Parametertype, supported types: string,int,double,DateTime,bool (default value: string)

#Attribute3: Default value for parameter (if not specified the default value of the type will be used)

#Attribute4: for string: Enumeration of possible values separated by ;

#Attribute4: for int,double,DateTime: Min;Max values for EditorControl, separated by ;

#Attribute5: Formatstring for EditorControl (where applicable), see https://docs.devexpress.com/WindowsForms/2141/common-features/formatting-values/format-specifiers

#Attribute6: Description, supports i18n, i.e. <i18n><en>Description of ...</en><de>Beschreibung von ...</de></i18n>

#

# --- Examples for parameters ---

#Parameter:Title

#Parameter:<i18n><en>Subtitle</en><de>Subtitel</de></i18n>|string|Latin hypercube sampling|||<i18n><en>Description of Subtitle in English</en><de>Beschreibung von Subtitel auf Deutsch</de></i18n>

#Parameter:Mode||Normal|Normal;Complex

#Parameter:Limit|int

#Parameter:Percentage|double|98.5|0;100

#Parameter:Evaluation|DateTime|today|today;12/31/2099 23:59:59

#Parameter:Effective date|DateTime|05/21/2014 22:09:28||d

#Parameter:Boost|bool|True

#

# ----------------------------------

# --- Structure for input fields ---

# ----------------------------------

#Each line which starts with 'Input:' defines one input-field, additional attributes are separated by pipe: i.e. #Input:Attribute1|Attribute2|Attribute3 etc.

#Attribute1: Name: Unique field name, supports i18n, i.e. <i18n><en>Title</en><de>Titel</de></i18n>

#Attribute2: Type: One of following values to limit supported column types: any|text|numeric|date time|bool (default value: any)

#Attribute3: Min column count (default value: 0)

#Attribute4: Max column count (default value: int.MaxValue)

#Attribute5: Group ID: Any value to group input fields. Fields with the same group ID will accept columns only from the same table. Supports i18n. (default value: "default")

#Attribute6: true to load full table (all columns), false to load data only for requested columns. (default value: false)

#

# --- Examples for input fields ---

#Input:X-Values

#Input:Y-Values|numeric

#Input:Input Field 1|numeric|1|99

#Input:Input Field 2|date time|1

#Input:Column from one table

#Input:Column from other table|any|0|1|other table

#Input:Some field|any|0|1|this table will contain data from all columns|true

 

 


© SimPlan AG - AG Hanau HRB 6845 - info@simplan.de - www.simplan.de