( )を改行したいNo.09928
AE86 さん 01/10/09 21:23
 
はじめまして 英治と申します
工作機械のデータ編集に秀丸を使用しています

1 ( )を改行したい

O1234(コメント)          /オー の行に(コメント)部がある時 改行したい
(コメント)         /(コメント)  上記以外はそのまま
処理後---------------   
O1234
(コメント)
(コメント)



2 Oの次の行の( )を1行にしたい

O1234         /オー の次の行の先頭が(コメント)の時 1行にしたい
(コメント)
(コメント)        /(コメント)  上記以外はそのまま  
処理後---------------
O1234(コメント)         
(コメント)


上記の2つは 工作機の制御装置の違いのため  Oと( )の行の位置関係を
それぞれにデータ処理したい
 
3 ( )内のみ 文字置換したい
 全置換では( )内まで置換されてしまい 今一歩
範囲選択−置換では 手間がかかりすぎて 今一歩
                  
 以上3つ  マクロをトライしてみましたが 全然お手上げでした
よろしくお願いします


[ ]
RE:09928 ()を改行したいNo.09930
TAKA さん 01/10/09 22:21
 
英治さん、こんにちは。TAKA と申します。

>1 ( )を改行したい

マクロなら以下の通りです。
私の勘違いがないかぎり、テストもしていますので、正常に動きます。
// テストマクロ(ここから)
    replaceallfast "^O[^\\n((]*\\f[((]", "\\0\\n\\1", regular;
    endmacro;
// テストマクロ(ここまで)


>2 Oの次の行の( )を1行にしたい

マクロなら以下の通りです。
私の勘違いがないかぎり、テストもしていますので、正常に動きます。
// テストマクロ(ここから)
    replaceallfast "^O.*\\f\\n\\f[((]", "\\0\\2", regular;
    endmacro;
// テストマクロ(ここまで)


>3 ( )内のみ 文字置換したい

難しそうですね。
簡単な規則性でもあれば可能かもしれません。
具体的な例でもあれば・・・


#半角と全角って混在しているのかな?

[ ]
RE:09928 ( )を改行したいNo.09938
山紫水明 さん 01/10/10 15:31
 
 AE86さん,こんにちは。

》3 ( )内のみ 文字置換したい
》 全置換では( )内まで置換されてしまい 今一歩

 括弧の内だけ,それとも外だけ置換するのでしょうか?
 両方対応してみました。
     では, (^^)/~
                                        山紫水明

//------------ InOutKakkoRep.mac -------------------------------//

//  括弧の内外を分けて置換

menu "&1 括弧内のみ置換",
     "&2 括弧外のみ置換";
#naigai = result;
$search = input("検索語は");
if( $search == "" ) endmacro;
$replace = input("置換語は");
if( $replace == "" ) endmacro;
question "正規表現を使用しますか?";
if( result ) #reg = 1;
call Change_search;
disabledraw;
gofileend;
#i = 0;
while( 1 ) {
    searchup "[((][^))]*[))]", regular;
    if( !result ) break;
    #i = #i + 1;
    cut;
    insert "@^[" + str(#i) + "]^@";
        //文書中では現れる可能性のない適当な文字列に置き換え
}
#handle1 = hidemaruhandle(0);
#n = #i;//データ数
openfile "/h temp.tmp";     //ステルスファイルに移動
#handle2 = hidemaruhandle(0);
while( #i ) {
    poppaste;
    #i = #i - 1;
    insertreturn;
}
if( #naigai == 1 ) call Replace;
#i = 1;
gofiletop;
while( #i <= #n ) {
beginsel;
golineend2;
    $s[#i] = gettext(seltopx, seltopy, selendx, selendy);
    #i = #i + 1;
    movetolineno 1, lineno + 1;
}
setactivehidemaru #handle1;
if( #naigai == 2 ) call Replace;
gofileend;
#i = 1;
while( #i <= #n) {       //文字列の復帰
    searchup "@^[" + str(#i) + "]^@";
    insert $s[#n - #i + 1];
    #i = #i + 1;
}
closehidemaruforced #handle2;
call Reset_search;
endmacro;

Replace:    //置換の実行
if( #reg ) replaceallfast $search, $replace, regular;
else replaceallfast $search, $replace;
return;

Change_search:    //検索状態を変更
if (!searchmode) {                  // 検索状態を範囲選択に変更
    openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
    writeregnum "SelectFound",1;
    #modechanged = 1;
    envchanged;
}
#searchoption = searchoption;
$searchbuffer = searchbuffer;
return;

Reset_search:   //検索状態を元に戻す
if (#modechanged) {
    writeregnum "SelectFound",#s_mode;
    envchanged;
    closereg;
}
setsearch $searchbuffer, #searchoption;
return;
//----------------------------------------------------------------//


[ ]
RE:09938 ( )を改行したいNo.09969
AE86 さん 01/10/12 22:46
 

----- Original Message -----
From: "山紫水明" <xxxxxxxxxx@maruo.co.jp>
To: <xxxxxxxxxxxxxx@maruo.co.jp>
Sent: Wednesday, October 10, 2001 3:31 PM
Subject: hidesoft.2:09938| RE 09928 ( )を改行したい



1 ( )を改行したい
2 Oの次の行の( )を1行にしたい
TAKAさん ありがとうございます。職場仲間も感心しております。



> 》3 ( )内のみ 文字置換したい
>  両方対応してみました。
> //------------ InOutKakkoRep.mac -------------------------------//

山紫水明さん ありがとうございます。正常動作しました。
あつかましい様ですが、追加希望があります

A → あ
B → い
C → う
D  →  え
E  → お
上記の如く一気に文字置換したい、、、、

まずはお礼方々 追加希望&結果報告 致します
    BY AE86

[ ]
RE:09969 括弧の内外を分けて置換No.09970
山紫水明 さん 01/10/13 09:50
 
 AE86さん,こんにちは。

》あつかましい様ですが、追加希望があります
・・・
》上記の如く一気に文字置換したい、、、、

 次のようにしてみました。試してください。

     では, (^^)/~
                                        山紫水明
//------------ InOutKakkoRep.mac -------------------------------//

//  括弧の内外を分けて置換          Ver.2 複数語置換対応

menu "&1 括弧内のみ置換",
     "&2 括弧外のみ置換";
#naigai = result;
#i = 1;
while( 1 ) {
    $search[#i] = input("検索語( " + str(#i) + " )は? " +
            "(入力終了はリターン,中止は Esc)");
    if( iskeydown( 0x1b ) ) endmacro;
    else if( $search[#i] == "" ) break;
    $replace[#i] = input("置換語( " + str(#i) + " )は? (中止は Esc)");
    if( $replace[#i] == "" ) endmacro;
    #i = #i + 1;
}
#n = #i - 1;    //置換数
question "正規表現を使用しますか?";
if( result ) #reg = 1;
call Change_search;
disabledraw;
gofileend;
#i = 0;
while( 1 ) {
    searchup "[((][^))]*[))]", regular;
    if( !result ) break;
    #i = #i + 1;
    cut;
    insert "@^[" + str(#i) + "]^@";
        //文書中では現れる可能性のない適当な文字列に置き換え
}
#handle1 = hidemaruhandle(0);
#n = #i;//データ数
openfile "/h temp.tmp";     //ステルスファイルに移動
#handle2 = hidemaruhandle(0);
while( #i ) {
    poppaste;
    #i = #i - 1;
    insertreturn;
}
if( #naigai == 1 ) call Replace;
#i = 1;
gofiletop;
while( #i <= #n ) {
beginsel;
golineend2;
    $s[#i] = gettext(seltopx, seltopy, selendx, selendy);
    #i = #i + 1;
    movetolineno 1, lineno + 1;
}
setactivehidemaru #handle1;
if( #naigai == 2 ) call Replace;
gofileend;
#i = 1;
while( #i <= #n) {       //文字列の復帰
    searchup "@^[" + str(#i) + "]^@";
    insert $s[#n - #i + 1];
    #i = #i + 1;
}
closehidemaruforced #handle2;
call Reset_search;
endmacro;

Replace:    //置換の実行
#i = 1;
while( #i <= #n ) {
    if( #reg ) replaceallfast $search[#i], $replace[#i], regular;
    else replaceallfast $search[#i], $replace[#i];
    #i = #i + 1;
}
return;

Change_search:    //検索状態を変更
if (!searchmode) {                  // 検索状態を範囲選択に変更
    openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
    writeregnum "SelectFound",1;
    #modechanged = 1;
    envchanged;
}
#searchoption = searchoption;
$searchbuffer = searchbuffer;
return;

Reset_search:   //検索状態を元に戻す
if (#modechanged) {
    writeregnum "SelectFound",#s_mode;
    envchanged;
    closereg;
}
setsearch $searchbuffer, #searchoption;
return;
//----------------------------------------------------------------//


[ ]
RE:09970 括弧の内外を分けて置換No.09982
AE86 さん 01/10/14 14:32
 

----- Original Message -----
From: "山紫水明" <xxxxxxxxxx@maruo.co.jp>
To: <xxxxxxxxxxxxxx@maruo.co.jp>
Sent: Saturday, October 13, 2001 9:50 AM
Subject: hidesoft.2:09970| RE 09969 括弧の内外を分けて置換


   山紫水明さん,大変お世話になっています
   AE86です
> //------------ InOutKakkoRep.mac -------------------------------//
>
> //  括弧の内外を分けて置換          Ver.2 複数語置換対応

  正常動作しました


  最初から現状を詳しく書けばよかったと反省しています。
 下記の自作マクロにてデータ処理しています。
  括弧内まで 変換されて困って、先投稿の(3)の質問をしました。
  
InOutKakkoRep.mac を目的専用に改造する事が、
  私の力では 出来ませんでした。


// NCデータを+90°回転する
//===============================================================

 gofiletop;

 replaceall "X","あ";      // X   →  あ
 replaceall "Y","X";          // Y   →  X
 replaceall "あ","Y-";      // あ  →  Y-

 replaceall "I","い";      // I   →  い
 replaceall "J","I";          // J   →  I
 replaceall "い","J-";      // い  →  J-

 replaceall "Y--","Y";      //
 replaceall "J--","J";      //

 gofiletop;

 endmacro;

以上  BY AE86

[ ]
RE:09982 括弧の内外を分けて置換No.09983
山紫水明 さん 01/10/14 17:49
 
 AE86さん,こんにちは。

》  最初から現状を詳しく書けばよかったと反省しています。

 ご要望を正確にとらえていなかったようですね。
 再確認したいと思います。

1.
》  括弧内まで 変換されて困って、

 括弧の「外」だけ置換するのですね。「内」側はそのままに残して。
 最初は「( )内のみ 文字置換したい」とありましたが。

2.
》 replaceall "X","あ";      // X   →  あ
》 replaceall "Y","X";          // Y   →  X
》 replaceall "あ","Y-";      // あ  →  Y-
》 replaceall "I","い";      // I   →  い
》 replaceall "J","I";          // J   →  I
》 replaceall "い","J-";      // い  →  J-
》 replaceall "Y--","Y";      //
》 replaceall "J--","J";      //

 置換対象は以上の文字だけですか?

     では, (^^)/~
                                        山紫水明

[ ]
RE:09983 括弧の内外を分けて置換No.10000
AE86 さん 01/10/15 22:36
 

----- Original Message -----
From: "山紫水明" <xxxxxxxxxx@maruo.co.jp>
To: <xxxxxxxxxxxxxx@maruo.co.jp>
Sent: Sunday, October 14, 2001 5:49 PM
Subject: hidesoft.2:09983| RE 09982 括弧の内外を分けて置換


山紫水明さん,大変お世話になっています

>  最初は「( )内のみ 文字置換したい」とありましたが。
 
( )内のみ ダミー 置換して後で戻すつもりでした。

1  +90度座標変換
X    →   Y
I     →   J
Y    →   X-
Y-   →   X
J    →   I-
J-  →   I

2  -90度座標変換
Y     →   X
J     →   I
X     →  Y-
X-   →  Y
I      →  J-
I-    →  J

3   Y軸対称座標変換
X      →  X-
X-    →  X
I       →  I-
I-      →  I
G02  → GO3
G03  → G02
G41  → G42
G42  → G41

4   X軸対称座標変換
Y      →  Y-
Y-    →  Y
J      →  I-
J-     →  I
G02  → GO3
G03  → G02
G41  → G42
G42  → G41

以上4つバージョンを使用しています

☆ 英数 半角大文字のみ 使用しています。(直接入力式)
☆ ( )内の X Y I J が 置換されて 困っています。

以上 BY AE86

[ ]
RE:10000 括弧の内外を分けて置換No.10002
山紫水明 さん 01/10/15 23:34
 
 AE86さん,こんばんは。

》1  +90度座標変換
》X    →   Y
》I     →   J
》Y    →   X-
》Y-   →   X
》J    →   I-
》J-  →   I

 うーん,私にはまだこの置換が理解できません。置換前と置換語の具体的データ
の一部をサンプルとして示していただいた方がわかりやすいと思います。
 データの形式がわかればいいので,差し支えあれば内容は適当に換えていただい
てもいいのですが。

     では, (^^)/~
                                        山紫水明

[ ]
RE:10002 括弧の内外を分けて置換No.10020
AE86 さん 01/10/16 23:36
 

----- Original Message -----
From: "山紫水明" <xxxxxxxxxx@maruo.co.jp>
To: <xxxxxxxxxxxxxx@maruo.co.jp>
Sent: Monday, October 15, 2001 11:34 PM
Subject: hidesoft.2:10002| RE 10000 括弧の内外を分けて置換


山紫水明さん,大変お世話になっています
初回の投稿には、書きましたが私は、工作機械を、使って
仕事をしています。
簡単なNC文(機械を動作させる文)を紹介します
例 1
O1000(YAMAHA-JIGU )     /プログラム番号 (メモ)
G90G00X500.Y0                   /X0Y0にツールがセットされます
M03                               /ツールが 回転します 
G91G42G01Y-20.D01F20   /Y-20.よりツール半径分少なく動く
X-100.                            /X−方向に100.ミリ動く
G02X-25.Y25.J25.             /角部が半径25ミリにて丸める
G01Y145.                        /Y+方向に145.ミリ動く
G02X30.Y30.I30.               / 角部が半径30ミリにて丸める
G01X250.                        /X+方向に250.ミリ動く
G02X20.Y-20.J-20.           /角部が半径20ミリにて丸める
G01Y-180.                      /Y-方向に180.ミリ動く
X-175.                           /X−方向に175.ミリ動く
G40Y20.                         /Y+20.動く
M30                              /終了

☆ X方向300ミリ Y方向200ミリ の長方形で、
    左下 半径25   左上 半径30
    右上  半径20   右下 ツ−ル半径
   角部が丸まった形状の穴ができます。
☆ G01   直線移動
   G02    時計回転 の円弧移動
   G03  反時計回転の円弧移動
   I  J          G02,G03 の円弧の中心値
   X Y    座標系 
   + -    方向(ベクトル)
   .(少数点)   20000=20. どちらの方法でも可
   他  省略
本当にアウトラインのみのですが、とりあえずは、この程度にします。

+90度(反時計)  変換後
G90G00Y500.X-0
M03
G91G42G01X20.D01F20
Y-100.
G02Y-25.X-25.I-25.
G01X-145.
G02Y30.X-30.J30.
G01Y250.
G02Y20.X20.I20.
G01X180.
Y-175.
G40X-20.
M30

-90度(時計)変換後
G90G00Y-500.X0
M03
G91G42G01X-20.D01F20
Y100.
G02Y25.X25.I25.
G01X145.
G02Y-30.X30.J-30.
G01Y-250.
G02Y-20.X-20.I-20.
G01X-180.
Y175.
G40X20.
M30

Y軸対称変換
G90G00X-500.Y0
M03
G91G41G01Y-20.D01F20
X100.
G03X25.Y25.J25.
G01Y145.
G03X-30.Y30.I-30.
G01X-250.
G03X-20.Y-20.J-20.
G01Y-180.
X175.
G40Y20.
M30

X軸対称変換
G90G00X500.Y-0
M03
G91G41G01Y20.D01F20
X-100.
G03X-25.Y-25.J-25.
G01Y-145.
G03X30.Y-30.I30.
G01X250.
G03X20.Y20.J20.
G01Y180.
X-175.
G40Y-20.
M30

☆ 対称変換は元の形状が対称形状の時のみ使用します。
  本例では、文字 数字 を変換する意味で、参考にして下さい。 

追伸
   アウトルックにて本文を作成した後、秀丸で読んだら
   秀丸の見やすさが 再認識できました。 
以上 BY AE86

[ ]
RE:10020 括弧の内外を分けて置換No.10030
山紫水明 さん 01/10/17 17:37
 
 AE86さん,こんにちは。

》簡単なNC文(機械を動作させる文)を紹介します

 この種のプログラム始めて見ました。
 理解できたかどうかわかりませんが,次のようなマクロでいかがでしょう。
 置換する文字がこの例であげられたものに固定されていれば,もっと短くするこ
ともできますが,後の応用がきくように置換を並べるようにしましたので,長いも
のになってしました。必要に応じてマクロ最後の部分を書き換えることができます。

》   アウトルックにて本文を作成した後、秀丸で読んだら
》   秀丸の見やすさが 再認識できました。 

 この際,秀丸と兄弟分である鶴亀メールも試されてみたらいかがでしょう。
秀丸に慣れた方なら見やすいのでは。秀丸ユーザであれば無料ですよ(^^;

     では, (^^)/~
                                        山紫水明

//------------ OutKakkoRep.mac -------------------------------//

//  座標変換マクロ  (括弧内を除いて置換する)

menu
    "&1 +90度座標変換",
    "&2 -90度座標変換",
    "&3 Y軸対称座標変換",
    "&4 X軸対称座標変換";
#r = result;
if( #r == 0 ) endmacro;

call Change_search;
//showwindow 0;
    //これを有効にすると,ウィンドウを隠してスピードアップします。
disabledraw;
gofileend;
#i = 0;
while( 1 ) {
    searchup "[((][^))]*[))]", regular;
    if( !result ) break;
    #i = #i + 1;
    cut;
    insert "@^[" + str(#i) + "]^@";
        //文書中では現れる可能性のない適当な文字列に置き換え
}
#handle1 = hidemaruhandle(0);
#n = #i;//データ数
openfile "/h temp.tmp";     //ステルスファイルに移動
#handle2 = hidemaruhandle(0);
while( #i ) {
    poppaste;
    #i = #i - 1;
    insertreturn;
}
#i = 1;
gofiletop;
while( #i <= #n ) {
beginsel;
golineend2;
    $s[#i] = gettext(seltopx, seltopy, selendx, selendy);
    #i = #i + 1;
    movetolineno 1, lineno + 1;
}
setactivehidemaru #handle1;
call Replace;
gofileend;
#i = 1;
while( #i <= #n) {       //文字列の復帰
    searchup "@^[" + str(#i) + "]^@";
    insert $s[#n - #i + 1];
    #i = #i + 1;
}
closehidemaruforced #handle2;
call Reset_search;
endmacro;

Change_search:    //検索状態を変更
if (!searchmode) {                  // 検索状態を範囲選択に変更
    openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
    writeregnum "SelectFound",1;
    #modechanged = 1;
    envchanged;
}
#searchoption = searchoption;
$searchbuffer = searchbuffer;
return;

Reset_search:   //検索状態を元に戻す
if (#modechanged) {
    writeregnum "SelectFound",#s_mode;
    envchanged;
    closereg;
}
setsearch $searchbuffer, #searchoption;
return;

Replace:    //置換の実行
if( #r == 1 ) call Replace_1;
else if( #r == 2 ) call Replace_2;
else if( #r == 3 ) call Replace_3;
else call Replace_4;
return;

//**********************************************
/////必要あればこれ以下を訂正する /////

Replace_1:  //90度座標変換
 replaceallfast "X","あ";
 replaceallfast "Y-","い";
 replaceallfast "Y","う";
 replaceallfast "I","え";
 replaceallfast "J-","お";
 replaceallfast "J","か";
 replaceallfast "あ","Y";
 replaceallfast "い","X";
 replaceallfast "う","X-";
 replaceallfast "え","J";
 replaceallfast "お","I";
 replaceallfast "か","I-";
return;

Replace_2:  //-90度座標変換
 replaceallfast "X-","あ";
 replaceallfast "X","い";
 replaceallfast "Y","う";
 replaceallfast "I-","え";
 replaceallfast "I","お";
 replaceallfast "J","か";
 replaceallfast "あ","Y";
 replaceallfast "い","Y-";
 replaceallfast "う","X";
 replaceallfast "え","J";
 replaceallfast "お","J-";
 replaceallfast "か","I";
return;

Replace_3:  //Y軸対称座標変換
 replaceallfast "X-","あ";
 replaceallfast "X","い";
 replaceallfast "I-","う";
 replaceallfast "I","え";
 replaceallfast "G02","お";
 replaceallfast "G03","か";
 replaceallfast "G41","き";
 replaceallfast "G42","く";
 replaceallfast "あ","X";
 replaceallfast "い","X-";
 replaceallfast "う","I";
 replaceallfast "え","I-";
 replaceallfast "お","G03";
 replaceallfast "か","G02";
 replaceallfast "き","G42";
 replaceallfast "く","G41";
return;

Replace_4:  //X軸対称座標変換
 replaceallfast "Y-","あ";
 replaceallfast "Y","い";
 replaceallfast "J-","う";
 replaceallfast "J","え";
 replaceallfast "G02","お";
 replaceallfast "G03","か";
 replaceallfast "G41","き";
 replaceallfast "G42","く";
 replaceallfast "あ","Y";
 replaceallfast "い","Y-";
 replaceallfast "う","I";
 replaceallfast "え","I-";
 replaceallfast "お","G03";
 replaceallfast "か","G02";
 replaceallfast "き","G42";
 replaceallfast "く","G41";
return;
//----------------------------------------------------------------//


[ ]
RE:10030 括弧の内外を分けて置換No.10031
AE86 さん 01/10/17 22:11
 

----- Original Message -----
From: "山紫水明" <xxxxxxxxxx@maruo.co.jp>
To: <xxxxxxxxxxxxxx@maruo.co.jp>
Sent: Wednesday, October 17, 2001 5:37 PM
Subject: hidesoft.2:10030| RE 10020 括弧の内外を分けて置換





   山紫水明さん,大変お世話になっています
   AE86です
>
> //------------ OutKakkoRep.mac -------------------------------//
>
> //  座標変換マクロ  (括弧内を除いて置換する)
>
> menu
>     "&1 +90度座標変換",
>     "&2 -90度座標変換",
>     "&3 Y軸対称座標変換",
>     "&4 X軸対称座標変換";

動作は良さそうです。さすがですね。ありがとう ございました。 
別件も構想中です。 その際には、爪の垢を分けてくださいネ
 

[ ]