• 締切済み

秀丸エディタ 置き換え 加算

秀丸について素人です。 工作機械のNCデータの編集に使用しています。 変換リストを作り、マクロ登録して使っています。 例 W03. W40. アルファベット + 2ケタの数字 + ドット を W43. W80. など 40加算したいのです なんとなくですが現在 W([0-9][0-9])→W40+\1→r とやっても、結果は W40+03.  W40+40. などと出力されます。 どうすればW43. W80.と出力されるのでしょうか?

みんなの回答

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

#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 のような構文はマクロにはありません。(セミコロンをつけてもマクロとして正しくはなりません。) 従って、実際に変換するマクロがほかにあり、ここで提示されているのは、単なるコメント(若しくはマクロ実行時に処理するデータ)のように思われます。

odagakit121314
質問者

お礼

ありがとうございます。 私が操作していたのは、置き換えパターンの txtファイルでした。 同じフォルダにマクロのファイル .macがありました。 そちらに追加してみようと思っていますが、長いファイルに適当に挿入するのも恐ろしいですし、何とかマクロを作成された方に連絡を取ってみようと思います。 ありがとうございました。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

以下のようにしてください。 ---------------------- 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.となります。(オーバーフローのケース)

odagakit121314
質問者

お礼

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

odagakit121314
質問者

補足

ありがとうございます。 マクロ実行 編集 (新規ファイルに教えていただいたマクロを登録) 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

関連するQ&A