Получить угол поворота текста в Dimension

Автор Тема: Получить угол поворота текста в Dimension  (Прочитано 6551 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн exilerusАвтор темы

  • ADN OPEN
  • Сообщений: 46
  • Карма: 2
Здравствуйте.
Подскажите, пожалуйста, как можно понять угол DimensionText у Dimension. Значение TextRotation всегда равно 0, видимо это определяется дальше в DimStyleTableRecord, но найти не могу.
Спасибо!

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Может текст повернут не в DimStyle, а в TextStyle? Свойство ObliquingAngle

Оффлайн exilerusАвтор темы

  • ADN OPEN
  • Сообщений: 46
  • Карма: 2
Спасибо, посмотрю.
Но по сути у каждого размера свой угол наклона текста.

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
В окне настроек размерного стиля нет угла поворота текста:



Значит в размерном стиле это не задаются. Остаются два места - свойство конкретного размера и свойства текстового стиля

Оффлайн exilerusАвтор темы

  • ADN OPEN
  • Сообщений: 46
  • Карма: 2
Спасибо.
Теоретически же можно взять размерную линию и получить угол между ней и осью абсцисс.
А вот как получить угол для радиальных размеров - идей нет

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Спасибо.
Теоретически же можно взять размерную линию и получить угол между ней и осью абсцисс.
А вот как получить угол для радиальных размеров - идей нет
Я чего-то вообще понять не могу о чем вы говорите. Хоть скриншотик приложите

Оффлайн exilerusАвтор темы

  • ADN OPEN
  • Сообщений: 46
  • Карма: 2
Просто я пишу плагин, который пробегается по всем размерам на чертеже, потом я сортирую их определенным образом и ставлю цифру рядом с размером (номер размера). Потом в эксель вывожу номер размера и его значение.
Клиент попросил сделать так, чтобы текст был под тем же наклоном, что и текст размера.
Вот и копаюсь




Отмечено как Решение exilerus 03-11-2018, 10:51:27

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
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. }
« Последнее редактирование: 03-11-2018, 14:53:17 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн exilerusАвтор темы

  • ADN OPEN
  • Сообщений: 46
  • Карма: 2
Александр, спасибо большое!
Совсем забыл про то, что можно залезть внутрь.
Все прекрасно работает!