質問: zplで面やオブジェクトの番号を参照するには、どのような方法がありますか? 面やオブジェクトを挿入したり削除したりして番号が変わっても、マクロが機能するように、zplで面やオブジェクトを参照するにはどのような方法がありますか?
回答: a = thic(10)b = radi(11)この場合、変数'a'には面10の厚さの値が、'b'には次の面の曲率半径の値が割り当てられています。しかし、面10の前に面を追加または削除した場合はどうでしょうか。エディタ内の番号が更新され、新しい面10は望んだものではありません。解決策の1つは、マクロを実行するたびに質問することです。input "what surface do you want to use", my_surfacea = thic(my_surface)b = radi(my_surface + 1)しかし、面番号を変えずに何度もマクロを実行すると、面倒になってしまいます。そこで、変数を利用してみます。my_surface = 10a = thic(my_surface)b = radi(my_surface + 1)これで、面を変更する時にマクロで編集するのは1行だけになりました。しかし、これはまだ少し面倒です。一番良いのは、面に例えば「target」のようなユニークなコメントを付けてから、surc(a$)関数を使うことです。my_surface = surc("target")a = thic(my_surface)b = radi(my_surface + 1)surc(a$) は、コメント文字列が a$ と同じである最初の面を見つけ、その面番号を返します。(ノンシーケンシャルコンポーネントエディタでは、代わりに objc()を使用してください)my_object = objc("target")このシンプルな構造により、マクロが常に意図した面やオブジェクトを見つけることができます。「target」文字列がコメントとして設定されている面やオブジェクトがない場合、関数は値-1を返すことに注意してください。 -1にならないように、例えば下記のテストを簡単に追加することができます。my_object = objc("target")if (my_object == -1)print "target object not found"endendif