diff --git a/src/IFoxCAD.Cad/ExtensionMethod/Curve3dEx.cs b/src/IFoxCAD.Cad/ExtensionMethod/Curve3dEx.cs index 226e5de516e299e8315e9e1efa3c7e188ab02400..870fdbda7869c4be5630c7471d5c7c40a0176595 100644 --- a/src/IFoxCAD.Cad/ExtensionMethod/Curve3dEx.cs +++ b/src/IFoxCAD.Cad/ExtensionMethod/Curve3dEx.cs @@ -1,4 +1,4 @@ -namespace IFoxCAD.Cad; +namespace IFoxCAD.Cad; /// /// 三维解析类曲线转换为三维实体曲线扩展类 @@ -16,7 +16,46 @@ public static bool IsEqualPoint(this Tolerance tol, double d1, double d2) { return Math.Abs(d1 - d2) < tol.EqualPoint; } - + /// + /// 判断点与另外两点的位置关系 + /// + /// + /// + /// + /// + /// + /// + public static PtOnlineType IsOnLine(this Point3d pt0, Point3d pt1, Point3d pt2, double dTol) + { + var value = PtOnlineType.OutLineP12; + double d12 = Math.Abs(pt1.DistanceTo(pt2)); + double d01 = Math.Abs(pt0.DistanceTo(pt1)); + double d02 = Math.Abs(pt0.DistanceTo(pt2)); + if (d12 == d01+d02) value = 0; + if (d02 == d01+d12) + { + if (d01 <= dTol) + { + value = PtOnlineType.OnLineP1N; + } + else + { + value = PtOnlineType.OnLineP1W; + } + } + if (d01 == d02+d12) + { + if (d02 <= dTol) + { + value = PtOnlineType.OnLineP2N; + } + else + { + value = PtOnlineType.OnLineP2W; + } + } + return value; + } #region Curve3d ///