2016-12-03 50 views
0

enter image description here的Autocad開發商:如何獲取使用C#

大家好對象顏色的RGB模式,我想獲得在RGB模式中屬性的對象顏色。我已嘗試使用類似string cecolor = acDocComObj.GetVariable("CECOLOR");的代碼,但這不會返回TrueColor中的代碼。任何人都知道如何做到這一點?

+0

它現在給你什麼? – Abion47

+0

字符串格式,如RGB:128,12,113或213(索引號)或Pantone。基於用戶在Autocad中選擇的內容。 –

+0

@ G.C.Looi您應該在問題中包含這些信息,而不僅僅是在評論中。 –

回答

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]); 
     } 
+0

嗨,先生,再次感謝。 –

1

任何實體在AutoCAD(例如直線,圓,塊,等等),則可以使用。顏色屬性(.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 }; 

至於你提到失-process COM/ActiveX,你可以嘗試類似的東西:

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

謝謝,但是我擔心這不是可以解決我的問題的答案,因爲這段代碼是用於進程內的,但不適用於interop。 –

+0

我編輯了我的答案,COM/ActiveX基本上相同的方法 –