AddLineAddLine関数で、始点と終点をつなぐ直線を作成することができます。
本記事のGrasshopperファイルのダウンロードはこちら

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

使用コンポーネント 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つの点リスト pts1 と pts2 の対応する点を1つずつ取り出して処理します。
zip を使うことで、2つのリストの同じ位置の点を1つずつ取り出せています。
その中で 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