solver: check recompute error before solving

This commit is contained in:
Zheng, Lei 2019-01-10 18:57:44 +08:00
parent 3b48ecbb0e
commit 33d74d5a2f

View File

@ -230,7 +230,9 @@ class Solver(object):
setPlacement(info0.Part,pla) setPlacement(info0.Part,pla)
if recompute and touched: if recompute and touched:
assembly.recompute(True) if not assembly.recompute(True):
raise RuntimeError(
'Failed to recompute {}'.format(objName(assembly)))
def isFixedPart(self,part): def isFixedPart(self,part):
@ -362,10 +364,12 @@ def _solve(objs=None,recursive=None,reportFailed=False,
try: try:
for assembly in assemblies: for assembly in assemblies:
if recompute: if recompute:
assembly.recompute(True) logger.debug('recompute {}',objName(assembly))
if not assembly.recompute(True):
raise RuntimeError(
'Failed to recompute {}'.format(objName(assembly)))
if not System.isTouched(assembly): if not System.isTouched(assembly):
logger.debug('skip untouched assembly ' logger.debug('skip untouched assembly {}',objName(assembly))
'{}'.format(objName(assembly)))
continue continue
Solver(assembly,reportFailed,dragPart,recompute,rollback) Solver(assembly,reportFailed,dragPart,recompute,rollback)
System.touch(assembly,False) System.touch(assembly,False)