SurfaceFrameSurfaceFrame関数で、サーフェス上に作業平面を作成することができます。
本記事のGrasshopperファイルのダウンロードはこちら

今回は、上の画像のように、サーフェス上に作業平面を作成し、円柱を作成してみます。

使用コンポーネント 1: Python 3 Script 2: Surface 3: plane 4: Brep
import rhinoscriptsyntax as rs
# RhinoをPythonから操作するためのライブラリを読み込む
pts = [(0,0,0),(10,0,5),(10,10,0),(0,10,5)]
# サーフェスを作成するための4点座標を定義
surface = rs.AddSrfPt(pts)
# 4点を使ってサーフェス(面)を作成する
domainU = rs.SurfaceDomain(surface, 0)
# サーフェスのU方向のドメイン範囲を取得する
domainV = rs.SurfaceDomain(surface, 1)
# サーフェスのV方向のドメイン範囲を取得する
u_norm = 0.2
# U方向の正規化された位置を定義(0〜1の範囲)
v_norm = 0.2
# V方向の正規化された位置を定義(0〜1の範囲)
u = domainU[0] + u_norm * (domainU[1] - domainU[0])
# 正規化した値を、実際のU方向のパラメータ範囲へ変換する
v = domainV[0] + v_norm * (domainV[1] - domainV[0])
# 正規化した値を、実際のV方向のパラメータ範囲へ変換する
plane = rs.SurfaceFrame(surface, (u, v))
# 指定したUV位置の接平面を取得する
# サーフェスの傾きに沿った平面が作成される
cylinder = rs.AddCylinder(plane, 5, 1)
# 取得した平面を基準に円柱を作成する「Python 3 Script」には、上記のコードが記載されています。
import rhinoscriptsyntax as rs から v = domainV[0] + v_norm * (domainV[1] - domainV[0]) までは、こちらの記事と内容は一緒になります。
そのため、該当部分は、こちらの記事を参考にお願いします。
順番に、残りのコードの解説をしていきます。
plane = rs.SurfaceFrame(surface, (u, v))SurfaceFrame 関数を使うことで、サーフェス上に作業平面を作成することができます。
第1引数では、サーフェスデータを指定します。
第2引数では、U方向とV方向のパラメータを指定します。
今回は、u = domainU[0] + u_norm * (domainU[1] - domainU[0]) と v = domainV[0] + v_norm * (domainV[1] - domainV[0]) のUV方向のパラメータを指定しています。
cylinder = rs.AddCylinder(plane, 5, 1)AddCylinder 関数を使い、作成した作業平面上に円柱を作成してみます。
第1引数には作業平面データ、第2引数には高さの数値、第3引数には半径を数値を指定しています。
これにより、サーフェス上の作業平面に、円柱が作成されます。
「Python 3 Script」の右側の端子名を「surface」に設定するとサーフェスデータ、「plane」に設定すると作業平面データ、「cylinder」に設定すると円柱データがGH上に出力されます。





Comment