/// <summary> /// 获取基准面最小半径 /// </summary> /// <param name="face"></param> /// <returns></returns> private double GetBaseMinDia(Face face) { double min = 9999; foreach (Edge eg in face.GetEdges()) { if (eg.SolidEdgeType == Edge.EdgeType.Circular) { foreach (Face fe in eg.GetFaces()) { AnalyzeFaceSlopeAndRadius ar = new AnalyzeFaceSlopeAndRadius(fe); ar.AnalyzeFace(new Vector3d(0, 0, 1)); if (min >= ar.MinRadius) { min = ar.MinRadius; } } } } if (min == 0) { min = 9999; } return(min); }
/// <summary> /// 分析面 /// </summary> /// <param name="face"></param> /// <param name="vec"></param> private void AnalyzeFace(Face face, Vector3d vec) { AnalyzeFaceSlopeAndRadius af = new AnalyzeFaceSlopeAndRadius(face); af.AnalyzeFace(vec); analyze.Add(af); if (this.MinRadius > af.MinRadius) { this.MinRadius = af.MinRadius; } }
/// <summary> /// 分析面 /// </summary> /// <param name="face"></param> /// <param name="vec"></param> private void AnalyzeFace(Face face, Vector3d vec) { AnalyzeFaceSlopeAndRadius af = new AnalyzeFaceSlopeAndRadius(face); af.AnalyzeFace(vec); analyze.Add(af); if (Math.Abs(this.MinRadius) >= Math.Abs(af.MinRadius) && !UMathUtils.IsEqual(af.MinRadius, 0) && UMathUtils.IsEqual(af.FaceData.IntNorm, -1)) { this.MinRadius = af.MinRadius; } }