Skip to main content

FVA-Workbench KnowledgeBase

Weitere Funktionen

Lesen & Schreiben

fileExists()
Tabelle 54. 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 55. 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 56. 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 57. 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



Beispiel 1 Berechnungsmeldungen als .xml exportieren

1var result 
   }
exportNotifications()
Tabelle 58. 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 59. 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 60. 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 61. Löscht den Inhalt des Scripting-Monitors.

clearMonitor();

Parameter

Typ

Beschreibung

-

-

-



Beispiel 1 Monitor leeren

clearMonitor();
stopScript()
Tabelle 62. 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 63. 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 64. 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 65. 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 66. Deaktiviert den Transaktionsmodus.

endTransactionMode();



isBatchMode()
Tabelle 67. 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");
getLanguage()
Tabelle 68. 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 69. Methode, um Daten von einem Server abzufragen.

get(url)

Parameter

Typ

Beschreibung

url

string

url des Servers, von dem die Daten angefordert werden



Beispiel

World Clock API ist ein Server, der das aktuelle Datum und die Uhrzeit in JSON zurückgibt. Der Server gibt die Daten als 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 im JSON Objekt zugegriffen werden.

let JSON_string = get('http://worldclockapi.com/api/json/utc/now');
let JSON_object = JSON.parse(JSON_string);

println(JSON_string);
println(JSON_object.currentDateTime);
println(JSON_object.dayOfTheWeek);
post() - HTTP request
Tabelle 70. Methode, um Daten zu einem Server zu senden.

post(url, parameter)

Parameter

Typ

Beschreibung

url

string

url des Servers, von dem die Daten angefordert werden

parameter

object

Parameter, die dem Server übergeben werden (z.B. Benutzername und Passwort)



Beispiel

In diesem Script werden "name" und "password" als Parameter an einen Demo Server übergeben. Die Antwort des Servers ist ein JSON String. Die Antwort des Servers enthält auch die gesendeten Parameter. Um den String in ein JSON Objekt zu konvertieren kann der JSON.parse Befehl verwendet werden.

let JSON_string = post('https://postman-echo.com/post', {'name':'mustermann', 'password':'secret'});
let JSON_object = JSON.parse(JSON_string);

println(JSON_string);
println(JSON_object.data.name);
println(JSON_object.data.password);
encodeBase64()
Tabelle 71. 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 72. 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 73. 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 74. 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);