Graph tips を GH-python (Grasshopper)で

各典型グラフ参考例にコード(GG, MST, DT)を追加しました → Graph tips

Minimum Spanning Tree: MST (最小木) のみ grasshopper , gh-pythonのサンプルを貼ります。

MST_test.gh

ポイントは、rs.Addxx などで生成したらいのオブジェクトを全て objs というリストに格納して、最後に 出力ポート a にリダイレクトする、というところです。今回は最初のランダムポイント生成数をスライダで x 入力 に割りあえてています。

import rhinoscriptsyntax as rs
import Rhino.Geometry as rg
import ghpythonlib.components as ghp
import math
import random
import sys

objs = [] #empty list for all object generation

#generate random points
pts = []
for i in range(int(x)):
    x = random.randint(0,100)
    y = random.randint(0,100)
    pos = rg.Point3d(x,y,0)
    pt = rs.AddPoint(pos)
    pts.append(pt)
    objs.append(pt) #for grasshopper output
    
#Minimum Spanning Tree: MST
ptsA = []
ptsB = pts
ptsA.append(pts[0])
ptsB.remove(pts[0])

while 1:
    shortestlen = sys.float_info.max
    stA = None
    stB = None
    for p1 in ptsA:
        for p2 in ptsB:
            dist = rs.Distance(p1,p2)
            if shortestlen > dist:
                shortestlen = dist
                stA = p1
                stB = p2
    if shortestlen>0:
        e = rs.AddLine(stA,stB)
        objs.append(e) #for grasshopper output
    ptsA.append(stB)
    ptsB.remove(stB)
    if len(ptsB) == 0:
        break

#redirect all generated objjects to 'a' preview world
a = objs

Comments are closed.