- 締切済み
秀丸エディタ 置き換え 加算
秀丸について素人です。 工作機械のNCデータの編集に使用しています。 変換リストを作り、マクロ登録して使っています。 例 W03. W40. アルファベット + 2ケタの数字 + ドット を W43. W80. など 40加算したいのです なんとなくですが現在 W([0-9][0-9])→W40+\1→r とやっても、結果は W40+03. W40+40. などと出力されます。 どうすればW43. W80.と出力されるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- tatsu99
- ベストアンサー率52% (391/751)
#1です。補足拝見しました。 失礼ですが、あなたがマクロといわれているものは、 マクロとしての構文を成しておりません。 以下の部分です。 ------------------------- (L-SPINDLE)→(L-SPINDLE) (VER.20130302)→(未検証 *は常に注意) M86→M32 G54→G55 M03→M55 ・・・(途中省略) ([XYZW][0-9]*\.|[XYZ]\-[0-9]*\.)000→\1→r ([XYZW][0-9]*\.|[XYZ]\-[0-9]*\.)([0-9])00→\1\2→r ([XYZW][0-9]*\.|[XYZ]\-[0-9]*\.)([0-9][0-9])0→\1\2→r ------------------------- マクロの構文は、必ずセミコロン(;)で終わります。 コメントの場合は、//で始まりますので、コメント行はセミコロンで終わる必要はありません。 上記の部分はマクロではないように見えます。(マクロが処理するデータかも知れません) このファイルは、拡張子(.mac)がついていますでしょうか? また、M86→M32 のような構文はマクロにはありません。(セミコロンをつけてもマクロとして正しくはなりません。) 従って、実際に変換するマクロがほかにあり、ここで提示されているのは、単なるコメント(若しくはマクロ実行時に処理するデータ)のように思われます。
- tatsu99
- ベストアンサー率52% (391/751)
以下のようにしてください。 ---------------------- gofiletop; while(1){ searchdown "W[0-9][0-9]\.",regular if (result ==0) break; $str1 = gettext(x+1,y,x+2,y); #num = val($str1) + 4; $str2 = str(#num); right; delete; insert $str2; } ----------------------- Vwersion8.21で確認済みです。 尚、40を足した結果、2桁をオーバーフローした場合 については、仕様が提示されていませんので、3桁で出力するようにしています。 例 W61. の場合 40を足しますので W101.となります。(オーバーフローのケース)
お礼
ありがとうございました。
補足
ありがとうございます。 マクロ実行 編集 (新規ファイルに教えていただいたマクロを登録) OK にすると+40になりました。 ありがとうございます。 実際の使用で、マクロ登録(マクロ実行ではない)して、名前を付けて保存し、その他の置き換えなどと一括して処理しています。 現在使用しているマクロに挿入して使ってみたのですが、Wの計算がなされません。 何か問題がありそうです。 (元のマクロ自体、私が作ったものではないので、あまり理解できていません) 以下参照 gofiletop; while(1){ searchdown "W[0-9][0-9]\.",regular if (result ==0) break; $str1 = gettext(x+1,y,x+2,y); #num = val($str1) + 4; $str2 = str(#num); right; delete; insert $str2; } //------ // リスト1.置換する文字列 // 凡例) // c:大文字と小文字を区別 // r:正規表現 // ※正規表現使用時には、以下の記号が利用可能となる // \n:正規表現 // \t:タブ // . :任意の一文字 // * :任意の文字列の繰り返し // \1:パターンマッチした文字列 // ():グルーピング // [0-9]:任意の0から9までの一桁の数字 // [A-Z]:任意のAからZまでの一桁の文字 // →:区切り文字(マクロ実行時のダイアログで指定) // 注意点) // ・特殊文字にはエスケープシーケンスを付与する // 例:"."は"\." // VER.20130302 未検証 //------ (L-SPINDLE)→(L-SPINDLE) (VER.20130302)→(未検証 *は常に注意) M86→M32 G54→G55 M03→M55 M04→M55 M05→M55 M10→M50 M11→M51 M20→M420 M21→M421 M41→M441 M91→M491 M427→M428 M428→M427 M785.→M787. M703→M403 M704→M404 I3.→I*4. I2.→I*1. G41→@@10 G42→@@11 @@10→G42 @@11→G41 G02→@@12 G03→@@13 @@12→G03 @@13→G02 C-→@@1 C→@@2 @@1→C2= @@2→C2=- Z-→@@3 Z→@@4 @@3→Z @@4→Z- B-→@@14 B→@@15 @@14→B @@15→B- R-→@@16 R→@@17 @@16→R @@17→R- H0→H2=0 //------ // 共通:後処理 //------ //不要な0取り ([XYZW][0-9]*\.|[XYZ]\-[0-9]*\.)000→\1→r ([XYZW][0-9]*\.|[XYZ]\-[0-9]*\.)([0-9])00→\1\2→r ([XYZW][0-9]*\.|[XYZ]\-[0-9]*\.)([0-9][0-9])0→\1\2→r
お礼
ありがとうございます。 私が操作していたのは、置き換えパターンの txtファイルでした。 同じフォルダにマクロのファイル .macがありました。 そちらに追加してみようと思っていますが、長いファイルに適当に挿入するのも恐ろしいですし、何とかマクロを作成された方に連絡を取ってみようと思います。 ありがとうございました。