31
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от avc 11-02-2026, 15:53:21 »Как получить текстовое значение и XY координаты всех указателей мультивыноски с помощью C# ?
Код - C# [Выбрать]
- /// <summary>
- /// Куда указывает первая стрелка. Может вернуть Point3dExt.NanPoint
- /// </summary>
- /// <param name="ml"></param>
- public static Point3d
- FirstArrow(this MLeader ml)
- {
- int index = ml.FirstArrowIndex();
- if (index < 0) return Point3dExt.Null;
- return ml.GetFirstVertex(index);
- }
- /// <summary>
- /// Куда указывают все стрелки. Может вернуть пустой список
- /// </summary>
- /// <param name="ml"></param>
- public static List<Point3d>
- Arrows(this MLeader ml)
- {
- if (ml is null || ml.IsErased) return new List<Point3d>();
- ArrayList arr = ml.GetLeaderIndexes();
- if (arr.Count == 0) return new List<Point3d>(); //можно нарисовать MLeader вообще без стрелок!
- List<Point3d> ret = new(arr.Count);
- foreach (object i in arr)
- {
- ArrayList arr1 = ml.GetLeaderLineIndexes((int)i);
- if (arr1.Count == 0) continue;
- foreach (object j in arr1)
- ret.Add(ml.GetFirstVertex((int)j));
- }
- return ret;
- }
- /// <summary>
- /// Получить текст из текстовой выноски или из единственного атрибута блока
- /// </summary>
- public static string
- GetContents(this MLeader ml, bool fieldCodes, Transaction tr)
- {
- if (ml.ContentType == ContentType.BlockContent)
- return ml.GetBlockAttribute("", fieldCodes, tr);
- if (ml.HasContent() && ml.ContentType == ContentType.MTextContent)
- try
- {
- using MText mt = ml.MText; // бывает InvalidOperationException
- if (fieldCodes) return mt?.GetMTextWithFieldCodes() ?? "";
- return mt?.Text ?? "";
- }
- catch { }
- return "";
- }
Последние сообщения
)