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

ADN Club => AutoCAD .NET API => Тема начата: exilerus от 02-11-2018, 15:51:45

Название: Получить угол поворота текста в Dimension
Отправлено: exilerus от 02-11-2018, 15:51:45
Здравствуйте.
Подскажите, пожалуйста, как можно понять угол DimensionText у Dimension. Значение TextRotation всегда равно 0, видимо это определяется дальше в DimStyleTableRecord, но найти не могу.
Спасибо!
Название: Re: Получить угол поворота текста в Dimension
Отправлено: Александр Пекшев aka Modis от 02-11-2018, 17:22:14
Может текст повернут не в DimStyle, а в TextStyle? Свойство ObliquingAngle (https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-NET/files/GUID-A3CA7191-A979-4FD4-8322-357C27180BB6-htm.html)
Название: Re: Получить угол поворота текста в Dimension
Отправлено: exilerus от 02-11-2018, 17:25:37
Спасибо, посмотрю.
Но по сути у каждого размера свой угол наклона текста.
Название: Re: Получить угол поворота текста в Dimension
Отправлено: Александр Пекшев aka Modis от 02-11-2018, 17:35:46
В окне настроек размерного стиля нет угла поворота текста:

(https://i.postimg.cc/4ndX9SYZ/2018-11-02-17-33-48-Autodesk-Auto-CAD-2019.png) (https://postimg.cc/4ndX9SYZ)

Значит в размерном стиле это не задаются. Остаются два места - свойство конкретного размера и свойства текстового стиля
Название: Re: Получить угол поворота текста в Dimension
Отправлено: exilerus от 02-11-2018, 17:52:44
Спасибо.
Теоретически же можно взять размерную линию и получить угол между ней и осью абсцисс.
А вот как получить угол для радиальных размеров - идей нет
Название: Re: Получить угол поворота текста в Dimension
Отправлено: Александр Пекшев aka Modis от 02-11-2018, 17:54:07
Спасибо.
Теоретически же можно взять размерную линию и получить угол между ней и осью абсцисс.
А вот как получить угол для радиальных размеров - идей нет
Я чего-то вообще понять не могу о чем вы говорите. Хоть скриншотик приложите
Название: Re: Получить угол поворота текста в Dimension
Отправлено: exilerus от 02-11-2018, 17:57:21
Просто я пишу плагин, который пробегается по всем размерам на чертеже, потом я сортирую их определенным образом и ставлю цифру рядом с размером (номер размера). Потом в эксель вывожу номер размера и его значение.
Клиент попросил сделать так, чтобы текст был под тем же наклоном, что и текст размера.
Вот и копаюсь


(https://i.postimg.cc/z3w04rWq/Screenshot-4.png) (https://postimg.cc/z3w04rWq)
Название: Re: Получить угол поворота текста в Dimension
Отправлено: Александр Ривилис от 02-11-2018, 20:31:17
exilerus,
Если я правильно понял что тебе нужно:
Код - C# [Выбрать]
  1. [CommandMethod("GetDimTextRotation")]
  2. public void GetDimTextRotation()
  3. {
  4.   Document doc = Application.DocumentManager.MdiActiveDocument;
  5.   if (doc == null)
  6.     return;
  7.   Editor ed = doc.Editor;
  8.   Database db = doc.Database;
  9.   PromptEntityOptions prOpt =
  10.     new PromptEntityOptions("Укажите размер ");
  11.   prOpt.SetRejectMessage("Это не размер!");
  12.   prOpt.AddAllowedClass(typeof(Dimension), false);
  13.   PromptEntityResult rsEnt = ed.GetEntity(prOpt);
  14.   if (rsEnt.Status != PromptStatus.OK)
  15.     return;
  16.   using (Transaction tr = doc.TransactionManager.StartTransaction())
  17.   {
  18.     Dimension dim =
  19.       tr.GetObject(rsEnt.ObjectId, OpenMode.ForRead) as Dimension;
  20.     BlockTableRecord dimBlk =
  21.       tr.GetObject(dim.DimBlockId, OpenMode.ForRead) as BlockTableRecord;
  22.     if (dimBlk != null)
  23.     {
  24.       foreach (ObjectId id in dimBlk)
  25.       {
  26.         if (id.ObjectClass.IsDerivedFrom(RXClass.GetClass(typeof(MText))))
  27.         {
  28.           MText dimText = tr.GetObject(id, OpenMode.ForRead) as MText;
  29.           ed.WriteMessage("\nУгол поворота: {0} радиан ({1} градусов)",
  30.             dimText.Rotation, dimText.Rotation * 180 / System.Math.PI);
  31.           break;
  32.         }
  33.       }
  34.     }
  35.     tr.Commit();
  36.   }
  37. }
Название: Re: Получить угол поворота текста в Dimension
Отправлено: exilerus от 03-11-2018, 10:51:58
Александр, спасибо большое!
Совсем забыл про то, что можно залезть внутрь.
Все прекрасно работает!