graph_1_0.py  → Rhino-python / GH-Python 用のGraphモジュール version 1.0 です(重みつき有向グラフ、マルチショーテストパス対応フレーム)。スタジオ用拡張モジュール置き場の
c:\MAsunit\
直下にコピーし(始めてモジュールを追加する人はパスも通してください)、アップしてライノを再起動してください。
グラフの作り方は今のところ2通り。こちらサンプルです。
graph_module_test.zip
TextDotとそれらをつないだCurveからインスタンスを作る方法(クラスGraphDot)
import graph_1_0 as gph g = gph.GraphDot(dots,cvs,ghdoc)
つながったCurveからインスタンスを作る方法(クラスGraph, hclab. Street Viewに近い)
import graph_1_0 as gph g = gph.GraphDot(dots)
全ノードアクセス
for n in g.nodes:
    print n, len(n.edges), "edges", n.pos
全エッジアクセス
for e in g.edges:
    print e
現在組み込んである関数は、ダイクストラ法による最短経路距離計算、ショーテストパス検出のみです。
g.Dijkstra(基点ノードのインスタンス)
g.DijkstraFast(基点ノードのインスタンス)
g.traceRoute(目的ノードのインスタンス)
g.traceRoutesNode(目的ノードのインスタンス)
g.traceRoutesEdge(目的ノードのインスタンス)
シングルパスダイクストラ、各ノードまでのコスト
fm = g.nodes[0]
g.DijkstraFast(fm)
for n in g.nodes:
    print n.cost
シングルパスダイクストラ、トレースルート(ノードリスト取得)
fm = g.nodes[0]
g.DijkstraFast(fm)
dt = g.nodes[-1]
rt = g.traceRoute(dt)
for n in rt:
    print n.name, n.pos
マルチパス対応ダイクストラ、トレースルート(ノードリスト取得、エッジリスト取得)
fm = g.nodes[0]
g.Dijkstra(fm)
dt = g.nodes[-1]
rts = g.traceRoutesNode(dt)
for rt in rts:
    for n in rt:
        print n.name, n.pos
rts = g.traceRoutesEdge(dt)
for rt in rts:
    for e in rt:
        print e.n1,e.n2
			
Comments are closed.