1 '''Main module of theia, defines the main function.'''
2
3
4
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
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]
25 dic['fclib'] = options.fclib
26
27
28 settings.init(dic)
29
30
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
36 FName = settings.fname.split('/')[len(settings.fname.split('/')) - 1]
37 simu = simulation.Simulation(FName)
38
39
40 print welcome
41
42
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
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
63 if settings.text:
64 print "theia: Run: Writing output file."
65 simu.writeOut()
66 print "theia: Run: Done."
67
68
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