# Path: importerConstants.py
# MIN_0   = 0.0
# 
# MIN_PI  = -pi
# 
# MIN_PI2 = -pi / 2
# 
# MIN_INF = float('-inf')
# 
# MAX_2PI = 2 * pi
# 
# MAX_PI  = pi
# 
# MAX_PI2 = pi / 2
# 
# MAX_INF = float('inf')
# 
# MAX_LEN = 2e+100
# 
# Path: importerConstants.py
# CENTER = VEC(0, 0, 0)
# 
# DIR_X  = VEC(1, 0, 0)
# 
# DIR_Y  = VEC(0, 1, 0)
# 
# DIR_Z  = VEC(0, 0, 1)
# 
# ENCODING_FS      = 'utf8'


import traceback, Part, Draft, os, FreeCAD, re
from importerUtils              import *
from FreeCAD                    import Vector as VEC, Rotation as ROT, Placement as PLC, Matrix as MAT, Base
from math                       import pi, fabs, degrees, asin, sin, cos, tan, atan2, ceil, e, cosh, sinh, tanh, acos, acosh, asin, asinh, atan, atanh, log, sqrt, exp, log10
from importerConstants          import MIN_0, MIN_PI, MIN_PI2, MIN_INF, MAX_2PI, MAX_PI, MAX_PI2, MAX_INF, MAX_LEN
from importerConstants          import CENTER, DIR_X, DIR_Y, DIR_Z, ENCODING_FS

			self.__ready_to_build__ = False
			if (getattr(self, 'failed', False)):
				return None
			if (self.subtype == 'ref'):
				surface = self.getSurface()
				if (surface):
					self.shape = surface.build()
			elif (self.subtype == 'cyl_spl_sur'):
				if (self.surface is None):
					# create a cylinder surface from the profile
					self.surface = Part.Cylinder()
					rotateShape(self.surface, self.axis)
					self.surface.Center = self.center
					curve = self.profile.build(self.profile.range.getLowerLimit(), self.profile.range.getUpperLimit())
					if (curve is not None):
						point = curve.Curve.StartPoint
						u, v = self.surface.parameter(point)
						radius = point - self.surface.value(u, v)
						self.surface.Radius = radius.Length + 1.0
						self.shape = self.surface.toShape()
					else:
						logError("    Can't create cylinder from profile (%r)" %(self.profile))
			elif (self.subtype == 'VBL_SURF'):
				if (self.surface is None):
					edges = []
					for vbl in self.boundaries:
						edge = vbl.build()
						if (not edge is None):
							edges.append(edge)
					try:

# Path: importerConstants.py
# MIN_0   = 0.0
# 
# MIN_PI  = -pi
# 
# MIN_PI2 = -pi / 2
# 
# MIN_INF = float('-inf')
# 
# MAX_2PI = 2 * pi
# 
# MAX_PI  = pi
# 
# MAX_PI2 = pi / 2
# 
# MAX_INF = float('inf')
# 
# MAX_LEN = 2e+100
# 
# Path: importerConstants.py
# CENTER = VEC(0, 0, 0)
# 
# DIR_X  = VEC(1, 0, 0)
# 
# DIR_Y  = VEC(0, 1, 0)
# 
# DIR_Z  = VEC(0, 0, 1)
# 
# ENCODING_FS      = 'utf8'


# Path: Acis.py
import traceback, Part, Draft, os, FreeCAD, re
from importerUtils              import *
from FreeCAD                    import Vector as VEC, Rotation as ROT, Placement as PLC, Matrix as MAT, Base
from math                       import pi, fabs, degrees, asin, sin, cos, tan, atan2, ceil, e, cosh, sinh, tanh, acos, acosh, asin, asinh, atan, atanh, log, sqrt, exp, log10
from importerConstants          import MIN_0, MIN_PI, MIN_PI2, MIN_INF, MAX_2PI, MAX_PI, MAX_PI2, MAX_INF, MAX_LEN
from importerConstants          import CENTER, DIR_X, DIR_Y, DIR_Z, ENCODING_FS

			self.__ready_to_build__ = False
			if (getattr(self, 'failed', False)):
				return None
			if (self.subtype == 'ref'):
				surface = self.getSurface()
				if (surface):
					self.shape = surface.build()
			elif (self.subtype == 'cyl_spl_sur'):
				if (self.surface is None):
					# create a cylinder surface from the profile
					self.surface = Part.Cylinder()
					rotateShape(self.surface, self.axis)
					self.surface.Center = self.center
					curve = self.profile.build(self.profile.range.getLowerLimit(), self.profile.range.getUpperLimit())
					if (curve is not None):
						point = curve.Curve.StartPoint
						u, v = self.surface.parameter(point)
						radius = point - self.surface.value(u, v)
						self.surface.Radius = radius.Length + 1.0
						self.shape = self.surface.toShape()
					else:
						logError("    Can't create cylinder from profile (%r)" %(self.profile))
			elif (self.subtype == 'VBL_SURF'):
				if (self.surface is None):
					edges = []
					for vbl in self.boundaries:
						edge = vbl.build()
						if (not edge is None):
							edges.append(edge)
					try:

						self.shape = Part.makeFilledFace(edges)
