Erstellen von Bezier-Kurven mithilfe von SVG-PfadzeichenfolgenIch habe zwei SVG-Pfade, die auf die gleiche Weise aufgebaut sind.
a = "M 10 60 C 20 80 40 80 50 60";
b = "M 0 -150 C 82.8 -150 150 -82.8 150 0";
Ein kurzer Plot von „a“ zeigt den folgenden Bogen
New Window( "JMP 8PFU Layout Example",
Graph Box(
frameSize( 500, 500 ),
xScale(-175,175),
yScale(-175,175),
penColor("blue");
penSize(2);
path(a, 0);
);
);
Wenn ich jedoch versuche, „b“ zu zeichnen, erhalte ich eine Fehlermeldung
DisplayBox[EvalContextBox]
argument value is invalid in access or evaluation of 'Path' , Bad Argument( b ), Path/*###*/(b, 0)
New Window( "JMP 8PFU Layout Example",
Graph Box(
frameSize( 500, 500 ),
xScale(-175,175),
yScale(-175,175),
penColor("blue");
penSize(2);
path(combined, 0);
);
);Wenn ich der Kurve ein „schließendes“ Zeichen „z“ hinzufüge, wird das Segment gezeichnet und die „Linie“ zum Ursprungspunkt zurückgeführt. Das funktioniert, ist aber nicht das, was ich will – ich will nur den Bogen.
b = "M 0 -150 C 82.8 -150 150 -82.8 150 0 z";

Mein ultimatives Ziel ist es, 4 Bögen zu kombinieren, um ungefähr einen Kreis zu bilden
tr = "M 0 150 C 82.8 150 150 82.8 150 0 z";
br = "M 0 -150 C 82.8 -150 150 -82.8 150 0 z";
bl = "M 0 -150 C -82.8 -150 -150 -82.8 -150 0 z";
tl = "M 0 150 C -82.8 150 -150 82.8 -150 0 z";
combined = "M 0 150 C 82.8 150 150 82.8 150 0 z M 0 -150 C 82.8 -150 150 -82.8 150 0 z M 0 -150 C -82.8 -150 -150 -82.8 -150 0 z M 0 150 C -82.8 150 -150 82.8 -150 0 z";
New Window( "JMP 8PFU Layout Example",
Graph Box(
frameSize( 500, 500 ),
xScale(-175,175),
yScale(-175,175),
penColor("blue");
penSize(2);
path(combined, 0);
);
);
Auch hier erhalte ich die gleiche Fehlermeldung, wenn ich das „z“-Zeichen entferne.
Der Vollständigkeit halber habe ich diese kombinierte Zeichenfolge in einem Webbrowser ausprobiert, wobei die „z“-Zeichen entfernt wurden und sie korrekt gerendert wurde
< SVG viewBox = "-175 -175 350 350" Stil = „Grenze: grüner Vollton;“ >
< Weg Ausweis = „Wrf_Edge“ Schlaganfall = "Schwarz" füllen = "keiner" Strichbreite = „1“ D = "M 0 150 C 82,8 150 150 82,8 150 0 M 0 -150 C 82,8 -150 150 -82,8 150 0 M 0 -150 C -82,8 -150 -150 -82,8 -150 0 M 0 150 C -82,8 150 -150 82. 8 -150 0" />
SVG >

Qualitäts- und VerfahrenstechnikBetreff: Bezier-Kurven mithilfe von SVG-Pfadzeichenfolgen erstellenNein Jarmo, ich habe die Auswertung/Einfügung nicht verwendet. Ich werde es später versuchen, wenn ich eine Minute Zeit habe.
Abgesehen davon musste ich nicht vier Bézier-Bögen erstellen, um einen Kreis zu erzeugen. SVG verfügt über ein „A“-Tag (Bogen), das mit weit weniger Zeichen gezeichnet werden kann ... und ist viel einfacher zu verstehen, da keine Bezier-Kontrollpunkte generiert werden müssen.
Allerdings musste ich am Ende der Zeichenfolge die „doppelte 0“ hinzufügen, damit es funktionierte, wie im anderen Beispiel oben.
"M -150 0 a 150 150 0 1 0 300 0 a 150 150 0 1 0 -300 00"
Beim Vergleich von SVG ARC, SVG Bezier Curves und der nativen „Circle“-Funktion in JMP kommen sie alle recht gut aneinander heran.
circleArcSyntax = "M -150 0 a 150 150 0 1 0 300 0 a 150 150 0 1 0 -300 00";
circleCurveSyntax = "M 0 150 C 82.8 150 150 82.8 150 00 M 0 -150 C 82.8 -150 150 -82.8 150 00 M 0 -150 C -82.8 -150 -150 -82.8 -150 00 M 0 150 C -82.8 150 -150 82.8 -150 00";
New Window( "JMP Circle Layout Example",
Graph Box(
frameSize( 500, 500 ),
xScale(-175,175),
yScale(-175,175),
penSize(20);
penColor("yellow");
path(circleArcSyntax, 0);
penColor("red");
penSize(10);
path(circleCurveSyntax, 0);
penSize(2);
penColor("black");
circle({0,0}, 150);
);
);SVG ARC = Gelb
SVG 4-Segment-Bezier-Kurve = Rot
JMP-Funktion „Kreis“ = Schwarz.

Betreff: Bezier-Kurven mithilfe von SVG-Pfadzeichenfolgen erstellenIch kann bestätigen, dass es auch auf JMP14 fehlschlägt.Eine Möglichkeit besteht darin, die Bezier-Kurven wie unten beschrieben von hinten nach vorne zu konstruieren (es ist nur ein MOVE-Befehl erforderlich, da der Endpunkt jedes C der Anfangspunkt des nächsten ist).
circle = "M 0,150 C 82.8,150 150,82.8 150,0 C 150,-82.8 82.8,-150 0,-150 C -82.8,-150 -150,-82.8 -150,0 C -150,82.8 -82.8,150 0,150 z";
New Window( "JMP Layout Example",
Graph Box(
frameSize( 500, 500 ),
xScale(-175,175),
yScale(-175,175),
penColor("blue");
penSize(2);
path(circle , 0);
);
);Betreff: Bezier-Kurven mithilfe von SVG-Pfadzeichenfolgen erstellenHmmm, es sieht so aus, als ob JMP (nur auf 15.2.0 getestet) das letzte Zeichen nicht mag, wenn es eine „0“ ist. Wenn ich den Wert auf einen anderen Wert setze oder den Wert „0“ verdoppele, sodass er „00“ wird, funktioniert es einwandfrei. also die Zeichenfolge:
" M 0 150 C 82,8 150 150 82,8 150 0 "
wird
„M 0 150 C 82,8 150 150 82,8 150 00“
</CODE></P><P> </P><PRE><CODE class=" language-jsl">circle = "M 0 150 C 82.8 150 150 82.8 150 00 M 0 -150 C 82.8 -150 150 -82.8 150 00 M 0 -150 C -82.8 -150 -150 -82.8 -150 00 M 0 150 C -82.8 150 -150 82.8 -150 00";
New Window( "JMP Layout Example",
Graph Box(
frameSize( 500, 500 ),
xScale(-175,175),
yScale(-175,175),
penColor("blue");
penSize(2);
path(circle, 0);
);
);

Betreff: Bezier-Kurven mithilfe von SVG-Pfadzeichenfolgen erstellenIch habe es auch mit der kombinierten Zeichenfolge versucht (Kopie aus dem Browser-Snippet eingefügt), hat gut funktioniert:
Names Default To Here(1);
New Window("JMP 8PFU Layout Example",
Graph Box(
frameSize(500, 500),
X Scale(-175, 175),
Y Scale(-175, 175),
Pen Size(2);
Pen Color("blue");
Path("M 0 150 C 82.8 150 150 82.8 150 0 M 0 -150 C 82.8 -150 150 -82.8 150 0 M 0 -150 C -82.8 -150 -150 -82.8 -150 0 M 0 150 C -82.8 150 -150 82.8 -150 0", 0);
)
);

Haben Sie versucht, den Abschnitt „Anpassen“ des Diagrammfelds zu ändern? Oder verwenden Sie vielleicht Eval Insert, um die Zeichenfolge zu Path() hinzuzufügen (ich bin mir jedoch nicht sicher, warum dies erforderlich wäre ...)

Betreff: Bezier-Kurven mithilfe von SVG-Pfadzeichenfolgen erstellenDas ist seltsam, Jarmo. Ich verwende 15.2.0. Haben Sie es mit der kombinierten Zeichenfolge versucht?
Letztendlich werde ich viele SVG-Strings erstellen und sie in einer DB-Tabelle speichern, damit App-Entwickler sie verwenden können. Dieser Kreis stellt übrigens den Umfang einer Waffel dar. Daher benötige ich nur eine Zeichenfolge, die für alle Entwicklungsumgebungen funktioniert. Für JMP-Anwendungen möchte ich nicht vier verschiedene Bögen verwenden, sondern nur einen String, um Duplikate in der Datenbank zu vermeiden.
Ich hoffe das macht Sinn.
Übrigens habe ich JMP buchstäblich neu gestartet und Ihren Code ohne Änderungen in ein Skript kopiert/eingefügt, und es wird immer noch dieser Fehler erzeugt. Ich werde eine andere JMP-Version ausprobieren.

Betreff: Bezier-Kurven mithilfe von SVG-Pfadzeichenfolgen erstellenBei mir scheint das mit JMP16.2 Pro und Windows 10 (versionsbezogen?) gut zu funktionieren.
Names Default To Here(1);
tr = "M 0 150 C 82.8 150 150 82.8 150 0";
br = "M 0 -150 C 82.8 -150 150 -82.8 150 0";
bl = "M 0 -150 C -82.8 -150 -150 -82.8 -150 0";
tl = "M 0 150 C -82.8 150 -150 82.8 -150 0";
New Window("JMP 8PFU Layout Example",
Graph Box(
frameSize(500, 500),
X Scale(-175, 175),
Y Scale(-175, 175),
Pen Size(2);
Pen Color("blue");
Path(tr, 0);
Pen Color("red");
Path(br, 0);
Pen Color("green");
Path(tl, 0);
Pen Color("red");
Path(bl, 0);
)
);

(Bei Graph Box würde ich „Eval Insert“ verwenden, damit „Anpassen“ im Rechtsklick-Menü die korrekten Informationen anzeigt.)