• ABOUT
  • SITE POLICY
  • AGREEMENT
  • JP
  • SIGN IN:
  • SIGN IN:
気軽に書けるGrasshopperC#コーディング//02.強引にJoinする
by Hiroaki Saito Jun 08, 2015

Rhino上でもGrasshopper上でも、オブジェクト(線、面限らず)をjoin(結合)する際に、ほんの少しの離隔が原因でjoin出来なかった経験はありませんか?そんな方は御一読を。今回はミリメートル単位空間上に6枚の面で構成された10m角のボックスを1つ用意し、上面だけ0.1mmわざと浮かしたモデルを用意しました。

capture3

一般的な精度ではRhino上でもGrasshopper上でもjoinができない状態ですが(Rhinoの単位精度を極端に低くしている場合はjoin出来る事もあります)、C#で扱えるjoinメソッドではしきい値(許容値)を設定する事ができ、これにより「ある指定した値を下回る離隔は全てjoinしても構わない」という命令を与えることができます。既存のjoinコンポーネントにはないもので知っておくと便利です。(GHver0.9.0076時点)

例えば、初期の3D検討などでは丁寧に作るよりも速さを意識するあまり、作り方も荒く隙間ができがちですが、そういった荒いモデルでも強引に閉じたモデルを作る事ができ、体積や面積を測り易くなるかもしれません。もしうまくjoin出来ていない場合、体積の計算にも影響が現れ、上記画像のようにvolumeコンポーネントの計算時間にまで影響が出る事もあるので注意が必要です。

これをC#で書くには以下のようにしますが、まずは入力値の事前設定についてです。

cap_merge

brepやtolはどんな単語に置き換えても構いません。次に書き込むコードについてです。(コンポーネントの黒い帯部分を右クリック→Edit Source・・・を選択)

capture2

70行目に1行だけ書き足しています。その他は最初から既に書かれているものです。

A = Brep.JoinBreps(brep, tol);

C#は大文字と小文字を厳密に分けますので、上記に書かれているBrepとbrepは似て非なるものですので注意が必要です。今回は、BrepクラスのJoinBrepsというstaticメソッドを利用しています。

細かな事を言うと色々ありますが、以上の内容で必要な動作はしてくれます。

似たようなもので、CurveJoinについても以下に書きます。C#にて線のjoinを利用したい場合は以下のように書いて下さい。

capture4

今回は、カーブをjoinするので、brepではなくcrvと書き換えました。crvの右クリックメニューの型指定にはBrepではなく、Curveを選択して下さい。

ghファイルも添付していますので参考まで。


コメントをするにはログインしてください。

4958 0
Tags
#Grasshopper #C# #join
License
cc_by_sa
GNU GPL

CONTACT ©2025 NIKKEN SEKKEI LTD.