ADN Open CIS
Сообщество программистов Autodesk в СНГ

30/09/2020

Как преобразовать LineWeight в текстовую строку и обратно?

Вопрос: Как выполнить средствами AutoCAD .NET API преобразование из веса линии (LineWeight) в строку (String) и обратно?

Ответ:  Для этой цели можно воспользоваться классом Autodesk.AutoCAD.DatabaseServices.LineWeightConverter

Вот пример кода, который выполняет прямое и обратное преобразование:

Код - C#: [Выделить]
  1. using Autodesk.AutoCAD.Runtime;
  2. using Autodesk.AutoCAD.ApplicationServices;
  3. using Autodesk.AutoCAD.DatabaseServices;
  4. using Autodesk.AutoCAD.EditorInput;
  5.  
  6. [assembly: CommandClass(typeof(LineWeightConvert.MyCommands))]
  7.  
  8. namespace LineWeightConvert
  9. {
  10.   /// <summary>
  11.   ///  Класс для преобразования весов линий в строки и обратно
  12.   /// </summary>
  13.   public static class LineWeightUtils
  14.   {
  15.     private static readonly LineWeightConverter _conv =
  16.       new LineWeightConverter();
  17.     /// <summary>
  18.     /// Функция для преобразования веса линии в строку
  19.     /// </summary>
  20.     /// <param name="lw">вес линии</param>
  21.     /// <returns>строка представляющая вес линии</returns>
  22.     public static string ToString(LineWeight lw)
  23.     {
  24.       try
  25.       {
  26.         return _conv.ConvertToString(lw);
  27.       }
  28.       catch
  29.       {
  30.         return "";
  31.       }
  32.     }
  33.     /// <summary>
  34.     /// Функция для преобразования строки, содержащей вес линии
  35.     /// в вес линии
  36.     /// </summary>
  37.     /// <param name="lwstring">строка с весом линии</param>
  38.     /// <returns>вес линии</returns>
  39.     public static LineWeight ToLineWeight(string lwstring)
  40.     {
  41.       try
  42.       {
  43.         return (LineWeight)_conv.ConvertFromString(lwstring);
  44.       }
  45.       catch
  46.       {
  47.         return LineWeight.ByLineWeightDefault;
  48.       }
  49.     }
  50.   }
  51.   /// <summary>
  52.   /// Тестовый класс для проверки конвертации LineWeight <-> String
  53.   /// </summary>
  54.   public class MyCommands
  55.   {
  56.     [CommandMethod("PrintLineWeight")]
  57.     public void PrintLineWeight()
  58.     {
  59.       Document doc = Application.DocumentManager.MdiActiveDocument;
  60.       if (doc == null) return;
  61.       Editor ed = doc.Editor;
  62.       LineWeight lweight = LineWeight.LineWeight040;
  63.       string lwstring = LineWeightUtils.ToString(lweight);
  64.       ed.WriteMessage($"\nLineWeight = {lweight} (как LineWeight)");
  65.       ed.WriteMessage($"\nLineWeight = \"{lwstring}\" (как строка)");
  66.     }
  67.   }
  68. }

 

Результат работы и сравнение со стандартным представлением веса линии в Панели свойств:

 

Автор: Александр Ривилис
Опубликовано 30.09.2020