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 |
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");
validateRexsModel(path)
validateRexsModel(path); | ||||
Parameter | Typ | Beschreibung | ||
path | string | Pfad + Name der REXS-Datei | ||
Rückgabewert | object | JSON Objekt mit den Arrays "errors" und "warnings" | ||
Mögliche Fehler | Der angegebene Pfad existiert nicht. |
Beispiel REXS-Datei validieren und Ergebnis auf der Scripting-Konsole ausgeben
let result = validateRexsModel("c:/example/test.rexs"); println("errors:"); for (let i = 0; i < result.errors.length; i++) { println(i + ": "+result.errors[i].error); } println(" "); println("warnings:"); for (let i = 0; i < result.warnings.length; i++){ println(i + ": "+result.warnings[i].warning); }
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");
getWorkbenchInfo()
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()
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(" "); }
Client-Server-Kommunikation
get() - HTTP request
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:
|
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
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:
|
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()
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);
encodeQueryParams()
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