Solved

ZPLで面やオブジェクトの番号を参照するには、どのような方法がありますか?

  • 26 July 2021
  • 1 reply
  • 81 views

Userlevel 3
Badge +1

面やオブジェクトを挿入したり削除したりして番号が変わっても、マクロが機能するように、ZPLで面やオブジェクトを参照するにはどのような方法がありますか?

icon

Best answer by Yihua Hsiao 26 July 2021, 10:52

View original

1 reply

Userlevel 3
Badge +1

 

a = THIC(10)

b = RADI(11)

 

この場合、変数'a'には10の厚さの値が、'b'には次のの曲率半径の値が割り当てられています。しかし、10の前にを追加または削除した場合はどうでしょうか。エディタ内の番号が更新され、新しい10は望んだものではありません。解決策の1つは、マクロを実行するたびに質問することです。

 

INPUT "What surface do you want to use", 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(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"

END

ENDIF

 

Reply