TL;DR
Grasshopper で手早くモデルを作る際に、Brep のシーム(簡単に言うと継ぎ目です)やエッジが意外とコントロールしづらいというのを感じています。
特にチャンネル材や角パイプの押し出し形状を作る際に、シームが1箇所だけありそれだけがエッジとなっている使いにくい Brep が出来てしまうことがあります。
それを Rhino の操作でサーフェスを分割する DivideAlongCreases コマンドと、Grasshopper 上でサーフェスを分割する自作コンポーネント(RhinoCommon の SplitFacesAtTangents() の呼び出し)の紹介です。
動作環境
今回の記事での動作環境は、下記の通りです。
- Windows11
- Rhino7 SR37
- Grasshopper 1.0.0007
調べた感じでは Rhino6 以降ではこの記事で紹介するように出来るようです。
以下、本編です
以前 Grasshopper の Fillet についてこんな記事を書きました。 blog.vicc.jp
こちらの記事の中では、左のモデルは使いにくいので、右の方がベターと書きました。

Grasshopper で、円弧と直線の組み合わせからなるチャンネル材や角パイプの断面曲線を Extrude すると上の画像の左のような1か所のシームがあるだけでエッジがそこだけの Brep が生成されるというのは読者の皆様も心当たりあると思います。
そして、これを避けるために、断面曲線を分解してから Extrude したのち Join するという一工夫をしている人も多いと思います。これ、だるいですよね、、。
この現象について、フォーラム内のこちらのスレッドでも取り上げられています。
discourse.mcneel.com
僕も少し前までは、忘れずに分解してから押し出せばいいんでしょと思っていましたが、海外の方の Rhino のモデリングを YouTube で眺めていて Rhino のコマンドひとつで、円弧と直線の境目で面を分割していたのを見て、検索ワードにそれっぽい単語をいれていろいろ調べていたら ↑ のフォーラムの投稿にたどり着きました。
※フォーラムについてはこちらの vicc blog で紹介されています。 blog.vicc.jp
Rhino で簡単に直すコマンドの紹介
GH で特に何も考えず押し出してしまったシームが1箇所だけの状態の Brep を、まずは Rhino の操作で直してみます。
使うコマンドはこちら
DivideAlongCreases コマンド(Rhino ヘルプページ)
docs.mcneel.com
このコマンドでは、Tangent と Kink のそれぞれの箇所で面を分割してくれます。円弧と直線の組み合わせの断面からなるチャンネル材などでは、Tangent のオプションを Yes とすることで、円弧と直線の切り替わり部分で面が分割されます。
面が分割されない場合は、断面曲線が円弧や直線の組み合わせではなく、1本の滑らかな曲線になっていることが原因かもしれません。


Grasshopper での自作コンポーネントの紹介
Rhino での直し方がわかったところで、Rhino でできるということは相応のなにかが RhinoCommon などにあるのではないかと予想できました。DivideAlongCreases などのキーワードを起点にフォーラムを掘ってみるとまさしくというスレッドがありました。
discourse.mcneel.com
↑のスレッドによると SplitFacesAtTangents() というメソッドがあるようです。実際に C# での書き方を紹介されています。
SplitFacesAtTangents method(RhinoCommon API)
https://developer.rhino3d.com/api/rhinocommon/rhino.geometry.collections.brepfacelist/splitfacesattangents
※こちら Rhino6 で追加されたものなので、Rhino6 以降では動くはずです。
C# の実装が紹介されていますが、敢えて GhPython でコンポーネントを作成しました。
※GhPython コンポーネントで UserObject(*.ghuser ファイル) を作ると、UserObjectフォルダにインストールしていない別のマシンでも、該当のコンポーネントが含まれる gh ファイルが機能するため地味に便利です!
今回作成した UserObject(SplitFacesAtTangents by RC.ghuser) と、動作を確認するサンプルファイル(SAMPLE_surface_split_at_tangents.gh)を以下より MIT ライセンスで配布します。
github.com
UserObject のインストールについてはこちらの記事を参考にしてください。
www.applicraft.com
インストール先はおそらくここです。必要に応じてこちらから削除できます。
C:\Users\NAME\AppData\Roaming\Grasshopper\UserObjects
実際の挙動はこんな感じ。


UserObject をインストールすると


繰り返しになりますが、UserObject は埋め込まれる様な挙動をするので、UserObject をインストール済みの吉岡マシンでつくった gh ファイルを、何も設定をしていないインストール直後の Rhino でもその gh ファイルと問題なく開くことができるのが便利です。(UserObject は5個くらいしか作っていないので、もしかしたら違うかもしれません)
まとめ
シームが1箇所だけ入った少し使いにくい Brep を Rhino で簡単に直すコマンドと、Grasshopper で直す自作コンポーネントの紹介でした。
地味な工夫ですが、生産設計の段階でモデルを作って切って貼ってを進める中ではかなり便利だと感じます。毎回の少しの手間の積み重ねにイライラしている担当者にこの記事が届くことを願っています。
以上、地味 Tips の紹介でした。終わります。