一括表示

お世話になります。
当方スクリプト初心者でよくわからないのでスクリプトについて教えて下さい。

MILL出力データの内容をエディタ内で一括変更したいのですが
例えば、

G00Z5.0;
G00X*Y*;

G00Z5.0;
G01X*Y*;
の様にG00Z5.0の次行に続くG00X*Y*のG00のみをG01に変更するスクリプトを作成したいのですが、
下記サンプルを修正して使う場合どの様に変更すれば宜しいでしょうか?

サンプル
Program G00Z5SlashG00Z5;
var
i, leng : integer;
s : string;

begin
leng := EditorLength(); // エディタの行数を取得する
for i:=1 to leng do
Begin
s := EditorRead(i);
if Length(s) < 1 then continue;
if Pos('(G00Z5.0)', s) > 0 then

if Pos('%', s) > 0 then continue;

if Pos('G00Z5.0', s) > 0 then
EditorWrite(i, StringReplace(s, 'G00Z5.0', '/G00Z5.0')); // SlashG00Z5.0へ書き換え

End;
End.

2023/12/13(Wed) 16:40:52  [No.6315]


> MILL出力データの内容をエディタ内で一括変更したいのですが

// G00 を G01

Program Sconvert;
var
i, n, p, leng : integer;
s : string;

begin // エディタにNCデータを準備しておいて下さい。
n := 0;
leng := EditorLength(); // エディタの行数を取得する
for i:=1 to leng do
Begin
s := EditorRead(i);
if Length(s) < 1 then continue; // 対象外
if Pos('G00', s) = 0 then continue; // 対象外
if Pos('X', s) = 0 then continue; // 対象外
if Pos('Y', s) = 0 then continue; // 対象外

s:= StringReplace(s, 'G00', 'G01');
// MsgBox(s);
EditorWrite(i, s);
inc(n);
End;
s := IntToStr(n);
OkMsgBox('G00X*Y*を ' + s + ' 個G01X*Y*に置き換えました。');
End.

これではどうですか?

2023/12/13(Wed) 17:36:00  [No.6316]


おはようございます。
早急な返答ありがとうございます。

一番最初の位置決めもGOOがG01に変換されてしまいましたが、
この内容で十分です。

これでG00Z5.0を/G00Z5.0にスクリプトで変換し、ブロックスキップでとばせばポケットヘリカル切り込み加工で毎回R点に戻さずに終了Zまで加工できそうです。

助かりました、ありがとうございます。

2023/12/14(Thu) 10:16:36  [No.6317]