ScaleObjectでモデルのスケール・縮尺を変更する方法|Grasshopper Python × RhinoScriptSyntax入門

RhinoScriptSyntax GHPython
ScaleObject

ScaleObject関数で、モデルのスケールを変更することができます。

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

スケール変更

今回は、上の画像のように、ボックスのスケールを変更します。

コード

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

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つの頂点を使って直方体を作成する

center_pt = (0,0,0)
# 拡大・縮小の基準となる中心座標を定義

scaled_box = rs.ScaleObject(box, center_pt, (2,2,2), copy=True)
# ボックスを拡大・縮小する

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)]

corner_pts = […] では、ボックスを構成する8つの頂点座標を定義しています。

下側4点と上側4点を指定することで、ボックスの形状を決めています。

box = rs.AddBox(corner_pts)

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

center_pt = (0,0,0)

center_pt = (0,0,0) で、拡大・縮小の基準となる座標を定義しています。

この点を中心として、オブジェクトがスケールされます。

scaled_box = rs.ScaleObject(box, center_pt, (2,2,2), copy=True)

ScaleObject 関数で、ボックスのスケールを変更します。

第1引数には変形するモデル、第2引数にはスケールの基準点を指定しています。

第3引数では、各X・Y・Z方向の縮尺倍率を指定します。

今回は、(2,2,2) としているので、X・Y・Z方向をそれぞれ2倍に拡大する設定です。

copy=True にすることで、元のボックスを残したまま、スケール変更したコピーを作成できます。

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

Python 3 Script」の右側の端子名を「box」に設定するとスケール変更前のボックスデータ、「scaled_box」に設定するとスケール変更後のボックスデータがGH上に出力されます。

スケール変更2

上の画像は、スケール倍率を (2,2,2) から (2,1,1) に変更した様子です。

このように、1方向や2方向のみの縮尺を変えることもできます。

Comment

Translate »