NCマクロの分岐とは?

条件によってプログラムの流れを変えるにはIF文を使います。 IF文は条件が成り立つ(真)かを判定し、それに応じてGOTOまたはTHENの処理を実行します。

GOTO形式

#1が100を超えるときは#2から50を引く、それ以外は#2に50を加える。

これをGOTO形式で表現します。

GOTO 100 のように、GOTOの後にシーケンス番号を書きます。 シーケンス番号はN100のように定義します。

THEN形式

#1が100を超えるときは#3を符号反転する。

これをTHEN形式で表現します。

THEN #1=2のように、THENの後ろに代入文を書きます。

GOTO形式とTHEN形式の比較

GOTO形式THEN形式
G00X-20.Y20
G00Z240.
#1=100.
#2=20.
G01X#1
IF[#1GT100]GOTO100
#2=#2+50
GOTO200
N100
#2=#2-50
N200
G01Y#2
#1=#1+100.
G01X#1
IF[#1GT100]GOTO110
#2=#2+50
GOTO210
N110
#2=#2-50
N210
G01Y#2
#1=#1+100.
G01X#1
G00X-20.Y20
G00Z240.
#1=100.
#2=20.
G01X#1
#3=50
IF[#1GT100]THEN#3=-#3
#2=#2+#3
G01Y#2
#1=#1+100.
G01X#1
#3=50
IF[#1GT100]THEN#3=-#3
#2=#2+#3
G01Y#2
#1=#1+100.
G01X#1

どちらも同じ動作しますが、THEN形式のほうがプログラムの読みやすくありませんか?

極力GOTO形式を使わないプログラムを心がけでください。

比較演算子

比較演算子書き方
EQ[#1 EQ #2] #1と#2は等しい
NE[#1 NE #2] #1と#2は等しくない
GT[#1 GT #2] #1は#2より大きい
GE[#1 GE #2] #1は#2と等しいか大きい
LT[#1 LT #2] #1は#2より小さい
LE[#1 LE #2] #1は#2と等しいか小さい

論理演算子

複合条件の判定に使います。

論理演算子書き方
AND[A AND B] AとB両方の条件が成り立つ
OR[A OR B] AとBどちらかの条件が成り立つ
XOR[A XOR B] Aが成り立ちBが成り立たない、
Aが成り立たずBが成り立つ

IF[[#1 GE 1] AND [#1 LE 4]] GOTO 100

#1が1から4のときに、N100へ分岐します。