各典型グラフ参考例にコード(GG, MST, DT)を追加しました → Graph tips
Minimum Spanning Tree: MST (最小木) のみ grasshopper , gh-pythonのサンプルを貼ります。
ポイントは、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.