Autocad Developer:如何使用C#在RGB模式下获取对象颜色

时间:2016-12-03 03:31:52

标签: c# autocad autocad-plugin

enter image description here

大家好,我想在RGB模式下获取属性中的对象颜色。我尝试了像string cecolor = acDocComObj.GetVariable("CECOLOR");这样的代码,但这并没有返回TrueColor。有人知道怎么做吗?

2 个答案:

答案 0 :(得分:1)

对于AutoCAD中的任何实体(例如,直线,圆,块等),您可以使用.Color属性(对于.NET进程内API):

Entity ent = // get the entity here;
Autodesk.AutoCAD.Colors.Color c = ent.Color;
int[] rgb = new int[] { c.Red, c.Green, c.Blue };

正如您提到的进程外COM / ActiveX,您可以尝试类似的东西:

AcadEntity ent = // get the entity here;
int[] rgb = new int[] { ent.TrueColor.Red, ent.TrueColor.Green, ent.TrueColor.Blue };

答案 1 :(得分:1)

我在Autodesk讨论组上的回复。

        AcadAcCmColor color = new AcadAcCmColor();
        int index = 0;
        if (colorName.ToUpper() == "BYBLOCK")
        {
            color.ColorIndex = AcColor.acByBlock;
        }
        else if (colorName.ToUpper() == "BYLAYER")
        {
            color.ColorIndex = AcColor.acByLayer;
        }
        else if (int.TryParse(colorName, out index))
        {
            color.ColorIndex = (AcColor)index;
        }
        else if (colorName.ToUpper().StartsWith("RGB:"))
        {
            string[] rgb = colorName.Substring(4).Split(',');
            color.SetRGB(int.Parse(rgb[0]), int.Parse(rgb[1]), int.Parse(rgb[2]));
        }
        else
        {
            string[] bookColor = colorName.Split('$');
            color.SetColorBookColor(bookColor[0], bookColor[1]);
        }