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 dic['antiClip'] = options.antiClip
27
28
29 settings.init(dic)
30
31
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
37 FName = settings.fname.split('/')[len(settings.fname.split('/')) - 1]
38 simu = simulation.Simulation(FName)
39
40
41 print welcome
42
43
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
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
64 if settings.text:
65 print "theia: Run: Writing output file."
66 simu.writeOut()
67 print "theia: Run: Done."
68
69
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