30/09/2020
Как преобразовать LineWeight в текстовую строку и обратно?
Вопрос: Как выполнить средствами AutoCAD .NET API преобразование из веса линии (LineWeight) в строку (String) и обратно?
Ответ: Для этой цели можно воспользоваться классом Autodesk.AutoCAD.DatabaseServices.LineWeightConverter
Вот пример кода, который выполняет прямое и обратное преобразование:
Код - C#: [Выделить]
- using Autodesk.AutoCAD.Runtime;
- using Autodesk.AutoCAD.ApplicationServices;
- using Autodesk.AutoCAD.DatabaseServices;
- using Autodesk.AutoCAD.EditorInput;
- [assembly: CommandClass(typeof(LineWeightConvert.MyCommands))]
- namespace LineWeightConvert
- {
- /// <summary>
- /// Класс для преобразования весов линий в строки и обратно
- /// </summary>
- public static class LineWeightUtils
- {
- private static readonly LineWeightConverter _conv =
- new LineWeightConverter();
- /// <summary>
- /// Функция для преобразования веса линии в строку
- /// </summary>
- /// <param name="lw">вес линии</param>
- /// <returns>строка представляющая вес линии</returns>
- public static string ToString(LineWeight lw)
- {
- try
- {
- return _conv.ConvertToString(lw);
- }
- catch
- {
- return "";
- }
- }
- /// <summary>
- /// Функция для преобразования строки, содержащей вес линии
- /// в вес линии
- /// </summary>
- /// <param name="lwstring">строка с весом линии</param>
- /// <returns>вес линии</returns>
- public static LineWeight ToLineWeight(string lwstring)
- {
- try
- {
- return (LineWeight)_conv.ConvertFromString(lwstring);
- }
- catch
- {
- return LineWeight.ByLineWeightDefault;
- }
- }
- }
- /// <summary>
- /// Тестовый класс для проверки конвертации LineWeight <-> String
- /// </summary>
- public class MyCommands
- {
- [CommandMethod("PrintLineWeight")]
- public void PrintLineWeight()
- {
- Document doc = Application.DocumentManager.MdiActiveDocument;
- if (doc == null) return;
- Editor ed = doc.Editor;
- LineWeight lweight = LineWeight.LineWeight040;
- string lwstring = LineWeightUtils.ToString(lweight);
- ed.WriteMessage($"\nLineWeight = {lweight} (как LineWeight)");
- ed.WriteMessage($"\nLineWeight = \"{lwstring}\" (как строка)");
- }
- }
- }
Результат работы и сравнение со стандартным представлением веса линии в Панели свойств:
Автор: Александр Ривилис
Опубликовано 30.09.2020
Опубликовано 30.09.2020