今回は、以前作成した Waffle Structure を部材ごとに平面に描写し、各部材にナンバリングしていきます。色々なやり方があるかと思います、今回紹介するのはたくさんあるやり方のうちの1パタンです。たくさんの人が色々なパターンでチュートリアルを出しているかと思います。自分に合ったやり方で実装してみていただければと思います。前回の記事をまだ見ていないって方は、以下のリンクからご覧いただければと思います。また、こちらのチュートリアル動画化してますので、動画の方がよい方は以下のリンクからどうぞ!
概要
上画像がコードの全体像となっております。waffle の部材2方向に対して同じ処理をしているので、半分実装してコピーしています。
一番最初にある「Cluster」には、前回実装した waffle structure が入っております。今回はそのコードに対して実装していこうと思います。念のため「Cluster」の中身も以下にのせておきます。
大まかな流れな以下の様になります。
- 2D 描写するサーフェイスを取得
- 取得したサーフェイスを平面に移動
- Numbering リストの作成
- Numbering リストのアタッチ
- コードをコピーして別方向にも同じ処理施す
2D 描写する面を取得
2方向ある部材のうち片側のみ取得し処理を書いていきます。
- 「Brep コンポーネント」で前回のコードから片方向の部材を取得しておきます。
- 「Deconstruct Brep コンポーネント」で取得した要素を(サーフェイス・エッジ・ポイント)に分解します。
- 「Area コンポーネント」で分解したサーフェイスの面積を取得します。
- 「Sort List コンポーネント」で取得したサーフェイスを面積小さい順にリスト内を並べ替えます。入力端子 K に「Area コンポーネント」で取得した面積のリストを接続し、入力端子 A に「Deconstruct Brep コンポーネント」で取得した部材のサーフェイスを接続します。
- 「Reverse List コンポーネント」で「Sort List コンポーネント」の出力端子 A から取得できる小さい順に並べ替えたリストを反転させ、大きい順に並べ替えます。
- 「List Item コンポーネント」で0番目を取得することで、分解したサーフェイスの最も大きなサーフェイスを取得することができました。(※今回平面に描写したいサーフェイスは明らかに最も大きな面積なのでこのような方法で実装しています。)
上画像の様な面が取得できていれば OK です。
取得したサーフェイスを平面に移動
- 取得したサーフェイスを XY 平面に移動させます。「Area コンポーネント」で取得したサーフェイスの中心点を取得します。
- 「Plane Origin コンポーネント」でサーフェイス面の平面を取得します。入力端子 B に取得したサーフェイスを接続し、入力端子 O に取得した中心点を接続します。
- 「Orient コンポーネント」で取得したサーフェイスを XY 平面に移動させます。入力端子 G に各サーフェイスを、入力端子 A に「Plane Origin コンポーネント」で取得したサーフェイスの平面を接続し、入力端子 B には「XY Plane コンポーネント」を接続します。
- 現状、原点(0,0,0)地点ですべてのサーフェイスが重なってしまっているかと思うので、重ならないように移動させます。「Move コンポーネント」を使用し、入力端子 G に「Orient コンポーネント」の出力端子を接続します。
- 「Serise コンポーネント」で移動距離のリストを作成します。今回は、入力端子 S に 10,000、入力端子 N に 2000 を接続します。
- 「Serise コンポーネント」の入力端子 C(カウント)は、サーフェイスの数を入力します。「List Item コンポーネント」でサーフェイスの数を取得し、接続します。このとき「List Item コンポーネント」の入力端子は「Flatten」します。
- 「Unit X コンポーネント」で取得した距離のリストを X 方向のベクトルにします。
- 「Move コンポーネント」の入力端子 T に接続します。
- 上画像の様に各部材のサーフェイスが XY 平面に描写されていれば OK です。
Numbering リストの作成
- 「Repeat コンポーネント」を使用し、ナンバリングの頭番号をサーフェイスの枚数分リピートします。入力端子 D に「Panel コンポーネント」を使用して「A-」という文字列を接続します。入力端子 L には、先ほど「List Length コンポーネント」で取得したサーフェイスの数量を接続します。「A-」という値がサーフェイスの枚数分入ったリストが作成されました。出力端子を「Graft」しておきます。
- 「Serise コンポーネント」を使用して「1~サーフェイスの枚数」までのリストを取得します。出力端子は「Graft」しておきます。
- 「Merge コンポーネント」で作成した2つのリストを結合します。
- 「Text join コンポーネント」で2つのリストを結合します。入力端子 T に「Merge コンポーネント」の出力端子を接続します。
- 「Panel コンポーネント」で出力結果を確認してみます。上画像ように、「A-1、A-2、A-3・・・」というリストが取得できていれば OK です。
Numbering リストのアタッチ
- 作成した Numberring リストを部材にアタッチしていきます。「Text Tag 3D コンポーネント」を用意します。入力端子 T に作成したナンバリングリストを接続します。
- 入力端子 L(Location)にテキストをアタッチする位置を入力します。「Evaluate Surface コンポーネント」を使用し、XY 平面に描写したサーフェイス内の点を取得します。入力端子 S に XY 平面に描写したサーフェイスを接続し、「Reparametrized」します。
- 入力端子 uv に「MD Slider コンポーネント」を接続します。「MD Slider」を動かすことで、サーフェイス内の特定の点を取得でき、文字の位置を調整できます。
- 「XY Plane コンポーネント」を接続し、取得した点を原点とした XY 平面を作成します。
- 「Rotate Plane コンポーネント」で作成した平面を回転させます。今回は π/2 回転させてます。
- 「Text Tag 3D コンポーネント」の入力端子 L に接続します。
- 「Text Tag 3D コンポーネント」の入力端子 S に、文字サイズを入力します。
- 「MD Slider コンポーネント」の値を変更して、文字の位置を調整します。
コードをコピーして別方向にも同じ処理施す
- 別方向にも同じ処理を施します。「Brep コンポーネント」で別方向の部材を取得します。
- 上画像の様にそこから後は先ほど作成したプログラムをコピーして接続します。
- ナンバリングリストを作成した際の頭番号「A-」を「B-」にします。
- コピーしたままでは、XY 平面に描写したサーフェイスが、先ほど作成したものと重なってしまうので、移動させます。上画像の様に「Move コンポーネント」で重ならない位置まで Y 方向に移動させます。これで完成です。
以上になります!色々やり方はあるかと思いますので、適宜ふさわしいやり方で実装していただければと思います!