Последние сообщения

Последние сообщения

Страницы: [1] 2 3 ... 10
1
VBA / Re: vba для автокад скорее жив, чем мертв
« Последний ответ от Timofeev 27-03-2026, 15:59:50 »
Ком конечно медленная штука - наверное это максимум что можно в VBA сделать
Может кому пригодится
2
AutoCAD .NET API / Re: Как получить имя стиля таблицы в .NET ?
« Последний ответ от avc 12-02-2026, 18:55:51 »
Так же как любой другой именованный объект чертежа. У таблицы берете ID стиля, получаете стиль на чтение и берете его имя.
3
AutoCAD .NET API / Как получить имя стиля таблицы в .NET ?
« Последний ответ от Electric 12-02-2026, 16:56:29 »
Есть таблица автокада со стилем "Адреса кабелей". Как через .NET получить это имя стиля в виде текстовой строки?
4
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от avc 11-02-2026, 15:59:17 »
Ок, учту это. Обычно на форумах Оффтопик - место для бардака :)
тут конкретная тема оффтопика: Изучаем C#. Оффтопик в смысле не про AutoCAD
5
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от Electric 11-02-2026, 15:55:04 »
А что вы стесняетесь спрашивать в новой теме? Ваш вопрос не по C#, а по API - поднимайте новую тему, не делайте бардак.

Ок, учту это. Обычно на форумах Оффтопик - место для бардака :)
6
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от avc 11-02-2026, 15:53:21 »
Как получить текстовое значение и XY координаты всех указателей мультивыноски с помощью C# ?

Код - C# [Выбрать]
  1.     /// <summary>
  2.     /// Куда указывает первая стрелка. Может вернуть Point3dExt.NanPoint
  3.     /// </summary>
  4.     /// <param name="ml"></param>
  5.     public static Point3d
  6.     FirstArrow(this MLeader ml)
  7.     {
  8.       int index = ml.FirstArrowIndex();
  9.       if (index < 0) return Point3dExt.Null;
  10.       return ml.GetFirstVertex(index);
  11.     }
  12.  
  13.     /// <summary>
  14.     /// Куда указывают все стрелки. Может вернуть пустой список
  15.     /// </summary>
  16.     /// <param name="ml"></param>
  17.     public static List<Point3d>
  18.     Arrows(this MLeader ml)
  19.     {
  20.       if (ml is null || ml.IsErased) return new List<Point3d>();
  21.       ArrayList arr = ml.GetLeaderIndexes();
  22.       if (arr.Count == 0) return new List<Point3d>(); //можно нарисовать MLeader вообще без стрелок!
  23.       List<Point3d> ret = new(arr.Count);
  24.       foreach (object i in arr)
  25.       {
  26.         ArrayList arr1 = ml.GetLeaderLineIndexes((int)i);
  27.         if (arr1.Count == 0) continue;
  28.         foreach (object j in arr1)
  29.           ret.Add(ml.GetFirstVertex((int)j));
  30.       }
  31.       return ret;
  32.     }
  33.  
  34.     /// <summary>
  35.     /// Получить текст из текстовой выноски или из единственного атрибута блока
  36.     /// </summary>
  37.     public static string
  38.     GetContents(this MLeader ml, bool fieldCodes, Transaction tr)
  39.     {
  40.       if (ml.ContentType == ContentType.BlockContent)
  41.         return ml.GetBlockAttribute("", fieldCodes, tr);
  42.  
  43.       if (ml.HasContent() && ml.ContentType == ContentType.MTextContent)
  44.         try
  45.         {
  46.           using MText mt = ml.MText; // бывает InvalidOperationException
  47.           if (fieldCodes) return mt?.GetMTextWithFieldCodes() ?? "";
  48.           return mt?.Text ?? "";
  49.         }
  50.         catch { }
  51.       return "";
  52.     }
  53.  
  54.  
А что вы стесняетесь спрашивать в новой теме? Ваш вопрос не по C#, а по API - поднимайте новую тему, не делайте бардак.
7
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от Electric 11-02-2026, 15:32:58 »
В COM я получал текстовую строку мультивыноски и список xy координат точек-указателей мультивыноски таким способом:

Код - Python [Выбрать]
  1. txt = obj.TextString        
  2. line_count = 0
  3. while True:
  4.     try:
  5.         leader_points = obj.GetLeaderLineVertices(line_count)  
  6.         cable_txt_x = round(leader_points[0], 1)
  7.         cable_txt_y = round(leader_points[1], 1)
  8.         line_count += 1
  9.     except Exception:
  10.         break
  11.      return True

Как получить текстовое значение и XY координаты всех указателей мультивыноски с помощью C# ?
8
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от avc 08-02-2026, 15:24:02 »
К примеру у меня есть динамический блок "Клеммник" с кучей динамических атрибутов. Как в одну  строку получить его имя "Клеммник", а "*U10500" ?
Код - C# [Выбрать]
  1. string instanceName = blockRef.IsDynamicBlock || !blockRef.AnonymousBlockTableRecord.IsNull ? (tr.GetObject(blockRef.BlockTableRecord, OpenMode.ForRead) as BlockTableRecord)?.Name : blockRef.Name;
но я бы не рекомендовал писать это в одну строку ;))
9
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от Electric 08-02-2026, 15:16:30 »
У BlockReference динамических блоков есть две ссылки: BlockTableRecord и DynamicBlockTableRecord. первая - это экземпляр динамического блока с конкретным набором параметров и скрытым именем (на *), а вторая - это как раз исходный предок всех экземпляров с видимым пользователю именем. Это имя отображает и BlockReference.Name тоже.
Никаких EffectiveName я что-то в API не встречал.

К примеру у меня есть динамический блок "Клеммник" с кучей динамических атрибутов. Как в одну  строку получить его имя "Клеммник", а не "*U10500" ?
10
AutoCAD .NET API / Re: Оффтопик. Изучаем C#
« Последний ответ от avc 08-02-2026, 15:03:02 »
У BlockReference динамических блоков есть две ссылки: BlockTableRecord и DynamicBlockTableRecord. первая - это экземпляр динамического блока с конкретным набором параметров и скрытым именем (на *), а вторая - это как раз исходный предок всех экземпляров с видимым пользователю именем. Это имя отображает и BlockReference.Name тоже.
Прежде чем обращаться к DynamicBlockTableRecord стоит проверить, что это именно динамический блок:
 if (blockRef.IsDynamicBlock || !blockRef.AnonymousBlockTableRecord.IsNull)...
В AutoCAD искаженные динамические блоки IsDynamicBlock=false, но есть AnonymousBlockTableRecord.
По моему у экземпляров динамических блоков всегда имя на *U, а не на *T. Так что возможно просто таблицы попались вместо блоков.
Никаких EffectiveName я что-то в API не встречал.
Страницы: [1] 2 3 ... 10