文字列の修正で困っておりますNo.05012
suzuco さん 06/01/17 16:25
 
お世話になります。
以前にも白雲斎さん、三月さんにお知恵をお借りいたしまして便利なマクロを授かり
ました。
その節は大変ありがとうございました。

 今回も下記の様な、文字列の修正で困っております。
マクロ集の検索や、以前のマクロを参考にと思ったのですが、やはり素人の当方では
無理そうです。
そこで、秀丸の達人方のお知恵をお借りしたいと思います。

下記は工作機械での加工位置データです。ソフトのVerアップでデータ結果が異な
ってしまいました。
そこで、マクロがあればと思うしだいです。

よろしくお願い致します。

■【参考文字列】※元のNCデータです。
%
O250(1615)
G91G80G62G40G17
G92X0.Y0.Z50.
M08
M03
X-28.Y50.
 M98 P1000
X28.Y0
 M98 P1000
X28.Y0
 M98 P1000
X0Y-25.
 M98 P1000
X-28.Y0
 M98 P1000
X-28.Y0
 M98 P1000
X0Y-25.
 M98 P1000
X28.Y0
 M98 P1000
X28.Y0
 M98 P1000
X0Y-25.
 M98 P1000
X-28.Y0
 M98 P1000
X-28.Y0
 M98 P1000
X0Y-25.
 M98 P1000
X28.Y0
 M98 P1000
X28.Y0
 M98 P1000
G00X-28.Y50.
/M09
/M05
G64
M30
%

■【結果文字列】 結果、この様になって欲しいのです。
%
O250(1615)
G91G80G62G40G17
G92X0.Y0.Z50.
M08
M03
(L-1)
(1)G00 X-28.Y50. M98 P1000
(2)G00 X28.Y0. M98 P1000
(3)G00 X28.Y0. M98 P1000
(L-2)
(4)G00 X0.Y-25. M98 P1000
(5)G00 X-28.Y0. M98 P1000
(6)G00 X-28.Y0. M98 P1000
(L-3)
(7)G00 X0.Y-25. M98 P1000
(8)G00 X28.Y0. M98 P1000
(9)G00 X28.Y0. M98 P1000
(L-4)
(10)G00 X0.Y-25. M98 P1000
(11)G00 X-28.Y0. M98 P1000
(12)G00 X-28.Y0. M98 P1000
(L-5)
(13)G00 X0.Y-25. M98 P1000
(14)G00 X28.Y0. M98 P1000
(15)G00 X28.Y0. M98 P1000

G00X-28.Y50.
/M09
/M05
G64
M30
%



■【参考】 ご説明です。

・上記の X,Yの数字はピッチですのでいろいろです。

@ M98 P1000 が 前の行のX,Yのデータの行の後ろに移動ししてほしいのです。

A ・@でM98 P1000 が移動した行の先頭に (*)G00 が付いて欲しい。
     (*)G00 が付きましたら ( )内に M98 P1000 個数  1から順番に
     数字が付いてほしいのです。
   ・今回は 15箇所の位置データです。これが100箇所、200箇所やそ
     れ以上の数、いろいろです。
   ・15箇所は G00の前に(15)となり確認できます。
   ・最後の方の 移動データ 「G00X-28.Y50.」にはその次に
     M98 P1000がないので (*数字)は付きません。

B X0 や Y0 に小数点「.」が付いて  X0.Y0.となり、半角スペース
   が付いて欲しいのです。

C Y軸の移動があった場合で、かつM98 P1000が付く行の上の行に
  (L-1)が入って欲しいのです。
   これは列を表します。(L-1)の数字は順番に入って欲しいのです。
   上記では 5列あることが判ります。

 以上の様な条件なのですが、結果の様なマクロ作成へお知恵、お力をお借りしたい
しだいです。

 以前にも、辞退れてしまいましたが成果への報酬を真剣に考えております。
マイクロソフト等ではポイント制で問題解決等もされている様子です。
例えば、秀丸のマクロ作成者のオフ会の様なものがあったら寄付の形でもさし上げた
い気持ちです。
 この点、主催者さまに強くご検討いただきたく思います。

   何卒、マクロ作成へお知恵、お力をよろしくお願い致します。


[ ]
RE:05012 文字列の修正で困っておりますNo.05013
ENCODINGSHIFTJIS さん 06/01/17 18:49
 
手操作記録では、ここまで

 gofiletop;
// まる1
while(true){
 searchdown "^ M98" , regular, hilight;
 if( ! result )  break;
 escape;
 backspace;
// まる2
 golinetop;
 insert "(*)G00 ";
 
 }
// まる3
 replaceall "([^.]) M" , "\\1. M" , regular, nohilight;
 replaceall "([^.])Y" , "\\1.Y" , regular, nohilight;
// まる4
 gofiletop;
while(true){
 searchdown "\\.Y[^0][^M]+M" , regular, hilight;
 if( ! result )  break;
 escape;
 golinetop;
 insert "(L-1)";
 insertreturn;
 down;
 }
 

[ ]
RE:05013 文字列の修正で困っておりますNo.05014
ENCODINGSHIFTJIS さん 06/01/17 19:13
 
発想法

1.キーになる文字列のパターンを読み そこにカーソルを持ってくる。
2.相対移動で作用点にカーソルを動かす。
3.編集をする
4.次の検索が1.と同じ点にならないように、カーソルを先に進める。

付番の処理も同様に。

[ ]
RE:05012 文字列の修正で困っておりますNo.05015
白雲斎 さん 06/01/17 20:22
 
こんにちは、白雲斎です。
名前が出てきたので、しゃしゃり出てきました。

●処理対象のフォーマットについて
説明されたものに、以下の解釈を加えてマクロを作成しました。
間違った解釈なら、指摘ください。
---------------------------------------
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;

[ ]
RE:05015 文字列の修正で困っておりますNo.05016
白雲斎 さん 06/01/17 21:20
 
こんにちは、白雲斎です。
マクロに抜けがありました。
毎度そそっかしい投稿で恐縮です。

>    if( #yNum != 0 && #yNum != #before )
>    {
>        insert "(L-" + str(#lineID) + ")\n";
         #before = #yNum;   ← ★ここが抜けていた
>        #lineID = #lineID + 1;
>    }

以下、修正した全文です。


#pitchID = 1;
#lineID = 1;
#before = 1;
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";
        #before = #yNum;
        #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 ;

[ ]
RE:05013 文字列の修正で困っておりますNo.05017
suzuco さん 06/01/18 10:54
 
 ENCODINGSHIFTJISさん早々のレスありがとうございます。
早々マクロにして作業してみました。
すばらしいです。
 (L-1)
(*)G00 X-28.Y50. M98 P1000
(*)G00 X28.Y0. M98 P1000
(*)G00 X28.Y0. M98 P1000
(L-1)
(*)G00 X0.Y-25. M98 P1000
(*)G00 X-28.Y0. M98 P1000
(*)G00 X-28.Y0. M98 P1000
(L-1)
(*)G00 X0.Y-25. M98 P1000
(*)G00 X28.Y0. M98 P1000
(*)G00 X28.Y0. M98 P1000
(L-1)
(*)G00 X0.Y-25. M98 P1000
(*)G00 X-28.Y0. M98 P1000
(*)G00 X-28.Y0. M98 P1000
(L-1)
(*)G00 X0.Y-25. M98 P1000
(*)G00 X28.Y0. M98 P1000
(*)G00 X28.Y0. M98 P1000

主要部分のみ抜粋ですが、上記の様になりました。
(L-1)と(*)数字が順序よく入ってくれるとたすかるのですが・・・・・・甘えて申し
訳ないです。
次項に続きます。







[ ]
RE:05014 文字列の修正で困っておりますNo.05018
suzuco さん 06/01/18 12:25
 
発想法のご教授ありがとうございます。
すごく判りやすいです。
参考にさせていただきます。マクロのヘルプを見させていただき照合してみます。
 ですが、最初からあきらめ傾向で恐縮ですが、当方には無理そうです。
例えば、マクロ内で使用されている、「^」ですが、ヘルプを見ても該当がありませ
ん。また、「^」がないと、とんでもないことになってしまいます。
 ヘルプ以前の問題だと思いますが、初心者には辛いところです。

>付番の処理も同様に
 とあります・・・・(^^;、使用されるコマンドやおおよその記述方法、引き続きご
指導いただければ幸いです。

 本当に、秀丸、マクロパワーユーザー様へは感謝です。
 ENCODINGSHIFTJISさんありがとうございます。
 

[ ]
RE:05015 文字列の修正で困っておりますNo.05019
suzuco さん 06/01/18 15:36
 
こんにちは、suzucoです。
ご無沙汰しております。
その節はお世話になりました。
ありがとうございました。

 今回も前回同様お力添えいただければ幸いです。
 ご質問がありました点補足します。


>X-28.Y50.
  →X-28.Y50.は X軸に-28.0mm Y軸に50.0mm (G00で早送りで動く)
   を表します。

    >・X数字(負数もあり)
           →負数もあります。
    >・Y数字(負数もあり)
           →負数もあります。
    >・ピリオドの有無は、統一されていない
           →XもYも0には「.」がない様子でが、0にも付いて
             ほしいです。
    >・順序は、XY
           → XYになります。

>M98 P1000
    >・上記XYピッチの下行に、必ず存在する
           →関係する行の下行に必ず存在します。逆にマクロ前の
             文字列の最後の/M09の上の移動を表す行には
             M98 P1000 はありません。
    >・値は、「M98 P1000」以外にない
           →ございません

>Y0
    >・"Y0"は、Y軸の移動ではない
           →Y軸の移動を表しますが、この場合、0ですので実質
             Y軸は動きません。


>●疑問
>---------------------------------------
>>Y軸の移動があった場合で、かつM98 P1000が付く行の上の行に
>>  (L-1)が入って欲しいのです。
>
>この条件に当てはまらないものは、存在するのか?
>あるのなら、具体的に何?
>---------------------------------------
 →条件に当てはまらないものはありません。

 →参考図を http://proxy.f3.ymdb.yahoofs.jp/bc/43cddc21_176f7/bc/%b7%ea%b0%cc%c3%d6%a5%b5%a5%f3%a5%d7%a5%eb.jpg?bctLezDBBHn3OotU
 
  へUPしました。ご参照いただければ幸いです。
  ご説明させていただきます。
  図を見ていただきますと、中央の8番の座標X0.Y0.から
  スタートして、左上の 1番のポイント(座標X-28.Y50.)から順番に
  加工して、15番まで行い、M98 P1000の行が入らない、/M09 の行の
  上の行のG00X-28.Y50.で中央のスタート点8番の座標X0.Y0.へ戻る
  ・・・となります。
   ピッチや加工箇所の位置は変わります。

 →ですので、Y軸の移動がない場合(Y0.)は 列が変わらないので
  (L-*)は要りません。Y軸の移動があった場合、(L-*)が欲しい
   のです。これで、列(段の表現が適当かも知れません)を指示で
   きて、具合が良いのです。

    よろしくお願い致します。

   





 









>こんにちは、白雲斎です。
>名前が出てきたので、しゃしゃり出てきました。
>
>●処理対象のフォーマットについて
>説明されたものに、以下の解釈を加えてマクロを作成しました。
>間違った解釈なら、指摘ください。
>---------------------------------------
>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;

[ ]
RE:05016 文字列の修正で困っておりますNo.05020
suzuco さん 06/01/18 15:44
 
お世話になります。
早速、マクロにして作業してみました。
結果は下記のようになり、(L-2)より先に、(L-3)以降入りませんでした。
 何とか、今一度、お力をお借しいただけますようお願いします。

 (L-1)
(1)G00 X-28.Y50. M98 P1000
(2)G00 X28.Y0. M98 P1000
(3)G00 X28.Y0. M98 P1000
(L-2)
(4)G00 X0.Y-25. M98 P1000
(5)G00 X-28.Y0. M98 P1000
(6)G00 X-28.Y0. M98 P1000
(7)G00 X0.Y-25. M98 P1000
(8)G00 X28.Y0. M98 P1000
(9)G00 X28.Y0. M98 P1000
(10)G00 X0.Y-25. M98 P1000
(11)G00 X-28.Y0. M98 P1000
(12)G00 X-28.Y0. M98 P1000
(13)G00 X0.Y-25. M98 P1000
(14)G00 X28.Y0. M98 P1000
(15)G00 X28.Y0. M98 P1000
G00X-28.Y50.

です。
よろしくお願い致します。

[ ]
RE:05018 文字列の修正で困っておりますNo.05021
ENCODINGSHIFTJIS さん 06/01/18 16:30
 
秀丸ヘルプに載ってます、
 目次−検索系コマンド−いろいろな検索例−正規表現
メタキャラクタ 意味 の三行目
体のキレを亀田兄弟みたいに良くしなくとも、到達できます。
ヘルプは入門解説ではないので『秀丸エディタQ&A集』のほうがよいかもしれませ
ん。

手操作をキー記録 → マクロ断片ソース取得
それらを、つなげて合成。

STEP1 キー記録の採取

 searchdown "^\\(L-1\\)" , regular, hilight;// 頭出し
 if( ! result )  beep;
 escape;
 searchdown "1" , regular, hilight;
 if( ! result )  beep;
 insert "xxxx";  // 付番の仮置き
 down;          // 次に準備

STEP2 番号付加

#num=1; // 番号初期値
#step=1; // 刻み

 searchdown "^\\(L-1\\)" , regular, hilight;// 頭出し
 if( ! result )  beep;
 escape;
 searchdown "1" , regular, hilight;
 if( ! result )  beep;
 insert str(#num);  // 付番の仮置き
 #num=#num + #step;
 down;          // 次に準備
 
STEP3 繰り返し

#num=1; // 番号初期値
#step=1; // 刻み

gofiletop;

while(true){
 searchdown "^\\(L-1\\)" , regular, hilight;// 頭出し
 if( ! result )  break;
 escape;
 searchdown "1" , regular, hilight;

 insert str(#num);  // 付番の仮置き
 #num=#num + #step;
 down;          // 次に準備
 }

各ステップを追体験すること。

ちなみに
MIFESには連番発生が組込みである、キーマクロだけで付番できます。
(秀丸はそれより先に完全UNICODE対応をしてほしいです)

日本語urlでEUC-JPですから、S-JISのブラウザからは行けなかった。
穴位置サンプル
ファイル共有で使えるファイル名でもWebには通らないものがある。

[ ]
RE:05020 文字列の修正で困っておりますNo.05022
白雲斎 さん 06/01/18 17:39
 
こんにちは、白雲斎です。

>結果は下記のようになり、(L-2)より先に、(L-3)以降入りませんでした。

(L-1)
(1)G00 X-28.Y50. M98 P1000
(2)G00 X28.Y0. M98 P1000
(3)G00 X28.Y0. M98 P1000
(L-2)
(4)G00 X0.Y-25. M98 P1000   ← (*1)
(5)G00 X-28.Y0. M98 P1000
(6)G00 X-28.Y0. M98 P1000
(7)G00 X0.Y-25. M98 P1000   ← (*1)と同一値なので、
                                Y軸移動と判断しなかった

で、単純に「Y数字」が「Y0」でないものは、無条件に「(L-連番)」を付ける事
に変更しました。(Y0とそれ以外の関係が分からないので)
問題があれば指摘ください。

-- 今回の実行例 -----------------------
X-28.Y50.       ←(*2)
 M98 P1000
X0Y50.          ←Y軸の値が(*2)と一緒
 M98 P1000

  ▼間にY0がなくても(L-連番)を付ける

(L-1)
(1)G00 X-28.Y50. M98 P1000
(L-2)
(2)G00 X0.Y50. M98 P1000
---------------------------------------

> →参考図を http://proxy.f3.ymdb.yahoofs.jp/bc/43cddc21_176f7/bc/%b7%ea%b0%cc%c3%d6%a5%b5%a5%f3%a5%d7%a5%eb.jpg?bctLezDBBHn3OotU

指定URLは、読み込みエラーで参照できませんでした。
以下、修正したマクロ


#pitchID = 1;
#lineID = 1;
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 )
    {
        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 ;

[ ]
RE:05021 文字列の修正で困っておりますNo.05023
suzuco さん 06/01/24 14:59
 
お教えいただいてありがとうございます。
先週末より用事でPC覗けませんでした。
よってお礼も遅れてしまいました。

今回は、丁寧にお教えいただきありがとうございました。
大変参考になり勉強させていただくきっかけにさせていただきたく思います。

ですが、最初からあきらめで申し訳ないですが、理解するには当方には程遠い様に思
います。自分でマクロが組めたらさぞかし良いかと思いヘルプ等をみさせていただい
たのですが、毎回あきらめの連続です。
 
 今回、『秀丸エディタQ&A集』を参考にとのことでしたが、常連さんとの記述が
あり、敷居が高いです。

今後とも、お手数をおかけしますが何卒ご教授よろしくお願い致します。

今回はありがとうございました。

[ ]
RE:05022 文字列の修正で困っておりますNo.05024
suzuco さん 06/01/24 15:15
 
白雲斎さん、いつもいつもありがとうございます。
週末よりPCが覗けず、お礼が今になってしまいました。

今回も無事、マクロ動きました。感動の極みです。

何とお礼をしていいのか、いつもそんな気持ちでいっぱいです。
本当は、コツコツでも自分でマクロを作れば、より感動もあるのでしょうが、毎回マ
クロを見ると、また、ヘルプを見てみるとその気持ちもうせてしまいます。

 今回もお世話になり、本当にありがたい事だと思います。将来、当サイト主催者様
で、報酬を還元できるシステムになったら、過去の分も含めそれに報いたく思います
ので、何卒、今後もご協力のほどよろしくお願い致します。

 今回はありがとうございました。















>こんにちは、白雲斎です。
>
>>結果は下記のようになり、(L-2)より先に、(L-3)以降入りませんでした。
>
>(L-1)
>(1)G00 X-28.Y50. M98 P1000
>(2)G00 X28.Y0. M98 P1000
>(3)G00 X28.Y0. M98 P1000
>(L-2)
>(4)G00 X0.Y-25. M98 P1000   ← (*1)
>(5)G00 X-28.Y0. M98 P1000
>(6)G00 X-28.Y0. M98 P1000
>(7)G00 X0.Y-25. M98 P1000   ← (*1)と同一値なので、
>                                Y軸移動と判断しなかった
>
>で、単純に「Y数字」が「Y0」でないものは、無条件に「(L-連番)」を付ける事
>に変更しました。(Y0とそれ以外の関係が分からないので)
>問題があれば指摘ください。
>
>-- 今回の実行例 -----------------------
>X-28.Y50.       ←(*2)
> M98 P1000
>X0Y50.          ←Y軸の値が(*2)と一緒
> M98 P1000
>
>  ▼間にY0がなくても(L-連番)を付ける
>
>(L-1)
>(1)G00 X-28.Y50. M98 P1000
>(L-2)
>(2)G00 X0.Y50. M98 P1000
>---------------------------------------
>
>> →参考図を http://proxy.f3.ymdb.yahoofs.jp/bc/43cddc21_176f7/bc/%b7%ea%b0%cc%c3%d6%a5%b5%a5%f3%a5%d7%a5%eb.jpg?bctLezDBBHn3OotU
>
>指定URLは、読み込みエラーで参照できませんでした。
>以下、修正したマクロ
>
>
>#pitchID = 1;
>#lineID = 1;
>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 )
>    {
>        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 ;

[ ]
RE:05023 文字列の修正で困っておりますNo.05025
きいろいまふらあ さん 06/01/25 08:36
 
きいろいまふらあと申します。

> 今回、『秀丸エディタQ&A集』を参考にとのことでしたが、常連さんとの記述が
>あり、敷居が高いです。

実際にご覧になった上での発言でしたら、以下は読み飛ばしてください。

秀丸エディタQ&A集は、Web上で公開されている、秀丸エディタユーザの有志
による、「秀丸エディタにまつわるよくある質問と回答集」です。
一般的な操作方法はもちろん、マクロの作成方法についても、比較的平易な書き
方で、初めてマクロを作成する方にもわかりやすいように解説されています。

もし、今後マクロを作成する(作成しようとされる)ことがあったら、よろしけ
れば参考になさってください。

公開はJRくんが担当されています。
http://homepage2.nifty.com/jr-kun/hidemaru_qa/index.html

[ ]
RE:05025 文字列の修正で困っておりますNo.05026
suzuco さん 06/01/25 12:46
 
きいろいまふらあさんありがとうございます。
例えば、Yahooで『秀丸エディタQ&A集』を検索したらなかったんですよ。今もTry
しましたが、出ませんでしたね。
 同じ『秀丸エディタQ&A集』はフォーラムにあったのでてっきりそちらかと思っ
ていました。
 
 ですが、URLまで紹介いただけたので参考にさせていただきます。
 お気に入りに登録しました。

 ありがとうございました。

[ ]