Topic
FPScript – Zugriff auf Datensatz und Verrechnung in Kurvenzugbeschriftung
Startseite ' Community ' FPScript ' FPScript – Zugriff auf Datensatz und Verrechnung in Kurvenzugbeschriftung
- Dieses Thema hat 2 Antworten sowie 2 Teilnehmer und wurde zuletzt vor vor 11 Jahren von Stefan Hans aktualisiert.
-
AutorBeiträge
-
13.05.2014 um 16:03 Uhr #33581Stefan HansTeilnehmer
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:
[code]%{
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])
}[/code]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. [code]%{
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])
}[/code]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
13.05.2014 um 16:03 Uhr #33583Stefan HansTeilnehmerGuten 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:
[code]%{
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])
}[/code]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.
[code]%{
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])
}[/code]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
14.05.2014 um 09:46 Uhr #33582Bernhard KantzTeilnehmerHallo,
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 [b]Automatisierung von Abläufen > Automatisierung mit FlexPro Visual Basic > Visual Basic-Verzeichnis für FlexPro > Objekte und Auflistungen[/b]. Zum Zugriff auf die Objekte zu einer eingebetteten FPScript-Formel stehen die beiden Schlüsselwörter [b]ThisObject[/b] und [b]ThisFPObject[/b] 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 [b].Data[/b] des [b]Curve2D[/b]-Objekts erhalten Sie das zugehörige [b]Curve2DData[/b]-Objekt. Ist der Kurvenzug durch ein Signal (statt durch getrennte Datensätze für X und Y) gegeben, so finden Sie in der Eigenschaft [b].DataSet[/b] 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):[code]%.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])
}[/code]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 [i]Eigenschaften[/i] (im Standardlayout rechts neben dem Hauptfenster) unter [i]Kurvenzugsbeschriftung > Text[/i] 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 [i]Kurvenzugbeschriftung > Text[/i] die kopierte Formel für alle ausgewählten Kurvenzüge gleichzeitig einfügen.
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.