diff --git a/freecad/asm3/assembly.py b/freecad/asm3/assembly.py index aa2b503..f35a003 100644 --- a/freecad/asm3/assembly.py +++ b/freecad/asm3/assembly.py @@ -689,7 +689,9 @@ class AsmElement(AsmBase): info = None try: info = self.getInfo(False) - except Exception: + except Exception as e: + logger.warn(str(e)) + self.updatePlacement() if not gui.AsmCmdManager.AutoFixElement: diff --git a/freecad/asm3/constraint.py b/freecad/asm3/constraint.py index b37b991..648be74 100644 --- a/freecad/asm3/constraint.py +++ b/freecad/asm3/constraint.py @@ -245,11 +245,15 @@ def _lw(solver,partInfo,subname,shape,retAll=False): 'return a handle for either a line or a plane depending on the shape' _ = retAll if not solver: - if utils.isLinearEdge(shape) or utils.isPlanar(shape): + if utils.isLinearEdge(shape) or \ + utils.isPlanar(shape) or \ + utils.isCylindricalPlane(shape): return - return 'a linear edge or edge/face with planar surface' + return 'a linear edge or edge/face with planar or cylindrical surface' if utils.isLinearEdge(shape): return _l(solver,partInfo,subname,shape,False) + if utils.isCylindricalPlane(shape): + return _n(solver,partInfo,subname,shape,False) return _wa(solver,partInfo,subname,shape) def _w(solver,partInfo,subname,shape,retAll=False,noCheck=False):