[Grasshopper]複数の円を接線でつなげる方法[データも配布]

grasshopper

今回は、グラスホッパーで、複数の円を接線でつなげる方法を解説します。

3つのコンポーネント

円同士を接線でつなげるには、Tangent Lines (Ex)・Tangent Lines (In)・Tangent Arcs を使うことでできます。

Tangent Lines (Ex)

こちらが、Tangent Lines (Ex)の場合です。

Tangent  Lines (In)

こちらが、Tangent Lines (In)の場合です。

Tangent Arcs

こちらが、Tangent Arcsの場合です。

3つの円

使い方次第で、上の画像のように、複数の円でも応用できます。

余分な線を消す

また、3つのコンポーネントの説明の後に、余分な線を消す方法も解説します。

厚みを付けた様子

厚みを付ける方法も解説します。

それでは、1つずつ説明していきます。

今回使用したグラスホッパーのデータダウンロードはこちら

ダウンロードできるデータのご利用に関しては、利用規約をご覧ください。

本記事では、コンポーネントはアイコン表示になっています。

アイコン表示に変えたい場合、以下のリンク先の記事を参考にしてください。

円の準備

まずは円を2つ作成します。

ライノセラス上で作成してもいいですが、今回はグラスホッパー上で作成します。

Circle

使用コンポーネント:①Circle

Circleを使うことで、円を作成することができます。

P端子に、円の中心点の座標(入寮しない場合は、座標0,0,0の位置に作成される)を入力します。

R端子に、半径の数値を入力します。

今回は、半径200の円を0,0,0の位置に1つ、半径300の円を500,500,0の位置に1つ設定しました。

2つの円が作成された

すると、このような2つの円が作成されました。

今回は、この2つの円を使って説明していきます。

Tangent Lines (Ex)

Tangent Lines (Ex)

使用コンポーネント:①Circle ②Tangent Lines (Ex)

Tangent Lines (Ex)は、2つの円の直線の接線を作成します。

Tangent Lines (Ex)のAとB端子に、2つのCircleをつなげます。

直線の接線が作成される

すると、このように直線の接線が作成されました。

T1とT2端子から出力されるデータ

T1とT2端子からは、それぞれの線データが出力されます。

線データが出力される

このように、それぞれの線データが出力されていることが分かります。

Tangent Lines (In)

Tangent Lines (In)

使用コンポーネント:①Circle ②Tangent Lines (In)

Tangent Lines (In)では、2つの接線が交差するように作成されます。

Tangent Lines (In)のAとB端子に、2つのCircleをつなげます。

交差する接線

すると、このように交差する接線が作成されました。

T1とT2端子から出力されるデータ

T1とT2端子からは、それぞれの線データが出力されます。

線データが出力される

このように、それぞれの線データが出力されていることが分かります。

Tangent Arcs

Tangent Arcs

使用コンポーネント:①Circle ②Tangent Arcs

Tangent Arcsでは、半径を指定することで、曲線の接線を作成することができます。

Tangent ArcsのAとB端子に、2つのCircleをつなげます。

R端子に、半径の数値を入力します。

今回は、400を入力しています。

曲線の接線が作成される

すると、このような曲線の接線が作成されました。

半径400の円で比べる

半径400の円を作成し、比べてみました。

するとこのように、半径400の円の一部が、接線に使われていることが分かります。

右側のAとB端子から出力されるデータ

右側のAとB端子からは、それぞれの曲線データが出力されます。

それぞれの曲線データが出力される

このように、それぞれの曲線データが出力されていることが分かります。

3つ以上円がある場合

3つ以上円がある場合

使用コンポーネント:①Circle ②Tangent系コンポーネント ③Curve

3つ以上円がある場合、それぞれのTangent系のコンポーネントに、円を組み合わせることでできます。

上の画像は、3つの円の場合です。

今回は、内側の線を表示させないため、Curveで外側の線のみ抽出しています。

3つ以上円でもできた

すると、このような3つの円でも、同様のことができました。

余分な線を消して結合する

余分な線を消して結合した結果

内側の余分な線を消して、結合したい場合もあると思います。

そこで、上の画像のような、外側の線だけ残し、結合する方法も解説します。

外側の線だけ残し、結合するコンポーネント

使用コンポーネント:①Circle ②Tangent系コンポーネント ③Curve | CurveShatterList Item Join Curves

初期の状態

最初は、このように余分な線があるところから始めます。

Curve | Curve

Curve | Curveに、それぞれの円と、接線をつなげます。

これを、円と接線が触れている部分全てで行います。

今回は4か所なので、4つのCurve | Curveを使っています。

円と接線の交点のデータが抽出される

すると、このように円と接線の交点のデータが抽出されます。

Shatter

その後、ShatterのC端子にCircle、t端子にCurve | CurveのtA端子をつなげます。

tA端子からは、点が線のどの位置位あるかというデータがあり、それをShatterを使うことで、その位置で線を分割することができます。

2つの線に円が分割される

すると、このように接線が触れる位置で、2つの線に円が分割されました。

赤い点の位置

赤い点の位置で、円が分割されています。

List Item

その後、List Itemを使うことで、インデックス番号を指定して外側の線を抽出します。

i端子に、0か1を入力すると、外側か内側の線が抽出されるので、外側の線が抽出される数値を入力してください。

外側の線のみが抽出された

すると、このように外側の線のみが抽出されました。

Join Curves

最後に、Join Curvesを使い、接線とList Itemで抽出した線を結合します。

Flatten

この際に、Join CurvesのC端子を右クリックし、Flattenにしてください。

今回の場合これをしないと、線が結合されません。

余分な線を消して結合できた

結果として、このように余分な線を消して、結合することができました。

厚みを付ける

厚みを付けるコンポーネント

使用コンポーネント:①ExtrudeUnit ZCap Holes

厚みを付けたい場合は、ExtrudeのB端子につなげ、D端子に押し出す距離の数値を入力したUnit Zをつなげます。

そして、Cap holesで蓋をすることで、厚みを付けることができます。

厚みを付けられた

このように、厚みを付けることができました。

今回は以上になります。