fix bug in draft path array
put lnodes.normalize() inside try/except block replace hard-coded 1e-6 with Vector3d::epsilon() in VectorPy::normalize()
This commit is contained in:
committed by
wmayer
parent
712012678f
commit
41102edf67
@@ -451,7 +451,7 @@ PyObject* VectorPy::normalize(PyObject *args)
|
||||
if (!PyArg_ParseTuple(args, ""))
|
||||
return 0;
|
||||
VectorPy::PointerType ptr = reinterpret_cast<VectorPy::PointerType>(_pcTwinPointer);
|
||||
if (ptr->Length() < 1.0e-6) {
|
||||
if (ptr->Length() < Vector3d::epsilon()) {
|
||||
PyErr_SetString(Base::BaseExceptionFreeCADError, "Cannot normalize null vector");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -6037,9 +6037,10 @@ class _PathArray(_DraftObject):
|
||||
b = nullv
|
||||
FreeCAD.Console.PrintLog ("Draft PathArray.orientShape - Cannot calculate Path normal.\n")
|
||||
lnodes = z.cross(b)
|
||||
if lnodes != nullv:
|
||||
try:
|
||||
lnodes.normalize() # Can't normalize null vector.
|
||||
# pathological cases:
|
||||
except:
|
||||
pass # pathological cases:
|
||||
if n == nullv: # 1) can't determine normal, don't align.
|
||||
psi = 0.0
|
||||
theta = 0.0
|
||||
|
||||
Reference in New Issue
Block a user