マクロを作っては頂けないでしょうか。No.01420
koba さん 00/06/29 12:59
 
こんにちは、こばやしと言います。
現在秀丸でNC加工機の編集作業をしております。
使用歴3年なんですが、マクロの事になるとさっぱり分かりません、
マクロ中を見れば、なるほどと思うのですが、
ゼロから作るのはちょっと・・・・・
で、お願いなんですが、
下のプログラムの「X-」の後の数値を全て2倍にするマクロを作っては頂けないで
しょうか。
宜しくお願いします。

G01Z0
X-.505
Z-.053
G03X-.584Z-.151R.1
G02X-1.717Z-.677R2.8
G01X-2.095Z-1.05
G03X-2.2Z-1.093R.15
G01Z-7.038
X-3.Z-7.5
Z-26.
X-5.
Z-30.
X-10.

マクロ実行後、下のようになって欲しいです。
G01Z0
X-1.01
Z-.053
G03X-1.168Z-.151R.1
G02X-3.434Z-.677R2.8
G01X-4.19Z-1.05
G03X-4.4Z-1.093R.15
G01Z-7.038
X-6.Z-7.5
Z-26.
X-10.
Z-30.
X-20.

あ、こういうお願いって、有りですか?なしですか?

[ ]
RE:01420 マクロを作っては頂けないでしょNo.01422
ENCODINGSHIFTJIS さん 00/06/29 16:05
 
>あ、こういうお願いって、有りですか?なしですか?

// マクロの恩は 秀丸フォーラムで返すとよいでしょう
// 情報の共有です

// decimal2.mac
//   一桁の10進全加算器を 繰り返し使用する
//   NCやってるのなら 回路の演習もできるはずだが
//  X- 1個分の処理 です 末尾の桁に0が残るが始末はそちらでやって
//                                  

searchdown "X-";right 2; #x=x;#y=y; // 頭出し 位置を記憶
searchdown "[^.0-9]",regular;       // 非数値文字を検索
$float=gettext(#x,#y,x,y);          // 数値取得
beginsel moveto #x,#y; delete
#count=strlen($float);              // 文字数(バイト数)
#carry=0;  $double="";              // 桁上げ、演算結果

while( #count >0){
$char =rightstr($float,1);           // LSD 最下位桁
$float= leftstr($float,strlen($float)-1); // 一桁右シフト
#count=#count -1;

if($char=="."){ $double=$char+$double; continue } // . は通り抜け

   #d=val($char)*2+#carry;              // 1桁加算
if(#d >9){ #carry=1; #d=#d-10;}
      else #carry=0;      
 
$double=str(#d)+$double;                // 一桁追加

 }

if(#carry >0) $double="1"+$double;      // 最後の桁上がり

insert $double;                         // 結果挿入

endmacro

//        G01Z0      in ソース テストデータ
//        X-.505  ↓
//        X-1.010
//        Z-.053
//        G03X-.584Z-.151R.1
//        G02X-1.717Z-.677R2.8
//        G01X-2.095Z-1.05
//        G03X-2.2Z-1.093R.15
//        G01Z-7.038
//        X-3.Z-7.5
//        Z-26.
//        X-5.
//        Z-30.
//        X-10.
//

[ ]
RE:01422 マクロを作っては頂けないでしょNo.01423
koba さん 00/06/29 16:56
 
ENCODINGSHIFTJISさん素早い対応、有り難う御座います。
これを最初から作るのは私には無理ですね。
これだけやって頂けると何とかなりそうです。
これからも宜しくお願いします。

[ ]
RE:01423 マクロを作っては頂けないでしょNo.01426
encodingshiftjis さん 00/06/29 23:41
 
>これだけやって頂けると何とかなりそうです。

あとでよく考えたらそんなに 適切な形とも言えないですね。
2倍でしか使えないし。
他の処理形式では 浮動小数秀丸、<math.h>で.DLLを作り呼び出す、
処理を外部のスクリプトに振る、32bitの整数で固定小数ルーチンを
整数秀丸で作る などなど。

やはりNCデータの専用エディタでするのが筋では
テストデータを起こすのには使えても既存のを加工するには
信頼性が。 検証ツールとも連動してないし。
エディタの手動操作で ン億円のNCマシンが故障しても責任持てません

数憶ドルの惑星間探査機もカンマ一つのミスで宇宙のゴミになりました。

_END_


[ ]