Изменение стиля текста

Автор Тема: Изменение стиля текста  (Прочитано 3426 раз)

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

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Изменение стиля текста
« : 13-10-2018, 19:55:32 »
Добрый вечер.
Замена стиля текста производится в наихудшем случае по всем листам и модели. список в WinForm заполняю таким методом
Код - C# [Выбрать]
  1. textStyle.Items.Add("");
  2.             Document doc = App.DocumentManager.MdiActiveDocument;
  3.             Database db = doc.Database;
  4.             try
  5.             {
  6.                 using (DocumentLock dl = doc.LockDocument())
  7.                 {
  8.                     using (Transaction tr = doc.TransactionManager.StartTransaction())
  9.                     {
  10.                         TextStyleTable tst = tr.GetObject(db.TextStyleTableId, OpenMode.ForRead) as TextStyleTable;
  11.                         foreach (ObjectId stid in tst)
  12.                         {
  13.                             TextStyleTableRecord st = tr.GetObject(stid, OpenMode.ForRead) as TextStyleTableRecord;
  14.                             textStyle.Items.Add(st.Name);
  15.                         }
  16.                     }
  17.                 }
  18.             }
затем применяю вот таким
Код - C# [Выбрать]
  1. if (form.textStyle.SelectedIndex > -1 && !form.textStyle.SelectedItem.Equals(""))
  2.                     mt.TextStyleId = tst[form.textStyle.SelectedItem.ToString()];//mt это MText
Проблема в том что если формат текста производится без замены шрифта (в зависимости от выбора пользователя) то довольно быстро даже на достаточно объемных чертежах. Если ж меняю и шрифт (на больших чертежах) то это все затягивается на несколько секунд.
может я что то не так делаю?
Спасибо

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изменение стиля текста
« Ответ #1 : 13-10-2018, 21:31:32 »
Проблема в том что если формат текста производится без замены шрифта (в зависимости от выбора пользователя) то довольно быстро даже на достаточно объемных чертежах. Если ж меняю и шрифт (на больших чертежах) то это все затягивается на несколько секунд.
может я что то не так делаю?
Всё так. Изменение текстового стиля без замены шрифта обычно вообще ничего не делает, а замена шрифта приводит к регенерации текстов. И если их много, то это может быть длительным процессом.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: Изменение стиля текста
« Ответ #2 : 13-10-2018, 21:33:14 »
а можно сделать так чтоб эта регенерация происходила не сама после каждой итерации а вручную в конце метода?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изменение стиля текста
« Ответ #3 : 13-10-2018, 21:34:59 »
а можно сделать так чтоб эта регенерация происходила не сама после каждой итерации а вручную в конце метода?
На скорости это никак не скажется.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: Изменение стиля текста
« Ответ #4 : 13-10-2018, 21:36:54 »
ну хорошо
спасибо!

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изменение стиля текста
« Ответ #5 : 13-10-2018, 21:39:10 »
А ты случайно не открываешь/закрываешь транзакцию для каждого MText, у которого меняешь текстовый стиль?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: Изменение стиля текста
« Ответ #6 : 13-10-2018, 21:40:22 »
ох. нет.
открываю транзакцию, перебираю все объекты изменяя, закрываю

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Изменение стиля текста
« Ответ #7 : 14-10-2018, 16:48:27 »
может я что то не так делаю?
Конечно, кое-что не так. Первый код, я так понимаю, в конструкторе формы находится? Это не есть хорошо, лучше разделять функционал. Внутри кода формы желательно не выполнять никаких действий с объектами AutoCAD API. Где-то извне получили текстовые стили, передали в форму только коллекцию их названий, на выходе получили строку - выбранное название стиля.

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: Изменение стиля текста
« Ответ #8 : 14-10-2018, 16:50:50 »
все верно. это не в форме. получаю стили, кидаю их в форму, после этого открываю форму.
из нее получаю строчки и работа ведется в командном методе.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Изменение стиля текста
« Ответ #9 : 14-10-2018, 17:29:15 »
Это разве не в коде формы?:
Код - C# [Выбрать]
  1. textStyle.Items.Add("");
Я так понимаю, textStyle - это ComboBox или ListBox.

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

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: Изменение стиля текста
« Ответ #10 : 14-10-2018, 17:41:15 »
здесь да.
просто показал алгоритм.
нет под рукой актуального кода.
он уже вынесен из формы