Ejemplo n.º 1
0
            // Recherche de l'arrete de devant sur laquelle est contrainte la platine.
            private Edge ArreteDevant(List <Mate2> listeContraintes, Face2 faceDessus)
            {
                Mate2 Ct = null;

                // On rechercher la contrainte avec un point
                foreach (Mate2 Contrainte in listeContraintes)
                {
                    foreach (MateEntity2 Ent in Contrainte.eListeDesEntitesDeContrainte())
                    {
                        if (Ent.ReferenceType2 == (int)swSelectType_e.swSelEXTSKETCHPOINTS)
                        {
                            Ct = Contrainte;
                            break;
                        }
                    }
                    if (Ct.IsRef())
                    {
                        break;
                    }
                }

                if (Ct.IsNull())
                {
                    return(null);
                }

                Face2 F_Devant = null;

                // On recherche la face associée à cette contrainte
                foreach (MateEntity2 Ent in Ct.eListeDesEntitesDeContrainte())
                {
                    if (Ent.ReferenceType2 == (int)swSelectType_e.swSelFACES)
                    {
                        F_Devant = (Face2)Ent.Reference;
                        break;
                    }
                }

                if (F_Devant.IsNull())
                {
                    return(null);
                }

                List <Edge> ListeArretes = F_Devant.eListeDesArretesCommunes(faceDessus);

                if (ListeArretes.Count > 0)
                {
                    return(ListeArretes[0]);
                }

                return(null);
            }
Ejemplo n.º 2
0
            // Recherche de l'arrete sur laquelle est contrainte la platine.
            private Edge ArretePlatine(List <Mate2> listeContraintes, Feature planContrainte, Face2 f_Dessus)
            {
                Mate2 Contrainte = null;

                foreach (Mate2 Ct in listeContraintes)
                {
                    foreach (MateEntity2 Ent in Ct.eListeDesEntitesDeContrainte())
                    {
                        // Si l'entite est un plan
                        if (Ent.ReferenceType2 == (int)swSelectType_e.swSelDATUMPLANES)
                        {
                            RefPlane P = Ent.Reference;
                            Feature  F = (Feature)P;
                            // On vérifie que le plan a le même nom que le plan contrainte
                            if (planContrainte.Name == F.Name)
                            {
                                Contrainte = Ct;
                                break;
                            }
                        }
                    }

                    if (Contrainte.IsRef())
                    {
                        break;
                    }
                }

                foreach (MateEntity2 Ent in Contrainte.eListeDesEntitesDeContrainte())
                {
                    // On récupère la face associée à la contrainte
                    if (Ent.ReferenceType2 == (int)swSelectType_e.swSelFACES)
                    {
                        Face2 F = Ent.Reference;

                        // Liste des arrêtes communes, normalement, il n'y en a qu'une
                        List <Edge> L = F.eListeDesArretesCommunes(f_Dessus);

                        // On renvoi la première
                        if (L.Count > 0)
                        {
                            return(L[0]);
                        }
                    }
                }

                return(null);
            }