Was ist neu in UniPlot 4.2.0

Auf dieser Seite werden die Änderungen von UniPlot 4.2.0 gegenüber UniPlot 4.1.5 beschrieben.

Änderungen und Erweiterungen

Neue UniScript-Funktionen

  Neue Funktionen in UniPlot 4.2.0
GridGetSwapRowCol GridGetSwapRowCol prüft, ob die Kanäle zeilenweise angezeigt werden.
GridReplaceFile GridReplaceFile tauscht die im Daten-Editor angezeigte Datei durch eine andere Datei aus.
GridSetSwapRowCol GridSetSwapRowCol legt die Anzeige der Kanäle im Datenbrowser fest (Kanäle nebeneinander oder untereinander).
LayerMoveDataset LayerMoveDataset verschiebt Datensätze innerhalb einer Seite zum angegebenen Diagramm. Die Funktion kann auch verwendet werden, um die Ausgabereihenfolge von Datensätzen innerhalb eines Diagramms zu ändern.
LayerMoveObjects LayerMoveObjects verschiebt Zeichenobjekte innerhalb einer Seite zum angegebenen Diagramm. Die Funktion kann auch verwendet werden, um die Ausgabereihenfolge von Zeichenobjekten innerhalb eines Diagramms zu ändern.
OBJGetParentCB OBJGetParentCB liefert die Zugriffsnummer des Gruppen-Objekts, in dem das Zeichenobjekt hObj enthalten ist.
RBSetMillimeterEx RBSetMillimeterEx schaltet für ein Rechteck-Objekt das Millimeter-Gitter ein. Die Gitterlinien werden mit dem Rand-Zeichenstift gezeichnet.
interpol Die Funktion interpol führt eine lineare Interpolation oder eine Cosinus-Interpolation an gegebenen Stützstellen durch.
mem_alloc mem_alloc erzeugt ein skalaren String vorgegebener Länge.
mem_compare mem_compare vergleicht zwei Strings oder String-Matrizen, die auch 0-Zeichen enthalten können.
mem_compress mem_compress komprimiert einen String. Der String kann auch Null-Zeichen enthalten.
mem_get mem_get ließt Bytes aus einem String und führt eine Datentyp-Konvertierung durch.
mem_len mem_len ermittelt die Anzahl an Bytes in einem String.
mem_set mem_set setzt die Bytes in einem String auf Werte eines bestimmten Datentyps.
mem_uncompress mem_uncompress dekomprimiert einen mit mem_compress komprimierten String oder einen mit der zlib komprimierten String.
poly_poly_intersect poly_poly_intersect ermittelt die Schnittpunkte zweier Linienzüge (Polygone).

Geänderte UniScript-Funktionen

Die Änderungen werden in den History-Tabellen am Ende der Funktionsbeschreibungen angegeben.

  Geänderte Funktionen in UniPlot 4.2.0
@f{labeldatapoint} Beschriftet die Originalpunkte des Datensatzes mit dem Wert der y-Koordinate.
DialogBox Mit der Funktion DialogBox können Dialogfelder mit den Dialogelementen Textfeld, Editierfeld, Listenfeld, mehrfach selektierbares Listenfeld, Reportliste (Liste mit mehreren Spalten), Kombinationsfeld (Combo-Box), Kontrollfeld (Check-Box), Propertyliste, Gruppenfeld, Baumlisten und Schaltfläche erzeugt werden.
GridGetConfigInfo GridGetConfigInfo liefert einen Stringvektor mit Optionen.
GridSetConfigInfo GridSetConfigInfo setzt die Datenbrowser-Konfiguration.
LayerGetAllDatasets LayerGetAllDatasets gibt die Zugriffsnummern (handle) aller Datensätze eines Layers zurück.
MapLookup MapLookup verwendet einen Hashing Algorithmus um ein Element im Map-Objekt zu finden.
MapSetAt MapSetAt fügt ein Datum in das Map-Objekt ein. Falls ein Datum mit einem identischen Schlüssel bereits existiert, wird es überschrieben.
RegisterFunction RegisterFunction trägt eine Funktion aus einer Dynamischen Link Library (DLL) in die UniScript-Symboltabelle ein. Danach ist ein direkter Aufruf der Funktion möglich.
base64_decode base64_decode dekodiert Daten vom base64-Format.
base64_encode base64_encode kodiert Daten in das base64-Format.
binary_decode Veraltet, ersetzt durch base64_decode.
binary_encode Ersetzt duch base64_encode.
fread fread liest Daten aus einer Datei.
sqlite_open Entfernt, verwende: sqlite3_open.
strcode strcode liefert den Zahlen-Code von Zeichen.
strextract strextract liefert Zeichen aus einer Zeichenfolge.
strlen strlen ermittelt die Anzahl an Zeichen der Strings von String-Matrizen.

Fehlerkorrekturen

Die folgenden Fehler wurden korrigiert:

  • (ID251) linspace und a:delta:b liefern nicht das gleiche Ergebnis.

    def lin(a,b,delta)
    {
        n = (b-a)/delta;
        r = zeros(n+1,1);
        for (i in 1:n+1) {
            r[i] = a + (i-1) * delta;
        }
        return r;
    }
    
    def lin2(a,b,delta)
    {
        n = (b-a)/delta;
        r = zeros(n+1,1);
        s = 0;
        for (i in 1:n+1) {
            r[i] = a + s;
            s = s + delta;
        }
        return r;
    }
    

    Bis UniPlot 4.2.0 wurde a:delta:b entsprechend der Funktion lin2 berechnet. Dies führt zu einem wachsenden Rundungsfehler. Ab UniPlot 4.2.0 wird a:delta:b entsprechend der Funktion lin berechnet, die Technik, die auch bereits für linspace verwendet wurde.

  • (ID334) Beim Speichern von Dateien im Text-Editor, wurde immer die Endung .ic angehängt. Sollte eine Datei z. B. als test.txt gespeichert werden, wurde sie als test.txt.ic gespeichert. Es wird nun nur noch dann die Extension angefügt, wenn nicht bereits eine Extension angegeben wurde.

  • (ID653) Die Übergabe eines leeren Strings an sqlite_open führte zu einer Speicherzugriffsverletzung. Es wird nun eine temporäre Datei geöffnet, die mit sqlite_close wieder entfernt wird.

  • (ID660) Darstellungsfehler beim Scrollen: Beim Scrollen wurden weiße Linien eingefügt. Es konnte aus dem Blatt heraus gescrollt werden. Abhilfe: Replot (Alt+R).

  • (ID676) Bei dem Befehl Daten=>Lineare Interpolation funktionierte die Hilfe nicht.

  • (ID686) Dateneditor öffnen => Kanal-Interpolation => Abbrechen => Daten werden nicht mehr angezeigt. Abhilfe: Browser schließen und neu öffnen.

  • (ID691) NC-Browser: Kanäle werden nicht angezeigt, wenn Spalten verschoben wurden und danach ohne den Browser zu schließen eine NC-Datei ausgewählt wurde, die deutlich weniger Spalten hatte. Für die fehlenden Spalten wurde der Kanalname „Error“ angezeigt.

  • (ID702) UTX-Filter: Wenn in einer Excel-Datei im UTX-Format in Zellen ein Zeilenumbruch (Alt+Enter) enthalten war, z. B. in den Kanalnamen, konnte die Datei nicht mehr vollständig geladen werden. Nun werden die Zeilenumbrüche entfernt.

  • (ID707) Kopieren von Datensätzen: Die Datensätze wurden in der Reihenfolge in die Zwischenablage kopiert, in der sie selektiert wurden. Nun werden die Datensätze in der Reihenfolge kopiert, in der sie im Diagramm angeordnet sind. Das gleiche gilt für Zeichenobjekte.

  • (ID716) Wenn ein Datensatz aus einer Datei geladen wurde, die ein Prozent-Zeichen („%“) im Namen hatte, konnte anschließend auf diesen Datensatz kein Datenaustausch durchgeführt werden.

  • (ID718) Datenaustausch: Beim Datenaustausch über die Funktion Daten=>Datenaustausch (Seite) wurden die Platzhalterwerte gelöscht, die nicht aus der angegebenen Datendatei geladen werden konnten. Der Fehler wurde korrigiert.

  • (ID720) Gestapeltes Diagramm: Wurde zu einem gestapelten Diagramm eine weitere y-Achse zugefügt, änderten sich die Netzeinstellungen. Nun wird das Netz nur bei der Erzeugung auf Defaultwerte gesetzt. Außerdem wird die y-Teilung bei der Erzeugung auf eine Gitterweite von 1 cm gesetzt.

  • (ID721) Im Dialogfeld Extras=>Weitere Optionen lässt sich der Benutzer-Name nicht löschen (Feld leer).

  • (ID734) Akimaspline: Die Funktion griff bei der Berechnung eines Koeffizienten auf einen falschen Datenpunkt zu. Im Ergebnis wurden die Punkte zwischen dem letzten und vorletzten Originalpunkt auf 0 gesetzt. Der Fehler trat unregelmäßig auf.

  • (ID736) Datenaustausch-Fehler (dx-Funktionen). Siehe Einfügen von Datensätzen in eine Vorlage. Wenn in der Datenquelle mehrere Import-Optionen vorhanden sind, wird die Datensatztabelle falsch erzeugt.

    Abhilfe: Fügen Sie in der Datei \uniplot\script\dx-main.ic vor der Zeile

    ssFile = sum(svPath[3:4]) + " {" + ssImportOptions + "}";
    

    (Zeilennummer ca. 133) die Zeile

    ssImportOptions = strcat(ssImportOptions, ",");
    

    ein. In UniPlot 4.2.0 ist der Fehler behoben.

  • (ID740) Die Eingabe von „def test()“ im Kommandofenster kann zu einer Speicherzugriffsverletzung führen. Die Funktion wird definiert ist aber nicht gültig. Schritte zur Reproduktion 1.) Im UniScript-Kommando-Fenster „def test()“ und enter eingeben, 2.) „;“ eingeben 3.) Funktion test() aufrufen => Absturz. Der Fehler wurde entfernt.

  • (ID748) Stil-Datei (Extras=>Datensatz-Stile bearbeiten): Umlaute in Stil-Namen werden nicht korrekt angezeigt. 2. Fehler: Erzeugt man neuen Stil „abc“ steht unter Stil-Werte 2D-abc=‘name‘. Es müsste aber name=‚2D-abc‘ heißen. Tritt nicht mehr auf, wenn dem Stil mindestens ein Attribut zufügt wird, z. B. bar=‚1‘. 3. Fehler: Stil-Dateiname wird nicht angezeigt (nur 4.2.0 beta 1).

id-1717504