How to change the Color, line type and Line weight for the Line using .Net.
Solved! Go to Solution.
Solved by kdub_nz. Go to Solution.
I tried the following
newentLine.Color = Autodesk.AutoCAD.Colors.Color.FromColorIndex(Autodesk.AutoCAD.Colors.ColorMethod.ByLayer, 190)
where, newentLine is a entity
This works, but the issue is i want to change the color with a string input. I don't know how to do it
Sounds like a simple
if (..)
//--
else if ( .. )
//--
else if ( .. )
//--
else if ( .. )
//--
else ( .. )
construct would work for you.
... or you could use a dictionary if you're comfortable with that.
Depending on the source of the string you may be advised to change the case to a consistant format ....
Regards
Everything will work just as you expect it to, unless your expectations are incorrect.
class keyThumper<T> : Lazy<T>; another Swamper
Or a (switch...), since color values are mutually exclusive. The various case statements would associate the strings with the enumerated values, or ACI values.
One option:
Code solution is posted at http://www.theswamp.org/index.php?topic=41172.msg463389#msg463389
// (C) CodeHimBelonga kdub using System; using System.Windows; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Runtime; using StringToColorTest; using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application; [assembly: CommandClass(typeof (StringToColor))] namespace StringToColorTest { public class StringToColor { [CommandMethod("DoIt")] public void StringToColorTest_01() { Editor ed = AcadApp.DocumentManager.MdiActiveDocument.Editor; string colorString = AskUserForColorString(ed); int colorIndex = ColorIndexFromString(colorString); MessageBox.Show( "Color String : " + colorString + "\nTranslates to Integer : " + colorIndex.ToString(), "StringToColorTest_01"); } // // public string AskUserForColorString(Editor ed) { PromptStringOptions strOpts = new PromptStringOptions("\nEnter Color: "); strOpts.AllowSpaces = false; PromptResult res = ed.GetString(strOpts); if (res.Status != PromptStatus.OK) { return "ByLayer"; } return res.StringResult; } // // public int ColorIndexFromString(string colorString) { int result = -1; if (int.TryParse(colorString, out result)) { result = ((result >= 0) && (result <= 256) ? result : 256); } else { try { MyColors colorIndex = (MyColors) Enum.Parse(typeof (MyColors), colorString, true); if (Enum.IsDefined(typeof(MyColors), colorIndex)) { result = (int) colorIndex; } } catch (ArgumentException) { AcadApp.DocumentManager.MdiActiveDocument.Editor.WriteMessage( "Blooper !!"); return 256; } } return result; } // // private enum MyColors { ByBlock = 0, Red = 1, Yellow = 2, Green = 3, Cyan = 4, Blue = 5, Magenta = 6, White = 7, Grey = 8, ByLayer = 256 }; } }
Everything will work just as you expect it to, unless your expectations are incorrect.
class keyThumper<T> : Lazy<T>; another Swamper