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

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

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

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

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

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

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

Точка привязки текста компас 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

04.06.20, 15:52:24 #4 Последнее редактирование: 04.06.20, 19:01:12 от psiv
Решение моей проблемы с выравниванием текста в макроэлементе - https://forum.ascon.ru/index.php?topic=34668.new#new - см. код в последнем сообщении.

333

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