public override void Execute() { try { var DateTimeStart = DateTime.Now; DsApp.AbortRunningCommand(); CommandMessage CmdLine = DsApp.GetCommandMessage(); if (null == CmdLine) { return; } Document DsDoc = DsApp.GetActiveDocument(); Model Mdl = DsDoc.GetModel(); SketchManager SkMgr = Mdl.GetSketchManager(); SelectionManager SlMgr = DsDoc.GetSelectionManager(); object ObjType = null; object ObjEntites = null; Int32[] TabTypes = null; object[] TabEntites = null; string[] TabNomsCalques = null; EntityHelper dsEntityHelper = DsApp.GetEntityHelper(); ///============================================================================== CmdLine.PrintLine("Suppression des gravures"); TabNomsCalques = new string[] { "GRAVURE", "Gravure", "gravure" }; SkMgr.GetEntities(null, TabNomsCalques, out ObjType, out ObjEntites); TabTypes = (Int32[])ObjType; TabEntites = (object[])ObjEntites; foreach (var ent in TabEntites) { dsEntityHelper.SetErased(ent, true); } TimeSpan t = DateTime.Now - DateTimeStart; CmdLine.PrintLine(String.Format("Executé en {0}", GetSimplestTimeSpan(t))); } catch (Exception e) { Log.Write(e); } }
public override void Execute() { try { var DateTimeStart = DateTime.Now; DsApp.AbortRunningCommand(); CommandMessage CmdLine = DsApp.GetCommandMessage(); if (null == CmdLine) { return; } //============================================================================== CmdLine.PrintLine("Calque '0' actif"); Document DsDoc = DsApp.GetActiveDocument(); LayerManager LyMgr = DsDoc.GetLayerManager(); Layer L0 = LyMgr.GetLayer("0"); L0.Activate(); // Creer les calques de pliage Color c; dsCreateObjectResult_e Erreur; //============================================================================== CmdLine.PrintLine("Création du claque 'LIGNES DE PLIAGE'"); Layer LigneDePliage; LyMgr.CreateLayer("LIGNES DE PLIAGE", out LigneDePliage, out Erreur); c = LigneDePliage.Color; c.SetColorByIndex(252); LigneDePliage.Color = c; //============================================================================== CmdLine.PrintLine("Création du claque 'NOTE DE PLIAGE'"); Layer NoteDePliage = null; LyMgr.CreateLayer("NOTE DE PLIAGE", out NoteDePliage, out Erreur); c = NoteDePliage.Color; c.SetColorByIndex(126); NoteDePliage.Color = c; Model Mdl = DsDoc.GetModel(); SketchManager SkMgr = Mdl.GetSketchManager(); SelectionManager SlMgr = DsDoc.GetSelectionManager(); SelectionFilter SlFilter; object ObjType = null; object ObjEntites = null; Int32[] TabTypes = null; object[] TabEntites = null; string[] TabNomsCalques = null; //============================================================================== CmdLine.PrintLine("Couleur des entité sur 'DuCalque'"); TabNomsCalques = GetTabNomsCalques(DsDoc); SkMgr.GetEntities(null, TabNomsCalques, out ObjType, out ObjEntites); TabEntites = (object[])ObjEntites; EntityHelper dsEntityHelper = DsApp.GetEntityHelper(); foreach (object entity in TabEntites) { Color ce = dsEntityHelper.GetColor(entity); ce.SetNamedColor(dsNamedColor_e.dsNamedColor_ByLayer); dsEntityHelper.SetColor(entity, ce); } //============================================================================== CmdLine.PrintLine("Transfert des lignes et notes de pliage sur les calques correspondants"); TabNomsCalques = new string[] { "0" }; SkMgr.GetEntities(null, TabNomsCalques, out ObjType, out ObjEntites); TabTypes = (Int32[])ObjType; TabEntites = (object[])ObjEntites; for (int i = 0; i < TabEntites.GetLength(0); i++) { dsObjectType_e tpe = (dsObjectType_e)TabTypes[i]; if (tpe == dsObjectType_e.dsLineType) { Line L = (Line)TabEntites[i]; if (L.LineStyle == "SLD-Center") { L.Layer = LigneDePliage.Name; } } else if (tpe == dsObjectType_e.dsNoteType) { Note N = (Note)TabEntites[i]; N.Layer = NoteDePliage.Name; } } //============================================================================== CmdLine.PrintLine("Conversion des textes à graver en lignes"); SlFilter = SlMgr.GetSelectionFilter(); SlFilter.Clear(); SlFilter.AddEntityType(dsObjectType_e.dsNoteType); SlFilter.Active = true; TabNomsCalques = new string[] { "GRAVURE" }; SkMgr.GetEntities(SlFilter, TabNomsCalques, out ObjType, out ObjEntites); TabTypes = (Int32[])ObjType; TabEntites = ObjEntites as object[]; if (TabEntites != null && TabEntites.Length > 0) { CmdLine.PrintLine(TabEntites.Length + " texte(s) convertis"); foreach (var Texte in TabEntites) { SlMgr.ClearSelections(dsSelectionSetType_e.dsSelectionSetType_Current); dsEntityHelper.Select(Texte, true); DsApp.RunCommand("ECLATERTEXTE\n", true); } } DsApp.RunCommand("_CSICON\nP\n", true); //============================================================================== CmdLine.PrintLine("Purger le dessin"); DsApp.RunCommand("_-CLEAN\n_All\n*\n_No\n", true); TimeSpan t = DateTime.Now - DateTimeStart; CmdLine.PrintLine(String.Format("Executé en {0}", GetSimplestTimeSpan(t))); } catch (Exception e) { Log.Write(e); } }
public override void Execute() { try { Sm = DsApp.GetActiveDocument().GetModel().GetSketchManager(); DsApp.AbortRunningCommand(); CommandMessage CmdLine = DsApp.GetCommandMessage(); if (null == CmdLine) { return; } //Entree utilisateur double toleranceEcart = 0.1, toleranceAngle = 5, toleranceEcartMax = 0.1; bool methodeCalcul = true, toutesLesSplines = true, supprimerOriginal = true; // Erreur avec le premier prompt, la commande est automatiquement annulée // Pour contourner le pb, on lance une commande à vide. { String sss = ""; CmdLine.PromptForString(true, "", "", out sss); } string[] KeyWord = new string[] { "Oui", "Non", "Distance", "Max", "Angle", "Calcul", "SupprimerOriginal" }; Action <string> ModifierOptions = delegate(string s) { if (s == "Distance") { CmdLine.PromptForDouble("Deviation de distance par rapport à la spline ", toleranceEcart, out toleranceEcart); } else if (s == "Max") { CmdLine.PromptForDouble("Deviation de distance maximum absolue ", toleranceEcartMax, out toleranceEcartMax); } else if (s == "Angle") { CmdLine.PromptForDouble("Deviation d'angle par rapport à la spline ", toleranceAngle, out toleranceAngle); } else if (s == "Calcul") { CmdLine.PromptForBool("Deviation en pourcent de la longueur ", "Oui", "Non", methodeCalcul, out methodeCalcul); } else if (s == "SupprimerOriginal") { CmdLine.PromptForBool("Supprimer l'original ", "Oui", "Non", supprimerOriginal, out supprimerOriginal); } }; string Option; dsPromptResultType_e result; CmdLine.PromptExplanation = "Oui"; do { result = CmdLine.PromptForBoolOrKeyword("Convertir toutes les splines", "Erreur", KeyWord, KeyWord, (int)dsPromptInit_e.dsPromptInit_UsePromptExplanation, "Oui", "Non", true, out Option, out toutesLesSplines); switch (result) { case dsPromptResultType_e.dsPromptResultType_Keyword: ModifierOptions(Option); break; case dsPromptResultType_e.dsPromptResultType_Cancel: return; default: break; } } while (result != dsPromptResultType_e.dsPromptResultType_Value); if (result == dsPromptResultType_e.dsPromptResultType_Cancel) { return; } Document DsDoc = DsApp.GetActiveDocument(); Model Mdl = DsDoc.GetModel(); SketchManager SkMgr = Mdl.GetSketchManager(); SelectionManager SlMgr = DsDoc.GetSelectionManager(); SelectionFilter SlFilter; SlFilter = SlMgr.GetSelectionFilter(); object[] TabEntites = null; CmdLine.PrintLine($"Angle : {toleranceAngle}° Dist : {toleranceEcart}mm Max : {toleranceEcartMax}mm"); CmdLine.PrintLine($" Toutes les splines : {(toutesLesSplines ? "Oui" : "Non")} Supprimer l'original : {(supprimerOriginal?"Oui":"Non")} Calcul % : {(methodeCalcul ? "Oui" : "Non")}"); if (toutesLesSplines) { SlFilter.Clear(); SlFilter.AddEntityType(dsObjectType_e.dsSplineType); SlFilter.Active = true; object ObjType = null; object ObjEntites = null; string[] TabNomsCalques = GetTabNomsCalques(DsDoc); SkMgr.GetEntities(SlFilter, TabNomsCalques, out ObjType, out ObjEntites); TabEntites = ObjEntites as object[]; } else { SlFilter.Clear(); SlFilter.AddEntityType(dsObjectType_e.dsSplineType); SlFilter.Active = true; if (CmdLine.PromptForSelection(false, "Selectionnez la spline", "Ce n'est pas une spline")) { dsObjectType_e entityType; var count = SlMgr.GetSelectedObjectCount(dsSelectionSetType_e.dsSelectionSetType_Previous); TabEntites = new object[count]; for (int i = 0; i < count; i++) { object selectedEntity = SlMgr.GetSelectedObject(dsSelectionSetType_e.dsSelectionSetType_Previous, i, out entityType); if (dsObjectType_e.dsSplineType == entityType) { TabEntites[i] = selectedEntity; } } } } var DateTimeStart = DateTime.Now; long NbArc = 0; Action <object> Convertir = delegate(object o) { Spline Spline = o as Spline; if (Spline == null) { return; } SplineConverter SplConverter = new SplineConverter( Spline, toleranceEcart, toleranceAngle, toleranceEcartMax, methodeCalcul ? SplineConverter.eCalculTolerance.Absolu : SplineConverter.eCalculTolerance.Pourcent ); iLine?L = SplConverter.EnLigne(); if (L != null) { var l = (iLine)L; SkMgr.InsertLine(l.P1.X, l.P1.Y, l.P1.Z, l.P2.X, l.P2.Y, l.P2.Z); } else { var List = SplConverter.EnPolyligne(); foreach (var arc in List) { SkMgr.InsertArcBy3Points(arc.P1.MathPoint(), arc.P2.MathPoint(), arc.P3.MathPoint()); } NbArc += List.Count; } }; if (TabEntites != null && TabEntites.Length > 0) { CmdLine.PrintLine($"{TabEntites.Length} spline(s) selectionnées"); if (TabEntites.Length == 1) { Convertir(TabEntites[0]); } else { Parallel.ForEach(TabEntites, Convertir); } CmdLine.PrintLine($"{TabEntites.Length} spline(s) converties en {NbArc} arc(s)"); if (supprimerOriginal) { for (int i = 0; i < TabEntites.Length; i++) { Spline s = (Spline)TabEntites[i]; s.Erased = true; } } } TimeSpan t = DateTime.Now - DateTimeStart; CmdLine.PrintLine(String.Format("Executé en {0}", GetSimplestTimeSpan(t))); } catch (Exception e) { Log.Write(e); } }