Отображаемое название для значений перечисления LineWeight.

Автор Тема: Отображаемое название для значений перечисления LineWeight.  (Прочитано 9574 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Здравствуйте!
Понадобилось мне в диалоге отобразить заданный объекту вес линии. В коде внутри он у меня хранится в виде LineWeigth. но вывести его хочется в том виде, в котором привык пользователь. Например, для русской версии вместо "LineWeight015" вывести "0.15 мм". Есть ли в API такой встроенный конвертер? Ведь в диалогах везде эти значения выдаются адаптированными. Может быть, где-то в Internal? Как-то сходу не получилось найти и гугл не помог. Так не хочется делать костыль в виде:
Код - C# [Выбрать]
  1. private string GetDisplayName(LineWeight lineWeight)
  2. {
  3.     switch (lineWeight)
  4.     {
  5.         case LineWeight.ByBlock:
  6.             return "По блоку";
  7.         case LineWeight.ByLayer:
  8.             return "По слою";
  9.         //// ...
  10.         default:
  11.             return null;
  12.     }
  13. }
  14.  
  15. private LineWeight GetFromDisplayName(string name)
  16. {
  17.     switch (name)
  18.     {
  19.         case "По блоку":
  20.             return LineWeight.ByBlock;
  21.         case "По слою":
  22.             return LineWeight.ByLayer;
  23.         //// ...
  24.         default:
  25.             throw new ArgumentException("Invalid name!");
  26.     }
  27. }
  28.  

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Есть ли в API такой встроенный конвертер? Ведь в диалогах везде эти значения выдаются адаптированными

Я тебя разочарую, но:





Оффлайн Вильдар

  • ADN Club
  • ****
  • Сообщений: 409
  • Карма: 77
  • Skype: vildar82
С другой стороны, это неизменяемая штука, можно и захардкодить разок ;D 8)

ps: если захардкодишь, то выкладывай, пригодится всем  ;D

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Есть Autodesk.AutoCAD.Windows.LineWeightDialog
Ну и:
Код - C# [Выбрать]
  1. // Autodesk.AutoCAD.DatabaseServices.LineWeight
  2. using System.ComponentModel;
  3. using Autodesk.AutoCAD.DatabaseServices;
  4. using Autodesk.AutoCAD.Runtime;
  5.  
  6. [Wrapper("AcDb::LineWeight")]
  7. [TypeConverter(typeof(LineWeightConverter))]
  8. public enum LineWeight
  9. {
  10.         LineWeight000 = 0,
  11.         LineWeight005 = 5,
  12.         LineWeight009 = 9,
  13.         LineWeight013 = 13,
  14.         LineWeight015 = 0xF,
  15.         LineWeight018 = 18,
  16.         LineWeight020 = 20,
  17.         LineWeight025 = 25,
  18.         LineWeight030 = 30,
  19.         LineWeight035 = 35,
  20.         LineWeight040 = 40,
  21.         LineWeight050 = 50,
  22.         LineWeight053 = 53,
  23.         LineWeight060 = 60,
  24.         LineWeight070 = 70,
  25.         LineWeight080 = 80,
  26.         LineWeight090 = 90,
  27.         LineWeight100 = 100,
  28.         LineWeight106 = 106,
  29.         LineWeight120 = 120,
  30.         LineWeight140 = 140,
  31.         LineWeight158 = 158,
  32.         LineWeight200 = 200,
  33.         LineWeight211 = 211,
  34.         ByLayer = -1,
  35.         ByBlock = -2,
  36.         ByLineWeightDefault = -3
  37. }
1. Для положительных значений lineWeight делишь их на 100 и получаешь значение в мм.
2. Отрицательных всего 3 значения - можно и захардкодить.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Дмитрий Загорулькин 29-09-2020, 10:25:14

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Вообще-то всё проще:
Код - C# [Выбрать]
  1. public static string ConvertLineWeightToString(LineWeight lw)
  2. {
  3.   return new LineWeightConverter().ConvertToString(lw);
  4. }
  5. public static LineWeight ConvertLineWeightFromString(string s)
  6. {
  7.   return (LineWeight)new LineWeightConverter().ConvertFromString(s);
  8. }
  9. // Только для теста
  10. [CommandMethod("PrintLineWeight")]
  11. public static void PrintLineWeight()
  12. {
  13.   var doc = AcApp.DocumentManager.MdiActiveDocument;
  14.   var ed = doc.Editor;
  15.   string lws = ConvertLineWeightToString(LineWeight.LineWeight040);
  16.   ed.WriteMessage($"\nLineWeight.LineWeight040 = {lws} ");
  17.   LineWeight lw = ConvertLineWeightFromString(lws);
  18.   ed.WriteMessage($"\nLineWeight.LineWeight040 = {lw} ");
  19. }



« Последнее редактирование: 29-09-2020, 00:00:57 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Я тебя разочарую, но:
Да то что "мм" и "mm" - это мелочи. Подозреваю, что где-то внутри у диалога некорректно задана культура. Я с таким в Сивиле уже встречался.
Вообще-то всё проще:
Александр Наумович, спасибо большое! Это то что нужно!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Да то что "мм" и "mm" - это мелочи. Подозреваю, что где-то внутри у диалога некорректно задана культура.
Точнее используется LineWeightConverter не с той культурой. И тут интересный вопрос, который я не тестировал - нужно ли задавать ему культуру или по-умолчанию он сработает правильно (как в локализации AutoCAD).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
С другой стороны, это неизменяемая штука, можно и захардкодить разок
Да можно, конечно )
Я как-то однажды, когда только начинал кодить под автокад, захардкодил RGB составляющие для (!)всех(!) индексированных цветов AutoCAD. Я на это потратил что-то около двух-трёх часов. А когда нашёл способ получать их из API, был сильно расстроен  :) Но удалять уже не стал, лежит в библиотеке... Единственный плюс такого метода - не требуется подгрузка библиотек автокада для определения цвета. В предпросмотре WPF может быть полезно
Код - C# [Выбрать]
  1. /// <summary>
  2. /// Получение RGB составляющих для индексированного цвета
  3. /// </summary>
  4. /// <param name="index">Индекс цвета</param>
  5. /// <param name="red">Красная составляющая</param>
  6. /// <param name="green">Зелёная составляющая</param>
  7. /// <param name="blue">Синяя составляющая</param>
  8. public static void GetRGBFromIndex
  9.     (byte index, out byte red, out byte green, out by
  10. {
  11.     switch (index)
  12.     {
  13.         #region 0-99*
  14.         #region 0-9*
  15.         case 0:
  16.             red = 0; green = 0; blue = 0;
  17.             break;
  18.         case 1:
  19.             red = 255; green = 0; blue = 0;
  20.             break;
  21.         case 2:
  22.             red = 255; green = 255; blue = 0;
  23.             break;
  24.         case 3:
  25.             red = 0; green = 255; blue = 0;
  26.             break;
  27.         case 4:
  28.             red = 0; green = 255; blue = 255;
  29.             break;
  30.         case 5:
  31.             red = 0; green = 0; blue = 255;
  32.             break;
  33.         case 6:
  34.             red = 255; green = 0; blue = 255;
  35.             break;
  36.         case 7:
  37.             red = 255; green = 255; blue = 255;
  38.             break;
  39.         case 8:
  40.             red = 65; green = 65; blue = 65;
  41.             break;
  42.         case 9:
  43.             red = 128; green = 128; blue = 128;
  44.             break;
  45.         #endregion
  46.         #region 10-19*
  47.         case 10:
  48.             red = 255; green = 0; blue = 0;
  49.             break;
  50.         case 11:
  51.             red = 255; green = 170; blue = 170;
  52.             break;
  53.         case 12:
  54.             red = 189; green = 0; blue = 0;
  55.             break;
  56.         case 13:
  57.             red = 189; green = 126; blue = 126;
  58.             break;
  59.         case 14:
  60.             red = 129; green = 0; blue = 0;
  61.             break;
  62.         case 15:
  63.             red = 129; green = 86; blue = 86;
  64.             break;
  65.         case 16:
  66.             red = 104; green = 0; blue = 0;
  67.             break;
  68.         case 17:
  69.             red = 104; green = 69; blue = 69;
  70.             break;
  71.         case 18:
  72.             red = 79; green = 0; blue = 0;
  73.             break;
  74.         case 19:
  75.             red = 79; green = 53; blue = 53;
  76.             break;
  77.         #endregion
  78.         #region 20-29*
  79.         case 20:
  80.             red = 255; green = 63; blue = 0;
  81.             break;
  82.         case 21:
  83.             red = 255; green = 191; blue = 170;
  84.             break;
  85.         case 22:
  86.             red = 189; green = 46; blue = 0;
  87.             break;
  88.         case 23:
  89.             red = 189; green = 141; blue = 126;
  90.             break;
  91.         case 24:
  92.             red = 129; green = 31; blue = 0;
  93.             break;
  94.         case 25:
  95.             red = 129; green = 96; blue = 86;
  96.             break;
  97.         case 26:
  98.             red = 104; green = 25; blue = 0;
  99.             break;
  100.         case 27:
  101.             red = 104; green = 78; blue = 69;
  102.             break;
  103.         case 28:
  104.             red = 79; green = 19; blue = 0;
  105.             break;
  106.         case 29:
  107.             red = 79; green = 59; blue = 53;
  108.             break;
  109.         #endregion
  110.         #region 30-39*
  111.         case 30:
  112.             red = 255; green = 127; blue = 0;
  113.             break;
  114.         case 31:
  115.             red = 255; green = 212; blue = 170;
  116.             break;
  117.         case 32:
  118.             red = 189; green = 94; blue = 0;
  119.             break;
  120.         case 33:
  121.             red = 189; green = 157; blue = 126;
  122.             break;
  123.         case 34:
  124.             red = 129; green = 64; blue = 0;
  125.             break;
  126.         case 35:
  127.             red = 129; green = 107; blue = 86;
  128.             break;
  129.         case 36:
  130.             red = 104; green = 52; blue = 0;
  131.             break;
  132.         case 37:
  133.             red = 104; green = 86; blue = 69;
  134.             break;
  135.         case 38:
  136.             red = 79; green = 39; blue = 0;
  137.             break;
  138.         case 39:
  139.             red = 79; green = 66; blue = 53;
  140.             break;
  141.         #endregion
  142.         #region 40-49*
  143.         case 40:
  144.             red = 255; green = 191; blue = 0;
  145.             break;
  146.         case 41:
  147.             red = 255; green = 234; blue = 170;
  148.             break;
  149.         case 42:
  150.             red = 189; green = 141; blue = 0;
  151.             break;
  152.         case 43:
  153.             red = 189; green = 173; blue = 126;
  154.             break;
  155.         case 44:
  156.             red = 129; green = 96; blue = 0;
  157.             break;
  158.         case 45:
  159.             red = 129; green = 118; blue = 86;
  160.             break;
  161.         case 46:
  162.             red = 104; green = 78; blue = 0;
  163.             break;
  164.         case 47:
  165.             red = 104; green = 95; blue = 69;
  166.             break;
  167.         case 48:
  168.             red = 79; green = 59; blue = 0;
  169.             break;
  170.         case 49:
  171.             red = 79; green = 73; blue = 53;
  172.             break;
  173.         #endregion
  174.         #region 50-59*
  175.         case 50:
  176.             red = 255; green = 255; blue = 0;
  177.             break;
  178.         case 51:
  179.             red = 255; green = 255; blue = 170;
  180.             break;
  181.         case 52:
  182.             red = 189; green = 189; blue = 0;
  183.             break;
  184.         case 53:
  185.             red = 189; green = 189; blue = 126;
  186.             break;
  187.         case 54:
  188.             red = 129; green = 129; blue = 0;
  189.             break;
  190.         case 55:
  191.             red = 129; green = 129; blue = 86;
  192.             break;
  193.         case 56:
  194.             red = 104; green = 104; blue = 0;
  195.             break;
  196.         case 57:
  197.             red = 104; green = 104; blue = 69;
  198.             break;
  199.         case 58:
  200.             red = 79; green = 79; blue = 0;
  201.             break;
  202.         case 59:
  203.             red = 79; green = 79; blue = 53;
  204.             break;
  205.         #endregion
  206.         #region 60-69*
  207.         case 60:
  208.             red = 191; green = 255; blue = 0;
  209.             break;
  210.         case 61:
  211.             red = 234; green = 255; blue = 170;
  212.             break;
  213.         case 62:
  214.             red = 141; green = 189; blue = 0;
  215.             break;
  216.         case 63:
  217.             red = 173; green = 189; blue = 126;
  218.             break;
  219.         case 64:
  220.             red = 96; green = 129; blue = 0;
  221.             break;
  222.         case 65:
  223.             red = 118; green = 129; blue = 86;
  224.             break;
  225.         case 66:
  226.             red = 78; green = 104; blue = 0;
  227.             break;
  228.         case 67:
  229.             red = 95; green = 104; blue = 69;
  230.             break;
  231.         case 68:
  232.             red = 59; green = 79; blue = 0;
  233.             break;
  234.         case 69:
  235.             red = 73; green = 79; blue = 53;
  236.             break;
  237.         #endregion
  238.         #region 70-79*
  239.         case 70:
  240.             red = 127; green = 255; blue = 0;
  241.             break;
  242.         case 71:
  243.             red = 212; green = 255; blue = 170;
  244.             break;
  245.         case 72:
  246.             red = 94; green = 189; blue = 0;
  247.             break;
  248.         case 73:
  249.             red = 157; green = 189; blue = 126;
  250.             break;
  251.         case 74:
  252.             red = 64; green = 129; blue = 0;
  253.             break;
  254.         case 75:
  255.             red = 107; green = 129; blue = 86;
  256.             break;
  257.         case 76:
  258.             red = 52; green = 104; blue = 0;
  259.             break;
  260.         case 77:
  261.             red = 86; green = 104; blue = 69;
  262.             break;
  263.         case 78:
  264.             red = 39; green = 79; blue = 0;
  265.             break;
  266.         case 79:
  267.             red = 66; green = 79; blue = 53;
  268.             break;
  269.         #endregion
  270.         #region 80-89*
  271.         case 80:
  272.             red = 63; green = 255; blue = 0;
  273.             break;
  274.         case 81:
  275.             red = 191; green = 255; blue = 170;
  276.             break;
  277.         case 82:
  278.             red = 46; green = 189; blue = 0;
  279.             break;
  280.         case 83:
  281.             red = 141; green = 189; blue = 126;
  282.             break;
  283.         case 84:
  284.             red = 31; green = 129; blue = 0;
  285.             break;
  286.         case 85:
  287.             red = 96; green = 129; blue = 86;
  288.             break;
  289.         case 86:
  290.             red = 25; green = 104; blue = 0;
  291.             break;
  292.         case 87:
  293.             red = 78; green = 104; blue = 69;
  294.             break;
  295.         case 88:
  296.             red = 19; green = 79; blue = 0;
  297.             break;
  298.         case 89:
  299.             red = 59; green = 79; blue = 53;
  300.             break;
  301.         #endregion
  302.         #region 90-99*
  303.         case 90:
  304.             red = 0; green = 255; blue = 0;
  305.             break;
  306.         case 91:
  307.             red = 170; green = 255; blue = 170;
  308.             break;
  309.         case 92:
  310.             red = 0; green = 189; blue = 0;
  311.             break;
  312.         case 93:
  313.             red = 126; green = 189; blue = 126;
  314.             break;
  315.         case 94:
  316.             red = 0; green = 129; blue = 0;
  317.             break;
  318.         case 95:
  319.             red = 86; green = 129; blue = 86;
  320.             break;
  321.         case 96:
  322.             red = 0; green = 104; blue = 0;
  323.             break;
  324.         case 97:
  325.             red = 69; green = 104; blue = 69;
  326.             break;
  327.         case 98:
  328.             red = 0; green = 79; blue = 0;
  329.             break;
  330.         case 99:
  331.             red = 53; green = 79; blue = 53;
  332.             break;
  333.         #endregion
  334.         #endregion
  335.         #region 100-199*
  336.         #region 100-109*
  337.         case 100:
  338.             red = 0; green = 255; blue = 63;
  339.             break;
  340.         case 101:
  341.             red = 170; green = 255; blue = 191;
  342.             break;
  343.         case 102:
  344.             red = 0; green = 189; blue = 46;
  345.             break;
  346.         case 103:
  347.             red = 126; green = 189; blue = 141;
  348.             break;
  349.         case 104:
  350.             red = 0; green = 129; blue = 31;
  351.             break;
  352.         case 105:
  353.             red = 86; green = 129; blue = 96;
  354.             break;
  355.         case 106:
  356.             red = 0; green = 104; blue = 25;
  357.             break;
  358.         case 107:
  359.             red = 69; green = 104; blue = 78;
  360.             break;
  361.         case 108:
  362.             red = 0; green = 79; blue = 19;
  363.             break;
  364.         case 109:
  365.             red = 53; green = 79; blue = 59;
  366.             break;
  367.         #endregion
  368.         #region 110-119*
  369.         case 110:
  370.             red = 0; green = 255; blue = 127;
  371.             break;
  372.         case 111:
  373.             red = 170; green = 255; blue = 212;
  374.             break;
  375.         case 112:
  376.             red = 0; green = 189; blue = 94;
  377.             break;
  378.         case 113:
  379.             red = 126; green = 189; blue = 157;
  380.             break;
  381.         case 114:
  382.             red = 0; green = 129; blue = 64;
  383.             break;
  384.         case 115:
  385.             red = 86; green = 129; blue = 107;
  386.             break;
  387.         case 116:
  388.             red = 0; green = 104; blue = 52;
  389.             break;
  390.         case 117:
  391.             red = 69; green = 104; blue = 86;
  392.             break;
  393.         case 118:
  394.             red = 0; green = 79; blue = 39;
  395.             break;
  396.         case 119:
  397.             red = 53; green = 79; blue = 66;
  398.             break;
  399.         #endregion
  400.         #region 120-129*
  401.         case 120:
  402.             red = 0; green = 255; blue = 191;
  403.             break;
  404.         case 121:
  405.             red = 170; green = 255; blue = 234;
  406.             break;
  407.         case 122:
  408.             red = 0; green = 189; blue = 141;
  409.             break;
  410.         case 123:
  411.             red = 126; green = 189; blue = 173;
  412.             break;
  413.         case 124:
  414.             red = 0; green = 129; blue = 96;
  415.             break;
  416.         case 125:
  417.             red = 86; green = 129; blue = 118;
  418.             break;
  419.         case 126:
  420.             red = 0; green = 104; blue = 78;
  421.             break;
  422.         case 127:
  423.             red = 69; green = 104; blue = 95;
  424.             break;
  425.         case 128:
  426.             red = 0; green = 79; blue = 59;
  427.             break;
  428.         case 129:
  429.             red = 53; green = 79; blue = 73;
  430.             break;
  431.         #endregion
  432.         #region 130-139*
  433.         case 130:
  434.             red = 0; green = 255; blue = 255;
  435.             break;
  436.         case 131:
  437.             red = 170; green = 255; blue = 255;
  438.             break;
  439.         case 132:
  440.             red = 0; green = 189; blue = 189;
  441.             break;
  442.         case 133:
  443.             red = 126; green = 189; blue = 189;
  444.             break;
  445.         case 134:
  446.             red = 0; green = 129; blue = 129;
  447.             break;
  448.         case 135:
  449.             red = 86; green = 129; blue = 129;
  450.             break;
  451.         case 136:
  452.             red = 0; green = 104; blue = 104;
  453.             break;
  454.         case 137:
  455.             red = 69; green = 104; blue = 104;
  456.             break;
  457.         case 138:
  458.             red = 0; green = 79; blue = 79;
  459.             break;
  460.         case 139:
  461.             red = 53; green = 79; blue = 79;
  462.             break;
  463.         #endregion
  464.         #region 140-149*
  465.         case 140:
  466.             red = 0; green = 191; blue = 255;
  467.             break;
  468.         case 141:
  469.             red = 170; green = 234; blue = 255;
  470.             break;
  471.         case 142:
  472.             red = 0; green = 141; blue = 189;
  473.             break;
  474.         case 143:
  475.             red = 126; green = 173; blue = 189;
  476.             break;
  477.         case 144:
  478.             red = 0; green = 96; blue = 129;
  479.             break;
  480.         case 145:
  481.             red = 86; green = 118; blue = 129;
  482.             break;
  483.         case 146:
  484.             red = 0; green = 78; blue = 104;
  485.             break;
  486.         case 147:
  487.             red = 69; green = 95; blue = 104;
  488.             break;
  489.         case 148:
  490.             red = 0; green = 59; blue = 79;
  491.             break;
  492.         case 149:
  493.             red = 53; green = 73; blue = 79;
  494.             break;
  495.         #endregion
  496.         #region 150-159*
  497.         case 150:
  498.             red = 0; green = 127; blue = 255;
  499.             break;
  500.         case 151:
  501.             red = 170; green = 212; blue = 255;
  502.             break;
  503.         case 152:
  504.             red = 0; green = 94; blue = 189;
  505.             break;
  506.         case 153:
  507.             red = 126; green = 157; blue = 189;
  508.             break;
  509.         case 154:
  510.             red = 0; green = 64; blue = 129;
  511.             break;
  512.         case 155:
  513.             red = 86; green = 107; blue = 129;
  514.             break;
  515.         case 156:
  516.             red = 0; green = 52; blue = 104;
  517.             break;
  518.         case 157:
  519.             red = 69; green = 86; blue = 104;
  520.             break;
  521.         case 158:
  522.             red = 0; green = 39; blue = 79;
  523.             break;
  524.         case 159:
  525.             red = 53; green = 66; blue = 79;
  526.             break;
  527.         #endregion
  528.         #region 160-169*
  529.         case 160:
  530.             red = 0; green = 63; blue = 255;
  531.             break;
  532.         case 161:
  533.             red = 170; green = 191; blue = 255;
  534.             break;
  535.         case 162:
  536.             red = 0; green = 46; blue = 189;
  537.             break;
  538.         case 163:
  539.             red = 126; green = 141; blue = 189;
  540.             break;
  541.         case 164:
  542.             red = 0; green = 31; blue = 129;
  543.             break;
  544.         case 165:
  545.             red = 86; green = 96; blue = 129;
  546.             break;
  547.         case 166:
  548.             red = 0; green = 25; blue = 104;
  549.             break;
  550.         case 167:
  551.             red = 69; green = 78; blue = 104;
  552.             break;
  553.         case 168:
  554.             red = 0; green = 19; blue = 79;
  555.             break;
  556.         case 169:
  557.             red = 53; green = 59; blue = 79;
  558.             break;
  559.         #endregion
  560.         #region 170-179*
  561.         case 170:
  562.             red = 0; green = 0; blue = 255;
  563.             break;
  564.         case 171:
  565.             red = 170; green = 170; blue = 255;
  566.             break;
  567.         case 172:
  568.             red = 0; green = 0; blue = 189;
  569.             break;
  570.         case 173:
  571.             red = 126; green = 126; blue = 189;
  572.             break;
  573.         case 174:
  574.             red = 0; green = 0; blue = 129;
  575.             break;
  576.         case 175:
  577.             red = 86; green = 86; blue = 129;
  578.             break;
  579.         case 176:
  580.             red = 0; green = 0; blue = 104;
  581.             break;
  582.         case 177:
  583.             red = 69; green = 69; blue = 104;
  584.             break;
  585.         case 178:
  586.             red = 0; green = 0; blue = 79;
  587.             break;
  588.         case 179:
  589.             red = 53; green = 53; blue = 79;
  590.             break;
  591.         #endregion
  592.         #region 180-189*
  593.         case 180:
  594.             red = 63; green = 0; blue = 255;
  595.             break;
  596.         case 181:
  597.             red = 191; green = 170; blue = 255;
  598.             break;
  599.         case 182:
  600.             red = 46; green = 0; blue = 189;
  601.             break;
  602.         case 183:
  603.             red = 141; green = 126; blue = 189;
  604.             break;
  605.         case 184:
  606.             red = 31; green = 0; blue = 129;
  607.             break;
  608.         case 185:
  609.             red = 96; green = 86; blue = 129;
  610.             break;
  611.         case 186:
  612.             red = 25; green = 0; blue = 104;
  613.             break;
  614.         case 187:
  615.             red = 78; green = 69; blue = 104;
  616.             break;
  617.         case 188:
  618.             red = 19; green = 0; blue = 79;
  619.             break;
  620.         case 189:
  621.             red = 59; green = 53; blue = 79;
  622.             break;
  623.         #endregion
  624.         #region 190-199*
  625.         case 190:
  626.             red = 127; green = 0; blue = 255;
  627.             break;
  628.         case 191:
  629.             red = 212; green = 170; blue = 255;
  630.             break;
  631.         case 192:
  632.             red = 94; green = 0; blue = 189;
  633.             break;
  634.         case 193:
  635.             red = 157; green = 126; blue = 189;
  636.             break;
  637.         case 194:
  638.             red = 64; green = 0; blue = 129;
  639.             break;
  640.         case 195:
  641.             red = 107; green = 86; blue = 129;
  642.             break;
  643.         case 196:
  644.             red = 52; green = 0; blue = 104;
  645.             break;
  646.         case 197:
  647.             red = 86; green = 69; blue = 104;
  648.             break;
  649.         case 198:
  650.             red = 39; green = 0; blue = 79;
  651.             break;
  652.         case 199:
  653.             red = 66; green = 53; blue = 79;
  654.             break;
  655.         #endregion
  656.         #endregion
  657.         #region 200-255*
  658.         #region 200-209*
  659.         case 200:
  660.             red = 191; green = 0; blue = 255;
  661.             break;
  662.         case 201:
  663.             red = 234; green = 170; blue = 255;
  664.             break;
  665.         case 202:
  666.             red = 141; green = 0; blue = 189;
  667.             break;
  668.         case 203:
  669.             red = 173; green = 126; blue = 189;
  670.             break;
  671.         case 204:
  672.             red = 96; green = 0; blue = 129;
  673.             break;
  674.         case 205:
  675.             red = 118; green = 86; blue = 129;
  676.             break;
  677.         case 206:
  678.             red = 78; green = 0; blue = 104;
  679.             break;
  680.         case 207:
  681.             red = 95; green = 69; blue = 104;
  682.             break;
  683.         case 208:
  684.             red = 59; green = 0; blue = 79;
  685.             break;
  686.         case 209:
  687.             red = 73; green = 53; blue = 79;
  688.             break;
  689.         #endregion
  690.         #region 210-219*
  691.         case 210:
  692.             red = 255; green = 0; blue = 255;
  693.             break;
  694.         case 211:
  695.             red = 255; green = 170; blue = 255;
  696.             break;
  697.         case 212:
  698.             red = 189; green = 0; blue = 189;
  699.             break;
  700.         case 213:
  701.             red = 189; green = 126; blue = 189;
  702.             break;
  703.         case 214:
  704.             red = 129; green = 0; blue = 129;
  705.             break;
  706.         case 215:
  707.             red = 129; green = 86; blue = 129;
  708.             break;
  709.         case 216:
  710.             red = 104; green = 0; blue = 104;
  711.             break;
  712.         case 217:
  713.             red = 104; green = 69; blue = 104;
  714.             break;
  715.         case 218:
  716.             red = 79; green = 0; blue = 79;
  717.             break;
  718.         case 219:
  719.             red = 79; green = 53; blue = 79;
  720.             break;
  721.         #endregion
  722.         #region 220-229*
  723.         case 220:
  724.             red = 255; green = 0; blue = 191;
  725.             break;
  726.         case 221:
  727.             red = 255; green = 170; blue = 234;
  728.             break;
  729.         case 222:
  730.             red = 189; green = 0; blue = 141;
  731.             break;
  732.         case 223:
  733.             red = 189; green = 126; blue = 173;
  734.             break;
  735.         case 224:
  736.             red = 129; green = 0; blue = 96;
  737.             break;
  738.         case 225:
  739.             red = 129; green = 86; blue = 118;
  740.             break;
  741.         case 226:
  742.             red = 104; green = 0; blue = 78;
  743.             break;
  744.         case 227:
  745.             red = 104; green = 69; blue = 95;
  746.             break;
  747.         case 228:
  748.             red = 79; green = 0; blue = 59;
  749.             break;
  750.         case 229:
  751.             red = 79; green = 53; blue = 73;
  752.             break;
  753.         #endregion
  754.         #region 230-239*
  755.         case 230:
  756.             red = 255; green = 0; blue = 127;
  757.             break;
  758.         case 231:
  759.             red = 255; green = 170; blue = 212;
  760.             break;
  761.         case 232:
  762.             red = 189; green = 0; blue = 94;
  763.             break;
  764.         case 233:
  765.             red = 189; green = 126; blue = 157;
  766.             break;
  767.         case 234:
  768.             red = 129; green = 0; blue = 64;
  769.             break;
  770.         case 235:
  771.             red = 129; green = 86; blue = 107;
  772.             break;
  773.         case 236:
  774.             red = 104; green = 0; blue = 52;
  775.             break;
  776.         case 237:
  777.             red = 104; green = 69; blue = 86;
  778.             break;
  779.         case 238:
  780.             red = 79; green = 0; blue = 39;
  781.             break;
  782.         case 239:
  783.             red = 79; green = 53; blue = 66;
  784.             break;
  785.         #endregion
  786.         #region 240-249*
  787.         case 240:
  788.             red = 255; green = 0; blue = 63;
  789.             break;
  790.         case 241:
  791.             red = 255; green = 170; blue = 191;
  792.             break;
  793.         case 242:
  794.             red = 189; green = 0; blue = 46;
  795.             break;
  796.         case 243:
  797.             red = 189; green = 126; blue = 141;
  798.             break;
  799.         case 244:
  800.             red = 129; green = 0; blue = 31;
  801.             break;
  802.         case 245:
  803.             red = 129; green = 86; blue = 96;
  804.             break;
  805.         case 246:
  806.             red = 104; green = 0; blue = 25;
  807.             break;
  808.         case 247:
  809.             red = 104; green = 69; blue = 78;
  810.             break;
  811.         case 248:
  812.             red = 79; green = 0; blue = 19;
  813.             break;
  814.         case 249:
  815.             red = 79; green = 53; blue = 59;
  816.             break;
  817.         #endregion
  818.         #region 250-255*
  819.         case 250:
  820.             red = 51; green = 51; blue = 51;
  821.             break;
  822.         case 251:
  823.             red = 80; green = 80; blue = 80;
  824.             break;
  825.         case 252:
  826.             red = 105; green = 105; blue = 105;
  827.             break;
  828.         case 253:
  829.             red = 130; green = 130; blue = 130;
  830.             break;
  831.         case 254:
  832.             red = 190; green = 190; blue = 190;
  833.             break;
  834.         case 255:
  835.             red = 255; green = 255; blue = 255;
  836.             break;
  837.         #endregion
  838.         #endregion
  839.         default:
  840.             red = 0; green = 0; blue = 0;
  841.             break;
  842.     }
  843. }

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Единственный плюс такого метода - не требуется подгрузка библиотек автокада для определения цвета.
И минус в том, что в разных версиях AutoCAD и в зависимости от цвета экрана не всегда совпадает с вычисленными тобой один раз.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
И тут интересный вопрос, который я не тестировал - нужно ли задавать ему культуру или по-умолчанию он сработает правильно (как в локализации AutoCAD).
"Внутри" он берёт текущую культуру:
Код - C# [Выбрать]
  1.    /// <summary>Преобразует указанное значение в строковое представление.</summary>
  2.     /// <param name="value">Преобразуемый объект <see cref="T:System.Object" />.</param>
  3.     /// <returns>
  4.     /// <see cref="T:System.Object" />, представляющий преобразованное значение.</returns>
  5.     /// <exception cref="T:System.NotSupportedException">Преобразование не может быть выполнено.</exception>
  6.     public string ConvertToString(object value) => (string) this.ConvertTo((ITypeDescriptorContext) null, CultureInfo.CurrentCulture, value, typeof (string));
P.S. проверил - в русском автокаде выводит "мм", в английском "mm" без дополнительных указаний культуры. Так что, всё ок  :)
Итоговый конвертер для WPF:
Код - C# [Выбрать]
  1. using System;
  2. using System.Globalization;
  3. using System.Windows.Data;
  4. using Autodesk.AutoCAD.DatabaseServices;
  5. /// <summary>
  6. /// Конвертер в отображаемое значение для веса линии
  7. /// </summary>
  8. public class LineWeightToDisplayNameConverter : IValueConverter
  9. {
  10.     private readonly LineWeightConverter _converter = new LineWeightConverter();
  11.     /// <inheritdoc />
  12.     public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
  13.     {
  14.         if (value is LineWeight lineWeight)
  15.         {
  16.             return _converter.ConvertToString(lineWeight);
  17.         }
  18.         return Binding.DoNothing;
  19.     }
  20.     /// <inheritdoc />
  21.     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
  22.     {
  23.         if (value is string stringValue)
  24.         {
  25.             return _converter.ConvertFromString(stringValue);
  26.         }
  27.         return Binding.DoNothing;
  28.     }
  29. }
  30.  

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
"Внутри" он берёт текущую культуру:
Ну тогда правильнее было бы переделать код так, чтобы подставлять ему культуру AutoCAD:
Код - C# [Выбрать]
  1. CultureInfo cultureInfo = new CultureInfo(SystemObjects.DynamicLinker.ProductLcid, true);
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
P.S. проверил - в русском автокаде выводит "мм", в английском "mm" без дополнительных указаний культуры. Так что, всё ок 
Это если никакое приложение не испортило текущую культуру.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Пока так оставлю. Потом, если будут жалобы - исправлю по Вашему совету. Либо вообще жёстко культуру ru-RU задам. Сейчас пока надо допиливать основной функционал, а отшлифовывать потом буду, когда/если приложение пойдёт в работу  :)
Спасибо!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Пока так оставлю. Потом, если будут жалобы - исправлю по Вашему совету. Либо вообще жёстко культуру ru-RU задам. Сейчас пока надо допиливать основной функционал, а отшлифовывать потом буду, когда/если приложение пойдёт в работу 
Из спортивного интереса проверил и увы в чистом виде CultureInfo(SystemObjects.DynamicLinker.ProductLcid, true) использовать нельзя. Вместо точки в качестве разделителя появляется запятая:

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий ЗагорулькинАвтор темы

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
CultureInfo(SystemObjects.DynamicLinker.ProductLcid, true) использовать нельзя
А, кстати - почему именно так культура получается? Я обычно смотрю либо CultureInfo.CurrentCulture, либо CultureInfo.CurrentUICulture.
В случае с WPF-конвертером всё ещё проще - там культура текущая передаётся входным параметром в методы конвертации.