开源改变世界!!

命令 G2 和 G3 显示不正确 #1134

推推 grbl 2年前 (2023-01-28) 193次浏览
打开
Vasilius-001 打开了这个问题 2020 年 10 月 4 日 · 2 条评论
打开

命令 G2 和 G3 显示不正确#1134

Vasilius-001 打开了这个问题 2020 年 10 月 4 日 · 2 条评论

注释

命令 G2 和 G3 显示不正确 #1134

有一个带有 GRBL 1.1h 固件的激光雕刻机。我需要绘制圆和弧,为此我在手动文件中创建。我在 LaserGRBL 3.7.1 中打开文件。预览中显示圆,但根本不显示圆弧。在这种情况下,激光雕刻机的图像是正确的。

G90 (use absolute coordinates)
M5
G00 X300 Y300 F2000
M3 S80

(Circles R150 - R148)
G00 X0.000 Y150.000 F2000 (circles R150.000)
G02 X0.000 Y150.000 I150.000 J0.000 F2000
G00 X0.125 Y150.000 F2000 (circles R149.875)
G02 X0.125 Y150.000 I149.875 J0.000 F2000
G00 X0.250 Y150.000 F2000 (circles R149.750)
G02 X0.250 Y150.000 I149.750 J0.000 F2000
G00 X0.375 Y150.000 F2000 (circles R149.625)
G02 X0.375 Y150.000 I149.625 J0.000 F2000
G00 X0.500 Y150.000 F2000 (circles R149.500)
G02 X0.500 Y150.000 I149.500 J0.000 F2000
G00 X0.625 Y150.000 F2000 (circles R149.375)
G02 X0.625 Y150.000 I149.375 J0.000 F2000
G00 X0.750 Y150.000 F2000 (circles R149.250)
G02 X0.750 Y150.000 I149.250 J0.000 F2000
G00 X0.875 Y150.000 F2000 (circles R149.125)
G02 X0.875 Y150.000 I149.125 J0.000 F2000

(Arc R147.875 - R147)
G00 X2.125 Y150.000 F2000
G02 X297.875 Y150.000 R147.875 F2000 (arc R147.875)
G00 X297.750 Y150.000 F2000
G03 X2.250 Y150.000 R147.750 F2000 (arc R147.750)
G00 X2.375 Y150.000 F2000
G02 X297.625 Y150.000 R147.625 F2000 (arc R147.625)
G00 X297.500 Y150.000 F2000
G03 X2.500 Y150.000 R147.500 F2000 (arc R147.500)
G00 X2.625 Y150.000 F2000
G02 X297.375 Y150.000 R147.375 F2000 (arc R147.375)
G00 X297.250 Y150 F2000
G03 X2.750 Y150.000 R147.250 F2000 (arc R147.250)
G00 X2.875 Y150 F2000
G02 X297.125 Y150.000 R147.125 F2000 (arc R147.125)
G00 X297.000 Y150.000 F2000
G03 X3.000 Y0.000 R147.000 F2000 (arc R147.000)

M5
G90
G00 X0 Y0 F2000
M30
命令 G2 和 G3 显示不正确 #1134
所有者

我只为 G2/G3 的 IJ 格式实现了数学。
我想它可能很容易实现,但我的数学不太好:-(


public G2G3Helper(LaserGRBL.GrblCommand.StatePositionBuilder spb, LaserGRBL.GrblCommand cmd)
{
	bool jb = cmd.JustBuilt;
	if (!jb) cmd.BuildHelper();

	double aX = (double)spb.X.Previous; //startX
	double aY = (double)spb.Y.Previous; //startY
	double bX = (double)spb.X.Number;	//endX
	double bY = (double)spb.Y.Number;	//endY

	double oX = cmd.I != null ? (double)cmd.I.Number : 0.0; //offsetX
	double oY = cmd.J != null ? (double)cmd.J.Number : 0.0; //offsetY

	CenterX = aX + oX; //centerX
	CenterY = aY + oY; //centerY

	Ray = Math.Sqrt(oX * oX + oY * oY);  //raggio
	RectX = CenterX - Ray;
	RectY = CenterY - Ray;
	RectW = 2 * Ray;
	RectH = 2 * Ray;

	StartAngle = CalculateAngle(CenterX, CenterY, aX, aY); //angolo iniziale
	EndAngle = CalculateAngle(CenterX, CenterY, bX, bY); //angolo finale
	AngularWidth = AngularDistance(StartAngle, EndAngle, spb.G2);

	if (!jb) cmd.DeleteHelper();
}
命令 G2 和 G3 显示不正确 #1134
贡献者

你好,
我发现这个东西可以将半径为中心坐标的 G02/G03 问题转换。
如果你假设你在圆弧的起点和终点放置一个半径为 R 的圆,并且两个圆接触的地方是圆弧的中心,你可以将这些坐标转换为 I 和 J。
不幸的是,该页面是德语的,有一个JavaScript来计算中心。也许您可以看一下并将其包含在您的 Conde 中。不幸的是,我的电脑上没有编译器来帮助你解决这个问题。
我刚刚发现 Microsoft Edge 也可以翻译网页。我个人使用 Deepl 作为翻译器,它是在线的。

http://walter.bislins.ch/blog/index.asp?page=Schnittpunkte+zweier+Kreise+berechnen+%28JavaScript%29

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
项目

还没有

发展

没有分支机构或拉取请求

3人参加
命令 G2 和 G3 显示不正确 #1134命令 G2 和 G3 显示不正确 #1134命令 G2 和 G3 显示不正确 #1134

喜欢 (0)