FPScript – Zugriff auf Datensatz und Verrechnung in Kurvenzugbeschriftung

SupportCommunity FPScript FPScript – Zugriff auf Datensatz und Verrechnung in Kurvenzugbeschriftung

Ansicht von 3 Beiträgen - 1 bis 3 (von insgesamt 3)
  • Autor
    Beiträge
  • #12854
    Stefan HansStefan Hans
    Mitglied

    Guten Tag,

    die Kurvenzüge in einem Diagramm sollen eine automatisch generierte Kurvenzugbeschriftung erhalten.
    Ziel ist es, die Steigung zwischen zwei Extremwerten, die aus den Kurvenzügen (Datensätze mit X- und Y-Werten) selbst berechnet werden, anzuzeigen.

    Die folgende Eingabe in das Beschriftungsfenster (im Reiter Kurvenzugbeschriftung) funktioniert bereits sehr gut und liefert das gewünschte Ergebnis:

    %{
    Dim S , D, Name
    Name = 'B292901'
    S = Extrema ('Name', 0.015 A, EVENT_BOTH , EVENT_EXTRACT )
    D = (S.Y[1]-S.Y[0])/(S.X[1]-S.X[0])
    }

    Der Nachteil dieser Lösung ist, dass ich den Namen des Datensatzes (hier: B292901) manuell eingeben muss. Zur unabhängigen Vergabe habe ich den Namen des Datensatzes durch das FPScript Feld “%” in Verbindung mit dem Indirektionsoperator $$ ersetzt. So wie ich den Hilfetext verstanden habe, sollte hierdurch der Zugriff auf den Datensatz üben den Namen (in diesem Fall durch % ermittelt) möglich sein.

    %{
    Dim S , D, Name
    Name = $%$
    S = Extrema ('Name', 0.015 A, EVENT_BOTH , EVENT_EXTRACT )
    D = (S.Y[1]-S.Y[0])/(S.X[1]-S.X[0])
    }

    Dennoch wird wird ein Syntaxfehler ausgegeben und ich schaffe es leider nicht, diesen zu beheben.

    Welche Möglichkeit gibt es noch die o.g. Berechnung und Darstellung als Kurvenzugbeschriftung durchzuführen?

    Viele Grüße

    St. Hans

    #8514
    Stefan HansStefan Hans
    Mitglied

    Guten Tag,

    die Kurvenzüge in einem Diagramm sollen eine automatisch generierte Kurvenzugbeschriftung erhalten.
    Ziel ist es, die Steigung zwischen zwei Extremwerten, die aus den Kurvenzügen (Datensätze mit X- und Y-Werten) selbst berechnet werden, anzuzeigen.

    Die folgende Eingabe in das Beschriftungsfenster (im Reiter Kurvenzugbeschriftung) funktioniert bereits sehr gut und liefert das gewünschte Ergebnis:

    %{
    Dim S , D, Name
    Name = 'B292901'
    S = Extrema ('Name', 0.015 A, EVENT_BOTH , EVENT_EXTRACT )
    D = (S.Y[1]-S.Y[0])/(S.X[1]-S.X[0])
    }

    Der Nachteil dieser Lösung ist, dass ich den Namen des Datensatzes (hier: B292901) manuell eingeben muss. Zur unabhängigen Vergabe habe ich den Namen des Datensatzes durch das FPScript Feld “%” in Verbindung mit dem Indirektionsoperator $$ ersetzt. So wie ich den Hilfetext verstanden habe, sollte hierdurch der Zugriff auf den Datensatz üben den Namen (in diesem Fall durch % ermittelt) möglich sein.

    %{
    Dim S , D, Name
    Name = $%$
    S = Extrema ('Name', 0.015 A, EVENT_BOTH , EVENT_EXTRACT )
    D = (S.Y[1]-S.Y[0])/(S.X[1]-S.X[0])
    }

    Dennoch wird wird ein Syntaxfehler ausgegeben und ich schaffe es leider nicht, diesen zu beheben.

    Welche Möglichkeit gibt es noch die o.g. Berechnung und Darstellung als Kurvenzugbeschriftung durchzuführen?

    Viele Grüße

    St. Hans

    #9358
    Bernhard KantzBernhard Kantz
    Moderator

    Hallo,

    das Problem liegt darin, dass entweder ein FPScript-Ausdruck oder einer der anderen vordefinierten Felder benutzt werden können. Die letzteren können allerdings durch Rückgriff auf das Objektmodell auch im FPScript-Code dargestellt werden. Das Automation-Objektmodell finden Sie in der Online-Hilfe unter Automatisierung von Abläufen > Automatisierung mit FlexPro Visual Basic > Visual Basic-Verzeichnis für FlexPro > Objekte und Auflistungen. Zum Zugriff auf die Objekte zu einer eingebetteten FPScript-Formel stehen die beiden Schlüsselwörter ThisObject und ThisFPObject zur Verfügung. Während ersteres das Automation-Objekt liefert (im Falle eines Kurvenzugs im 2D-Diagramm wäre dies das entsprechende Curve2D-Objekt), verweist letzeres auf das umgebende FlexPro-Objekt (beim Kurvenzug das zugehörige Diagram2D-Objekt).
    In Ihrem Beispiel brauchen Sie den Namen des Signals für den Kurvenzug. Über die Eigenschaft .Data des Curve2D-Objekts erhalten Sie das zugehörige Curve2DData-Objekt. Ist der Kurvenzug durch ein Signal (statt durch getrennte Datensätze für X und Y) gegeben, so finden Sie in der Eigenschaft .DataSet den Namen des Signals als Zeichenkette. Dieser kann über den Indirektionsoperator zum Zugriff auf die Daten benutzt werden. Zusammengefasst ergibt sich also folgende eingebettete FPScript-Formel für die Kurvenzugsbeschriftung (inklusive Formatierung mit 6 Nachkommaziffern):

    %.6f{
    Dim S = Extrema($ThisObject.Data.DataSet$, 0.015 A, EVENT_BOTH, EVENT_EXTRACT)
    (S.Y[1] - S.Y[0]) / (S.X[1] - S.X[0])
    }

    Wenn Sie dies für alle Kurvenzüge eines Diagramms übernehmen wollen, können Sie nachdem Sie dies für einen Kurvenzug getan haben, im Fenster Eigenschaften (im Standardlayout rechts neben dem Hauptfenster) unter Kurvenzugsbeschriftung > Text die Formel kopieren. Eventuell müssen Sie vorher den entsprechenden Eintrag expandieren. Wenn Sie nun im Diagramm mit gedrückter Alt-Taste einen Kurvenzug auswählen werden alle selektiert und im Eigenschaftenfenster die gemeinsamen Eigenschaften angezeigt. Dort können Sie unter Kurvenzugbeschriftung > Text die kopierte Formel für alle ausgewählten Kurvenzüge gleichzeitig einfügen.

Ansicht von 3 Beiträgen - 1 bis 3 (von insgesamt 3)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.