grasshopper面に垂直な方立を並べる方法

普段適当なサーフェスに対して方立を並べる際にどうやって面に対して垂直にするかということで悩むことが多いのです。そこで、今日は今まで何となく場当たり的に対処していたスクリプトをきちんと整理しようと思います。

二つのカーブからロフトを作成しています。dividecurveでpointを抽出し、上下のポイントで近い物を選ぶために一回SHIFTを入れています。それから、前後のポイントを選ぶためにもう一度SHIFTをいれてライン化してから、上下のラインをそれぞれロフトしています。

方立を曲線に対して垂直に立てるために、まず、曲線の接線方向のベクトルをPerpendicularFrameで拾います。それから方立を立てる方向も同時に決まっているのでVector2pointで拾います。この二つから平面を求めたい訳ですが、残念ながらConstructPlainで必要なベクトルはXとYなので、Zではないのです。よって現在XとZからYを求めてあげる必要があります。

二つのベクトルに直角なベクトルの事を外積というらしく(CrossProduct)コンポーネントで求められます。
接線方向をXに差し込み、Yに外積を差し込むことで、Z軸を方立方向、X軸を接線方向にもつ平面に対して方立のアウトラインをオリエントすることに成功しました。

同様に上のカーブでも同じことを行い、それぞれのオリエントされたアウトラインをロフトすればOKです。

余談ながら、今日もまたRhinoceros v6はghをいじっている際にクラッシュしましたので、記念に一枚。 (2018/4/19クラッシュするバグはアップデートにて治っている模様)

おすすめの記事