使用 SVG 路径字符串制作贝塞尔曲线我有两个以相同方式构建的 SVG 路径。
a = "M 10 60 C 20 80 40 80 50 60";
b = "M 0 -150 C 82.8 -150 150 -82.8 150 0";
“a”的快速绘图显示了以下弧线
New Window( "JMP 8PFU Layout Example",
Graph Box(
frameSize( 500, 500 ),
xScale(-175,175),
yScale(-175,175),
penColor("blue");
penSize(2);
path(a, 0);
);
);
但是,当我尝试绘制“b”时,出现错误
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);
);
);如果我在曲线中添加一个“结束”字符“z”,它将绘制线段,将“线”返回到原点。 这可行,但不是我想要的 - 我只想要弧线。
b = "M 0 -150 C 82.8 -150 150 -82.8 150 0 z";

我的最终目标是结合 4 条弧线来近似一个圆
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);
);
);
同样,当我删除“z”字符时,我收到相同的错误。
为了完整起见,我在网络浏览器中尝试了这个组合字符串,删除了“z”字符,并且它正确呈现
< svg视图框= “-175 -175 350 350”风格= “边框:绿色实线;” >
<小路ID = “Wrf_边缘”中风= “黑色的”充满= “没有任何”笔画宽度= “1” d = “M 0 150℃ 82.8 150 150 82.8 150 0 M 0 -150℃ 82.8 -150 150 -82.8 150 0 M 0 -150℃ -82.8 -150 -150 -82.8 -150 0 M 0 150℃ -82.8 150 -150 82. 8 -150 0" />
svg >

质量和工艺工程回复:使用 SVG 路径字符串制作贝塞尔曲线不,Jarmo,我没有使用 eval/insert。 等我有时间的时候我会尝试一下。
顺便说一句,我不需要制作四个贝塞尔弧来生成一个圆。 SVG 有一个“A”(弧形)标签,可以用更少的字符绘制一个标签......并且更容易理解,因为它不需要生成任何贝塞尔曲线“控制点”
我确实需要在字符串末尾添加“双 0”才能使其正常工作,就像上面的其他示例一样。
"M -150 0 a 150 150 0 1 0 300 0 a 150 150 0 1 0 -300 00"
比较 SVG ARC、SVG 贝塞尔曲线和 JMP 中的原生“圆”函数,它们都非常接近。
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 = 黄色
SVG 4 段贝塞尔曲线 = 红色
JMP“圆形”功能 = 黑色。

回复:使用 SVG 路径字符串制作贝塞尔曲线我可以确认它在 JMP14 上也失败了。您可以做的一件事是从后到前构造贝塞尔曲线,如下所示(它只需要一个 MOVE 命令,因为每个 C 的终点都是下一个 C 的起点)
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);
);
);回复:使用 SVG 路径字符串制作贝塞尔曲线嗯,看起来 JMP(仅在 15.2.0 上测试)不喜欢最后一个字符,如果它是“0”。 如果我将其设置为另一个值或将“0”设置为“00”,那么它就可以正常工作。所以字符串:
”中号 0 150 ℃ 82.8 150 150 82.8 150 0 ”
变成
“米 0 150 ℃ 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);
);
);

回复:使用 SVG 路径字符串制作贝塞尔曲线我也尝试过使用组合字符串(从浏览器片段复制粘贴),效果很好:
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);
)
);

您是否尝试过修改图形框的自定义部分? 或者也许使用 Eval Insert 将字符串添加到 Path() (但不确定为什么需要它......)

回复:使用 SVG 路径字符串制作贝塞尔曲线这很奇怪,贾莫。 我使用的是15.2.0。 您是否尝试过使用组合字符串?
最终,我将制作许多 SVG 字符串并将它们保存在数据库表中以供应用程序开发人员使用。 顺便提及,该圆代表晶片的周长。 因此,我只需要一个适用于所有开发环境的字符串。 对于 JMP 应用程序,我不想使用四个不同的弧,而只想使用一个字符串以避免数据库中的重复。
我希望这是有道理的。
顺便说一句,我确实重新启动了 JMP 并将代码复制/粘贴到脚本中,没有进行任何修改,但它仍然会产生此错误。 我将尝试另一个 JMP 版本。

回复:使用 SVG 路径字符串制作贝塞尔曲线对我来说,使用 JMP16.2 Pro 和 Windows 10(版本相关?)
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);
)
);

(对于图形框,我将使用 Eval Insert,以便自定义将在右键单击菜单上显示正确的信息)