AddLineで直線を作る方法|Grasshopper Python × RhinoScriptSyntax入門

AddLine

AddLine関数で、始点と終点をつなぐ直線を作成することができます。

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

例1

1つ目の例では、1つの直線を作成します。

使用コンポーネント

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

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

pt1 = (0,0,0)
# 線の始点となる座標(X, Y, Z)を定義

pt2 = (10,10,0)
# 線の終点となる座標(X, Y, Z)を定義

line = rs.AddLine(pt1, pt2)
# 始点と終点をもとに直線を作成

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

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

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

pt1 = (0,0,0)pt2 = (10,10,0) は、それぞれ点の座標を定義しています。

pt1 は始点、pt2 は終点として使用され、これら2つの座標をもとに線を作成します。

line = rs.AddLine(pt1, pt2)

AddLine関数で、直線を作成します。

引数に、始点の pt1 と終点の pt2 の2点を指定することで、直線が作成されます。

Python 3 Script」の右側の端子名を「line」に設定すると、その端子から直線データが出力されます。

2つ目の例

2つ目の例では、forループを使って2つの点群を作成し、それぞれ対応する点同士を結ぶことで、複数の直線を作成します。

forループに関してはこちら

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

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

pts1 = []
# 1つ目の点群(下側の点)を格納するリストを作成

for x1 in range(0,100,10):
    # 0から100未満まで、10ずつ増加するX座標を順番に取り出す

    pts1.append(rs.AddPoint(x1,0,0))
    # (x1, 0, 0) の位置に点を作成

pts2 = []
# 2つ目の点群(上側の点)を格納するリストを作成

for x2 in range(0,100,10):
    # 0から100未満まで、10ずつ増加するX座標を順番に取り出す

    pts2.append(rs.AddPoint(x2,20,0))
    # (x2, 20, 0) の位置に点を作成

lines = []
# 作成した線を格納するリストを作成

for pt1, pt2 in zip(pts1, pts2):
    # 2つのリストから対応する点を1つずつ取り出す

    lines.append(rs.AddLine(pt1, pt2))
    # 対応する2点を結ぶ直線を作成

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

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

pts1 = []

pts1 = [] は、点を格納するための空のリストを作成しています。

for x1 in range(0,100,10):
    pts1.append(rs.AddPoint(x1,0,0))

for x1 in range(0,100,10): は、forループで0から100未満までの値を10ずつ変化させながら繰り返し処理を行います。

AddPoint 関数では、指定した座標に点を作成します。

その中で (x1, 0, 0) の位置に点を作成し、作成した点を pts1 に追加しています。

pts2 = []
for x2 in range(0,100,10):
    pts2.append(rs.AddPoint(x2,20,0))

こちらは、先程の方法と同様で、点を作成しています。

座標が(x2,20,0)となっているため、こちらの点群のy座標は全て20になります。

lines = []

lines = [] は、作成する直線を格納する空のリストを作成しています。

for pt1, pt2 in zip(pts1, pts2):
    lines.append(rs.AddLine(pt1, pt2))

for pt1, pt2 in zip(pts1, pts2): では、2つの点リスト pts1pts2 の対応する点を1つずつ取り出して処理します。

zip を使うことで、2つのリストの同じ位置の点を1つずつ取り出せています。

zipに関してはこちら

その中で rs.AddLine(pt1, pt2) によって直線を作成し、lines リストに追加しています。

Python 3 Script」の右側の端子名を「lines」に設定すると、その端子から直線データが出力されます。

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

pts1 = [rs.AddPoint(x1,0,0) for x1 in range(0,100,10)]
# リスト内包表記を使って、(x1, 0, 0) の位置に点を連続で作成

pts2 = [rs.AddPoint(x2,20,0) for x2 in range(0,100,10)]
# リスト内包表記を使って、(x2, 20, 0) の位置に点を連続で作成

lines = [rs.AddLine(pt1, pt2) for pt1, pt2 in zip(pts1, pts2)]
# zip関数で2つの点リストを対応付けし、それぞれの点を結ぶ直線を作成

上記のコードは、2つ目の例をリスト内包表記を使って書き直したものです。

リスト内包表記に関してはこちら

Comment

Translate »