dポイントプレゼントキャンペーン実施中!

秀丸について素人です。

工作機械のNCデータの編集に使用しています。

変換リストを作り、マクロ登録して使っています。




W03. W40.

アルファベット + 2ケタの数字 + ドット を

W43. W80. など 40加算したいのです

なんとなくですが現在

W([0-9][0-9])→W40+\1→r

とやっても、結果は W40+03.  W40+40. などと出力されます。

どうすればW43. W80.と出力されるのでしょうか?

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

ありがとうございます。

私が操作していたのは、置き換えパターンの txtファイルでした。

同じフォルダにマクロのファイル .macがありました。

そちらに追加してみようと思っていますが、長いファイルに適当に挿入するのも恐ろしいですし、何とかマクロを作成された方に連絡を取ってみようと思います。

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

お礼日時:2013/05/07 13:42

以下のようにしてください。


----------------------
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

補足日時:2013/04/29 15:39
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/05/07 13:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!