Skip to main content

FVA-Workbench KnowledgeBase

Weitere Funktionen

Lesen & Schreiben

fileExists()
Tabelle 57. Prüft, ob die angegebene Datei existiert.

fileExists(filepath);

Parameter

Typ

Beschreibung

filepath

string

Pfad zur Datei

Rückgabewert

boolean

Funktion gibt true zurück, wenn die angegebene Datei existiert.



Beispiel

let filestatus = fileExists("c:/example/file.txt");
println(filestatus);
isFileReadable()
Tabelle 58. Prüft, ob die angegebene Datei existiert und lesbar ist.

isFileReadable(filepath);

Parameter

Typ

Beschreibung

filepath

string

Pfad zur Datei

Rückgabewert

boolean

Funktion gibt true zurück, wenn die angegebene Datei existiert und lesbar ist.



Beispiel Prüft, ob eine Datei lesbar ist.

let filestatus = isFileReadable("c:/example/file.txt");
println(filestatus);
isFileWriteable()
Tabelle 59. Prüft, ob die angegebene Datei existiert und schreibbar ist.

isFileWriteable(filepath);

Parameter

Typ

Beschreibung

filepath

string

Pfad zur Datei

Rückgabewert

boolean

Funktion gibt true zurück, wenn die angegebene Datei existiert und schreibbar ist.



Beispiel Prüft, ob eine Datei schreibbar ist.

let filestatus = isFileWriteable("c:/example/file.txt");
println(filestatus);
exportArchive()
Tabelle 60. Mit Hilfe dieser Funktion werden die Berechnungsdaten des aktuell geöffneten Models in den Zielordner kopiert.

exportArchive(path);

Parameter

Typ

Beschreibung

path

string

Pfad + Name der Datei

Rückgabewert

int

1 = Export erfolgreich

-1 = Schreibberechtigung im angegebenen Pfad fehlt

-2 = Verzeichnis konnte nicht erstellt werden

-4 = Fehler beim Export

Mögliche Fehler

Der Benutzer hat keine Schreibberechtigung für den angegeben Pfad



exportNotifications()
Tabelle 61. Exportiert Benachrichtigungen aus der Meldungsausgabe in eine .xml Datei. Eine bestehende Datei wird überschrieben.

exportNotifications(path);

Parameter

Typ

Beschreibung

path

string

Pfad + Name der Datei

Mögliche Fehler

Der Benutzer hat keine Schreibberechtigung für den angegeben Pfad.



Beispiel 1 Berechnungsmeldungen als .xml exportieren.

exportNotifications("C:\\temp\\notifications.xml");

Zugriff auf Attribute

isAttrLocked()
Tabelle 62. Prüft, ob das Attribut für den Schreibzugriff gesperrt ist.

isAttrLocked(attrID, compID);

Parameter

Typ

Beschreibung

attrID

string

Eindeutige ID des Attributs.

compID

int

Eindeutige ID der Komponente im Modell.

Rückgabewert

boolean

true - Attribut kann nicht geschrieben werden.

false - Attribut kann geschrieben werden.



Attribute können unter Umständen den Status "locked" haben und nicht via Script geändert werden. Dies ist z.B. der Fall, wenn die Vorgabe des Attributwertes zu einer Überbestimmung des Modells führen würde.

Beispiel

Wurde im Editorview auf der Komponente Stirnradstufe der Dropdown-Eintrag zur Aufteilung der Profilverschiebung "Eingabe der Profilverschiebung nach DIN 3992" ausgewählt, werden die Attribute zur manuellen Eingabe des Nennprofilverschiebungsfaktors ausgeblendet und gesperrt.

Das Script prüft, ob das Attribut "addendum modification coefficient" beschreibbar ist. Wenn ja, wird der neue Wert gesetzt. Wenn nein, wird eine Meldung mit dem Hinweis "Nennprofilverschiebungsfaktor kann nicht gesetzt werden, bitte die Aufteilung Profilverschiebung prüfen" ausgegeben.

let gearID = 8;
let addendum_modification = 0.3;
if(isAttrLocked("addendum modification coefficient", gearID) == false){
    setAttr("addendum modification coefficient", gearID, addendum_modification, EDAT);
}else{
    println("Addendum modification factor cannot be set, please check the addendum modification allocation.");
}
delRDAT()
Tabelle 63. Löscht alle berechneten (RDAT) Attributwerte.

delRDAT();

Parameter

Typ

Beschreibung

-

-

-



Für weitere Informationen siehe Datenhaltung (EDAT/RDAT)

Beispiel 1 Alle RDAT-Werte löschen.

delRDAT();

Ausgabe

clearMonitor()
Tabelle 64. Löscht den Inhalt des Scripting-Monitors.

clearMonitor();

Parameter

Typ

Beschreibung

-

-

-



Beispiel 1 Monitor leeren

clearMonitor();
stopScript()
Tabelle 65. Stoppt die Ausführung des aktuelle laufenden Skripts. Optional kann ein Text auf dem Scripting-Monitor ausgegeben werden.

stopScript(message);

Parameter

Typ

Beschreibung

message

beliebig

Text, bzw. Daten die nach dem Scriptabbruch auf dem Scripting-Monitor angezeigt werden



Beispiel 1 Mehrere Meldungen in einer Schleife ausgeben

1var safety = 1.8;
2if(safety > 2){
3    generateReport("c:\\template.wbrep", "c:\\report.html");
4}else{
5    stopScript("The safety is: "+safety+"\nScript was stopped");
}

1

Variable safety mit dem Wert 1.8 belegen

2

Wenn der Wert in safety größer als 2 ist, dann

3

Ausgabereport erzeugen

4

Wenn safety kleiner als 2 ist oder der Wert undefiniert ist, dann

5

Script abbrechen und Meldung auf dem Scripting-Monitor ausgeben

format()
Tabelle 66. Formatiert Text oder Zahlen
format_parameter.png

Parameter

Beschreibung

align

Textausrichtung (links- oder rechtsbündig)

width

Feldbreite

precision

Anzahl der Nachkommastellen die dargestellt werden sollen

type

Datentyp des zu formatierenden Wertes

value

Zu formatierender Wert



Abbildung 34. Beispiel - Formatierte Textausgabe eines Attributs (Name, Formelzeichen, Wert, Einheit)
Beispiel - Formatierte Textausgabe eines Attributs (Name, Formelzeichen, Wert, Einheit)


1

format("%-12s", "Power");

(-) Linksbündig

(12) 12 Felder breit

(s) Wert von Typ String

2

format("%-3s", "P");

(-) Linksbündig,

(3) 3 Felder breit

(s) Wert vom Typ String

3

format("%10.3f",  148,2456);

() Rechtsbündig,

(10) 10 Felder breit

(f) Wert vom Typ Fließkommazahl

(.3) 3 Nachkommastellen

4

format("%3s", "kW");

() Rechtsbündig

(3) Felder breit

(s) Wert vom Typ String

Weitere

loadModel()
Tabelle 67. Lädt ein Getriebemodell.

loadModel(path)

Parameter

Typ

Beschreibung

path

string

Pfad + Name der Datei

Mögliche Fehler

Modelldatei existiert nicht oder Zugriff wird verweigert.



Anmerkung

Die Funktion kann nur im Batchbetrieb verwendet werden.

Beispiel 1 Lädt ein Modell aus dem angegebenen Verzeichnis.

loadModel("c:\\modell.wbpz");
startTransactionMode()
Tabelle 68. Aktiviert den Transaktionsmodus. Im Transaktionsmodus werden alle FVA-Workbench Funktionen, die nicht zwingend für die Berechnung benötigt werden, abgeschaltet. Hierdurch wird die Rechenzeit reduziert.

startTransactionMode();



Folgende Funktionen werden abgeschaltet:

  • Update der 3D-Darstellung

  • Korrelationen (Synchronisierung zwischen verschiedenen Attributen)

  • Erzeugung von Modellständen

endTransactionMode()
Tabelle 69. Deaktiviert den Transaktionsmodus.

endTransactionMode();



isBatchMode()
Tabelle 70. Prüft, ob das Script im Batchbetrieb oder über die GUI ausgeführt wird.

isBatchMode()

Parameter

Typ

Beschreibung

Rückgabewert

boolean

Funktion gibt true zurück, wenn das Script im Batch-Modus ausgeführt wird.



Einige Scripting Funktionen können nur im GUI-Modus bzw. nur im Batch-Modus ausgeführt werden. Über die isBatchMode() Funktion kann während der Scriptlaufzeit überprüft werden, in welchem Modus sich die FVA-Workbench befindet und entsprechend darauf reagiert werden.

Beispiel Schreiben einer Textdatei in ein Verzeichnis.

Wenn das Script im GUI-Modus ausgeführt wird, wird der Benutzer per Dialog nach dem zu verwendenden Verzeichnis gefragt. Im Batch-Modus wird das Verzeichnis verwendet, in dem sich die Modelldatei befindet.

let filename = "textfile.txt";
let text = "This text will be written to the file";
let directory;
let resultpath;

if (isBatchMode() == true) {
    directory = getModelProperty("FOLDER");
} else {
    directory = promptDirectory();
}

resultpath = directory+filename;
println("File written: "+resultpath);
writeToFile(resultpath, text, "c", "UTF-8");
getWorkbenchInfo()
Tabelle 71. Liefert Informationen über die gestartete FVA-Workbench.

getWorkbenchInfo(infoID);

Parameter

Typ

Beschreibung

infoID

VERSION - Versionsnummer der FVA-Workbench

REVISION - Fortlaufende Revisionsnummer

FULL- Versionsnummer und Revisionsnummer

Rückgabewert

string

VERSION

z.B. 8.1.0

REVISION

z.B. 61975

FULL

z.B. 8.1.0 61975



Beispiel Versions- und Revisionsnummer auf der Konsole ausgeben

let version = getWorkbenchInfo(VERSION);
let revision = getWorkbenchInfo(REVISION);

println("FVA-Workbench "+version+" Revision No. "+revision);
getLanguage()
Tabelle 72. Gibt die Sprache zurück, in der die FVA-Workbench gestartet wurde.

getLanguage();

Parameter

Typ

Beschreibung

Rückgabewert

string

de

Deutsch

en

Englisch



Beispiel Nach einer Berechnung werden je nach Sprache unterschiedliche Meldungen ausgegeben.

1let status = runCalcMethod("001_SYSTEM_CALCULATION", 1);
2let language = getLanguage();
3let success_message = language == "de" ? "Die Berechnung war erfolgreich" : "Calculation was successful";
4let fail_message = language == "de" ? "Die Berechnung ist fehlgeschlagen" : "Calculation failed";

5if (status == 1) {
6    println(success_message);
7    } else {
8  println(fail_message );
    }

1

Gesamtsystemberechnung durchführen und Rückgabewert in der Variablen status speichern.

2

Aktuelle Sprache der FVA-Workbench abfragen und den Rückgabewert in der Variablen language speichern.

3

Schreibt die Nachricht, die im Erfolgsfall ausgegeben werden soll, in die Variable success_message. Wenn der Wert in der Variablen Language "de" ist, wird der deutsche String verwendet.

4

Analog zur Erfolgsmeldung wird hier die Meldung im Fehlerfall in die Variable fail_message geschrieben.

5

Wenn Rückgabewert in Variable status = 1, dann:

6

Ausgabe auf der Erfolgsmeldung auf der Scripting-Konsole

7

Ansonsten:

8

Ausgabe der Fehlermeldung

getNotifications()

Liefert alle Meldungen zu einer durchgeführten Berechnung als JSON-Objekt zurück.

getNotifications(NotificationType);

Parameter

Typ

Beschreibung

NotificationType

String

ALL

Alle Meldungen

ERROR

Nur Fehlermeldungen

WARNING

Nur Warnmeldungen

INFO

Nur Infomeldungen

Rückgabewert

JSON-Objekt

Die Meldungen werden als verschachteltes JSON-Objekt zurückgegeben. Die oberste Ebene enthält Informationen über die durchgeführte Berechnung und die berechnete Komponente sowie die eigentliche Nachricht. Einige Nachrichten haben eine zweite Verschachtelungsebene, in der z. B. Informationen über das betroffene Attribut und seinen Wert enthalten sind.

Beispiel Alle Meldungen zu einer Berechnung auf dem Scripting-Monitor ausgeben.

let notifications = getNotifications("ALL");

for(i = 0; i < notifications.length; i++) {
    let notification = notifications[i];
    println("Notification #" + i);
    println("---------------");
    println("Type:                " + notification.type);
    println("CalcMethodCompId:    " + notification.calcMethodCompId);
    println("CalcMethodCompName:  " + notification.calcMethodCompName);
    println("CalcMethodId:        " + notification.calcMethodId);
    println("CalcMethodName:      " + notification.calcMethodName);
    println("CalcStepName:        " + notification.calcStepName);
    println("Message:             " + notification.message);
    println(" ");

    let items = notification.items;

    for(j = 0; j < items.length; j++) {
	let notificationItem = items[j];
	println("   Notification Item #" + j);
	println("   ---------------------");
	println("   AttrId:   " + notificationItem.attrId);
	println("   CompId:   " + notificationItem.compId);
	println("   Message:  " + notificationItem.message);
	println("   Value:    " + notificationItem.value);
        println(" ");
    }
println(" ");
}
getNotifications_messages_view.png
getNotifications_scripting_monitor.png

Vergleich der Meldungsausgabe in der Benutzeroberfläche mit der Ausgabe des Scriptes auf dem Scripting-Monitor.

Client-Server-Kommunikation

get() - HTTP request
Tabelle 73. Methode, um Daten von einem Server abzufragen.

get(url, header)

Parameter

Typ

Beschreibung

url

string

URL des Servers, von dem die Daten angefordert werden, auch Endpunkt genannt.

header

assoziatives Array

Enthält Metadaten und Informationen, die der Client an den Server sendet, um Details über die Anfrage, den Client selbst und seine Präferenzen zu übermitteln.

Rückgabewert (Response)

object

Der Rückgabewert ist ein Objekt von dem verschiedene Eigenschaften abgefragt werden können:

response.status

Statuscode, der von einem Server als Antwort auf jede HTTP-Anfrage zurückgegeben wird.

response.message

Textuelle Beschreibung des Statuscodes

response.data

Daten der Antwort als String

response.raw

Rohdaten der Antwort als Byte-Array



Hinweis

Weitere Informationen zum Umgang mit JSON-Daten finden Sie hier: Lesen und Schreiben von JSON-Dateien

Beispiel 1 Daten von einem Server abfragen

Der get-Request an den Endpunkt https://postman-echo.com/time/object gibt als Response das aktuelle Datum als JSON String zurück. Um diesen String in ein JSON Objekt zu konvertieren kann der JSON.parse Befehl verwendet werden. Dann kann über die Punktnotation auf die Elemente (Properties) im JSON Objekt zugegriffen werden.

let response = get('https://postman-echo.com/time/object');
println("Statuscode: " +response.status);
println("Message: " + response.message);

let JSON_object = JSON.parse(response.data);

println("Year: "+JSON_object.years);
println("Month: "+JSON_object.months);
println("Day: "+JSON_object.date);

Beispiel 2 Authentifizierung mit Benutzernamen und Passwort

Der get-Request an den Endpunkt https://postman-echo.com/basic-auth/ erfordert die Authentifizierung mit Benutzernamen und Passwort. Wenn die Anmeldung erfolgreich war, gibt der Server einen JSON String {"authenticated": true} zurück.

let username = "postman";
let password = "password";
let header = {};
header["Authorization"] = "Basic " + encodeBase64(username + ":" + password);

let response = get("https://postman-echo.com/basic-auth/", header);

println("--- Response ---");
println("Statuscode: " +response.status)
println("Message: " + response.message);
data = JSON.parse(response.data);
println("Login successful: " + data.authenticated);

Beispiel 3 Abfragen von Daten mit URL-Parametern

Dem get-Request an den Endpunkt https://postman-echo.com/response-headers können Parameter wie z.B. https://postman-echo.com/get?gear1ID=12&gear2ID=22 mitgegeben werden. In diesem Beispiel gibt der Endpunkt die mitgegebenen Parameter im Response Objekt wieder zurück.

let queryParams = [];
queryParams["param1"] = "Cars";
queryParams["param2"] = "Planes";

println("Endpoint (URL) with appended parameters to which the request is sent: ");
println("https://postman-echo.com/response-headers?" + encodeQueryParams(queryParams));

let response = get("https://postman-echo.com/response-headers?" + encodeQueryParams(queryParams));
println("--- Response ---");
println("Statuscode: " +response.status);
println("Message: " + response.message);
println("Payload: "  +response.data);
post() - HTTP request
Tabelle 74. Methode, um Daten zu einem Server zu senden.

post(url, header, data)

Parameter

Typ

Beschreibung

url

string

URL des Servers, von dem die Daten angefordert werden, auch Endpunkt genannt.

body

Daten, die an den Server gesendet werden.

header

object

Enthält Metadaten und Informationen, die der Client an den Server sendet, um Details über die Anfrage, den Client selbst und seine Präferenzen zu übermitteln.

Rückgabewert (Response)

object

Der Rückgabewert ist ein Objekt von dem verschiedene Eigenschaften abgefragt werden können:

response.status

Statuscode, der von einem Server als Antwort auf jede HTTP-Anfrage zurückgegeben wird.

response.message

Textuelle Beschreibung des Statuscodes

response.data

Daten der Antwort als String

response.raw

Rohdaten der Antwort als Byte-Array



Beispiel Daten an einen Server senden

Der post-Request an den Endpunkt https://postman-echo.com/post sendet Daten an den Server. Bei diesem Beispielserver werden die gesendeten Daten als Antwort zurückgegeben. Welche Daten vom Server zurückgegeben werden, hängt von der jeweiligen Implementierung des Servers ab. Die Authentifizierung mit Benutzernamen und Passwort erfolgt analog zum get-Request.

let username = "user";
let password = "pass"
let header = {};
header["Authorization"] = "Basic " + encodeBase64(username + ":" + password);
let content = {"cylindrial_stage": {"helix_angle": 8, "center_distance": 125, "gear1": {"number_of_teeth": 22, "gear_width": 30}, "gear2": {"number_of_teeth": 30, "gear_width": 25}}};

let response = post('https://postman-echo.com/post', content, header);
println("--- Response ---");
println("Statuscode: "+response.status);
println("Message: "+response.message);

let result_object = JSON.parse(response.data);

println("Center distance: "+result_object.data.cylindrial_stage.center_distance);
println("Tooth width gear 1: "+result_object.data.cylindrial_stage.gear1.gear_width);
Weitere HTTP Request Methoden

Folgende HTTP-Request Methoden werden im Scripting der FVA-Workbench unterstützt:

Methode

Beschreibung

get

Der get-Request wird zum Lesen/Abrufen von Daten von einem Webserver verwendet. Er liefert einen HTTP-Statuscode von 200 (OK), wenn die Daten erfolgreich vom Server abgerufen wurden.

head

Der head-Request ist ähnlich wie der get-Request. Hier werden jedoch nur die Metainformationen im Header zurückgegeben, nicht die Daten.

post

Der post-Request wird verwendet, um Daten an den Server zu senden. Bei erfolgreicher Zustellung wird ein HTTP-Statuscode von 201 zurückgegeben.

put

Ein put-Request wird verwendet, um die Daten auf dem Server zu ändern. Sie ersetzt den gesamten Inhalt an einer bestimmten Stelle durch die Daten, die übergeben werden. Wenn es keine entsprechenden Daten gibt, werden diese erstellt.

del (delete)

Eine del-Request wird verwendet, um Daten auf dem Server zu löschen.

Beispiele

let data = {};
let header = {};
let headerForm = {};
let user = "user";
let pwd = "password";
header["Authentication"] = "basic " + encodeBase64(user)+ ":" + encodeBase64(pwd);
headerForm["Content-Type"] = "application/x-www-form-urlencoded";
let queryParams = [];
queryParams["param1"] = "cars";
queryParams["param2"] = "planes";

get("https://myServer.com/?" + encodeQueryParams(queryParams), header);
head("https://myServer.com/",  data, header);
post("https://myServer.com/",  encodeQueryParams(queryParams), headerForm);
put("https://myServer.com/",   data, header);
del("https://myServer.com/",   data, header);

get("https://myServer.com/");
head("https://myServer.com/", data);
post("https://myServer.com/", data);
put("https://myServer.com/",  data);
del("https://myServer.com/",  data);
encodeBase64()
Tabelle 75. Kodiert einen String zu Base64.

encodeBase64(string)

Parameter

Typ

Beschreibung

string

string

String

Rückgabewert

string

Base64 kodierter String



Beispiel 1 String zu Base64 kodieren und auf dem Scripting-Monitor ausgeben

let string = "Hello Wold";
let encodedString = encodeBase64(string);
println(encodedString);
decodeBase64()
Tabelle 76. Dekodiert einen Base64 string.

decodeBase64(base64string)

Parameter

Typ

Beschreibung

base64string

string

Base64 kodierter String

Rückgabewert

string

Dekodierter String



Beispiel 1 Base64 String dekodieren und auf dem Scripting-Monitor ausgeben

let base64string = "SGVsbG8gV29ybGQ=";
let decodedString = decodeBase64(base64string);
println(decodedString);
readFileAsBase64()
Tabelle 77. Liest eine Datei ein und kodiert diese als Base64 string.

readFileAsBase64(filepath)

Parameter

Typ

Beschreibung

filepath

string

Pfad + Name der Datei

Rückgabewert

string

Datei als Base64 string



Beispiel 1 Textdatei Base64 kodieren

let filepath = "c:/example/textfile.txt";
readFileAsBase64(filepath);
decodeBase64ToFile()
Tabelle 78. Dekodiert einen Base64 string und schreibt das Ergebnis in eine Datei.

decodeBase64ToFile(filepath, base64string)

Parameter

Typ

Beschreibung

filepath

string

Pfad + Name der Datei

base64string

string

Datei als Base64-kodierter String

Rückgabewert

Datei



Beispiel Base64 kodierten String in eine Textdatei schreiben

let filepath = "c:/example/textfile.txt";
let base64string = "SGVsbG8gV29ybGQ=";
decodeBase64ToFile(filepath, base64string);
encodeQueryParams()
Tabelle 79. URLs dürfen nur bestimmte Zeichen des ASCII-Zeichensatzes verwenden. Die Funktion kodiert die gegebenen Parameter so, dass sie diesem Zeichensatz entsprechen. Die verschiedenen Parameter müssen der Funktion als assoziatives Array übergeben werden.

encodeQueryParams(queryParameter)

Parameter

Typ

Beschreibung

queryParameter

associative array

Parameter, die kodiert werden sollen

Rückgabewert

string

Korrekt kodierte Parameter



Beispiel 1 Der Variable queryParameter werden die Parameter a, b und c zugewiesen. Die Parameter enthalten für URLs ungültige Zeichen. Diese werden mit der encodeQueryParams() Funktion durch gültige Zeichen ersetzt.

let queryParameter = [];
queryParameter["a"] = "No Spaces";
queryParameter["b"] = "No/Slashes";
queryParameter["c"] = "No ä,ö,ß";
println(encodeQueryParams(queryParameter));

Ausgabe der kodierten Parameter auf der Scripting-Konsole

a=No+Spaces&b=No%2FSlashes&c=No+%C3%A4%2C%C3%B6%2C%C3%9F