【发布时间】:2014-09-07 08:46:47
【问题描述】:
我有一个用于 CNC 机床的 G 代码文件,需要在图案之间插入两条线。本质上我需要编写一个简单的后处理器。 这是我的 CAM 程序中的一小段代码:
G00 X-1.663 Y-0.992 Z+0.
G01 X-1.072 Y-0.992
G01 X-1.072 Y-0.874
G01 X-1.663 Y-0.874
G01 X-1.663 Y-0.992
G00 X-3.021 Y-0.992
G01 X-3.021 Y-0.874
G01 X-2.43 Y-0.874
G01 X-2.43 Y-0.992
G01 X-3.021 Y-0.992
我需要按顺序在 G00 和 G01 之间插入两行。所以上面的例子现在变成了:
G00 X-1.663 Y-0.992 Z+0.
M51
M04 F.1
G01 X-1.072 Y-0.992
G01 X-1.072 Y-0.874
G01 X-1.663 Y-0.874
G01 X-1.663 Y-0.992
G00 X-3.021 Y-0.992
M51
M04 F.1
G01 X-3.021 Y-0.874
G01 X-2.43 Y-0.874
G01 X-2.43 Y-0.992
G01 X-3.021 Y-0.992
我需要的另一件事是换行符必须是 Windows/DOS 样式,末尾带有 \r\n。这与需要 DOS 文本文件的旧的、变化无常的 CNC 控制器有关。我可以使用另一个 awk 或 sed 脚本,但最好使用一个衬里。 我正在尝试:
awk '/G00/,/G01/{print $0 RS "M51" RS "M04 F.1";next}1' FILE
但是这些行是在 ANY G00 或 G01 之后添加的。我只需要在 G00 和 G01 之间。 还有一件事,我更喜欢单行命令。 谢谢!
【问题讨论】:
-
为什么要同时检查
G00和G01。awk '/G00/{$0 = $0 RS "M51" RS "M04.F1"}1' file还不够吗? -
因为可能有多个 G00 命令,在它们之间添加重复的命令会增加不必要的行并占用宝贵的文件空间。 CNC 控制器文件空间以千字节为单位,因为它是 1987 年制造的旧 Allen Bradley 8400。
-
+1 表示可以概括其答案的明确问题。 :)