Здравствуйте!
Есть задача - отредактировать некоторое множество надписей на чертеже, с теми же настройками шрифта что и были до редактирования.
Получилось заменить строку в надписи, но высота шрифта по умолчанию не совпадает с высотой шрифта до редактирования (допустим была высота 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()
Цитата: AleksandrZBO от 05.12.23, 08:11:09отредактировать некоторое множество надписей на чертеже, с теми же настройками шрифта что и были до редактирования.
Если нужна просто замена текста, то почему не так?
textLine = module7.ITextLine(text)
textLine.Str = 'My_function'
Или даже так, если в новом тексте уже добавлены переносы строк, например.
text.Str = 'My_function'
Если идти по такому пути то выдает ошибку 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'