/// <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); } }
/// <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 }); } }