def xme2mga(path_xme, path_mga): # use abspath, since on GME x64-only, parser will be called out-of-proc (which won't share the same cwd) abspath_xme = os.path.abspath(path_xme) abspath_mga = os.path.abspath(path_mga) xme = DispatchEx('Mga.MgaParser') (paradigm, parversion, parguid, basename, ver) = xme.GetXMLInfo(abspath_xme) mga = DispatchEx('Mga.MgaProject') resolver = DispatchEx('Mga.MgaResolver') try: resolver.IsInteractive = False xme.Resolver = resolver except AttributeError: # Older GME pass # create_project(mga, 'MGA=' + abspath_mga, paradigm) mga.Create('MGA=' + abspath_mga, paradigm) try: xme.ParseProject(mga, path_xme) except Exception: mga.Close(True) raise mga.Save('MGA=' + abspath_mga)
class Aspen(): def __init__(self, aspenFile): ''' Parameters file: str, excel file ''' CoInitialize() self.file = aspenFile self.COM = DispatchEx('Apwn.Document') self.COM.InitFromArchive2(self.file) def get_value(self, aspenPath): ''' Parameters aspenPath: str, path in ASPEN tree Returns value: num or str, value in ASPEN tree node ''' value = self.COM.Tree.FindNode(aspenPath).Value return value def set_value(self, aspenPath, value, ifFortran): ''' Parameters aspenPath: str, path in ASPEN tree value: float or str, value to set ifFortran: bool, whether it is a Fortran variable ''' if ifFortran: oldValue = self.COM.Tree.FindNode(aspenPath).Value self.COM.Tree.FindNode(aspenPath).Value = re.sub( r'(?<==).+', str(value), oldValue) else: self.COM.Tree.FindNode(aspenPath).Value = float(value) def run_model(self): self.COM.Reinit() self.COM.Engine.Run2() def save_model(self, saveFile): ''' Parameters saveFile: str, file name to save (.bkp) ''' self.COM.SaveAs(saveFile) def close(self): self.COM.Close()