Сообщество программистов Autodesk в СНГ

ADN Club => ObjectARX => Тема начата: begiz от 29-09-2014, 10:19:59

Название: Высота текста, как поменять
Отправлено: begiz от 29-09-2014, 10:19:59
Добрый день.
Наверно какая то мелочь, но никак не могу найти.

Ситуация: на чертеже куча всякого текста, весть красиво раскинуть по стилям.
Цель: менять отображение текста в зависимости от настроек стиля, как бы для етого он и нужен изначально.
Что получается: менять шрифт, угол.
Что не получается : высота никак не меняется, Т.е. в стиле изменения видно, но реально высота текста в блоках не меняется.
Если в ручную переклюцить стиль на любой другой и потом назад на тот что изменион, то всё обновлиается.
Что я забыл?

Все блоки и выноски(МЛеадер) создаются програмно с выставлением стилей, высот и т.д.

П.С. "реген" никак не помогает.

Autocad 2012 64-bit English.
Название: Re: Высота текста, как поменять
Отправлено: Алексей Кулик от 29-09-2014, 18:06:02
Ну, вообще-то высота текстов и атрибутов никак не зависит от высоты, установленной в стиле. Это свойство каждого подобного объекта, и обрабатывать их надо отдельно.
Название: Re: Высота текста, как поменять
Отправлено: begiz от 29-09-2014, 18:38:01
То есть как высота текста стиля не связана с высотой текста? А зачем она тады нужна? Угол(oblique) то выставляется как нужно,
И другой момент, почему изменив высоту текста через манагер стилей, высота всётаки меняется?
Название: Re: Высота текста, как поменять
Отправлено: Алексей Кулик от 29-09-2014, 18:46:02
Где она меняется? В уже созданных объектах?
Название: Re: Высота текста, как поменять
Отправлено: begiz от 29-09-2014, 18:51:11
Так точно, при переключении стилей размер текста меняется в зависимости от размера указаного в стиле.
1. создал текст со стилем Стандарт.
2. поменял значение высоты у стиля Стандарт.
3. переключился со стиля Стандарт на другой, размер поменялся.
4. переключился назад на стиль Стандарт и размер у текста стал такой как я указал.
Название: Re: Высота текста, как поменять
Отправлено: Алексей Кулик от 29-09-2014, 19:17:59
А, так используются текстовые стили с фиксированной высотой, не равной 0?
P.S. Пока что нет самого главного - кода, который "не срабатывает так, как надо".
Название: Re: Высота текста, как поменять
Отправлено: begiz от 29-09-2014, 19:23:34
Вот собственно код.
Шрифт обновляется, угол тоже, высота нет.
Ето упрощенный вариант, выполниается из модального диалога.

Код - C++ [Выбрать]
  1. AcDbTextStyleTableRecordPointer pLdrTS(getTextStyle(STYLE_LEADER),AcDb::kForWrite);
  2. CString f_name = _T("Arial");
  3. pLdrTS->setFont(f_name,false,false,0,0);
  4. CString t_size = _T("250");    
  5. pLdrTS->setTextSize(_ttoi(t_size));
  6. CString ang = _T("45");
  7. double ang_f;
  8. acdbAngToF(ang,3,&ang_f);
  9. pLdrTS->setObliquingAngle(ang_f);
  10. pLdrTS->close();
  11. acDocManager->sendStringToExecute(curDoc(),_T("_.regen\n"));
  12.  
Название: Re: Высота текста, как поменять
Отправлено: Александр Ривилис от 29-09-2014, 19:27:40
Так точно, при переключении стилей размер текста меняется в зависимости от размера указаного в стиле.
Это если ты переключаешь через Панель свойств или через соответствующий тулбар, т.е. вручную. Но если ты программно (!!!) переключишь текстовый стиль, то высота текста, угол наклона и степень сжатия меняться не будут. Т.е. программно кроме изменения текстового стиля тебе придётся всё это изменить отдельно. Конечно если в этом есть необходимость. Достаточно часто один и тот же текстовый стиль используют для разных высот текста. Общим всегда является используемый шрифт.
Теперь понятно?
Название: Re: Высота текста, как поменять
Отправлено: begiz от 29-09-2014, 19:30:05
Т.е. то что я хотел избежать, перебрать все объекты в базе и поменять у них высоту и т.д. мне не удастся?
Тады увы, понятно.
Спасибо.
Название: Re: Высота текста, как поменять
Отправлено: Александр Ривилис от 29-09-2014, 19:34:57
Т.е. то что я хотел избежать, перебрать все объекты в базе и поменять у них высоту и т.д. мне не удастся?
Именно так.