MirrorObjectsで複数のモデルをミラー・反転する方法|Grasshopper Python × RhinoScriptSyntax入門

RhinoScriptSyntax GHPython
MirrorObjects

MirrorObjects関数で、複数のモデルをミラー・反転することができます。

本記事のGrasshopperファイルのダウンロードはこちら

複数のモデルをミラー

今回は、上の画像のように、複数のボックスをミラーします。

コード

使用コンポーネント 1: Python 3 Script 2: Brep 3: Point 4: Curve

import rhinoscriptsyntax as rs
# RhinoをPythonから操作するためのライブラリを読み込む

corner_pts1 = [(0,0,0),(10,0,0),(10,10,0),(0,10,0),(0,0,10),(10,0,10),(10,10,10),(0,10,10)]
# 1つ目の直方体を構成する8つの頂点座標を定義
corner_pts2 = [(20,0,0),(30,0,0),(30,10,0),(20,10,0),(20,0,10),(30,0,10),(30,10,10),(20,10,10)]
# 2つ目の直方体を構成する8つの頂点座標を定義

box1 = rs.AddBox(corner_pts1)
# 1つ目の頂点情報を使って直方体を作成する
box2 = rs.AddBox(corner_pts2)
# 2つ目の頂点情報を使って直方体を作成する

boxes = [box1,box2]
# 作成した2つのボックスをリストにまとめる

pt1 = (-10,0,0)
# ミラー基準線の始点となる座標を定義
pt2 = (-10,10,0)
# ミラー基準線の終点となる座標を定義

point1 = rs.AddPoint(pt1)
# pt1 の位置に点を作成する
point2 = rs.AddPoint(pt2)
# pt2 の位置に点を作成する

line = rs.AddLine(pt2, pt1)
# ミラー基準となる直線を作成する

mirror_boxes = rs.MirrorObjects(boxes, pt1, pt2, copy=True)
# ボックスをミラー反転する

Python 3 Script」には、上記のコードが記載されています。

順番に、コードの解説をしていきます。

corner_pts1 = [(0,0,0),(10,0,0),(10,10,0),(0,10,0),(0,0,10),(10,0,10),(10,10,10),(0,10,10)]
corner_pts2 = [(20,0,0),(30,0,0),(30,10,0),(20,10,0),(20,0,10),(30,0,10),(30,10,10),(20,10,10)]

corner_pts1 = […] と corner_pts2 = […] では、それぞれボックスを構成する8つの頂点座標を、リストで定義しています。

リストに関してはこちら

box1 = rs.AddBox(corner_pts1)
box2 = rs.AddBox(corner_pts2)

AddBox 関数で、それぞれ頂点情報を使って、ボックスを作成します。

boxes = [box1,box2]

boxes = [box1, box2] では、作成した2つのボックスを、1つのリストにまとめています。

これにより、複数のオブジェクトを同時に処理できるようになります。

pt1 = (-10,0,0)
pt2 = (-10,10,0)

pt1 = (-10,0,0)pt2 = (-10,10,0) では、ミラー基準線の始点と終点となる座標を定義しています。

この2つの座標をつなぐ線を基準に、後程ミラーが実行されます。

point1 = rs.AddPoint(pt1)
point2 = rs.AddPoint(pt2)

AddPoint 関数で、定義した座標から、点を作成しています。

今回は、点を可視化するために、点を作成しています。

line = rs.AddLine(pt2, pt1)

AddLine 関数では、ミラーの基準となる座標をつなぐ直線を作成します。

今回は、ミラーの際の線を可視化するために、この関数を使っています。

mirror_boxes = rs.MirrorObjects(boxes, pt1, pt2, copy=True)

MirrorObjects 関数で、複数のボックスをミラー反転します。

第1引数にはミラーする複数のモデルデータ、第2引数と第3引数で、ミラー基準となる座標、もしくは点データを指定します。

copy=True にすることで、元のボックスを残したまま、ミラーされたコピーを作成できます。

copy=False にする場合、元々の変数にミラーされたモデルが上書きされます。

Python 3 Script」の右側の端子名を「boxes」に設定するとミラー前のボックスデータ、「point1」に設定すると始点の点データ、「point2」に設定すると終点の点データ、「line」に設定すると直線データ、「mirror_boxes」に設定するとスケール変更後のボックスデータがGH上に出力されます。

Comment

Translate »