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

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

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

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

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

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

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

Получение и редактирование высоты шрифта надписи

Автор AleksandrZBO, 05.12.23, 08:11:09

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

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

AleksandrZBO

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

Есть задача - отредактировать некоторое множество надписей на чертеже, с теми же настройками шрифта что и были до редактирования.

Получилось заменить строку в надписи, но высота шрифта по умолчанию не совпадает с высотой шрифта до редактирования (допустим была высота 10, стало 5).

Попытки работать с интерфейсом ITextFont не имели успеха, с виду получаю то что надо (выводил в консоль объект font), но если вывести в консоли font.Height, то получаю высоту текста по координате Y.

Разбирал примеры - пытался создавать текст через последовательность textLine.Add и textItem.Add и получать от textItem интерфейс textFont, но результат такой же - при установке свойства font.Height я меняю высоту надписи по Y. В коде этот пример не стал приводить.

Вопрос - как правильно узнать высоту текста до редактирования и применить ее при замене строки надписи?

def my_function():
   
    module7, api7, const7 = get_kompas_api7() 
    app7 = api7.Application 
   
    kompasDoc = app7.ActiveDocument
    iKompasDocument2D = module7.IKompasDocument2D(kompasDoc)
    iViewsAndLayersManager = iKompasDocument2D.ViewsAndLayersManager
    iViews = iViewsAndLayersManager.Views
    iView = iViews.ActiveView
    iDrawingContainer = module7.IDrawingContainer(iView)
    iDrawingTexts = iDrawingContainer.DrawingTexts
     
    text = module7.IText(iDrawingTexts.DrawingText(4))
    textLine = module7.ITextLine(text)
    textItem = module7.ITextItem(textLine)
    font = module7.ITextFont(textItem)
    print(font) # вывод в консоли <ITextFont instance at 0x1718405891472>

    textLine = text.Clear()
    textLine = text.Add()
    textLine.Str = 'My_function'
    iDrawingTexts.DrawingText(4).Update()


lavgirb

Цитата: AleksandrZBO от 05.12.23, 08:11:09отредактировать некоторое множество надписей на чертеже, с теми же настройками шрифта что и были до редактирования.

Если нужна просто замена текста, то почему не так?
textLine = module7.ITextLine(text)
textLine.Str = 'My_function'
Или даже так, если в новом тексте уже добавлены переносы строк, например.
text.Str = 'My_function'

AleksandrZBO

Если идти по такому пути то выдает ошибку pywintypes.com_error: (-2147352571, 'Несовпадение типов.', None, 1)

Цитата: lavgirb от 05.12.23, 09:00:16Если нужна просто замена текста, то почему не так?
textLine = module7.ITextLine(text)
textLine.Str = 'My_function'
Или даже так, если в новом тексте уже добавлены переносы строк, например.
text.Str = 'My_function'