public static IList <PlanarFace> ListNearestFace(PlanarFace face, IList <PlanarFace> listFaces) { IList <PlanarFace> list = new List <PlanarFace>(); PlanarFace face2 = Facelibry.NearestFace(face, listFaces); XYZ point = Facelibry.CenterPoint(face2); double num = Facelibry.PointToFace(point, face); XYZ faceNormal = face.FaceNormal; XYZ right = Facelibry.CenterPoint(face); foreach (PlanarFace planarFace in listFaces) { XYZ xyz = Facelibry.CenterPoint(planarFace); XYZ xyz2 = xyz - right; bool flag = xyz2.IsAlmostEqualTo(new XYZ()); if (!flag) { double num2 = Facelibry.PointToFace(xyz, face); bool flag2 = num2 <1.02 * num && num2> 0.98 * num; if (flag2) { list.Add(planarFace); } } } return(list); }
public static PlanarFace FirstFace(IList <PlanarFace> listFace, XYZ vector) { PlanarFace result = null; IList <PlanarFace> list = Facelibry.PerpendicularFace(listFace, vector); double num = 0.0; foreach (PlanarFace planarFace in list) { XYZ source = Facelibry.CenterPoint(planarFace); bool flag = MathLib.IsEqual(num, 0.0, 0.0001); if (flag) { num = vector.DotProduct(source); result = planarFace; } else { double num2 = vector.DotProduct(source); bool flag2 = num2 < num; if (flag2) { result = planarFace; num = num2; } } } return(result); }
public static PlanarFace NearestFace(PlanarFace face, IList <PlanarFace> listFaces) { PlanarFace planarFace = null; double num = 0.0; XYZ faceNormal = face.FaceNormal; XYZ right = Facelibry.CenterPoint(face); foreach (PlanarFace planarFace2 in listFaces) { XYZ faceNormal2 = planarFace2.FaceNormal; XYZ xyz = faceNormal.CrossProduct(faceNormal2) / (faceNormal.GetLength() * faceNormal2.GetLength()); bool flag = !xyz.IsAlmostEqualTo(XYZ.Zero); if (!flag) { XYZ xyz2 = Facelibry.CenterPoint(planarFace2); XYZ xyz3 = xyz2 - right; bool flag2 = xyz3.IsAlmostEqualTo(new XYZ()); if (!flag2) { double num2 = Facelibry.PointToFace(xyz2, face); bool flag3 = null == planarFace && num2 > 1E-06; if (flag3) { planarFace = planarFace2; num = num2; } else { bool flag4 = num2 <num && num2> 1E-07; if (flag4) { planarFace = planarFace2; num = num2; } } } } } return(planarFace); }