例如,我有一个以 Fanuc g 代码格式编写的 g 代码,包括 Macro-B(更多信息在这里)
#101 = 2.0 (first variable)
#102 = 0.1 (second variable)
#103 = [#101 + #102 * 3] (third variable using simple arithmetic)
G01 X#101 Y#103 F0.1
应转换为:
G01 X1.0 Y2.3 F0.1
要改变的事情:
- 变量槽的所有实例都应替换为其值:
(#\d+)\s*=\s*(-?\d*\.\d+|\d+\.\d*)
- 算术
+
,-
,*
里面/
需要[...]
计算:
(#\d+)\s*=\s*\[(#\d+|(-?\d*\.\d+|\d+\.\d*))(\s*[+\-*/]\s*(#\d+|(-?\d*\.\d+|\d+\.\d*|\d+)))*\]
- 评论
(...)
可以被忽略或删除。
如果您能帮助我了解如何在 Python 中执行此操作以及我上面的正则表达式是否正确,我将不胜感激。提前感谢您的支持。
PS1。不幸的是,我找不到 g 代码的围栏代码块的语法突出显示
PS2。将浮点数更改为字符串时,应考虑 Python 浮点处理的问题。我做了这个功能来解决这个问题:
def f32str(inputFloat):
"""
This function converts a Python float to a string with 3 decimals
"""
return str(f"{inputFloat:.3f}")