|
<面や物体の参照>
質問 : 面や物体を挿入または削除した場合や、ナンバリングを変更した場合にもマクロが機能するように、ZPL において面や物体を参照する最善の方法は何でしょうか。
多くのマクロは小規模で簡単なものであり、そのような場合は次のようなコードでも問題ありません。
a = THIC(10) b = RADI(11)
この例では、変数 a に面 10 の厚みの値を、変数 b に次の面の曲率半径の値を割り当てています。 しかし、もし面 10 の前に面を追加または削除した場合はどうなるでしょうか。 エディタのナンバリングが更新され、新しい面 10 は想定しているのとは別の面になってしまいます。 解決策の 1 つに、マクロを実行するたびに次のように入力を求める方法があります。
INPUT "使用する面を入力してください", my_surface a = THIC(my_surface) b = RADI(my_surface + 1) しかし、面のナンバリングを変更せずに何回もマクロを実行する場合、これでは面倒なものとなってしまいます。別の解決策として、次のように変数を使用する方法があります。
my_surface = 10 a = THIC(my_surface) b = RADI(my_surface + 1)
面が変更されても、マクロで編集しなければならないのは 1 行だけです。しかし、これも少々面倒です。
最良の方法は、たとえば "target" のような唯一のコメントを面に設定し、SURC( ) 関数を使用することです。
my_surface = SURC("target") a = THIC(my_surface) b = RADI(my_surface + 1)
SURC(A$) は、コメント文字列が「A$」と一致する最初の面を検索し、その面の番号を返します。 Non-Sequential Component Editor では、代わりに OBJC( ) を使用します。
my_object = OBJC("target")
この簡単な方法によって、マクロは常に目的の面または物体を見つけることができます。 対象文字列と同じコメントが設定されている面や物体がない場合、関数は値 -1 を返すことに注意してください。 これは、次のような簡単なコードでチェックすることができます。
my_object = OBJC("target") IF (my_object == -1) PRINT "Target object not found" END ENDIF
|