---NCコード作成 渦巻(ヘリカル)切削 (3)---

 NCVCのサポート掲示板で、変数は使えないのか、問い合わせ
 てみました。早速の回答があり、スクリプトを使うと、マクロや
 変数を含んだGコードを使えるようになるとのことで、早速ため
 してみました。
   O2
   G00X18.Y5.
   G00Z#1F100(#1の深さで切削)
   G02X12.I-3.
   X20.I4.
   X10.I-5.
   X22.I6.
   X8.I-7.
   X24.I8.
   X6.I-9.
   X24.I9.
   #1=[#1-0.2](#1の値を-0.2だけ増やす)
   G00Z10.
   G00X18.Y5.
   M97
  「#1」というMACH3でも使える変数を使って過日の
  プログラムを書き換えたものですが、私には、わかりや
  すくなりました。「G92Z0.」という基準点をその都度変えて
  いたのでは、大本の原点が分からなくなるので、
  メインテナンスがしづらくなると思います。「IF」文も
  使えると、回数を数えなくてもいいのですが、MACH3でも
  「IF」文を使うには、マクロ(VBスクリプト等)を使う必要
  があるようなので、変数が使えるだけで、デバックが
  しやすくなります。

---NCコード作成 渦巻(ヘリカル)切削 (2)---

 MACH3のサポートフォーラムをあれこれ探しました。
 サブルーチンの呼び出し方と、ループの方法が分かりま
 した。サブルーチンの先頭には、「O」(オー)と番号をつけます。
 たとえば「O1」のようにします。呼び出すには、「M98」を
 使い、「M98 P1」のように記述います。「P1」は、
 サブルーチンの「O1」を呼び出すという意味です。
 また、呼び出す時に、繰り返しの回数も記述できます。
 「L」を使い、繰り返す回数を「L5」のように記述します。
 「L5」だと5回サブルーチンを呼び出すということになります。
 この繰り返しを使うと、やりたいことに一歩近づきました。
 % (プログラムの開始) 
 (2014/11/29 15:43)・・()はコメント
 G90G54G92X0Y0Z10.
 
 M08
 S3000
 M03
 O1・・メインルーチン名 
 M98 P2 L5 (L ha,kurikaesi,kaisu)・・サブルーチンO2を
                       5回呼び出す

 M98 P3・・サブルーチンO3を呼び出す。
        O3は終わりの処理
 
 O2・・サブルーチン「渦巻き処理」
 G00X18.Y5.(START-POS)
 G00Z-0.2F100.(0.2mm DEPYH)
 G02X12.I-3.
 X20.I4.
 X10.I-5.
 X22.I6.
 X8.I-7.
 X24.I8.
 X6.0I-9.
 X24.I9.
 G92Z0.・・(0.2mm掘り下げた位置を基準点0にする)
 G00Z10.
 G00X18.Y5.(START-POS)
 M99・・(サブルーチンの終わり)
 O3
 M09
 M05
 X0Y0
 M30・・(プログラム実行の終了)
 %(プログラムの終わり)
 
 このような、Gコード(NCコード)で、渦巻き状に1mmほり
 下げるプログラムにできました。「IF」と「変数」が使えると
 楽なんですが、変数は、MACH3では、使えるようですが、
 NCVCでは使えませんでした。後で、サポート掲示板で、
 問い合わせしてみようと思います。
 ちなみにMACH3で変数は、「#1」のように数字に#を
 つけると、変数の扱いにできるようで、この変数の操作は、
 #1=[#1-1](変数を1減らす)
 #1=15(変数に15を代入)
 のようにします。これで「IF」が使えると楽なんですが。
 「IF」が使えないので、0.2mm掘り下げて、その位置
 をその都度「0」(ゼロ)の基準点に変更することで、
 だんだん切削点を下げてます。
 NCVCで、上記のプログラムを読み込んでみると、

 

 のようになります。エミュレートしてみても、
 いいようです。