def graph_from_svg(filename):
    """
    """
    from vplants.plantgl.math import Vector2
    from openalea.container import Topomesh
    from openalea.svgdraw import open_svg, SVGSphere, SVGConnector
    from openalea.tissueshape import edge_loop_around

    mesh = Topomesh(2)
    f = open_svg(filename, 'r')
    sc = f.read()
    f.close()

    zone_pos = {}
    zone_svg_id = {}
    lay = sc.get_layer("zones")
    for elm in lay.elements():
        if isinstance(elm, SVGSphere):
            cid = mesh.add_wisp(2)
            zone_svg_id[elm.id()] = cid
            zone_pos[cid] = Vector2(*sc.natural_pos(
                *elm.scene_pos(elm.center())))

    vertex_pos = {}
    vertex_svg_id = {}
    lay = sc.get_layer("walls")
    for elm in lay.elements():
        if isinstance(elm, SVGSphere):
            pid = mesh.add_wisp(0)
            vertex_svg_id[elm.id()] = pid
            vertex_pos[pid] = Vector2(*sc.natural_pos(
                *elm.scene_pos(elm.center())))

    lay = sc.get_layer("walls")
    for elm in lay.elements():
        if isinstance(elm, SVGConnector):
            eid = mesh.add_wisp(1)
            mesh.link(1, eid, vertex_svg_id[elm.source()])
            mesh.link(1, eid, vertex_svg_id[elm.target()])
    for cid, ref_point in zone_pos.iteritems():
        for eid in edge_loop_around(mesh, vertex_pos, ref_point):
            mesh.link(2, cid, eid)

    position = dict([(v, np.array(p)) for v, p in vertex_pos.iteritems()])

    return graph_from_tissue(mesh, position)
def graph_from_svg(filename):
    """
    """
    from vplants.plantgl.math import Vector2
    from openalea.container import Topomesh
    from openalea.svgdraw import open_svg, SVGSphere, SVGConnector
    from openalea.tissueshape import edge_loop_around

    mesh = Topomesh(2)
    f = open_svg(filename, "r")
    sc = f.read()
    f.close()

    zone_pos = {}
    zone_svg_id = {}
    lay = sc.get_layer("zones")
    for elm in lay.elements():
        if isinstance(elm, SVGSphere):
            cid = mesh.add_wisp(2)
            zone_svg_id[elm.id()] = cid
            zone_pos[cid] = Vector2(*sc.natural_pos(*elm.scene_pos(elm.center())))

    vertex_pos = {}
    vertex_svg_id = {}
    lay = sc.get_layer("walls")
    for elm in lay.elements():
        if isinstance(elm, SVGSphere):
            pid = mesh.add_wisp(0)
            vertex_svg_id[elm.id()] = pid
            vertex_pos[pid] = Vector2(*sc.natural_pos(*elm.scene_pos(elm.center())))

    lay = sc.get_layer("walls")
    for elm in lay.elements():
        if isinstance(elm, SVGConnector):
            eid = mesh.add_wisp(1)
            mesh.link(1, eid, vertex_svg_id[elm.source()])
            mesh.link(1, eid, vertex_svg_id[elm.target()])
    for cid, ref_point in zone_pos.iteritems():
        for eid in edge_loop_around(mesh, vertex_pos, ref_point):
            mesh.link(2, cid, eid)

    position = dict([(v, np.array(p)) for v, p in vertex_pos.iteritems()])

    return graph_from_tissue(mesh, position)
Пример #3
0
def writesc (sc, filename) :
    f = open_svg(filename,'w')
    f.write(sc)
    f.close()
Пример #4
0
def loadsc (filename) :
    f = open_svg(filename,'r')
    sc = f.read()
    f.close()
    return sc,
from openalea.svgdraw import open_svg

f = open_svg("test_path.svg",'r')
sc = f.read()
f.close()

pth = sc.get_by_id("path0000")

print pth
pts = tuple(pth.polyline_ctrl_points() )

for pt in pts :
	print pt,pth.scene_pos(pt)
Пример #6
0
def writesc(sc, filename):
    f = open_svg(filename, 'w')
    f.write(sc)
    f.close()
Пример #7
0
def loadsc(filename):
    f = open_svg(filename, 'r')
    sc = f.read()
    f.close()
    return sc,