気軽に書けるGrasshopperC#コーディング//02.強引にJoinする

This topic contains 0件の返信, has 1件の返信, and was last updated by Hiroaki Saito のプロフィール写真 Hiroaki Saito 2 年 3 ヶ月前.

499 Views
LICENSE GNU GPL
  • by Hiroaki Saito のプロフィール写真 Hiroaki Saito #6562

    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ファイルも添付していますので参考まで。

    添付ファイル:
    添付ファイルを見るためにはログインが必要です。

このトピックに返信するにはログインしてください。

openDDLにログイン

or    

ログイン出来ない場合

パスワードをお忘れですか?