|
こんにちは、白雲斎です。
名前が出てきたので、しゃしゃり出てきました。
●処理対象のフォーマットについて
説明されたものに、以下の解釈を加えてマクロを作成しました。
間違った解釈なら、指摘ください。
---------------------------------------
X-28.Y50.
・X数字(負数もあり)
・Y数字(負数もあり)
・ピリオドの有無は、統一されていない
・順序は、XY
M98 P1000
・上記XYピッチの下行に、必ず存在する
・値は、「M98 P1000」以外にない
Y0
・"Y0"は、Y軸の移動ではない
---------------------------------------
●疑問
---------------------------------------
>Y軸の移動があった場合で、かつM98 P1000が付く行の上の行に
> (L-1)が入って欲しいのです。
この条件に当てはまらないものは、存在するのか?
あるのなら、具体的に何?
---------------------------------------
●以下マクロ
#pitchID = 1;
#lineID = 1;
#before = 1;
gofiletop;
searchdown "^X\\-?[0-9]+\\.?Y\\-?[0-9]+\\.?", regular, casesense;
while( result )
{
$buff = gettext(foundtopx, foundtopy, foundendx, foundendy, 1);
if( rightstr($buff, 1) == "." )
$buff = leftstr($buff, strlen($buff) - 1);
if( strstr($buff, ".") == -1 ) call GetPitch $buff, "Y";
else call GetPitch $buff, ".Y";
if( #yNum != 0 && #yNum != #before )
{
insert "(L-" + str(#lineID) + ")\n";
#lineID = #lineID + 1;
}
insert "(" + str(#pitchID) + $pStr + str(#yNum) + ". ";
while( code == 0x09 || code == 0x0D || code == 0x20 ) delete;
#pitchID = #pitchID + 1;
finddown;
}
endmacro;
ERR:
message "error";
endmacro;
GetPitch:
##s = strstr($$1, $$2);
if( ##s == -1 ) goto ERR;
$pStr = ")G00 " + leftstr($$1, ##s) + ".Y";
#yNum = val( rightstr($$1, strlen($$1) - ##s - strlen($$2)) );
return;
|
|