def flow_and_framework_tofile(filename, comflow, fmt="ascii"): 'writes flow.CommandFlow object to xml file' cb = comflow.interface.ask_for_callback() cb1 = cb.subcallback(0, 3) cb1.pycall("Writing command flow", "", 0, 0) # write everithing except geometry data data r = _root_xml() write_command_flow(comflow, r) st = ET.SubElement(r.find('FLOW'), "STATE") write_framework(comflow.receiver, st) cb1.pycall("Writing command flow", "", 0.8, 0) writexml(r, filename, False) cb1.pycall("Writing command flow", "Done", 1, 1) # add geometry data and write to file doc, root = 0, 0 try: cb2 = cb.subcallback(1, 3) doc, root = hmxml.open_doc(filename) [nd] = hmxml.query(root, "FLOW/STATE", required="=1") natex.export_all(doc, nd, comflow.receiver, fmt, cb2) except: raise finally: cb3 = cb.subcallback(2, 3) cb3.pycall("Write to file", "", 0.0, 0) hmxml.doc_to_file(doc, filename) hmxml.close_doc(doc, [root, nd]) cb3.pycall("Write to file", "Done", 1, 1)
def all_surfaces3(doc, node, cb=None): " -> s3 cdata, s3names" if cb is None: cb = SilentCallbackCancel2() s3, s3n = [], [] qs = hmxml.query(node, "SURFACE3D") for i, q in enumerate(qs): cb1 = cb.subcallback(i, len(qs)) s, n = read_surface3(doc, q, cb1) s3.append(s) s3n.append(n) return s3, s3n
def all_grids2(doc, node, cb=None): " -> g2 cdata, g2names" if cb is None: cb = SilentCallbackCancel2() g2, g2n = [], [] qs = hmxml.query(node, "GRID2D") for i, q in enumerate(qs): cb1 = cb.subcallback(i, len(qs)) g, n = read_grid2(doc, q, cb1) g2.append(g) g2n.append(n) return g2, g2n
def all_contours2(doc, node, cb=None): " -> c2 cdata, c2names" if cb is None: cb = SilentCallbackCancel2() c2, c2n = [], [] qs = hmxml.query(node, "CONTOUR2D") for i, q in enumerate(qs): cb1 = cb.subcallback(i, len(qs)) c, n = read_contour2(doc, q, cb1) c2.append(c) c2n.append(n) return c2, c2n
def flow_and_framework_fromfile(filename, flow, cb=None): doc, root, statenodes = 0, 0, [] try: cb.pycall("Loading commands", "Reading xml", 0, 0) doc, root = hmxml.open_doc(filename) pstring = hmxml.purged_string(doc) pyside_root = ET.fromstring(pstring) pyside_flownode = pyside_root.findall('FLOW') if len(pyside_flownode) == 0: raise Exception('No proper data in xml file') else: pyside_flownode = pyside_flownode[0] # load commands cb.pycall("Loading commands", "Parsing", 0.5, 0) _load_command_flow(flow, pyside_flownode) cb.pycall("Loading commands", "Done", 1, 1) # state statenodes = hmxml.query(root, "FLOW/STATE") pyside_statenode = pyside_flownode.findall('STATE') if len(statenodes) > 0: statenode = statenodes[0] pyside_statenode = pyside_statenode[0] else: statenode = None pyside_statenode = None data = framework.Framework() if statenode is not None: # load boundary types _load_btypes(data, pyside_statenode) # load data c, g, s3, g3, cn, gn, s3n, g3n =\ native_import.all_geom(doc, statenode, cb) for k, v in zip(cn, c): data.append_contour2(Contour2(v), k) for k, v in zip(gn, g): data.append_grid2(Grid2(v), k) for k, v in zip(s3n, s3): data.append_surface3(Surface3(v), k) for k, v in zip(g3n, g3): data.append_grid3(Grid3(v), k) flow.set_receiver(data) except: raise finally: hmxml.close_doc(doc, [root] + statenodes)
def grid3(doc, node, name=None, cb=None): s = "GRID3D" if name: s = s + "[@name='%s']" % name q = hmxml.query(node, s, required='>0')[0] return read_grid3(doc, q, cb)
def surface3(doc, node, name=None, cb=None): s = "SURFACE3D" if name: s = s + "[@name='%s']" % name q = hmxml.query(node, s, required='>0')[0] return read_surface3(doc, q, cb)
def contour2(doc, node, name=None, cb=None): s = "CONTOUR2D" if name: s = s + "[@name='%s']" % name q = hmxml.query(node, s, required='>0')[0] return read_contour2(doc, q, cb)