CopyObjectで1つのモデルをコピー移動する方法|Grasshopper Python × RhinoScriptSyntax入門

RhinoScriptSyntax GHPython
CopyObject

CopyObject関数で、1つのモデルをコピー移動することができます。

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

コピー

今回は、上の画像のように、ボックスを作成して移動コピーします。

コード

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

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

corner_pts = [(0,0,0),(10,0,0),(10,10,0),(0,10,0),(0,0,10),(10,0,10),(10,10,10),(0,10,10)]
# 直方体の8つの頂点の座標をリストで定義

box = rs.AddBox(corner_pts)
# 8つの頂点を使って直方体(ボックス)を作成する

pt1 = (0,0,0)
# ベクトルの始点となる座標を定義

pt2 = (20,20,0)
# ベクトルの終点となる座標を定義

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

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

vector = rs.VectorCreate(pt2, pt1)
# pt1 から pt2 へ向かうベクトルを作成する

copy_box = rs.CopyObject(box, vector)
# 作成したベクトル方向にボックスをコピーする

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

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

corner_pts = [(0,0,0),(10,0,0),(10,10,0),(0,10,0),(0,0,10),(10,0,10),(10,10,10),(0,10,10)]

最初に、ボックスを作成するための、8つの頂点の座標をリストで定義しています。

リストに関してはこちら

下側の4点と、上側の4点を指定することで、後程ボックスを作成できます。

box = rs.AddBox(corner_pts)

AddBox 関数では、リストで定義した8つの頂点を使って、ボックスを作成します。

pt1 = (0,0,0)
pt2 = (20,20,0)

pt1 = (0,0,0)pt2 = (20,20,0) では、ベクトルを作成するため、始点と終点の座標を定義しています。

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

AddPoint 関数で、先程定義した座標に、点を作成します。

これにより、始点と終点を作成することができます。

vector = rs.VectorCreate(pt2, pt1)

VectorCreate 関数で、2つの点を使ってベクトルを作成します。

第1引数に終点、第2引数に始点を指定することで、pt1 から pt2 に向かう方向のベクトルを作成できます。

copy_box = rs.CopyObject(box, vector)

CopyObject 関数では、作成したベクトル方向に、ボックスをコピーします。

第1引数に移動させたいモデル、第2引数にベクトルを指定することで、移動コピーすることができます。

Python 3 Script」の右側の端子名を「point1」に設定すると始点、「point2」に設定すると始点、「vector」に設定するとベクトルデータ、「box」に設定すると移動前のボックスデータ、「copy_box」に設定すると移動後のボックスデータがGH上に出力されます。

Vector Display」コンポーネントを使うことで、ベクトルを可視化することができます。

Comment

Translate »