Weitere Funktionen
Lesen & Schreiben
fileExists()
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()
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()
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()
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()
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()
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()
delRDAT(); | ||
Parameter | Typ | Beschreibung |
- | - | - |
Für weitere Informationen siehe Datenhaltung (EDAT/RDAT)
Beispiel 1 Alle RDAT-Werte löschen.
delRDAT();
Ausgabe
clearMonitor()
clearMonitor(); | ||
Parameter | Typ | Beschreibung |
- | - | - |
Beispiel 1 Monitor leeren
clearMonitor();
stopScript()
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"); }
format()
| ||
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 |
![]() |
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()
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()
startTransactionMode(); |
Folgende Funktionen werden abgeschaltet:
Update der 3D-Darstellung
Korrelationen (Synchronisierung zwischen verschiedenen Attributen)
Erzeugung von Modellständen
endTransactionMode()
endTransactionMode(); |
isBatchMode()
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()
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 ); }
Gesamtsystemberechnung durchführen und Rückgabewert in der Variablen status speichern. | |
Aktuelle Sprache der FVA-Workbench abfragen und den Rückgabewert in der Variablen language speichern. | |
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. | |
Analog zur Erfolgsmeldung wird hier die Meldung im Fehlerfall in die Variable fail_message geschrieben. | |
Wenn Rückgabewert in Variable status = 1, dann: | |
Ausgabe auf der Erfolgsmeldung auf der Scripting-Konsole | |
Ansonsten: | |
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(" "); }


Vergleich der Meldungsausgabe in der Benutzeroberfläche mit der Ausgabe des Scriptes auf dem Scripting-Monitor.
Client-Server-Kommunikation
get() - HTTP request
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
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()
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()
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()
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()
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);