特定の文字行のみの選択についてNo.18921
suzuco さん 05/03/03 17:25
 
お世話になります。
特定の文字列のある行のみを選択する方法についてありましたら教えていただきたい
と思います。実は、作者:きいろいまふらあ 様のマクロ「Multi Numbering for 秀
丸エディタ/MLT_NUM.MAC」を利用させていただきたいのですが・・・・・・

■<例>・・・・・・数値制御で動く工作機械のプログラムです。
N1 G00 X-30. (L)Y-10. M98 P1000
N2 G00 X10. M98 P1000
N3 G00 X10. M98 P1000
N4 G00 X10. M98 P1000
N5 G00 X10. M98 P1000
N6 G00 X10. M98 P1000
N7 G00 X10. M98 P1000
N8 G00 X0. (L)Y10. M98 P1000
N9 G00 X-10. M98 P1000
N10 G00 X-10. M98 P1000
N11 G00 X-10. M98 P1000
N12 G00 X-10. M98 P1000
N13 G00 X-10. M98 P1000
N14 G00 X-10. M98 P1000
N15 G00 X0. (L)Y10. M98 P1000

→上記の N1〜N15 までの (L)がある行のみを選択してMLT_NUM.MACを使い 次
の様な状態にしたいのです。が、選択時どうしても全文を選択してしまいます。何か
良い方法があるでしょうか?
→explorer の様に「Ctrl+」で個別に選べるのかと思ってました。いろいろ試しま
したが無理でした。
→上記 総行数はかなり多い場合もある。N1〜N15は多い場合もある。

■<例/希望の状態(中間)>

(L-1)N1 G00 X-30. (L)Y-10. M98 P1000
N2 G00 X10. M98 P1000
N3 G00 X10. M98 P1000
N4 G00 X10. M98 P1000
N5 G00 X10. M98 P1000
N6 G00 X10. M98 P1000
N7 G00 X10. M98 P1000
(L-2)N8 G00 X0. (L)Y10. M98 P1000
N9 G00 X-10. M98 P1000
N10 G00 X-10. M98 P1000
N11 G00 X-10. M98 P1000
N12 G00 X-10. M98 P1000
N13 G00 X-10. M98 P1000
N14 G00 X-10. M98 P1000
(L-3)N15 G00 X0. (L)Y10. M98 P1000

■<例/希望の状態(最終)>  

(L-1)
N1 G00 X-30. Y-10. M98 P1000
N2 G00 X10. M98 P1000
N3 G00 X10. M98 P1000
N4 G00 X10. M98 P1000
N5 G00 X10. M98 P1000
N6 G00 X10. M98 P1000
N7 G00 X10. M98 P1000
(L-2)
N8 G00 X0.Y10. M98 P1000
N9 G00 X-10. M98 P1000
N10 G00 X-10. M98 P1000
N11 G00 X-10. M98 P1000
N12 G00 X-10. M98 P1000
N13 G00 X-10. M98 P1000
N14 G00 X-10. M98 P1000
(L-3)
N15 G00 X0. Y10. M98 P1000

できれば、上記(最終)の希望状態になってくれると助かるのですが・・・・・・
何か良い方法があれば教えていただきたく思います。
よろしくお願い致します。

[ ]
RE:18921 特定の文字行のみの選択についてNo.18922
ENCODINGSHIFTJIS さん 05/03/03 17:43
 
すぐ出来る範囲では

置換 正規表現
検索文字列
.+?(L).+
置換文字列
(L-)\n\0


(L-)
N1 G00 X-30. (L)Y-10. M98 P1000
N2 G00 X10. M98 P1000
N3 G00 X10. M98 P1000
N4 G00 X10. M98 P1000
N5 G00 X10. M98 P1000
N6 G00 X10. M98 P1000
N7 G00 X10. M98 P1000
(L-)
N8 G00 X0. (L)Y10. M98 P1000
N9 G00 X-10. M98 P1000
N10 G00 X-10. M98 P1000
N11 G00 X-10. M98 P1000
N12 G00 X-10. M98 P1000
N13 G00 X-10. M98 P1000
N14 G00 X-10. M98 P1000
(L-)
N15 G00 X0. (L)Y10. M98 P1000

にはなります
連番付加(ナンバリング)は何かのマクロで行って


[ ]
RE:18922 特定の文字行のみの選択についてNo.18923
suzuco さん 05/03/03 19:12
 
ENCODINGSHIFTJIS様ありがとうございます。
「スゴッ」驚きです。
当方初心者ですが、何とか下記の状態までできました。
で、ですが・・・・・・

(L-)
N1 G00 X-30. Y-10. M98 P1000
N2 G00 X10. M98 P1000
N3 G00 X10. M98 P1000
N4 G00 X10. M98 P1000
N5 G00 X10. M98 P1000
N6 G00 X10. M98 P1000
N7 G00 X10. M98 P1000
(L-)
N8 G00 X0. Y10. M98 P1000
N9 G00 X-10. M98 P1000
N10 G00 X-10. M98 P1000
N11 G00 X-10. M98 P1000
N12 G00 X-10. M98 P1000
N13 G00 X-10. M98 P1000
N14 G00 X-10. M98 P1000
(L-)
N15 G00 X0. Y10. M98 P1000

上記の様に 行の中央部分にあった(L- )も削除しました。

ですが、上記にある(L-)の中に 連番を入れるマクロが見当たりません。
(2〜3試してみましたが)→(L-)を(L-1)〜の様にしたい。

結局、特定も文字列の指定した場所に、連番を挿入する と言う様なマクロか、先の、秀丸
の中で、(L-)の文字列のみを選択できればと思うのですが・・・・・・

何か、連番お推めマクロはありますでしょうか?
よろしくお願い致します。


[ ]
RE:18923 特定の文字行のみの選択についてNo.18924
Iranoan さん 05/03/03 19:38
 
 suzuco さん今日は、Iranoan です。
 念の為お断りしておくと、開発者とは何の関わりも無い単なる一ユーザです。
> ですが、上記にある(L-)の中に 連番を入れるマクロが見当たりません。
> (2〜3試してみましたが)→(L-)を(L-1)〜の様にしたい。
 汎用性はありませんが、次のマクロで如何でしょう?
//--------------------------------------------------------------------
##i = 1;
gofiletop;
while( 1 ){
  replacedown "^\\(L-\\)$", "(L-" + str( ##i ) + ")", regular;
  if( !result )break;
  ##i = ##i + 1;
}

[ ]
RE:18924 特定の文字行のみの選択についてNo.18926
山紫水明 さん 05/03/03 22:50
 
 suzuco,こんばんは。

> 汎用性はありませんが、次のマクロで如何でしょう?
>//--------------------------------------------------------------------
>##i = 1;
>gofiletop;
>while( 1 ){
>  replacedown "^\\(L-\\)$", "(L-" + str( ##i ) + ")", regular;
>  if( !result )break;
>  ##i = ##i + 1;
>}

 ちょっと変えて次のようにしたら,途中の置換をしなくても一挙にできるかも
知れません。

//---------------------------------------------------------------//
##i = 1;
gofiletop;
while( 1 ) {
  replacedown "^.*\\f\\(L\\)\\f.+$", "(L-" + str( ##i ) + ")\\n\\0\\2",
 regular;
  if( !result )break;
  ##i = ##i + 1;
}
endmacro;
//---------------------------------------------------------------//

     では, (^^)/~
                                        山紫水明(ユーザー)
                                        SANSHISUIMEI

[ ]
RE:18923 特定の文字行のみの選択についてNo.18927
きいろいまふらあ さん 05/03/04 00:01
 
きいろいまふらあです。
もはや出る幕でもないとも思いますが、念のため。

>(L-)
>N1 G00 X-30. Y-10. M98 P1000
>N2 G00 X10. M98 P1000
>N3 G00 X10. M98 P1000
>N4 G00 X10. M98 P1000
>N5 G00 X10. M98 P1000
>N6 G00 X10. M98 P1000
>N7 G00 X10. M98 P1000
>(L-)
>N8 G00 X0. Y10. M98 P1000
>N9 G00 X-10. M98 P1000
>N10 G00 X-10. M98 P1000
>N11 G00 X-10. M98 P1000
>N12 G00 X-10. M98 P1000
>N13 G00 X-10. M98 P1000
>N14 G00 X-10. M98 P1000
>(L-)
>N15 G00 X0. Y10. M98 P1000

ここで全体を範囲選択して MLT_NUM.MACで

左側枠 (L-
右側枠 )
置換文字列 \(L-\)
マクロ動作設定で、行頭置換インデント:しない

として「行頭置換」でナンバリングしていただいてもよいです。

が、他の方が提示されているマクロの方が100倍簡単です。

[ ]
RE:18924 特定の文字行のみの選択についてNo.18930
suzuco さん 05/03/04 15:00
 
Iranoanさん、ありがとうございます。
感激です。すごいです。
本当にありがとうございます。

その様な立場、状態で、あつかましいのでしが、
一連の作業を続けてできるのでしょうか?
マクロ超初心者で、何故その様になるのか判りません。
秀丸のマクロHELPを見ても感じんの記述の方法も記されているものが限られていたり
で・・・・・・。諸先輩方のマクロを拝借して、弄くると先に進まないという状態で
す。コマンドのヒントでも結構ですのでもし、よろしければお教えいただければと思
います。
 本当に感激です。一連の作業、10ヶ程度であれば苦にはなりませんが100とか200に
なると、必ず間違えます。
 
 良かったら、手を差し伸べていただければと思います。
 また、下世話なお話ですが、お支払いも可能です。よろしくお願い致します。その前
に秀丸の代金を払おう事とします。(;^_^A
 

[ ]
RE:18926 特定の文字行のみの選択についてNo.18931
suzuco さん 05/03/04 15:35
 
山紫水明 さま
ありがとうございます。
早速、一番最初の状態でTRYしましたが、残念ながら、動きません(変わりません)、で
した。 (;^_^A
当方の操作が悪いのでしょうか?

先ずは、ご報告まで
それと、秀丸の支払い(予約ですが)手続きを行いました。 (^o^)/



> suzuco,こんばんは。
>
>> 汎用性はありませんが、次のマクロで如何でしょう?
>>//--------------------------------------------------------------------
>>##i = 1;
>>gofiletop;
>>while( 1 ){
>>  replacedown "^\\(L-\\)$", "(L-" + str( ##i ) + ")", regular;
>>  if( !result )break;
>>  ##i = ##i + 1;
>>}
>
> ちょっと変えて次のようにしたら,途中の置換をしなくても一挙にできるかも
>知れません。
>
>//---------------------------------------------------------------//
>##i = 1;
>gofiletop;
>while( 1 ) {
>  replacedown "^.*\\f\\(L\\)\\f.+$", "(L-" + str( ##i ) + ")\\n\\0\\2",
> regular;
>  if( !result )break;
>  ##i = ##i + 1;
>}
>endmacro;
>//---------------------------------------------------------------//
>
>     では, (^^)/~
>                                        山紫水明(ユーザー)
>                                        SANSHISUIMEI

[ ]
RE:18927 特定の文字行のみの選択についてNo.18932
suzuco さん 05/03/04 15:45
 
きいろいまふらあ さん
ありがとうございます。

MLT_NUM.MAC で何とかなりそうだって事がわかりました。
きっかけができました。本当に感謝です。

ですが、下記ご指摘の通り、入力して実行しましたら・・・・・・

(L-1) N1 G00 X-30. (L- )Y-10. M98 P1000
(L-2) N2 G00 X10. M98 P1000
(L-3) N3 G00 X10. M98 P1000
(L-4) N4 G00 X10. M98 P1000
(L-5) N5 G00 X10. M98 P1000
(L-6) N6 G00 X10. M98 P1000
(L-7) N7・・・・・・

 となります。 上記、Y軸(工作機械)の動きがある行のみに(L-1)〜の連番を入れ
たいのですが・・・・・・
 具体的な説明をさせていただきますと。Y軸が動く時に、列が変わります。
これは、個数取りがある金型の製品位置のプログラムです。(L-1)などで、列が判り、切
削加工等の途中で工具が折れた場合、そこを探す、除ける等の為に必要なのです。列の
把握は必要なのです。全体の加工番号はN1〜で工作機械側で表示されます。
 と言う様な具合です。
 何とかならないでしょうか?




>きいろいまふらあです。
>もはや出る幕でもないとも思いますが、念のため。
>
>>(L-)
>>N1 G00 X-30. Y-10. M98 P1000
>>N2 G00 X10. M98 P1000
>>N3 G00 X10. M98 P1000
>>N4 G00 X10. M98 P1000
>>N5 G00 X10. M98 P1000
>>N6 G00 X10. M98 P1000
>>N7 G00 X10. M98 P1000
>>(L-)
>>N8 G00 X0. Y10. M98 P1000
>>N9 G00 X-10. M98 P1000
>>N10 G00 X-10. M98 P1000
>>N11 G00 X-10. M98 P1000
>>N12 G00 X-10. M98 P1000
>>N13 G00 X-10. M98 P1000
>>N14 G00 X-10. M98 P1000
>>(L-)
>>N15 G00 X0. Y10. M98 P1000
>
>ここで全体を範囲選択して MLT_NUM.MACで
>
>左側枠 (L-
>右側枠 )
>置換文字列 \(L-\)
>マクロ動作設定で、行頭置換インデント:しない
>
>として「行頭置換」でナンバリングしていただいてもよいです。
>
>が、他の方が提示されているマクロの方が100倍簡単です。

[ ]
RE:18926 特定の文字行のみの選択についてNo.18933
suzuco さん 05/03/04 16:24
 
山紫水明 様
先ほどはどうもありがとうございました。

結果、ご教授いただいた

##i = 1;
gofiletop;
while( 1 ) {
  replacedown "^.*\\f\\(L\\)\\f.+$", "(L-" + str( ##i ) + ")\\n\\0\\2",
 regular;
  if( !result )break;
  ##i = ##i + 1;
}
endmacro;

で、目的の結果がでました。
動かなかったのは、一番最初の状態のさらに先頭の部分に
その工作機械用のプログラムの説明等々( )くくりの
文字列が複数行あり、それが悪さをしていた様子で
それを除いた状態で実行したところ目的が達成されました。

本当にありがとうございました。
感謝感激です。
秀丸の正規ユーザになる事もあり、使わせていただきます。

多くの、ご回答いただいた方々本当にありがとうございました。

m(_ _)m




[ ]
RE:18921 特定の文字行のみの選択についてNo.18934
suzuco さん 05/03/04 16:26
 

多くの、ご回答いただいた方々本当にありがとうございました。

本当にありがとうございました。
感謝感激です。
秀丸の正規ユーザになる事もあり、使わせていただきます。

m(_ _)m

[ ]
RE:18930 特定の文字行のみの選択についてNo.18936
Iranoan さん 05/03/04 17:39
 
 suzuco さん今日は、Iranoan です。
> 諸先輩方のマクロを拝借して、弄くると先に進まないという状態で
> す。コマンドのヒントでも結構ですのでもし、よろしければお教えいただければと思
> います。
 それではヒントだけ。
・正規表現
・タグ付き正規表現
・マクロの中で「\」は「\\」
・マクロの中で別のマクロを呼び出すには、
  execmacro
  をつかう

[ ]