Beispiel #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);
            }
Beispiel #2
0
        protected override void Command()
        {
            try
            {
                Face2 Face = MdlBase.eSelect_RecupererObjet <Face2>();
                if (Face.IsNull())
                {
                    WindowLog.Ecrire("Pas de face selectionnée");
                    return;
                }

                Body2 CorpsBase = Face.GetBody();
                if (CorpsBase.IsNull())
                {
                    WindowLog.Ecrire("Pas de corps selectionnée");
                    return;
                }

                String MateriauxCorpsBase = "";

                if (MdlBase.TypeDoc() == eTypeDoc.Piece)
                {
                    MateriauxCorpsBase = CorpsBase.eGetMateriauCorpsOuPiece(MdlBase.ePartDoc(), MdlBase.eNomConfigActive());
                }
                else
                {
                    Component2 cpCorpsBase = MdlBase.eSelect_RecupererComposant();
                    MateriauxCorpsBase = CorpsBase.eGetMateriauCorpsOuComp(cpCorpsBase);
                }

                MdlBase.eEffacerSelection();

                WindowLog.Ecrire("Matériau : " + MateriauxCorpsBase);

                var ListeCorpsIdentiques = new List <Body2>();

                Action <Body2, String> Test = delegate(Body2 corps, String mat)
                {
                    if (MateriauxCorpsBase != mat)
                    {
                        return;
                    }

                    if (corps.eComparerGeometrie(CorpsBase) == Sw.Comparaison_e.Semblable)
                    {
                        ListeCorpsIdentiques.Add(corps);
                    }
                };

                if (MdlBase.TypeDoc() == eTypeDoc.Piece)
                {
                    var Piece = MdlBase.ePartDoc();
                    foreach (var Corps in Piece.eListeCorps())
                    {
                        var MateriauCorpsTest = Corps.eGetMateriauCorpsOuPiece(Piece, MdlBase.eNomConfigActive());
                        Test(Corps, MateriauCorpsTest);
                    }
                }
                else
                {
                    foreach (var comp in MdlBase.eComposantRacine().eRecListeComposant(c => { return(c.TypeDoc() == eTypeDoc.Piece); }))
                    {
                        foreach (var Corps in comp.eListeCorps())
                        {
                            var MateriauCorpsTest = Corps.eGetMateriauCorpsOuComp(comp);
                            Test(Corps, MateriauCorpsTest);
                        }
                    }
                }

                WindowLog.EcrireF("Nb de corps identiques : {0}", ListeCorpsIdentiques.Count);
                foreach (var corps in ListeCorpsIdentiques)
                {
                    corps.eSelect(true);
                }
            }
            catch (Exception e)
            {
                this.LogErreur(new Object[] { e });
            }
        }
Beispiel #3
0
        private void Run(Component2 cBase)
        {
            if (cBase == null)
            {
                this.LogMethode(new String[] { "Une reference à un objet a été perdue cBase :", cBase.IsRefToString() });
                return;
            }

            try
            {
                List <Body2> ListeCorps = cBase.eListeCorps();
                List <Trou>  ListeTrou  = new List <Trou>();

                // Recherche des faces cylindriques
                foreach (Body2 C in ListeCorps)
                {
                    // On recherche la face fixe de la tôle
                    Face2 faceFixe = C.eFaceFixeTolerie();

                    // S'il n'y en a pas c'est que ce n'est pas une tôle
                    if (faceFixe.IsNull())
                    {
                        continue;
                    }

                    // On recherche les faces de cette tôle
                    var liste = new List <Face2>();
                    faceFixe.eChercherFacesTangentes(ref liste);

                    // Pour chaque face plane
                    foreach (Face2 faceBase in liste.FindAll(f => ((Surface)f.GetSurface()).IsPlane()))
                    {
                        // On récupère les boucles internes
                        var listePercage = new List <Loop2>();
                        foreach (Loop2 loop in (Object[])faceBase.GetLoops())
                        {
                            if (!loop.IsOuter())
                            {
                                listePercage.Add(loop);
                            }
                        }

                        // Pour chaque boucle interne
                        foreach (var loop in listePercage)
                        {
                            var edge        = (Edge)loop.GetEdges()[0];
                            var facePercage = edge.eAutreFace(faceBase);

                            // On verifie que le perçage est un cylindre
                            // et qu'il débouche bien
                            if (facePercage.eEstUnCylindre() && (facePercage.GetLoopCount() > 1))
                            {
                                // Si le diametre == 0 on recupère toutes les faces
                                if ((ListeDiametre.Count == 1) && (ListeDiametre[0] == 0))
                                {
                                    ListeTrou.Add(new Trou(facePercage, faceBase));
                                }
                                // Sinon, on verifie qu'elle corresponde bien au diametre demandé
                                else if (ListeDiametre.Contains(DiametreMm(facePercage)))
                                {
                                    ListeTrou.Add(new Trou(facePercage, faceBase));
                                }
                            }
                        }
                    }
                }

                // S'il n'y a pas assez de composant de perçage, on en rajoute
                while (_ListePercage.Count < ListeTrou.Count)
                {
                    AjouterPercage();
                }

                MdlBase.EditRebuild3();

                List <String> ListeNomComp = _ListePercage.Keys.ToList();

                // Contrainte des perçages
                for (int i = 0; i < ListeTrou.Count; i++)
                {
                    String     NomComp = ListeNomComp[i];
                    Component2 Comp    = _AssBase.GetComponentByName(NomComp);
                    // On active le composant au cas ou :)

                    MdlBase.eSelectByIdComp(_ListePercage[NomComp]);
                    _AssBase.eModifierEtatComposant(swComponentSuppressionState_e.swComponentResolved);
                    MdlBase.eEffacerSelection();

                    int longstatus = 0;
                    var Trou       = ListeTrou[i];

                    MdlBase.ClearSelection2(true);
                    Trou.Plan.eSelectEntite();
                    PlanDeFace(Comp).eSelect(true);

                    _AssBase.AddMate5((int)swMateType_e.swMateCOINCIDENT,
                                      (int)swMateAlign_e.swMateAlignALIGNED,
                                      false,
                                      0, 0, 0, 0, 0, 0, 0, 0,
                                      false, false, 0, out longstatus);

                    MdlBase.eEffacerSelection();
                    Trou.Cylindre.eSelectEntite();
                    FaceCylindrique(Comp).eSelectEntite(true);

                    _AssBase.AddMate5((int)swMateType_e.swMateCONCENTRIC,
                                      (int)swMateAlign_e.swMateAlignCLOSEST,
                                      false,
                                      0, 0, 0, 0, 0, 0, 0, 0,
                                      false, true, 0, out longstatus);

                    MdlBase.eEffacerSelection();
                }
            }
            catch (Exception e)
            {
                this.LogMethode(new Object[] { e });
            }
        }