public void AjouterDossier(BodyFolder dossier, Component2 comp) { Body2 corps = dossier.ePremierCorps(); if (corps.IsNull()) { return; } String BaseMateriau; String Materiau = corps.eGetMateriauCorpsOuComp(comp, out BaseMateriau); string Profil; if (corps.eTypeDeCorps() == eTypeCorps.Tole) { Double Ep = corps.eEpaisseurCorpsOuDossier(dossier); if (Ep == -1) { WindowLog.EcrireF("Pb d'epaisseur sur le corps {0}", corps.Name); return; } Profil = "Ep " + Ep.ToString(); } else if (dossier.ePropExiste(CONSTANTES.PROFIL_NOM)) { Profil = dossier.eProp(CONSTANTES.PROFIL_NOM); } else { Profil = NomVolume; } Ajouter(BaseMateriau, Materiau, Profil, dossier, comp); }
public void AjouterDossier(BodyFolder dossier, Component2 comp) { Body2 corps = dossier.ePremierCorps(); if (corps.IsNull()) { return; } String Repere = ""; if (dossier.ePropExiste(CONSTANTES.REF_DOSSIER)) { Repere = dossier.eProp(CONSTANTES.REF_DOSSIER); } else { Repere = Erreur; } Ajouter(Repere, dossier, comp); }
protected override void Command() { try { var ListeComposants = MdlBase.ListerComposants(false); eTypeCorps Filtre = eTypeCorps.Barre | eTypeCorps.Tole; var Dic = new HashSet <String>(); Boolean Erreur = false; Predicate <Feature> Test = f => { BodyFolder dossier = f.GetSpecificFeature2(); if (dossier.IsRef() && dossier.eNbCorps() > 0 && Filtre.HasFlag(dossier.eTypeDeDossier())) { var RefDossier = dossier.eProp(CONSTANTES.REF_DOSSIER); if (String.IsNullOrWhiteSpace(RefDossier)) { return(true); } } return(false); }; foreach (var mdl in ListeComposants.Keys) { mdl.eActiver(swRebuildOnActivation_e.swRebuildActiveDoc); foreach (var t in ListeComposants[mdl]) { var cfg = t.Key; var nbCfg = t.Value; mdl.ShowConfiguration2(cfg); mdl.EditRebuild3(); var Piece = mdl.ePartDoc(); foreach (var fDossier in Piece.eListeDesFonctionsDePiecesSoudees(Test)) { WindowLog.EcrireF("{0} \"{1}\"", mdl.eNomSansExt(), cfg); WindowLog.EcrireF(" {0} : Pas de reference", fDossier.Name); Erreur = true; } } mdl.eFermerSiDifferent(MdlBase); } if (!Erreur) { WindowLog.Ecrire("Aucune erreur\n"); } } catch (Exception e) { this.LogErreur(new Object[] { e }); } }
protected override void Command() { try { int NbDvp = 0; var dic = MdlBase.ListerComposants(false); int MdlPct = 0; foreach (var mdl in dic.Keys) { WindowLog.SautDeLigne(); WindowLog.EcrireF("[{1}/{2}] {0}", mdl.eNomSansExt(), ++MdlPct, dic.Count); mdl.eActiver(swRebuildOnActivation_e.swRebuildActiveDoc); var cfgActive = mdl.eNomConfigActive(); var ListeNomConfigs = dic[mdl]; if (ToutesLesConfigurations) { mdl.eParcourirConfiguration( (String c) => { if (c.eEstConfigPliee() && !ListeNomConfigs.ContainsKey(c)) { ListeNomConfigs.Add(c, 1); } return(false); } ); } if (MasquerEsquisses) { cmdMasquerEsquisses(mdl); } if (SupprimerLesAnciennesConfigs) { cmdSupprimerLesAnciennesConfigs(mdl); } if (!mdl.Extension.LinkedDisplayState) { mdl.Extension.LinkedDisplayState = true; foreach (var c in mdl.eListeConfigs(eTypeConfig.Tous)) { c.eRenommerEtatAffichage(); } } int CfgPct = 0; foreach (var NomConfigPliee in ListeNomConfigs.Keys) { WindowLog.SautDeLigne(); WindowLog.EcrireF(" [{1}/{2}] Config : \"{0}\"", NomConfigPliee, ++CfgPct, ListeNomConfigs.Count); mdl.ShowConfiguration2(NomConfigPliee); mdl.EditRebuild3(); if (SupprimerFonctions) { cmdSupprimerFonctions(mdl, NomConfigPliee); } PartDoc Piece = mdl.ePartDoc(); var ListeDossier = Piece.eListePIDdesFonctionsDePiecesSoudees( swD => { BodyFolder dossier = swD.GetSpecificFeature2(); if (dossier.eEstExclu() || dossier.IsNull() || (dossier.GetBodyCount() == 0) || dossier.eTypeDeDossier() != eTypeCorps.Tole) { return(false); } return(true); } ); for (int noD = 0; noD < ListeDossier.Count; noD++) { var f = ListeDossier[noD]; BodyFolder dossier = f.GetSpecificFeature2(); var RefDossier = dossier.eProp(CONSTANTES.REF_DOSSIER); Body2 Tole = dossier.eCorpsDeTolerie(); var pidTole = new SwObjectPID <Body2>(Tole, MdlBase); String NomConfigDepliee = Sw.eNomConfigDepliee(NomConfigPliee, RefDossier); WindowLog.EcrireF(" - [{1}/{2}] Dossier : \"{0}\" -> {3}", f.Name, noD + 1, ListeDossier.Count, NomConfigDepliee); Configuration CfgDepliee = null; if (ReconstuireLesConfigs) { CfgDepliee = MdlBase.GetConfigurationByName(NomConfigDepliee); } if (CfgDepliee.IsNull()) { CfgDepliee = mdl.CreerConfigDepliee(NomConfigDepliee, NomConfigPliee); } else if (!ReconstuireLesConfigs) { continue; } if (CfgDepliee.IsNull()) { WindowLog.Ecrire(" - Config non crée"); continue; } NbDvp++; try { mdl.ShowConfiguration2(NomConfigDepliee); // On ajoute le numero de la config parent aux propriétés de la configuration depliée CfgDepliee.CustomPropertyManager.Add3(CONSTANTES.NO_CONFIG, (int)swCustomInfoType_e.swCustomInfoText, NomConfigPliee, (int)swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd); pidTole.Maj(ref Tole); Tole.DeplierTole(mdl, NomConfigDepliee); } catch (Exception e) { DicErreur.Add(mdl.eNomSansExt() + " -> cfg : " + NomConfigPliee + " - No : " + RefDossier + " = " + NomConfigDepliee); WindowLog.Ecrire("Erreur de depliage"); this.LogMethode(new Object[] { e }); } try { mdl.ShowConfiguration2(NomConfigPliee); pidTole.Maj(ref Tole); Tole.PlierTole(mdl, NomConfigPliee); } catch (Exception e) { WindowLog.Ecrire("Erreur de repliage"); this.LogMethode(new Object[] { e }); } } } mdl.ShowConfiguration2(cfgActive); WindowLog.SautDeLigne(); mdl.eFermerSiDifferent(MdlBase); } if (DicErreur.Count > 0) { WindowLog.SautDeLigne(); WindowLog.Ecrire("Liste des erreurs :"); foreach (var item in DicErreur) { WindowLog.Ecrire(" - " + item); } WindowLog.SautDeLigne(); } else { WindowLog.Ecrire("Pas d'erreur"); } WindowLog.SautDeLigne(); WindowLog.Ecrire("Resultat :"); WindowLog.Ecrire("----------------"); WindowLog.EcrireF(" {0} dvp crées", NbDvp); File.WriteAllText(Path.Combine(MdlBase.eDossier(), "Log_CreerConfigDvp.txt"), WindowLog.Resume); MdlBase.eActiver(swRebuildOnActivation_e.swRebuildActiveDoc); MdlBase.ShowConfiguration2(nomConfigBase); MdlBase.EditRebuild3(); } catch (Exception e) { this.LogErreur(new Object[] { e }); } }
public ListeLgProfil Analyser() { InitTime(); try { listeElement = new ListeElement(LgBarre); eTypeCorps Filtre = PrendreEnCompteTole ? eTypeCorps.Barre | eTypeCorps.Tole : eTypeCorps.Barre; HashSet <String> HashMateriaux = new HashSet <string>(ListeMateriaux); var dic = MdlBase.DenombrerDossiers(ComposantsExterne, fDossier => { BodyFolder swDossier = fDossier.GetSpecificFeature2(); if (Filtre.HasFlag(swDossier.eTypeDeDossier()) && HashMateriaux.Contains(swDossier.eGetMateriau())) { return(true); } return(false); } ); foreach (var mdl in dic.Keys) { mdl.eActiver(swRebuildOnActivation_e.swRebuildActiveDoc); foreach (var NomConfigPliee in dic[mdl].Keys) { mdl.ShowConfiguration2(NomConfigPliee); mdl.EditRebuild3(); PartDoc Piece = mdl.ePartDoc(); var ListeDossier = dic[mdl][NomConfigPliee]; foreach (var t in ListeDossier) { var IdDossier = t.Key; var QuantiteBarre = t.Value * Quantite; Feature fDossier = Piece.FeatureById(IdDossier); BodyFolder dossier = fDossier.GetSpecificFeature2(); var RefDossier = dossier.eProp(CONSTANTES.REF_DOSSIER); String Profil = dossier.eProp(CONSTANTES.PROFIL_NOM); Double Longueur = dossier.eProp(CONSTANTES.PROFIL_LONGUEUR).eToDouble(); Double A = dossier.eProp(CONSTANTES.PROFIL_ANGLE1).eToDouble(); Double B = dossier.eProp(CONSTANTES.PROFIL_ANGLE2).eToDouble(); if (String.IsNullOrWhiteSpace(Profil) || (Longueur == 0)) { continue; } if (String.IsNullOrWhiteSpace(RefDossier)) { WindowLog.EcrireF("{0}-{1}-{2} : Pas de reférence profil", mdl.eNomSansExt(), NomConfigPliee, fDossier.Name); continue; } var Materiau = dossier.ePremierCorps().eGetMateriauCorpsOuPiece(Piece, NomConfigPliee); if (!HashMateriaux.Contains(Materiau)) { continue; } Materiau = ForcerMateriau.IsRefAndNotEmpty(Materiau); listeElement.AjouterElement(QuantiteBarre, RefDossier, Materiau, Profil, Longueur, A, B); } } } ExecuterEn(); return(listeElement.ListeLgProfil); } catch (Exception e) { this.LogErreur(new Object[] { e }); } return(null); }
protected override void Command() { CreerDossierDVP(); WindowLog.Ecrire(String.Format("Dossier :\r\n{0}", new DirectoryInfo(DossierExport).Name)); try { eTypeCorps Filtre = PrendreEnCompteTole ? eTypeCorps.Barre | eTypeCorps.Tole : eTypeCorps.Barre; HashSet <String> HashMateriaux = new HashSet <string>(ListeMateriaux); var dic = MdlBase.DenombrerDossiers(ComposantsExterne, fDossier => { BodyFolder swDossier = fDossier.GetSpecificFeature2(); if (Filtre.HasFlag(swDossier.eTypeDeDossier()) && HashMateriaux.Contains(swDossier.eGetMateriau())) { return(true); } return(false); } ); if (ListerUsinages) { Nomenclature.TitreColonnes("Barre ref.", "Materiau", "Profil", "Lg", "Nb", "Usinage Ext 1", "Usinage Ext 2", "Détail des Usinage interne"); } else { Nomenclature.TitreColonnes("Barre ref.", "Materiau", "Profil", "Lg", "Nb"); } int MdlPct = 0; foreach (var mdl in dic.Keys) { mdl.eActiver(swRebuildOnActivation_e.swRebuildActiveDoc); WindowLog.SautDeLigne(); WindowLog.EcrireF("[{1}/{2}] {0}", mdl.eNomSansExt(), ++MdlPct, dic.Count); int CfgPct = 0; foreach (var NomConfigPliee in dic[mdl].Keys) { WindowLog.SautDeLigne(); WindowLog.EcrireF(" [{1}/{2}] Config : \"{0}\"", NomConfigPliee, ++CfgPct, dic[mdl].Count); mdl.ShowConfiguration2(NomConfigPliee); mdl.EditRebuild3(); PartDoc Piece = mdl.ePartDoc(); var ListeDossier = dic[mdl][NomConfigPliee]; int DrPct = 0; foreach (var t in ListeDossier) { var IdDossier = t.Key; var QuantiteBarre = t.Value * Quantite; Feature fDossier = Piece.FeatureById(IdDossier); BodyFolder dossier = fDossier.GetSpecificFeature2(); var RefDossier = dossier.eProp(CONSTANTES.REF_DOSSIER); Body2 Barre = dossier.ePremierCorps(); String Profil = dossier.eProp(CONSTANTES.PROFIL_NOM); String Longueur = dossier.eProp(CONSTANTES.PROFIL_LONGUEUR); String Materiau = Barre.eGetMateriauCorpsOuPiece(Piece, NomConfigPliee); Materiau = ForcerMateriau.IsRefAndNotEmpty(Materiau); String NomFichierBarre = ConstruireNomFichierBarre(RefDossier, QuantiteBarre); WindowLog.SautDeLigne(); WindowLog.EcrireF(" - [{1}/{2}] Dossier : \"{0}\" x{3}", RefDossier, ++DrPct, ListeDossier.Count, QuantiteBarre); WindowLog.EcrireF(" Profil {0} Materiau {1}", Profil, Materiau); List <String> Liste = new List <String>() { RefDossier, Materiau, Profil, Math.Round(Longueur.eToDouble()).ToString(), "× " + QuantiteBarre.ToString() }; if (ListerUsinages) { var analyse = new AnalyseBarre(Barre, mdl); Dictionary <String, Double> Dic = new Dictionary <string, double>(); foreach (var u in analyse.ListeFaceUsinageSection) { String nom = u.ListeFaceDecoupe.Count + " face - Lg " + Math.Round(u.LgUsinage * 1000, 1); if (Dic.ContainsKey(nom)) { Dic[nom] += 1; } else { Dic.Add(nom, 1); } } Liste.Add(Math.Round(analyse.ListeFaceUsinageExtremite[0].LgUsinage * 1000, 1).ToString()); if (analyse.ListeFaceUsinageExtremite.Count > 1) { Liste.Add(Math.Round(analyse.ListeFaceUsinageExtremite[1].LgUsinage * 1000, 1).ToString()); } else { Liste.Add(""); } foreach (var nom in Dic.Keys) { Liste.Add(Dic[nom] + "x [ " + nom + " ]"); } } Nomenclature.AjouterLigne(Liste.ToArray()); if (ExporterBarres) { //mdl.ViewZoomtofit2(); //mdl.ShowNamedView2("*Isométrique", 7); String CheminFichier; ModelDoc2 mdlBarre = Barre.eEnregistrerSous(Piece, DossierExport, NomFichierBarre, TypeExport, out CheminFichier); if (CreerPdf3D) { String CheminPDF = Path.Combine(DossierExportPDF, NomFichierBarre + eTypeFichierExport.PDF.GetEnumInfo <ExtFichier>()); mdlBarre.SauverEnPdf3D(CheminPDF); } mdlBarre.eFermer(); } } } mdl.eFermerSiDifferent(MdlBase); } WindowLog.SautDeLigne(); WindowLog.Ecrire(Nomenclature.ListeLignes()); CheminNomenclature = Path.Combine(DossierExport, "Nomenclature.txt"); StreamWriter s = new StreamWriter(CheminNomenclature); s.Write(Nomenclature.GenererTableau()); s.Close(); } catch (Exception e) { this.LogErreur(new Object[] { e }); } }
protected override void Command() { try { if (ConvertirEsquisse) { WindowLog.Ecrire("Attention !!!"); WindowLog.Ecrire("Les dvp seront convertis en esquisse"); WindowLog.SautDeLigne(); } CreerDossierDVP(); eTypeCorps Filtre = eTypeCorps.Tole; HashSet <String> HashMateriaux = new HashSet <string>(ListeMateriaux); HashSet <String> HashEp = new HashSet <string>(ListeEp); var dic = MdlBase.DenombrerDossiers(ComposantsExterne, fDossier => { BodyFolder swDossier = fDossier.GetSpecificFeature2(); if (Filtre.HasFlag(swDossier.eTypeDeDossier()) && HashMateriaux.Contains(swDossier.eGetMateriau())) { String Ep = swDossier.ePremierCorps().eEpaisseurCorps().ToString(); if (HashEp.Contains(Ep)) { return(true); } } return(false); } ); int MdlPct = 0; foreach (var mdl in dic.Keys) { mdl.eActiver(swRebuildOnActivation_e.swRebuildActiveDoc); WindowLog.SautDeLigne(); WindowLog.EcrireF("[{1}/{2}] {0}", mdl.eNomSansExt(), ++MdlPct, dic.Count); int CfgPct = 0; foreach (var NomConfigPliee in dic[mdl].Keys) { WindowLog.SautDeLigne(); WindowLog.EcrireF(" [{1}/{2}] Config : \"{0}\"", NomConfigPliee, ++CfgPct, dic[mdl].Count); mdl.ShowConfiguration2(NomConfigPliee); mdl.EditRebuild3(); PartDoc Piece = mdl.ePartDoc(); var ListeDossier = dic[mdl][NomConfigPliee]; int DrPct = 0; foreach (var t in ListeDossier) { var IdDossier = t.Key; var QuantiteTole = t.Value * Quantite; Feature fDossier = Piece.FeatureById(IdDossier); BodyFolder dossier = fDossier.GetSpecificFeature2(); var RefDossier = dossier.eProp(CONSTANTES.REF_DOSSIER); Body2 Tole = dossier.eCorpsDeTolerie(); WindowLog.SautDeLigne(); WindowLog.EcrireF(" - [{1}/{2}] Dossier : \"{0}\" x{3}", RefDossier, ++DrPct, ListeDossier.Count, QuantiteTole); String Materiau = Tole.eGetMateriauCorpsOuPiece(Piece, NomConfigPliee); Materiau = ForcerMateriau.IsRefAndNotEmpty(Materiau); Double Epaisseur = Tole.eEpaisseurCorps(); String NomConfigDepliee = Sw.eNomConfigDepliee(NomConfigPliee, RefDossier); WindowLog.EcrireF(" Ep {0} / Materiau {1}", Epaisseur, Materiau); WindowLog.EcrireF(" Config {0}", NomConfigDepliee); if (ConvertirEsquisse) { if (!mdl.eListeNomConfiguration().Contains(NomConfigDepliee)) { mdl.CreerConfigDepliee(NomConfigDepliee, NomConfigPliee); } WindowLog.EcrireF(" Configuration crée : {0}", NomConfigDepliee); mdl.ShowConfiguration2(NomConfigDepliee); Tole.DeplierTole(mdl, NomConfigDepliee); } else if (!mdl.ShowConfiguration2(NomConfigDepliee)) { DicErreur.Add(mdl.eNomSansExt() + " -> cfg : " + NomConfigPliee + " - No : " + RefDossier + " = " + NomConfigDepliee); WindowLog.EcrireF("La configuration n'éxiste pas"); continue; } mdl.EditRebuild3(); DrawingDoc dessin = CreerPlan(Materiau, Epaisseur); dessin.eModelDoc2().eActiver(); Sheet Feuille = dessin.eFeuilleActive(); View v = CreerVueToleDvp(dessin, Feuille, Piece, NomConfigDepliee, RefDossier, Materiau, QuantiteTole, Epaisseur); if (ConvertirEsquisse) { mdl.ShowConfiguration2(NomConfigPliee); mdl.EditRebuild3(); mdl.DeleteConfiguration2(NomConfigDepliee); } } NouvelleLigne = true; } mdl.eFermerSiDifferent(MdlBase); } foreach (DrawingDoc dessin in DicDessins.Values) { int Errors = 0, Warnings = 0; dessin.eModelDoc2().eActiver(); dessin.eFeuilleActive().eAjusterAutourDesVues(); dessin.eModelDoc2().ViewZoomtofit2(); dessin.eModelDoc2().Save3((int)swSaveAsOptions_e.swSaveAsOptions_SaveReferenced + (int)swSaveAsOptions_e.swSaveAsOptions_Silent, ref Errors, ref Warnings); } if (FermerPlan) { foreach (ModelDoc2 dessin in DicDessins.Values) { dessin.eFermer(); } } if (DicErreur.Count > 0) { WindowLog.SautDeLigne(); WindowLog.Ecrire("Liste des erreurs :"); foreach (var item in DicErreur) { WindowLog.Ecrire(" - " + item); } WindowLog.SautDeLigne(); } else { WindowLog.Ecrire("Pas d'erreur"); } File.WriteAllText(Path.Combine(DossierDVP, "Log_CreerDvp.txt"), WindowLog.Resume); } catch (Exception e) { this.LogErreur(new Object[] { e }); } }
/// <summary> /// Renvoi la liste des modeles avec la liste des configurations, des dossiers /// et les quantites de chaque dossier dans l'assemblage /// Modele : ModelDoc2 /// |-Config1 : Nom de la configuration /// | |-Dossier1 : Comparaison avec la propriete RefDossier, référence à l'Id de la fonction pour pouvoir le selectionner plus tard /// | | |- Nb : quantite de corps identique dans le modele complet /// | | /// | |-Dossier2 /// | |- Nb /// |-Config 2 /// | etc... /// </summary> /// <param name="mdlBase"></param> /// <param name="composantsExterne"></param> /// <param name="filtreDossier"></param> /// <returns></returns> public static SortedDictionary <ModelDoc2, SortedDictionary <String, SortedDictionary <int, int> > > DenombrerDossiers(this ModelDoc2 mdlBase, Boolean composantsExterne, Predicate <Feature> filtreDossier = null, Boolean fermerFichier = false) { SortedDictionary <ModelDoc2, SortedDictionary <String, SortedDictionary <int, int> > > dic = new SortedDictionary <ModelDoc2, SortedDictionary <String, SortedDictionary <int, int> > >(new CompareModelDoc2()); try { var ListeComposants = mdlBase.ListerComposants(composantsExterne); var ListeDossiers = new Dictionary <String, Dossier>(); Predicate <Feature> Test = delegate(Feature fDossier) { BodyFolder SwDossier = fDossier.GetSpecificFeature2(); if (SwDossier.IsRef() && SwDossier.eNbCorps() > 0 && !SwDossier.eEstExclu() && (filtreDossier.IsNull() || filtreDossier(fDossier))) { return(true); } return(false); }; foreach (var mdl in ListeComposants.Keys) { mdl.eActiver(swRebuildOnActivation_e.swRebuildActiveDoc); foreach (var t in ListeComposants[mdl]) { var cfg = t.Key; var nbCfg = t.Value; mdl.ShowConfiguration2(cfg); mdl.EditRebuild3(); var Piece = mdl.ePartDoc(); foreach (var fDossier in Piece.eListeDesFonctionsDePiecesSoudees(Test)) { BodyFolder SwDossier = fDossier.GetSpecificFeature2(); var RefDossier = SwDossier.eProp(CONSTANTES.REF_DOSSIER); if (ListeDossiers.ContainsKey(RefDossier)) { ListeDossiers[RefDossier].Nb += SwDossier.eNbCorps() * nbCfg; } else { var dossier = new Dossier(RefDossier, mdl, cfg, fDossier.GetID()); dossier.Nb = SwDossier.eNbCorps() * nbCfg; ListeDossiers.Add(RefDossier, dossier); } } } if (fermerFichier) { mdl.eFermerSiDifferent(mdlBase); } ; } // Conversion d'une liste de dossier // en liste de modele foreach (var dossier in ListeDossiers.Values) { if (dic.ContainsKey(dossier.Mdl)) { var lcfg = dic[dossier.Mdl]; if (lcfg.ContainsKey(dossier.Config)) { var ldossier = lcfg[dossier.Config]; ldossier.Add(dossier.Id, dossier.Nb); } else { var ldossier = new SortedDictionary <int, int>(); ldossier.Add(dossier.Id, dossier.Nb); lcfg.Add(dossier.Config, ldossier); } } else { var ldossier = new SortedDictionary <int, int>(); ldossier.Add(dossier.Id, dossier.Nb); var lcfg = new SortedDictionary <String, SortedDictionary <int, int> >(new WindowsStringComparer()); lcfg.Add(dossier.Config, ldossier); dic.Add(dossier.Mdl, lcfg); } } } catch (Exception e) { Log.LogErreur(new Object[] { e }); } return(dic); }