注释
@TilTisback 来自代码描述: 这是你要找的吗? |
@effer 是正确的,您必须只选择要优化的 gcode 块。也许我应该把之前没有选择任何东西的选项作为一个选项。 根据你想做什么,你可以先重新排序你想要开始的块,然后选择你想要优化的 |
@vlachoudis如果没有选择任何内容,我喜欢 selectAll()。 也许添加一种我觉得编辑器中缺少的反转选择(Ctrl+I?)的方法可能会有用。还添加了几个按钮供选择将使命令更容易找到。 |
@effer我已经实施了 SelectAll。但是,如果有代码控制块,那就有点危险了。例如开始停止主轴或换刀。我认为如果未选择任何内容而不是重新排序代码,则发出消息更安全 Ctrl-I 和选择功能当然是编辑器的必备功能。也许应该为此创建一个新的按钮组。 |
我对这类问题并不强硬。走安全的路。 一个新的小组将很适合 |
嗨,
问候 |
它应该在最后一次提交时修复@ThierryM |
谢谢(我在发布后看到了最后一次提交…)。 |
有没有办法在单个块内进行优化?Flatcam 以 bCnc 视为一个巨大块的格式输出钻孔运动,我不知道如何将其拆分。 |
通常 bCNC 在 g0 垂直运动之间拆分 gcode。你能给我一个 gcode 的例子,看看它为什么不拆分吗? |
@vlachoudis 试试这个。它很短,但应该展示我所看到的:http: //pastebin.ca/3334828 |
行。我看到 flatcam 使用 G1 而不是 G0 缩回主轴。恐怕如果我更改算法以接受 G1 垂直运动,那么它会将正常的 3D 剪辑分解为人工代码块。我会说在你的情况下,最简单的方法是在任何文本编辑器中将“G01 Z1.0000”替换为“G00 Z1.0000”,然后一切正常。或者从 linux 命令行 |
我在使用 FlatCAM 生成的 gcode 来钻 PCB 时遇到了同样的问题:gcode 无法优化,因为它被解释为多个钻孔的单个块。 目前bCNC的做法如下:https ://github.com/vlachoudis/bCNC/blob/master/CNC.py#L1944 # rapid move up = end of block
if self._blocksExist:
self.blocks[-1].append(line)
elif self.cnc.gcode == 0 and self.cnc.dz > 0.0:
self.blocks[-1].append(line)
self.blocks.append(Block())
elif self.cnc.gcode == 0 and len(self.blocks)==1:
self.blocks.append(Block())
self.blocks[-1].append(line)
else:
self.blocks[-1].append(line)
问题在于,当从 PCB 上提起钻头时,Z 轴运动不必很快。我建议只要 Z 高于 Z=0 (self.cnc.zval > 0.0) 也分成块 # tool raised to Z>0 = end of block
if self._blocksExist:
self.blocks[-1].append(line)
elif (self.cnc.gcode == 0 or self.cnc.zval > 0.0) and self.cnc.dz > 0.0:
self.blocks[-1].append(line)
self.blocks.append(Block())
elif self.cnc.gcode == 0 and len(self.blocks)==1:
self.blocks.append(Block())
self.blocks[-1].append(line)
else:
self.blocks[-1].append(line)
我刚刚测试过它并且似乎工作正常。 |
我刚刚更新了包含 self.cnc.zval 检查的评论,以保证 dZ>0 和 Z>0。抱歉多次编辑! |
对不起@vlachoudis,直到现在才看到你的留言。
我同意,这就是为什么后面的代码不会拆分 Z=0 以下的任何内容。 就个人而言,此功能可以为我节省一些长期时间(这包括为其他也需要优化 FlatCam 的钻头的用户提供支持 :P)。但如果您认为它实际上可能有问题,请随意丢弃它 |
我不同意 z=0 条件。没有什么能阻止某人开始使用 z>0 的库存材料。 |
这是有道理的,我错误地假设每个用于铣削的 gcode 都应该将 Z=0 作为材料的表面。 |
看来他们会在 FlatCAM 中解决这个问题:https |
嗨,
我知道这不是真正的问题报告,但我不知道在哪里发布它。
所以事情是这样的:有没有办法在 bCNC 中实现 g 代码优化?
有一些基于命令行的优化器可以解决旅行商问题,但如果在程序本身中有这样的工具会非常好。就像加载 gcode 一样,点击优化并直接在主视口中查看结果。
我真的很感激!