private void AnalyserPercages() { // On recupère les faces issues des fonctions modifiant le corps List <Face2> ListeFaceSection = Corps.eListeDesFaces(); // Supprimer les faces de la section ext foreach (var f in FaceSectionExt.ListeFaceSw()) { ListeFaceSection.Remove(f); } // Supprimer les faces des sections int foreach (var l in ListeFaceSectionInt) { foreach (var f in l.ListeFaceSw()) { ListeFaceSection.Remove(f); } } // On tri les faces connectées ListeFaceUsinageSection = TrierFacesConnectees(ListeFaceSection); // Recherche des usinages d'extrémité et calcul des caractéristiques des usinages // On calcul les distances des faces au points extremes foreach (var l in ListeFaceUsinageSection) { l.CalculerUsinage(FaceSectionExt); l.CalculerDistance(ExtremPoint1, ExtremPoint2); } // Recherche de la face la plus proche du point extreme 1 var Extrem = ListeFaceUsinageSection[0]; foreach (var l in ListeFaceUsinageSection) { if (Extrem.DistToExtremPoint1 > l.DistToExtremPoint1) { Extrem = l; } } // On l'ajoute à la liste ListeFaceUsinageExtremite.Add(Extrem); // On recherche la face la plus proche du point extrème 2 // Elle peut être la même que la précédente Extrem = ListeFaceUsinageSection[0]; foreach (var l in ListeFaceUsinageSection) { if (Extrem.DistToExtremPoint2 > l.DistToExtremPoint2) { Extrem = l; } } // On l'ajoute ListeFaceUsinageExtremite.AddIfNotExist(Extrem); // On les supprime de la liste des faces de la section foreach (var l in ListeFaceUsinageExtremite) { ListeFaceUsinageSection.Remove(l); } }