• Industries
  • Products
  • Buy
  • Services & Support
  • Communities
  • Discussion Groups

    .NET

    Reply
    Active Contributor
    Posts: 43
    Registered: ‎03-06-2012
    Accepted Solution

    Changing the Color, Line type and Line weight using .Net

    475 Views, 9 Replies
    03-08-2012 04:37 AM

    How to change the Color, line type and Line weight for the Line using .Net. 

    Please use plain text.
    Valued Mentor
    KerryBrown
    Posts: 259
    Registered: ‎11-29-2008

    Re: Changing the Color, Line type and Line weight using .Net

    03-08-2012 04:45 AM in reply to: chockalingam

     

    What have you tried. ?

     

    ... and what documentation have you looked at ?

    //-------------------------------------------------------

    class keyThumper<T> : Lazy<T>;      another  Swamper


    I do not endorse the social media app links below:smileyembarrassed:

    Please use plain text.
    Active Contributor
    Posts: 43
    Registered: ‎03-06-2012

    Re: Changing the Color, Line type and Line weight using .Net

    03-08-2012 04:50 AM in reply to: KerryBrown

    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

     

     

    Please use plain text.
    Valued Mentor
    KerryBrown
    Posts: 259
    Registered: ‎11-29-2008

    Re: Changing the Color, Line type and Line weight using .Net

    03-08-2012 04:56 AM in reply to: chockalingam

     

    What strings do you want to use ?

     

     

    //-------------------------------------------------------

    class keyThumper<T> : Lazy<T>;      another  Swamper


    I do not endorse the social media app links below:smileyembarrassed:

    Please use plain text.
    Active Contributor
    Posts: 43
    Registered: ‎03-06-2012

    Re: Changing the Color, Line type and Line weight using .Net

    03-08-2012 04:57 AM in reply to: chockalingam

    I want to send the color as string

     

    ex: red, white, ByLayer........

    Please use plain text.
    Valued Mentor
    KerryBrown
    Posts: 259
    Registered: ‎11-29-2008

    Re: Changing the Color, Line type and Line weight using .Net

    03-08-2012 05:18 AM in reply to: chockalingam

     

    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

     

     

     

     

    //-------------------------------------------------------

    class keyThumper<T> : Lazy<T>;      another  Swamper


    I do not endorse the social media app links below:smileyembarrassed:

    Please use plain text.
    *Expert Elite*
    dgorsman
    Posts: 3,285
    Registered: ‎10-12-2006

    Re: Changing the Color, Line type and Line weight using .Net

    03-08-2012 10:33 AM in reply to: KerryBrown

    Or a (switch...), since color values are mutually exclusive.  The various case statements would associate the strings with the enumerated values, or ACI values.

    ----------------------------------
    If you are going to fly by the seat of your pants, expect friction burns.
    Adopt. Adapt. Overcome. Or be overcome.


    Please use plain text.
    Valued Mentor
    KerryBrown
    Posts: 259
    Registered: ‎11-29-2008

    Re: Changing the Color, Line type and Line weight using .Net

    03-08-2012 04:26 PM in reply to: chockalingam

     

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

     

     

     

    //-------------------------------------------------------

    class keyThumper<T> : Lazy<T>;      another  Swamper


    I do not endorse the social media app links below:smileyembarrassed:

    Please use plain text.
    Active Contributor
    Posts: 43
    Registered: ‎03-06-2012

    Re: Changing the Color, Line type and Line weight using .Net

    03-08-2012 08:03 PM in reply to: chockalingam

    Thanks for solution, this code helps me................

    Please use plain text.
    Valued Mentor
    KerryBrown
    Posts: 259
    Registered: ‎11-29-2008

    Re: Changing the Color, Line type and Line weight using .Net

    03-09-2012 05:49 PM in reply to: chockalingam

     

    You're welcome.

    It was an interesting technical problem.

     

    Regards

     

    //-------------------------------------------------------

    class keyThumper<T> : Lazy<T>;      another  Swamper


    I do not endorse the social media app links below:smileyembarrassed:

    Please use plain text.