|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Автоматический подбор высоты текста
Programming, automation, CADs, GISs. "Теплоком"
Россия, Санкт-Петербург
Регистрация: 02.02.2007
Сообщений: 306
|
||
Просмотров: 13928
|
|
||||
Programming, automation, CADs, GISs. "Теплоком" Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306
|
Может, подскажет кто хотя бы где копать?
dxf, activex? или, может, я плохо хелп смотрел. Что-то никак ничего похожего не найду. Или самому считать, умножая кол-во символов в тексте на их среднюю ширину? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,237
|
Используй textbox - имхо самое то.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,237
|
В смысле наподобие:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,237
|
> Alaspher : для многострочного надо просто полный список задавать, достаточный для entmakex - как правило, срабатывает
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
webcad.pro Регистрация: 06.01.2005
Московская обл.
Сообщений: 501
|
С mtext у меня через textbox что-то не получается как Алексей предлагает. А с boundingbox тоже засада. Если width у mtext не равна нулю то boundingbox возвращает прямоугольник с шириной равной width даже если слово, которое не перенеслось, выходит за эти габариты. А если width приравнять нулю то текст может разъехаться, когда переносы строк установлены не жестко, и результат все равно будет не корректный (разве что обязать пользователя расставлять переносы строк).
Как идея: может взрывать mtext и анализировать набор однострочных текстов? Кстати, что касается textbox недавно столкнулся с одной особенностью - если в начале текста есть пробелы или что-то вроде "%%u ля-ля-ля " (у меня был именно такой вариант) то функция игорирует такие вещи и не понятно как привязать ее результат "на местности". boundingbox - в отличии от textbox работает более корректно и результат дает сразу "с привязкой к месту", но имеет дело только с реальными объектами - вот и выбирай, как говорится. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,237
|
Alaspher, как всегда, прав. Код
Код:
P.S. Проверял на ADT 2k5 Eng +SP1, ADT 2k6 Rus + SP1. Запуск ADT как ACADa проблему не решает. Кошмар...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Варианты в порядке бреда:
1. копировать mtext в укромное место, там взрывать и брать textbox'ы того, что осталось. Правда потеряется, если есть, форматирование. 2. создать блок (можно анонимный), скопировать в него mtext и попробывать определить boundingbox блока. Все на основе догадок, без проверок и гарантий |
||||
![]() |
|
||||
webcad.pro Регистрация: 06.01.2005
Московская обл.
Сообщений: 501
|
>VVA
Действительно mtext обрабатывется корректно в отличии от boundingbox (хотя рамка получается чуть больше, но это, пожалуй, несущесвенно). А вот простой текст содержащий такую строку "%%u asdfsdf " обрабабатывается не корректно в отличии от того же boundingbox. Как написал Крыс - Кошмар... ps Выходит сами писатели автокадовские используют ACET-GEOM-OBJECT-POINT-LIST, а простым смертным глючный boundingbox подсовывают. Молодцы, молодцы... |
|||
![]() |
|
||||
Тоже сталкивался с тем, что acet-* ф-ции работают иногда более корректно. Правда почитать что-нубудь негде.
Нашел описания здесь http://www.theswamp.org/index.php?topic=13719.0 но там только названия. Там есть еще ACET-GEOM-TXTBOX. правда не знаю что ей скармливать в качестве аргументов. |
||||
![]() |
|
||||
webcad.pro Регистрация: 06.01.2005
Московская обл.
Сообщений: 501
|
ACET-GEOM-TXTBOX - даже лучше работает с mtext, однако с однострочным текстом проблемы остаются. Впрочем как, показали тесты проблемы с перфиксными пробелами имеются только у ttf-шрифтов; shx - обрабатываются корректно.
Короче, вывод - наиболее корректны следующие связки: Mtext - (ACET-GEOM-TXTBOX ...) [ExpressTools] Text - (vla-GetBoundingBox ...) |
|||
![]() |
|
||||
Programming, automation, CADs, GISs. "Теплоком" Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306
|
:shock:
Парни, я с трудом поспеваю за ходом ваших мыслей! У меня такая проблема. В чертеже есть несколько mtext'ов. Пользователь редактирует mtext. Не работают вот эти варианты: Код:
Код:
Зато вариант Код:
В чем проблеме, никак не догоню. |
|||
![]() |
|
||||
Programming, automation, CADs, GISs. "Теплоком" Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306
|
Еще раз перечитал. Не в том ли проблема, что textbox анализирует текст виртуальный, в смысле строку, передаваемую ей в качестве аргумента, и никак не связана с текстом на чертеже?
|
|||
![]() |