Перейти к публикации

Компас макро. Изменение текста на чертеже.


Рекомендованные сообщения

Здравствуйте!

Задача - изменить тест на чертеже. Текст простой в одну строку, с обычным оформлением "Текст на чертеже".

В цикле перебираю все виды документа, а в каждом виде все текстовые объекты. Пытаюсь менять текст путем присвоения iText.Str, так же пробовал TextLine.Str и TextItem.Str, но результат один - текст на чертеже не изменяется, хотя при следующем вызове видно, что свойство Str изменилось. Через iText.Replace - аналогично.

Нашел уже внешнюю программу замены текстов, но хотел бы разобраться.

...
kompas_api7_module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
application = kompas_api7_module.IApplication(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kompas_api7_module.IApplication.CLSID, pythoncom.IID_IDispatch))

Documents = application.Documents

#  Получим активный документ
kompas_document = application.ActiveDocument
kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)

Views = kompas_document_2d.ViewsAndLayersManager.Views
for view in Views:
    obj_v = kompas_api7_module.IDrawingContainer(view)
    texts = obj_v.DrawingTexts
    i = 0
    for i in range(len(texts)):
        text = texts.DrawingText(i)
        s = kompas_api7_module.IText(text)
        print(s.Str)
        s.Str = "Text2"
        s.Replace("Text1", "Text2", False, True, True)
        s.TextLine(0).TextItem(0).Str = "Text2" 
        s.TextLine(0).TextItem(0).Update()
        print(s.TextLine(0).TextItem(0).Str
exit()

По SDK не могу понять механизм изменения текста, есть у кого опыт?

Ссылка на сообщение
Поделиться на других сайтах


UnPinned posts

Мир не без добрых людей!

Спасибо, Вячеслав Д.

    texts = obj_v.DrawingTexts
    for text in texts:
        s = kompas_api7_module.IText(text)
        print(s.Str)
        s.Str = "Text2"
        text.Update()

 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...