関数

関数は Code Block ノード内で作成することができ、Dynamo 定義の任意の場所から呼び出すことができます。これにより、パラメトリック ファイル内に新しいコントロール レイヤーが追加されます。Code Block ノードは、テキストベースのカスタム ノードとしてみなすことができます。この場合、「親」コード ブロックに簡単にアクセスすることができます。親コード ブロックは、グラフ上の任意の場所に配置することができます。ワイヤは必要ありません。

最初の行に、キーワードの「def」と関数名を続けて入力し、入力データの名前を括弧で囲んで記述します。関数の本文を定義する場合は、波括弧 {} を使用します。値を返す場合は、「return =」を指定します。関数を定義する Code Block ノードは他の Code Block ノードから呼び出されるため、入力ポートと出力ポートはありません。

関数を呼び出すには、同じファイル内で別の Code Block ノードを使用して、呼び出す関数の名前と、親 Code Block ノードで定義されているものと同じ数の引数を指定します。これは、ライブラリ内に用意されているノードと同様に動作します。

演習: Z 座標での球体

下のリンクをクリックして、サンプル ファイルをダウンロードします。

すべてのサンプルファイルの一覧については、付録を参照してください。

この演習では、点の入力リストから球体を生成する一般的な定義を作成します。これらの球体の半径は、各点の Z プロパティによってコントロールされます。

最初に、0 から 100 までの範囲内で 10 個の数値を作成しましょう。これらの数値を Point.ByCoordinates ノードに接続し、斜線を作成します。

Code Block ノードを作成して、定義を追加します。

  1. 次のコード行を使用します。

inputPt は、関数をコントロールする点を表す名前です。この時点では、この関数はまだ機能しませんが、これ以降の手順でこの関数を設定していきます。

  1. Code Block ノードを使用して、この関数にコメントと sphereRadius 変数を入力します。この変数により、各点の Z 位置のクエリーが実行されます。inputPt.Z はメソッドであるため、引数を指定するための括弧は必要ありません。これは既存の要素のプロパティの クエリー であるため、入力は必要ありません。

  1. ここで、別の Code Block ノードで作成した関数を呼び出してみましょう。キャンバスをダブルクリックして新しい Code Block ノードを作成し、sphereB と入力すると、既に定義されている sphereByZ 関数が候補として表示されます。これにより、前の手順で作成した関数が IntelliSense ライブラリに追加されていることがわかります。

  1. 関数を呼び出して Pt という変数を作成して、前の手順で作成した点を接続します。

  2. 出力されたリストを確認すると、値がすべて NULL になっていることがわかります。なぜでしょうか。これは、この関数を定義するときに sphereRadius 変数は計算しましたが、この関数が何を 出力 として 返す のかを定義しなかったためです。これについては、次の手順で修正します。

  1. sphereByZ 関数に return = sphereRadius; というコード行を追加して、関数の出力を定義する必要があります。これは重要な手順です。

  2. Code Block ノードの出力は、各点の Z 座標です。

関数を編集して、実際に球体を作成してみましょう。

  1. まず、次のコード行で球体を定義します。sphere=Sphere.ByCenterPointRadius(inputPt,sphereRadius);

  2. 次に、戻り値が sphereRadius から sphere となるように return = sphere; と記述します。これにより、Dynamo プレビューで非常に大きな球体が表示されます。

1.これらの球体のサイズを調整するには、sphereRadius = inputPt.Z/20; という除数を追加して sphereRadius 値を更新します。これで、各球体が離れて表示され、半径と Z 値との関係がわかるようになります。

  1. Point.ByCoordinates ノードでレーシングを[最短リスト]から[直積]に変更して、点のグリッドを作成します。sphereByZ 関数により、すべての点で Z 値に基づいた半径の円が作成されます。

  1. 次に、Point.ByCoordinates ノードの X 入力に元の数値のリストを接続してみます。この操作により、球体によって構成される立方体が作成されます。

  2. 注: この処理に時間がかかる場合は、#10#5 などの値に変更してください。

ここで作成した sphereByZ 関数は汎用的な関数であるため、前の演習で作成したらせん構造を呼び出して、この関数を適用することができます。

最後に、半径の比をユーザ設定のパラメータでコントロールしてみましょう。これを行うには、関数に対して新しい入力を作成し、除数の 20 をパラメータで置き換える必要があります。

  1. sphereByZ 関数の定義を、次のように更新します。

  2. sphereByZ(Pt,ratio); のように、子の Code Block ノードの入力に ratio 変数を追加して更新します。次に、新しく作成した Code Block ノードの入力に Number Slider ノードを接続し、半径の比に基づいて半径のサイズを変更します。

Last updated