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 dic['antiClip'] = options.antiClip 27 28 # initiate globals 29 settings.init(dic) 30 31 #exit with error if file not found 32 if not os.path.isfile(settings.fname + '.tia'): 33 print "theia: Error: %s.tia: No such file.\nAborting." %settings.fname 34 sys.exit(1) 35 36 #create simulation object with name the basename (not path) 37 FName = settings.fname.split('/')[len(settings.fname.split('/')) - 1] 38 simu = simulation.Simulation(FName) 39 40 #welcome to theia 41 print welcome 42 43 #load initial data 44 print "theia: Run: Reading input data." 45 try: 46 simu.load() 47 except InputError as IE: 48 print "theia: Error: %s\nAborting." %IE.Message 49 sys.exit(1) 50 51 print "theia: Run: Done." 52 53 #run simulation 54 print "theia: Run: Running simulation." 55 try: 56 simu.run() 57 except RuntimeError: 58 print "theia: Error: Maximum recursion depth reached.%s\nAborting." \ 59 %errorRecursion 60 sys.exit(1) 61 print "theia: Run: Done." 62 63 #write results to .out file 64 if settings.text: 65 print "theia: Run: Writing output file." 66 simu.writeOut() 67 print "theia: Run: Done." 68 69 #write CAD file 70 if settings.cad: 71 if settings.fclib is not None: 72 print "theia: Run: Loading FreeCAD library from specified location." 73 FREECADPATH = settings.fclib 74 sys.path.append(FREECADPATH) 75 try: 76 import FreeCAD as App 77 import Part 78 except ImportError: 79 print errorAtSpecifiedLocation %settings.fclib 80 sys.exit(1) 81 print "theia: Run: Done." 82 else: 83 print "theia: Run: Searching for FreeCAD library." 84 cmd = "whereis freecad" 85 output = subprocess.check_output(cmd, shell = True).split() 86 if len(output) < 3: 87 print errorWhereIs 88 sys.exit(1) 89 else: 90 FREECADPATH = output[2] + '/lib' 91 sys.path.append(FREECADPATH) 92 print "theia: Run: Loading FreeCAD library from %s." \ 93 %FREECADPATH 94 try: 95 import FreeCAD as App 96 import Part 97 except ImportError: 98 print errorUnknown %FREECADPATH 99 sys.exit(1) 100 print "theia: Run: Done." 101 102 print "theia: Run: Writing CAD file." 103 simu.writeCAD() 104 print "theia: Run: Done." 105 106 sys.exit(0)
107