Package theia :: Module main
[hide private]
[frames] | no frames]

Source Code for Module theia.main

  1  '''Main module of theia, defines the main function.''' 
  2   
  3  # Provides: 
  4  #   main 
  5   
  6  import os 
  7  import sys 
  8  import subprocess 
  9  from .helpers import settings 
 10  from .helpers.interaction import welcome, errorRecursion, errorUnknown 
 11  from .helpers.interaction import errorAtSpecifiedLocation, errorWhereIs 
 12  from .helpers.tools import InputError 
 13  from .running import simulation 
 14   
15 -def main(options, args):
16 '''Main function of theia.''' 17 18 # global variables dic 19 dic = {} 20 dic['info'] = options.info 21 dic['warning'] = options.warning 22 dic['text'] = options.text 23 dic['cad'] = options.cad 24 dic['fname'] = os.path.splitext(args[1])[0] #relative path without '.tia' 25 dic['fclib'] = options.fclib 26 27 # initiate globals 28 settings.init(dic) 29 30 #exit with error if file not found 31 if not os.path.isfile(settings.fname + '.tia'): 32 print "theia: Error: %s.tia: No such file.\nAborting." %settings.fname 33 sys.exit(1) 34 35 #create simulation object with name the basename (not path) 36 FName = settings.fname.split('/')[len(settings.fname.split('/')) - 1] 37 simu = simulation.Simulation(FName) 38 39 #welcome to theia 40 print welcome 41 42 #load initial data 43 print "theia: Run: Reading input data." 44 try: 45 simu.load() 46 except InputError as IE: 47 print "theia: Error: %s\nAborting." %IE.Message 48 sys.exit(1) 49 50 print "theia: Run: Done." 51 52 #run simulation 53 print "theia: Run: Running simulation." 54 try: 55 simu.run() 56 except RuntimeError: 57 print "theia: Error: Maximum recursion depth reached."\ 58 + errorRecursion + "\nAborting." 59 sys.exit(1) 60 print "theia: Run: Done." 61 62 #write results to .out file 63 if settings.text: 64 print "theia: Run: Writing output file." 65 simu.writeOut() 66 print "theia: Run: Done." 67 68 #write CAD file 69 if settings.cad: 70 if settings.fclib is not None: 71 print "theia: Run: Loading FreeCAD library from specified location." 72 FREECADPATH = settings.fclib 73 sys.path.append(FREECADPATH) 74 try: 75 import FreeCAD as App 76 import Part 77 except ImportError: 78 print errorAtSpecifiedLocation %settings.fclib 79 sys.exit(1) 80 print "theia: Run: Done." 81 else: 82 print "theia: Run: Searching for FreeCAD library." 83 cmd = "whereis freecad" 84 output = subprocess.check_output(cmd, shell = True).split() 85 if len(output) < 3: 86 print errorWhereIs 87 sys.exit(1) 88 else: 89 FREECADPATH = output[2] + '/lib' 90 sys.path.append(FREECADPATH) 91 print "theia: Run: Loading FreeCAD library from %s." \ 92 %FREECADPATH 93 try: 94 import FreeCAD as App 95 import Part 96 except ImportError: 97 print errorUnknown %FREECADPATH 98 sys.exit(1) 99 print "theia: Run: Done." 100 101 print "theia: Run: Writing CAD file." 102 simu.writeCAD() 103 print "theia: Run: Done." 104 105 sys.exit(0)
106