Точка привязки текста компас 2d

Автор Chemist, 19.08.15, 06:55:05

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

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

Chemist

Доброго времени суток!
Подскажите пожалуйста, как программно изменить точку привязки текста на 2д чертеже? либо создавать строку с точкой привязки к середине. Либо какие то другие идеи (Вариант считать ручками, оставляя точку привязки слева не вариант, т.к. конечному пользователю будет неудобно редактировать получившийся чертеж (а такая необходимость не исключается)
(по умолчанию она слева, а нужно по середине)

obj = iDocument2D.ksEndObj()

iParagraphParam = KAPI.ksParagraphParam(iKompasObject.GetParamStruct(LDefin2D.ko_ParagraphParam))
iParagraphParam.Init()
iParagraphParam.x = 48.40983406200
iParagraphParam.y = 60.0
iParagraphParam.ang = 0.0
iParagraphParam.height = 7.13581323623
iParagraphParam.width = 19
iParagraphParam.hFormat = 0
iParagraphParam.vFormat = 0
iParagraphParam.style = 19

iDocument2D.ksParagraph(iParagraphParam)

iTextLineParam = KAPI.ksTextLineParam(iKompasObject.GetParamStruct(LDefin2D.ko_TextLineParam))
iTextLineParam.Init()
iTextLineParam.style = 1

iTextItemArray = KAPI.ksDynamicArray(iKompasObject.GetDynamicArray(4))

iTextItemParam = KAPI.ksTextItemParam(iKompasObject.GetParamStruct(LDefin2D.ko_TextItemParam))
iTextItemParam.Init()
iTextItemParam.iSNumb = 0
iTextItemParam.s = "Пример текста"
iTextItemParam.type = 0

iTextItemFontParam = KAPI.ksTextItemFont(iTextItemParam.GetItemFont())
iTextItemFontParam.Init()
iTextItemFontParam.bitVector = 4096
iTextItemFontParam.color = 0
iTextItemFontParam.fontName = "GOST type A"
iTextItemFontParam.height = 5.0
iTextItemFontParam.ksu = 1.0

iTextItemArray.ksAddArrayItem(-1, iTextItemParam)

iTextLineParam.SetTextItemArr(iTextItemArray)
iDocument2D.ksTextLine(iTextLineParam)

obj = iDocument2D.ksEndObj()

Размещение текста относительно точки привязки.
IDrawingTexts.Allocation = ksAlCentre
+ Благодарностей: 1

Chemist

Спасибо, разобрался.
Также можно работать через экспорт ksSetTextAlign()

obj = iDocument2D.ksText(dx+48.40983406200, dy+60.0, 0, 5, 1, 4096, "SomeText")
iDocument2D.ksSetTextAlign(obj, ksAlCentre)

psiv

Цитата: Chemist от 20.08.15, 04:52:13Также можно работать через экспорт
Спасибо, помогли!
Но почему после создания макроэлемента с текстом с точкой привязки "в центре" эта привязка слетает в дефолтную привязку "слева"?

psiv

#4
Решение моей проблемы с выравниванием текста в макроэлементе - https://forum.ascon.ru/index.php?topic=34668.new#new - см. код в последнем сообщении.

333

iDocument2D.ksSetTextAlign нужно вызвать после EndObj макро
а лучше тест создавать через API7