• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Регистрация будет доступна с 8:00 (мск) 12 января.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

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

Автор freestyler, 15.10.26, 09:16:59

« назад - далее »

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

freestyler

Коллеги, приветствую! Снова нужна ваша помощь.
Изменяю текст, а он не изменяется. Причем, если в том же сеансе его снова программно прочитать, читается измененный. А если сохранить-закрыть-открыть чертеж, то читается неизмененный.

Вот код (написан на основе Step3_API7_2D и чтения форума):

foreach (KompasAPI7.View v in _doc2d7.ViewsAndLayersManager.Views) //Перебираю чертежные виды
{
     dynamic objects = (v as IDrawingContainer).Objects[4]; //На виде получаю все объекты типа 4 = ksDrDrawText (Текст на чертеже)

     for (int i = 0; i < objects.Length; i++) //Перебираю полученные объекты
     {
        IText txt = objects[i] as IText;

        for(int j = 0; j<txt.TextLines.Length; j++) //Для каждого IText перебираю его строки (ITextLine)
        {
           ITextLine tl = txt.TextLines[j];

           for(int k = 0; k< tl.TextItems.Length; k++) //Для каждой строки перебираю ITextItem - не понял что это такое, видимо вхождения неких блоков текста в строку
           {
              ITextItem ti = tl.TextItems[k];
              ti.Str = "TEST"; //Меняю текст
              ti.Update(); //Обновляю блок
           }
        }
     }
     v.Update(); //Обновляю вид
}
((IKompasDocument2D1)_doc2d7).RebuildDocument(); //Перестраиваю чертеж

freestyler

Вот как всегда, стоит изложить вопрос письменно и найдется ответ. Прям чувствовал, что надо сделать что-то типа IText.Update(), смущало что у IText нет такого метода. Зато он нашелся у IDrawingText, правда у него нет TextLines.
Резюме: TextLines берем от IText, а чтобы проапдейтить делаем (txt as IDrawingText).Update();   :w:

Спасибо всем, кто хотел помочь, но не успел )