如何检查IF语句中的数字是否已更改,然后才执行脚本?

时间:2019-07-10 09:41:05

标签: python inkscape g-code

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

我已经准备好所有变量,只需要知道如何查看层号在变为“ 2”之前保持为“ 1”的时间,以便脚本知道何时注入“工具更改gcode”。 / p>

经过数小时的可能解决方案搜索之后,我仍无法使其正常运行。我尝试了一些while语句,但都失败了,甚至使软件崩溃了几次。我到目前为止已经用're.sub'去除了字符中的所有图层数据,并使变量'layer number'包含了'1'或'2'或'3'(应该能够扩展到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语句查看层号是上升还是下降,并仅在这种情况下才相应地更改工具。稍后,我可能不检查层号,而是检查工具号,但是,就目前而言,按照我的工作方式,我更清楚地使用层号,因为无论如何该层号都与工具号相对应,并且从直觉上来说,以这种方式进行操作对我来说更清楚。

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

1 个答案:

答案 0 :(得分:0)

似乎您缺少设置

self.last_used_tool = tool

在您的if块的末尾。否则,self.last_used_tool将始终为None,并且永远不会比较等于tool