Pythonのリストの入れ子をGrasshopperのデータツリーに

Python で作ったリストのリストを Grasshopper のデータツリーとして扱えないという問題で、今日はリストのリストを、一つにまとめたリストと各リストに入っていた要素の個数のリストに分割するという方法をとりましたが、Python の中でデータツリーにして出力する方法を堀川さんに教えて頂きました。

以下コードです:

import rhinoscriptsyntax as rs
import Rhino
import scriptcontext as sc

import clr
clr.AddReference("Grasshopper")
from Grasshopper.Kernel.Data import GH_Path
from Grasshopper import DataTree

tree = DataTree[object]()

for i in range(list.Count):
    l = x[i]
    path = GH_Path(i)
    for n in range(len(l)):
        pt = l[n]
        tree.Add(pt,path)

a = tree

上記のスクリプトを新しく作成した Python コンポーネントに書き込んで、Python のリストを入力してください。細かい原理は難しいのですが、 Python でデータツリーを扱うことがそのままではできないので、scriptcontext, clr で Grasshopper のカーネルにアクセスして拡張する必要があるのだそうです。今後の ghpython のバージョンアップに期待します。

Comments are closed.