Rhino/GH-python Graph Module

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.