我正在为笔式绘图仪创建一个工具更换器,该工具更换器仅在每次源文件移动以从新层(在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语句查看层号是上升还是下降,并仅在这种情况下才相应地更改工具。稍后,我可能不检查层号,而是检查工具号,但是,就目前而言,按照我的工作方式,我更清楚地使用层号,因为无论如何该层号都与工具号相对应,并且从直觉上来说,以这种方式进行操作对我来说更清楚。
感谢您的时间和精力,希望有人能够帮助我找到解决方案。脚本完成后,我将在线发布该脚本,以便其他人也可以使用它。我正在处理的脚本是一个旧的开源项目,已被废弃,显然缺乏某些功能。我已经修复了大多数扩展(包括语言),但工具更改从未奏效。
答案 0 :(得分:0)
似乎您缺少设置
self.last_used_tool = tool
在您的if
块的末尾。否则,self.last_used_tool
将始终为None
,并且永远不会比较等于tool
。