0

我正在为笔式绘图仪创建一个工具更换器,它只会在每次源文件移动以从新图层(在 inkscape 内)读取数据时更换工具。该脚本在每一层更改时注入一段特定的 GCODE(基于 CNC 的机器需要知道它应该做什么的代码)。

我已经准备好所有变量,只需要知道如何查看层号保持“1”多长时间,直到它变为“2”,以便脚本知道何时注入“工具更改 gcode”。

经过数小时搜索可能的解决方案后,我还没有设法让它工作。我尝试了一些while语句,但都失败了,我什至让我的软件崩溃了几次。我已经到现在用're.sub'从它的字符中剥离所有图层数据,并制作包含'1'或'2'或'3'的变量'layer number'(应该能够扩大到 9 或更多)。

        try :
            self.last_used_tool == None
        except :
            self.last_used_tool = None
        print_("working on curve")
        print_(curve)

        if tool != self.last_used_tool :
            layernumber = re.sub('[^0-9]','', layer.get(inkex.addNS('label','inkscape'))) 
            g += ("Layer %s" % layernumber + "\n;(Change tool to %s)\n" % re.sub("\"'\(\)\\\\"," ",tool["name"]) ) + tool["tool change gcode"] + "\n"

该脚本有效,但在此脚本中,“self.last_used_tool”在其他任何地方都不存在,所以我相信它是一个虚拟代码。

现在 if 语句每次开始在新路径上工作时都会输出换刀 gcode,从而导致同一工具在一层中进行多次换刀。我需要仅在第一次移动到新图层时更改工具。

我正在寻找一种方法来使 if 语句查看层号是上升还是下降,并仅在这种情况下相应地更改工具。稍后我可能不会检查图层编号而是检查工具编号,但是,就目前而言,在我工作的方式中,使用图层编号对我来说更清楚,因为该编号无论如何都与工具编号相对应,并且直觉上,我觉得这样做更清楚。

感谢您的时间和精力,我希望有人能够帮助我找到解决方案。脚本完成后,我会在线发布,以便其他人也可以使用它。我正在处理的脚本是一个旧的开源项目,它被遗弃了,显然缺乏一些功能。我已经修复了大部分扩展(包括语言),但工具更改从未奏效。

4

1 回答 1

0

看来您缺少设置

self.last_used_tool = tool

if在你的-block的末尾。没有它,self.last_used_tool将永远是None并且永远不会比较等于tool

于 2019-07-10T09:52:37.157 回答