Exemplo n.º 1
0
        /// <summary>
        /// Liste les corps avec Composant.eListeDesCorps()
        /// </summary>
        protected void OldCommand()
        {
            try
            {
                Dictionary <String, Piece> _DicPiece = new Dictionary <String, Piece>();
                int NbTotalComposant = 0;

                // Si c'est une piece, on ajoute le composant racine
                if (MdlBase.TypeDoc() == eTypeDoc.Piece)
                {
                    _DicPiece.Add(MdlBase.eComposantRacine().eKeyAvecConfig(), new Piece(MdlBase.eComposantRacine()));
                    NbTotalComposant = 1;
                }

                // Si c'est un assemblage, on liste les composants
                if (MdlBase.TypeDoc() == eTypeDoc.Assemblage)
                {
                    MdlBase.eRecListeComposant(
                        c =>
                    {
                        if (!c.IsHidden(false) && (c.TypeDoc() == eTypeDoc.Piece))
                        {
                            if (_DicPiece.ContainsKey(c.eKeyAvecConfig()))
                            {
                                _DicPiece[c.eKeyAvecConfig()].Nb += 1;
                                return(true);
                            }

                            _DicPiece.Add(c.eKeyAvecConfig(), new Piece(c));
                            NbTotalComposant++;
                            return(true);
                        }
                        return(false);
                    },
                        null,
                        true);
                }


                WindowLog.Ecrire("Nb de composants : " + NbTotalComposant);
                WindowLog.SautDeLigne();

                List <Piece> ListePiece = _DicPiece.Values.ToList <Piece>();

                // On trie
                ListePiece.Sort((c1, c2) => { WindowsStringComparer sc = new WindowsStringComparer(); return(sc.Compare(c1.Composant.eKeyAvecConfig(), c2.Composant.eKeyAvecConfig())); });

                Ensemble Ensemble = new Ensemble();

                foreach (Piece piece in ListePiece)
                {
                    WindowLog.Ecrire(piece.Nb + " × " + piece.Composant.eNomAvecExt() + " Config \"" + piece.Composant.eNomConfiguration() + "\"");
                    WindowLog.Ecrire(" -> Mat : " + piece.Info.Materiau + " / Base : " + piece.Info.Base);

                    foreach (Body2 corps in piece.Composant.eListeCorps())
                    {
                        Info InfoCorps = piece.AjouterCorps(corps);

                        String herite = InfoCorps.Herite ? " (herité) " : "";

                        String Ligne = String.Format(" -- {0} -> {1} : {2:0.0} kg / Base : {3}{4}",
                                                     corps.Name,
                                                     InfoCorps.Materiau,
                                                     InfoCorps.Masse,
                                                     InfoCorps.Base,
                                                     herite
                                                     );

                        WindowLog.Ecrire(Ligne);
                    }

                    Ensemble.AjouterPiece(piece);

                    if (piece.Masse > 0.01)
                    {
                        List <String> TextePiece = new List <String>();
                        foreach (String classe in piece.ListeClasse.Keys)
                        {
                            Double Masse = 0;

                            foreach (Info i in piece.ListeClasse[classe].Values)
                            {
                                Masse += i.Masse;
                                TextePiece.Add(String.Format("  -- {0} : {1:0.0} kg", i.Materiau, i.Masse));
                            }
                            TextePiece.Insert(0, String.Format("  {0} : {1:0.0} kg", classe, Masse));
                        }
                        TextePiece.Insert(0, String.Format("Poids de la piece : {0:0.0} kg", piece.Masse));
                        WindowLog.Ecrire(TextePiece);
                        WindowLog.SautDeLigne();
                    }
                }

                WindowLog.SautDeLigne();

                WindowLog.Ecrire("Resultat :");
                WindowLog.Ecrire("----------------");

                List <String> TexteEnsemble = new List <String>();
                foreach (String classe in Ensemble.ListeClasse.Keys)
                {
                    Double Masse = 0;

                    List <String> Texte = new List <String>();
                    foreach (Info i in Ensemble.ListeClasse[classe].Values)
                    {
                        Masse += i.Masse;
                        Texte.Add(String.Format("  -- {0} : {1:0.0} kg", i.Materiau, i.Masse));
                    }

                    if (Masse > 0.01)
                    {
                        TexteEnsemble.Add(String.Format("  {0} : {1:0.0} kg", classe, Masse));
                        TexteEnsemble.AddRange(Texte);
                    }
                }
                TexteEnsemble.Insert(0, String.Format("Poids de l'ensemble : {0:0.0} kg", Ensemble.Masse));
                WindowLog.Ecrire(TexteEnsemble);
                WindowLog.SautDeLigne();
            }
            catch (Exception e)
            { Log.Message(e); }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Liste les corps avec Composant.eListeDesDossiersDePiecesSoudees().eListeDesCorps()
        /// Permet de regrouper
        /// </summary>
        protected override void Command()
        {
            try
            {
                Dictionary <String, Piece> _DicPiece = new Dictionary <String, Piece>();
                int NbTotalComposant = 0;

                // Si c'est une piece, on ajoute le composant racine
                if (MdlBase.TypeDoc() == eTypeDoc.Piece)
                {
                    _DicPiece.Add(MdlBase.eComposantRacine().eKeyAvecConfig(), new Piece(MdlBase.eComposantRacine()));
                    NbTotalComposant = 1;
                }

                // Si c'est un assemblage, on liste les composants
                if (MdlBase.TypeDoc() == eTypeDoc.Assemblage)
                {
                    MdlBase.eRecListeComposant(
                        c =>
                    {
                        if (!c.IsHidden(false) && (c.TypeDoc() == eTypeDoc.Piece))
                        {
                            if (_DicPiece.ContainsKey(c.eKeyAvecConfig()))
                            {
                                _DicPiece[c.eKeyAvecConfig()].Nb += 1;
                                return(true);
                            }

                            _DicPiece.Add(c.eKeyAvecConfig(), new Piece(c));
                            NbTotalComposant++;
                            return(true);
                        }
                        return(false);
                    },
                        null,
                        true);
                }


                WindowLog.Ecrire("Nb de composants : " + NbTotalComposant);
                WindowLog.SautDeLigne();

                List <Piece> ListePiece = _DicPiece.Values.ToList <Piece>();

                // On trie
                ListePiece.Sort((c1, c2) => { WindowsStringComparer sc = new WindowsStringComparer(); return(sc.Compare(c1.Composant.eKeyAvecConfig(), c2.Composant.eKeyAvecConfig())); });

                Ensemble Ensemble = new Ensemble();

                foreach (Piece piece in ListePiece)
                {
                    WindowLog.Ecrire(piece.Nb + " × " + piece.Composant.eNomSansExt() + " Config \"" + piece.Composant.eNomConfiguration() + "\"");
                    WindowLog.Ecrire(" -> Mat : " + piece.Info.Materiau + " / Base : " + piece.Info.Base);

                    var ListeDossier = piece.Composant.eListeDesDossiersDePiecesSoudees();

                    if (piece.Composant.IsRoot())
                    {
                        ListeDossier = piece.Composant.ePartDoc().eListeDesDossiersDePiecesSoudees();
                    }

                    foreach (var dossier in ListeDossier)
                    {
                        if (dossier.eNbCorps() == 0)
                        {
                            continue;
                        }

                        var listeCorps = dossier.eListeDesCorps();

                        if (listeCorps.IsNull())
                        {
                            continue;
                        }

                        Body2 corps = listeCorps[0];

                        Info InfoCorps = piece.AjouterCorps(corps, dossier.eNbCorps());

                        String herite = InfoCorps.Herite ? " (herité) " : "";

                        String nomCorps = corps.Name;
                        if (!dossier.eNom().eIsLike(CONSTANTES.ARTICLE_LISTE_DES_PIECES_SOUDEES, false))
                        {
                            nomCorps = dossier.eNom();
                        }

                        String Ligne = String.Format(" -- ×{5} {0} -> {1} : {2:0.0} kg / Base : {3}{4}",
                                                     nomCorps,
                                                     InfoCorps.Materiau,
                                                     InfoCorps.Masse,
                                                     InfoCorps.Base,
                                                     herite,
                                                     dossier.eNbCorps()
                                                     );

                        WindowLog.Ecrire(Ligne);
                    }

                    Ensemble.AjouterPiece(piece);

                    if (piece.Masse > 0.01)
                    {
                        List <String> TextePiece = new List <String>();
                        foreach (String classe in piece.ListeClasse.Keys)
                        {
                            Double Masse = 0;

                            foreach (Info i in piece.ListeClasse[classe].Values)
                            {
                                Masse += i.Masse;
                                TextePiece.Add(String.Format("  -- {0} : {1:0.0} kg", i.Materiau, i.Masse));
                            }
                            TextePiece.Insert(0, String.Format("  {0} : {1:0.0} kg", classe, Masse));
                        }
                        TextePiece.Insert(0, String.Format("Poids de la piece : {0:0.0} kg", piece.Masse));
                        WindowLog.Ecrire(TextePiece);
                    }

                    WindowLog.SautDeLigne();
                }

                WindowLog.SautDeLigne();

                WindowLog.Ecrire("Resultat :");
                WindowLog.Ecrire("----------------");

                List <String> TexteEnsemble = new List <String>();
                foreach (String classe in Ensemble.ListeClasse.Keys)
                {
                    Double Masse = 0;

                    List <String> Texte = new List <String>();
                    foreach (Info i in Ensemble.ListeClasse[classe].Values)
                    {
                        Masse += i.Masse;
                        Texte.Add(String.Format("  -- {0} : {1:0.0} kg", i.Materiau, i.Masse));
                    }

                    if (Masse > 0.01)
                    {
                        TexteEnsemble.Add(String.Format("  {0} : {1:0.0} kg", classe, Masse));
                        TexteEnsemble.AddRange(Texte);
                    }
                }
                TexteEnsemble.Insert(0, String.Format("Poids de l'ensemble : {0:0.0} kg", Ensemble.Masse));
                WindowLog.Ecrire(TexteEnsemble);
                WindowLog.SautDeLigne();
            }
            catch (Exception e)
            {
                this.LogErreur(new Object[] { e });
            }
        }