以前にもExcelの読み書きについて書きましたが、その後社内で開発中のツールなどで応用してきた内容を簡略化してここに記します。 上の画像のデータの流れのイメージは観客席設計で利用する段床断面の計算ツールで、パラメーター入力をExcelで行い、 ボタンを押せばGetコンポーネントがExcelから必要なパラメーターを吸い出して、1階席から4階席までのパラメーターをそれぞれ出力し、その…
#C# #Excel #Grasshopper
先日書いた記事の補足です。 GHC#_Text3dとTextEntityについて、描画とBakeした際のふるまいの比較 TextEntity Classのオブジェクトはコンストラクタで作成する方法と、静的メソッドで作成する2種類があります。 先日の記事で、静的メソッドで作成したTextEntityは位置合わせがGrasshopper上の描画に反映されず、寸法スタイルを修正する必要が…
#C# #TextEntity #Grasshopper
Text Entityについて別の記事で補足をしています。(2020/5/23追記) 表題の内容を確認してみました。コードは下の方にあります。ポイントとしては、 Text3dは、 ・簡易で良いが改行したテキストを扱う際、位置合わせ次第でDrawViewportWiresを使った描画にバグがある。 ・GH上の描画がおかしいだけで正常にBakeはできるけど、Rhino側の既定…
#C# #DrawViewportWires #Grasshopper #bake #TextEntity #Text3d
2年前に寸法線を描いてBakeする記事を書きましたが、Rhino6では書き方が変わっていますので、前回のコードを簡略化して、少し丁寧に解説しつつ新しく書き直します。以下にコードを掲載していますが、ここでは分解して説明します。 DrawDimensionsForRhino6GH(GitHub Gistに飛びます) まずは、usingについて、色の設定とDimensionStyl…
#Grasshopper #C# #bake #Dimension #Dimension Style #DrawViewportWires
Rhinoceros上でもGH上でも、3万個のBoxMeshをそのまま描画するよりも一つにJoinした方が描画スピードが速くなります。 Grasshopperの標準機能では一つのMeshオブジェクトに単色をしか適用できませんが、それでも複数色使いたい場合は頂点カラーを使います。 頂点毎に紐付いている情報なので1オブジェクトの中で複数の色情報を持つことができて、1オブジェクトのMesh…
#Grasshopper #C# #Mesh #DrawViewportWires
備忘録として記します。 GrasshopperのC#コンポーネント内でDrawViewportWiresを利用する際に、 複数のうまく動かない事象が出てきたのでこれを解決するまでの流れを整理しました。 まずC#コンポーネント内でジオメトリを描画するための簡単なコードをざっくり示します。 private void RunScript(double num, ref object A) …
#Grasshopper #C# #bake #DrawViewportWires
Grasshopperに標準搭載されているDivide Distanceは単一距離で分割し続けるため、複数の距離のパラメーターを利用した分割はできません。 そこで任意の距離分割を可能にするためのコードを書いてみました。 標準のDivide Distanceは計算速度の遅さもネックで、3Dの計算を考えて球体と曲線の交点を繰り返し計算してそうなので、今回は2D利用限定で球体ではな…
#Grasshopper #C# #Divide Distance
Rhino6では書き方が変わります。こちらを参照下さい。(追記:20/05/14) C#コンポーネントを使って寸法スタイルを定義し、寸法線を描いてBakeするまでの流れをざっくりですが整理してみました。 Draw Dimensions(GitHub Gistに飛びます) 直線寸法をC#で記述する時にはPoint2dを利用する事に注意してください。 C#コンポーネント内でオ…
#Grasshopper #C# #bake #Dimension #Dimension Style
◆事前の準備 GrasshopperのC#コンポーネントでExcelとの読み書きを行うためには、Microsoft.Office.Interop.Excel NameSpace(名前空間)を利用する必要がありますがそのままでは利用できません。 今回は利用するための準備を紹介します。 C#コンポーネントの右クリックメニューから、Manage Assemblies...を選びます。…
#Grasshopper #C# #Excel
既に色んなAddonで提供されているBake Componentについて簡単に考え方を整理してみました。例えば、適当なLineをC# Component内で作ってボタンを押す事でbakeされるコンポーネントを想定します。 因みに個人的によく使うBakeコンポーネントはElefrontです。 private void RunScript(bool bake) { Lin…
#Grasshopper #C# #bake
Grasshopperにおいて、とあるツールを用意する際に必要な入力パラメーターの量が多くなるほどにその管理は面倒になってきます。 特に初心者でも利用できるものを想定した場合、入力の準備を利用者に任せるのは手間が掛かりミスが起きがちです。 そこでツールを用意した側が入力パラメーターをある程度誘導することができるC#のコードを簡単にまとめました。 Value Listの初期値を設定す…
#Grasshopper #C# #Value List #Number Slider #Boolean Toggle
データ管理にDictionaryを利用する(GitHub Gistに飛びます) C# Component間でデータをやり取りする際、独自に用意したクラスで作成したオブジェクトを受け渡すことは仕様上できません。 (Visual Studioによる独自のコンポーネント開発であれば可能です。) ツールを開発する際、一つのコンポーネントで全てを行う作り方もありますが、規模が大きくな…
#Grasshopper #C# #Dictionary
Grasshopper上で動作するコンポーネントを作成してみました。 メッシュモデリングのススメ、というサブタイトルを付けても良いかもしれません。 ◆基本機能 直線を入力し、断面種別、位置合わせ、キャップの有無、サイズ等を入力する事でルーバーや形鋼のメッシュで作られたジオメトリを作成します。 ◆メリット 1.従来のSweepツールより同等の事をした時に圧倒的にスピードが速い。 例えば下図…
#Grasshopper #C# #Mesh #Sweep
Grasshopper上に用意されている標準機能ではFillet Surface、Blend Surface、Extend Surfaceなどが使えません。(数えればキリがありませんが・・・) ここではC#コンポーネントを利用したFillet Surfaceを紹介します。とても簡単です。 Blend Surfaceについては文末に補足を、Extend Surfaceについては別記事で書きます。 …
#Grasshopper #C# #surface #fillet #blend #extend
音線や光線の反射を解析する際にRhinocerosではBounce機能がその選択肢の一つです。 http://docs.mcneel.com/rhino/5/help/ja-jp/index.htm#commands/bounce.htm Grasshopper上では実装されていませんがBrepやCurveなどと同様にRhinocommonの中にはRay3dというクラスが存在し、その…
#Grasshopper #C# #bounce #refrection #analysis #RayShoot
円柱を斜めに切った時、その断面線は楕円になりますがGrasshopper上でその再現を行う時、注意しておく事があります。 上図はGrasshopper上で、 A・・・Brep(円柱)とBrep(斜平面)のIntersection B・・・Brep(円柱)とPlane(斜無限平面)のIntersection C・・・CircleをBrep(斜平面)にProjection …
#Grasshopper #Cylinder #Circle #Ellipse
タイトルの付け方が難しかったのですが、Grasshopper(ver0.9.0076時点)上でモデリングする中で円弧が円弧でなくなる時が内部処理の問題なのかわかりませんが存在しています。 その再現をするために下図のようなものを用意しました。 任意の円弧をオフセットして端点を直線で繋いだ円弧状の閉じたポリラインです。 これを内側にオフセットしてダブルラインとし、下図の様にソリ…
#Grasshopper #Arc
この一ヶ月であまりFluxに触れる時間がない中で何とか触れたいと考えた結果、on the jobで利用する事にしました。 やった事はあまり難しい事はせず、Grasshopper → Flux → Excelという流れです。 ジオメトリは一切Fluxを介しません。数値のみの一方向に出力する形です。 結果から言うと、個人的にはとても好感触に感じました。 Grasshopperで作成した(…
#Grasshopper #flux #Excel
少ない時間ではありますが、実際にfluxを利用して体験をし始めています。 まずは検証のためのモデルを作るにあたって、 1.サインカーブを利用して適当なボリュームを作り、fluxの検証を行う。 2.円弧や直線、垂直・水平・角度を付けた線データ、平面・曲面、線材を適当に作る。細かな所は気にしない(ここ大切)。 3.Grasshopperでジオメトリの芯となる情報を作成。 4.その芯情報…
#Grasshopper #Dynamo #flux #SuL #Excel
画像引用元 https://flux.io/ FluxはQuartz Projectのパートナーとして参画しているチームで、Quartz Projectについては建築資材の成分と環境・健康への影響について取りまとめ、オープン データベースとして共有しているプロジェクトで、今後Fluxと具体的にどう繋がっていくのかは確認できていませんが注目しておきたい所です。 Fluxの情報・…
Grasshopper内でSweepを利用する機会は少なくないですが今回はSweep1について下記の様なシチュエーションの場合を想定して少し考えてみました。 1.折板を想定した少し細かいSection 2.円弧と直線が混ざった接線連続している複合的なRail 上画像を基に説明します。 1.円弧(青)と直線(緑)をjoinしてRailとし、断面(赤)をSectionとしてSweep1コン…
#Grasshopper #Sweep
仕事の中で他ソフトから書き出したdwg等の3DモデルをRhinocerosにインポートする際に予期しない閉じたメッシュ面の反転がランダムに起きる事が時々起きるのですが、他ソフト側では正常にモデル作業が成されているようで、どうもデータを書き出して読み込む間に何かしらの問題が発生している事が考えられました。 いくつか方法を考えたうちの一つとして、単純に内向きになった閉じたメッシュのみを反転でき…
#Grasshopper #C# #Mesh #Flip
SuL Fluxでは去年後半から活発に動き始めたFluxについての勉強をしていきます。 https://flux.io/(公式サイト。上記ロゴ引用元。) Fluxは建築設計において利用される様々なソフトウェア同士の相互連携や協働の可能性を模索するwebベースのサービスで、Googleから独立したチームが開発を行っているようです。 https://flux.io/abou…
Grasshopper内に置ける面積計算について、一つ前の記事で三角形面の面積を計算するヘロンの公式を利用する方法を検証してみましたが、四角形面の面積についてもブレートシュナイダーの公式を用いて計算する事を検証してみました。 ブレートシュナイダーの公式は四角形 ABCD がある時、辺の長さを AB = a, BC = b, CD = c, DA = d、周長の半分をsとし、その対角…
#Grasshopper #C# #area #面積