-
FlexPro
- At a Glance
- Features & Options
- Applications
- All Advantages
- What’s New in FlexPro 2021
- Try FlexPro For Free
- FlexPro View OEM Freeware
- Buying Guide
- Login
- Language
- +49 6894 929600
- infoweisang.com
- Google Maps
- Products
- News
- Support
- Company
- Contact
- Login
- Language
- +49 6894 929600
- infoweisang.com
- Google Maps
FPScript – Zugriff auf Datensatz und Verrechnung in Kurvenzugbeschriftung
Home > Community > FPScript > FPScript – Zugriff auf Datensatz und Verrechnung in Kurvenzugbeschriftung
- This topic has 2 replies, 2 voices, and was last updated 10 years, 7 months ago by Stefan Hans.
-
AuthorPosts
-
May 13, 2014 at 4:03 pm #12854Stefan HansMember
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
May 13, 2014 at 4:03 pm #8514Stefan HansMemberGuten 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
May 14, 2014 at 9:46 am #9358Bernhard KantzParticipantHallo,
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.
-
AuthorPosts
- You must be logged in to reply to this topic.