开源改变世界!!

高度映射用线性移动代替弧形移动 #29

推推 grbl 2年前 (2023-01-31) 157次浏览
打开
DEF7 开启了这个问题 2016 年 1 月 4 日 · 6条评论
打开

高度映射用线性移动代替弧形移动#29

DEF7 开启了这个问题 2016 年 1 月 4 日 · 6条评论

注释

高度映射用线性移动代替弧形移动 #29

我知道 G2/G3 命令只能在一个固定平面上工作,但如果它们可以用多个线性进给代替,而不是从头到尾完全用单个线性进给代替,那就太好了。也许使用现有的代码设置这不会那么容易,但希望我是错的。可能需要一个新的设置面板选项来调整转换为线条的长度或度数公差(就像可视化设置一样)。

另一种选择是将圆弧分解为位于 XY 平面上的多个更小的圆弧,并从 Z 深度开始逐步进行。这只会将一个圆弧分成多个圆弧,这些圆弧根据插值的高度图值逐步增加,可能在设置面板中对此有一个公差值,以及确定圆弧分割的阈值和分割的位置。这将是一个很棒的功能。

同样,我不确定现有设置是否完全可行,因为现有设置似乎仅限于简单地修改现有 g 代码命令,而不是从头开始重新生成允许插入额外 g 的整个程序-代码命令(例如,用多个弧代替一个弧)。

让我知道你的想法。我有使用 g 代码编辑实用程序的 arc 命令参数的经验,并且可能能够帮助您弄清楚如何生成中间弧来替换跨越不同高度图区域的单个弧。

谢谢!

高度映射用线性移动代替弧形移动 #29
所有者

你好。

高度图修改过程使用“解析器”组中的设置进行弧近似。它用多个 G1 段替换所有 G2/G3 移动。您可以按长度或度数设置分段大小。
如果不是这样,请举例说明。

我考虑过转换为圆弧段,但同时我认为这是一个低优先级的任务。不管怎样,所有的弧都会被 GRBL 固件转换成线。

更新:仅在 XY 平面中将弧线分解为更小的弧线并不是那么困难的任务。但是如何处理 XZ 平面和 YZ 平面圆弧或螺旋运动?

高度映射用线性移动代替弧形移动 #29
作者

抱歉,我第一次尝试时一定是我的学位太高了。我使用由数千条弧线组成的非常大的程序,所以我将度数调高到更高的值以获得更简单的渲染速度,这导致高度映射程序也产生由很少的线段组成的低质量弧线在机器上。所以,它确实已经像我的第一个建议一样起作用了。

对于在 XY 平面上将圆弧分解成更小的圆弧,这才有意义,因为高度图位于 XY 平面中,并且会沿着 Z 轴偏移更小的圆弧以跟随高度图。对于其他平面中的弧,我认为它应该默认回到使用线段的方式,因为它已经这样做了。

总的来说,我认为我唯一关心的是可视化弧的长度/度数设置与高度图用于从弧生成线段的设置之间的分离。因为对于像我正在使用的那些大型 g 代码程序,我受益于用几行非常简单地渲染弧线,但也需要高度映射和弧线在机器输出中是圆形的,所以我被迫缓慢运行 grblControl不必要地渲染许多行。只需将设置分为两个不同的设置:可视化工具和高度贴图,这对我自己的目的来说非常有用。

谢谢!

高度映射用线性移动代替弧形移动 #29
所有者

好吧,将解析器和高度贴图的设置分开是个好主意,但会导致高度贴图过程的时间增加。

至于目前的可视化性能,您可以在设置中使用“简化几何”选项。

我在这个问题上设置了“增强”标记,功能要做:

  1. 解析器/可视化器和高度图修改的单独弧近似设置。
  2. 将 XY 平面弧细分为更小的弧。
高度映射用线性移动代替弧形移动 #29 Denvi 添加了 增强 标签 2016 年 1 月 5 日
高度映射用线性移动代替弧形移动 #29
作者

呸!你已经想到了看起来的一切!我选中了简化几何框,但默认长度值并没有简化几何(足够)。极好的!现在我对一切都完全满意了。再次感谢!

我改变了简化几何的一件事是让它更像度数设置,因为在我的 g 代码程序中我有许多不同大小的弧,所以要均匀地降低弧的分辨率,这样大的就不会’有太多的线和较小的弧线有足够的线不会变成一条小线我在 bool GcodeDrawer::updateData() 函数中更改了 gcodedrawer.cpp 代码如下:

                        straight = start.crossProduct(start.normalized(), next.normalized()).length() < m_simplifyPrecision;
                    }
                // Split short & straight lines
                } while ((straight) && i < list->count()

它可以被清理(删除长度变量等),但这已经产生了我想要的效果。我确信点积的工作原理几乎相同,但这对我来说花费最少的努力就坚持了下来。

高度映射用线性移动代替弧形移动 #29
所有者

在这种情况下,有必要添加新设置,例如“拉直最大角度”(m_straightenAngle)。
并将代码更改为:

straight = acos(QVector3D.dotProduct(start.normalized(), next.normalized())) < m_straightenAngle;

这里的角度以弧度表示,因此需要以某种方式转换为度数。

高度映射用线性移动代替弧形移动 #29

我对这个论坛很陌生。
请问有详细的高度测绘程序吗?
感谢所有
Ambrogio
iw2fvo@yahoo.com

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

还没有

发展

没有分支机构或拉取请求

3人参加
高度映射用线性移动代替弧形移动 #29高度映射用线性移动代替弧形移动 #29高度映射用线性移动代替弧形移动 #29

喜欢 (0)