PyPython で学ぶ建築デザインブラウザだけで動く GHPython 演習環境
自由制作

GHPython サンドボックス

白紙のコンポーネントAPI リファレンス

課題から離れて、自由に形をつくるためのページです。 右のスライダ x・y・z・n が入力、 a・b・c に入れたものがビューポートに描かれます。 スライダは + スライダ で追加、− で削除できます。

出発点をえらぶ

下のどれかを開いて、書き換えながら試してください。

使える Rhino.Geometry

このページで実装しているクラスとメソッドの一覧です。 Rhino 本体の Rhino.Geometry の一部をブラウザ用に書き直したもので、 命名と引数の順序は本物に合わせてあります。

クラス使い方できること
Point3drg.Point3d(x, y, z)点。.X .Y .Z、.DistanceTo(p)、引き算でベクトル
Vector3drg.Vector3d(x, y, z)ベクトル。.Length、.Unitize()、CrossProduct(a, b)
Planerg.Plane.WorldXY
rg.Plane(origin, normal)
平面。.Origin を代入して移動、.PointAt(u, v)
Intervalrg.Interval(t0, t1)区間。矩形やボックスの範囲指定に使う
Polylinerg.Polyline(点のリスト)折れ線。リストとして扱える。.ToNurbsCurve()
NurbsCurve曲線.ToNurbsCurve()曲線。.MakeClosed(tol)、.Length、.IsClosed
Linerg.Line(p0, p1)線分。.Length、.From、.To、.PointAt(t)
Circlerg.Circle(plane, r)
rg.Circle(center, r)
円。.ToNurbsCurve()、.Center、.Radius
Rectangle3drg.Rectangle3d(plane, w, h)
rg.Rectangle3d(plane, ix, iy)
矩形。.Corner(i)、.Center、.Area
Arcrg.Arc(circle, angle)円弧
Extrusionrg.Extrusion.Create(crv, h, True)押し出し。.ToBrep() で立体に
Breprg.Brep.CreateFromLoft([c0, c1], rg.Point3d.Unset, rg.Point3d.Unset, rg.LoftType.Normal, False)ロフト(リストが返る)。.DuplicateBrep()、.Transform(xf)
Sphere / Boxrg.Sphere(center, r).ToBrep()球・直方体
Transformrg.Transform.Translation(x, y, z)
rg.Transform.Rotation(角度, 軸, 中心)
移動・回転・スケール。ジオメトリ.Transform(xf) で適用

出力のきまり

描かれるものa / b / c に入れた Point3d・曲線・Brep。リストや辞書に入れても、中身を探して描きます
数値や文字列ビューポートには出ませんが、「出力」タブに表示されます
print()「コンソール」タブに出ます。デバッグに使ってください
実行時間5 秒を超えると自動的に打ち切ります
Grasshopper に持っていくときここで書いたコードは、そのまま Rhino の GHPython コンポーネントに貼れます。スライダ名(x, y, z, n)を入力名に、a, b, c を出力名にしてください。ただし本物の Rhino には、ここで実装していないメソッドが山ほどあります——できることは増えるほうなので、心配は要りません。

つまずきやすいところ

  • スライダの値は小数です。range() に渡すときは int(n) と書いてください。
  • rg.Plane.WorldXY は毎回あたらしい平面を返します。 pl = rg.Plane.WorldXY してから pl.Origin = ... と書けば、 他の平面には影響しません(本物の Rhino と同じ挙動です)。
  • 閉じた曲線でないと押し出しに蓋がつきません。 MakeClosed(1e-6) を呼んでおきましょう。
  • ロフトはリストを返します。lofts[0] のように取り出してください。