.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

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

9 REPLIES 9
SOLVED
Reply
Message 1 of 10
chockalingam
3728 Views, 9 Replies

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

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

9 REPLIES 9
Message 2 of 10
kdub_nz
in reply to: chockalingam

 

What have you tried. ?

 

... and what documentation have you looked at ?

//

Everything will work just as you expect it to, unless your expectations are incorrect.

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

Message 3 of 10
chockalingam
in reply to: kdub_nz

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

 

 

Message 4 of 10
kdub_nz
in reply to: chockalingam

 

What strings do you want to use ?

 

 

//

Everything will work just as you expect it to, unless your expectations are incorrect.

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

Message 5 of 10
chockalingam
in reply to: chockalingam

I want to send the color as string

 

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

Message 6 of 10
kdub_nz
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

 

 

 

 

//

Everything will work just as you expect it to, unless your expectations are incorrect.

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

Message 7 of 10
dgorsman
in reply to: kdub_nz

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.
"I don't know" is the beginning of knowledge, not the end.


Message 8 of 10
kdub_nz
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
        };
    }
}

 

 

 

//

Everything will work just as you expect it to, unless your expectations are incorrect.

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

Message 9 of 10
chockalingam
in reply to: chockalingam

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

Message 10 of 10
kdub_nz
in reply to: chockalingam

 

You're welcome.

It was an interesting technical problem.

 

Regards

 

//

Everything will work just as you expect it to, unless your expectations are incorrect.

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

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost