Поворот Mtext в объекте MLeader

Автор Тема: Поворот Mtext в объекте MLeader  (Прочитано 7254 раз)

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

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Поворот Mtext в объекте MLeader
« : 04-09-2017, 20:12:30 »
Подскажите,
как с помощью AutoCAD API
правильно повернуть Mtext в объекте MLeader?

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Поворот Mtext в объекте MLeader
« Ответ #1 : 04-09-2017, 20:46:34 »
А вот нашел пример

Код - C# [Выбрать]
  1. using (Transaction trans = doc.TransactionManager.StartTransaction())
  2. {
  3.         MLeader ml = (MLeader)trans.GetObject(mlObjectId, OpenMode.ForWrite);
  4.  
  5.         if (ml.HasContent())
  6.         {
  7.                 if (ml.ContentType == ContentType.MTextContent)
  8.                 {
  9.                         MText mt = ml.MText.Clone() as MText;
  10.  
  11.                         mt.Rotation = 0.0d;
  12.                         ml.MText = mt;
  13.                 }
  14.                 else if (ml.ContentType == ContentType.BlockContent)
  15.                 {
  16.                         ml.BlockRotation = 0.0d; // Does nothing since BlockRotation is already 0.0d.
  17.                 }
  18.         }
  19.         trans.Commit();
  20. }
« Последнее редактирование: 04-09-2017, 21:05:06 от Александр Ривилис »

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Поворот Mtext в объекте MLeader
« Ответ #2 : 04-09-2017, 21:07:26 »
mt потом неплохо бы освободить (mt.Dispose), а то будет утечка памяти.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Поворот Mtext в объекте MLeader
« Ответ #3 : 05-09-2017, 12:11:35 »
Код - F# [Выбрать]
  1. MText mt = ml.MText.Clone() as MText;
А тут случаем не 2 раза создаётся MText?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Поворот Mtext в объекте MLeader
« Ответ #4 : 05-09-2017, 12:21:56 »
А тут случаем не 2 раза создаётся MText?
Таки ДА судя по этой информации из документации:





Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Поворот Mtext в объекте MLeader
« Ответ #5 : 05-09-2017, 12:43:35 »
Ей-богу, лучше бы они сделали два отдельных метода типа: ExtractMText() и PutMText(MText). Создание нового объекта-клона при обращении к свойству - это так неочевидно! Вроде как, я тоже на эти грабли наступал уже не раз.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Поворот Mtext в объекте MLeader
« Ответ #6 : 05-09-2017, 12:46:10 »
Ей-богу, лучше бы они сделали два отдельных метода типа: ExtractMText() и PutMText(MText). Создание нового объекта-клона при обращении к свойству - это так неочевидно! Вроде как, я тоже на эти грабли наступал уже не раз.
В ObjectARX - это два различных метода: mtext() и setMText()
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Re: Поворот Mtext в объекте MLeader
« Ответ #7 : 05-09-2017, 13:16:43 »
Простите, а при присвоении ml.MText = mt , что тоже клон создается? Или все таки используется тот MText, который я только что специально для этого создал?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Поворот Mtext в объекте MLeader
« Ответ #8 : 05-09-2017, 13:19:43 »
Простите, а при присвоении ml.MText = mt , что тоже клон создается?
Нет конечно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Re: Поворот Mtext в объекте MLeader
« Ответ #9 : 05-09-2017, 13:22:08 »
mt потом неплохо бы освободить (mt.Dispose), а то будет утечка памяти.
таки получается что не нужно диспозить, ведь mt теперь сохранен в MLeader

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Поворот Mtext в объекте MLeader
« Ответ #10 : 05-09-2017, 13:27:08 »
таки получается что не нужно диспозить, ведь mt теперь сохранен в MLeader
Сохранён не он сам, а информация из него:



А то, что его следует "диспозить" четко написано в ObjectARX SDK Docs:



Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Re: Поворот Mtext в объекте MLeader
« Ответ #11 : 05-09-2017, 15:09:14 »
Ок, бум диспозить :)
Итоговый код для записи текста в мультивыноску я закинул суда http://adn-cis.org/forum/index.php?topic=1013