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)
def writesc (sc, filename) : f = open_svg(filename,'w') f.write(sc) f.close()
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)
def writesc(sc, filename): f = open_svg(filename, 'w') f.write(sc) f.close()
def loadsc(filename): f = open_svg(filename, 'r') sc = f.read() f.close() return sc,