from .deps import with_metaclass from .system import System, SystemBase, SystemExtension from .utils import syslogger as logger, objName import platform if platform.system() == 'Darwin': from .py_slvs_mac import slvs else: try: from py_slvs import slvs except ImportError: from .py_slvs import slvs class SystemSlvs(with_metaclass(System, SystemBase)): _id = 1 def __init__(self,obj): super(SystemSlvs,self).__init__(obj) @classmethod def getName(cls): return 'SolveSpace' def isDisabled(self,_obj): return False def getSystem(self,_obj): return _SystemSlvs(self.log) class _SystemSlvs(SystemExtension,slvs.System): def __init__(self,log): super(_SystemSlvs,self).__init__() self.log = log def getName(self): return SystemSlvs.getName() def solve(self, group=0, reportFailed=False, findFreeParams=False): ret = super(_SystemSlvs,self).solve(group,reportFailed,findFreeParams) if ret: reason = None if ret==1: reason = 'inconsistent constraints' elif ret==2: reason = 'not converging' elif ret==3: reason = 'too many unknowns' elif ret==4: reason = 'init failed' elif ret==5: logger.warn('redundant constraints') else: reason = 'unknown failure' if reason: raise RuntimeError(reason) logger.info('dof remaining: {}',self.Dof)