优化:避免c2r出现死循环导致程序崩溃 fix #I4CVCB

pull/1653/MERGE
ChenX 3 years ago
parent 708a258439
commit 0c800ed830

@ -280,30 +280,30 @@ export class Command_Curve2Polyline implements Command
}
}
export function CurveInOCS(curve: Curve, Ocs: Matrix4, OcsInv: Matrix4): boolean
export function CurveInOCS(curve: Curve, Ocs: Matrix4, OcsInv: Matrix4, zFuzz = 1e-3): boolean
{
if (curve instanceof Line)
{
let p = curve.StartPoint.applyMatrix4(OcsInv);
if (!equaln(p.z, 0, 1e-3)) return false;
if (!equaln(p.z, 0, zFuzz)) return false;
p = curve.EndPoint.applyMatrix4(OcsInv);
if (!equaln(p.z, 0, 1e-3)) return false;
if (!equaln(p.z, 0, zFuzz)) return false;
return true;
}
else if (curve instanceof Arc)
{
return matrixIsCoplane(curve.OCS, Ocs, 1e-3);
return matrixIsCoplane(curve.OCS, Ocs, zFuzz);
}
else if (curve instanceof Polyline)
{
if (matrixIsCoplane(curve.OCS, Ocs, 1e-3))
if (matrixIsCoplane(curve.OCS, Ocs, zFuzz))
return true;
else
{
let cus = curve.Explode();
return cus.every(c =>
{
return CurveInOCS(c, Ocs, OcsInv);
return CurveInOCS(c, Ocs, OcsInv, zFuzz);
});
}
}
@ -367,6 +367,10 @@ export function GroupCurves(curs: Curve[]): { ocs: Matrix4, cus: Curve[]; }[]
}
return true;
});
if (cus.length === 0)
throw "对曲线分组失败,请勾选强制使用(当前或前视图)坐标系,或对二维图形进行Z轴归0(Z0)后重新操作!";
curveGroup.push({ ocs, cus });
}
return curveGroup;

Loading…
Cancel
Save