STUDIO TAMA

Rhinoceros & Grasshopper Utilities

© 2025 STUDIO TAMA

Day 12

タイルパターン - 対角三角タイル

#pattern#triangle#3d#grid
タイルパターン - 対角三角タイル

✅ Inputs

- tile_size: float – タイルの一辺のサイズ(正方形)
- height: float – 押し出す高さ
- rows: int – タイルの行数(縦方向)
- cols: int – タイルの列数(横方向)

✅ Outputs

- results: list of Brep – 押し出された三角タイルの立体ブロック群(全体パターン)

✅ Code

import Rhino.Geometry as rg
import random
import math

results = []

def create_triangle_tile(base_x, base_y, rotation_deg):
    # タイルの四隅を定義
    pt0 = rg.Point3d(0, 0, 0)
    pt1 = rg.Point3d(tile_size, 0, 0)
    pt2 = rg.Point3d(tile_size, tile_size, 0)
    pt3 = rg.Point3d(0, tile_size, 0)

    # 対角で分けた三角形2種
    triangle_A = [pt0, pt2, pt3]
    triangle_B = [pt0, pt1, pt2]
    verts = random.choice([triangle_A, triangle_B])

    # 三角形Polyline → Curve化
    polyline = rg.Polyline(verts + [verts[0]])  # 閉じる
    curve = polyline.ToNurbsCurve()

    # Extrusion作成(cap付き)
    solid = rg.Extrusion.Create(curve, height, True)

    # 平行移動&回転
    center = rg.Point3d(base_x + tile_size / 2, base_y + tile_size / 2, 0)
    move = rg.Transform.Translation(base_x, base_y, 0)
    rotate = rg.Transform.Rotation(math.radians(rotation_deg), center)

    solid.Transform(move)
    solid.Transform(rotate)
    results.append(solid)

# グリッド配置
for row in range(rows):
    for col in range(cols):
        x = col * tile_size
        y = row * tile_size
        rotation = random.choice([0, 90])
        create_triangle_tile(x, y, rotation)

ライセンス・利用規約

項目可否説明
自身のプロジェクトへの組み込み個人・商用問わず、スクリプトや作品の一部として自由に使えます。
コードの改変・学習利用自身の学習や、目的に合わせたカスタマイズは大歓迎です。
SNSへのシェア・紹介作品の画像やURLのシェアは許可不要です。ぜひご紹介ください!
再配布・転載×コードやファイルを丸ごと自身のサイト等でコンテンツとして公開しないでください。
素材・プログラムとしての転売×本サイトの内容をそのまま、あるいは微調整のみで有料販売しないでください。
著作権表示・リンク任意必須ではありませんが、引用元としてリンクを貼っていただけると励みになります。
Day Day 12 - タイルパターン - 対角三角タイル | Grasshopper Python 入門チュートリアル | STUDIO TAMA - Rhinoceros & Grasshopper Utilities