diff --git a/src/Add-on/twoD2threeD/Command_Curve2Polyline.ts b/src/Add-on/twoD2threeD/Command_Curve2Polyline.ts index 797ae603c..b8322b022 100644 --- a/src/Add-on/twoD2threeD/Command_Curve2Polyline.ts +++ b/src/Add-on/twoD2threeD/Command_Curve2Polyline.ts @@ -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;