【问题标题】:How to check if a number inside an IF statement has changed and only then execute a script?如何检查 IF 语句中的数字是否已更改,然后才执行脚本?
【发布时间】:2019-11-19 21:54:08
【问题描述】:

我正在为笔式绘图仪创建一个工具更换器,该工具更换器仅在每次源文件移动以从新图层(在 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 语句查看层号是上升还是下降,并仅在这种情况下相应地更改工具。稍后我可能不会检查图层编号而是检查工具编号,但是,就目前而言,在我工作的方式中,使用图层编号对我来说更清楚,因为该编号无论如何都与工具编号相对应,并且直觉上,我觉得这样做更清楚。

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

【问题讨论】:

    标签: python inkscape g-code


    【解决方案1】:

    您似乎缺少设置

    self.last_used_tool = tool
    

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

    【讨论】:

    • 哇,谢谢。我一直不太明白他们对这个系列的意思。在我在网上找到的 try/except 集的所有示例中,我发现它看起来已经不同了,但不知何故在认知上并没有建立联系。非常感谢,脚本现在可以正常工作了。你有很大的不同!我相信,由于您的帮助,我现在是第一个纠正扩展程序在将其用于笔式绘图仪时出现的所有错误的人。
    猜你喜欢
    • 2019-05-11
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 2023-01-15
    • 2020-01-03
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    相关资源
    最近更新 更多