All Forums
 Категория Visio
 Форум Вопросы и ответы
 Сжать текст до границ размера текстового блока
Author Previous Topic Topic Next Topic  

Den_media

1 Posts

Posted - 10/04/2006 :  19:57:15
Здравствуйте, Уважаемые участники форума.

Помогите пожалуйста разобраться с одной проблемой.

Суть проблемы следующая:::
На листе имеется всем известная основная надпись, в одно из полей которой вносится название чертежа. Например, "Помещение щитовой ХХХ. План прокладки кабелей на отметке XXX".
Иногда названия чертежей бывают весьма содержательными и включают в себя довольно много слов.
Заполнение названия чертежа производится вводом данных в поля диалога "свойства файла". На поле чертежа название попадает с помощью вставленного в текстовый блок полей - Document Info. Т.е. для вставки названия чертежа не требуется открытие файла.

Соответственно бывают случаи, когда надпись выходит за рамки блока. И по причине человеческого фактора данное событие обнаруживается и устраняется уже только после вывода чертежа на печать.

Хочу разобраться - существует ли способ, при котором сжатие текста (уменьшение размера) производилось бы автоматически, что навсегда бы исключило возможность появления выше описанного события.

Надеюсь на вашу помощь. Заранее благодарю.

Tumanov

Russia
1198 Posts

Posted - 10/04/2006 :  22:30:16
Точного решения сейчас сразу не дам, только направление...
Есть такая функция TEXTHEIGHT. Она вычисляет высоту текста с учетом всех параметров - шрифта, отступов и т.д.
Значит можно поставить условие на допустимую высоту и в зависимости от него устанавливать размер шрифта.
Например, в ячейку Size секции Character ввести формулу
=IF(TEXTHEIGHT(TheText;(Width))>1;8 pt;12 pt)
При данных параметрах здесь написано: Если высота текста превысит 1 дюйм, установить шрифт 8 pt, иначе 12 pt.
Такая формула слегка работает, но очень плохо, потому что она зациклена. Устанавливается размер шрифта, но он в свою очередь влияет на вычисление высоты текста. Для правильной формулы надо придумать, как это зацикливание убрать.
Возможно, вычислять высоту текста в другом шейпе с неизменым шрифтом, а результат использовать для выбора шрифта в нужном шейпе... Тут подумать надо.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 10/13/2006 :  21:45:49
В связи с тем, что нашелся спонсор, оплативший разработку решения, предлагаю воспользоваться специальным шейпом.
Шейп и краткое пояснение лежат на http://visio.com.ru/formtxt.php
Если что-то не понравится, обсуждать здесь. Предложения тоже сюда.
Если понравится, тоже не забудьте сказать. (В качестве рекомендации для других).
Go to Top of Page

brace

Russia
358 Posts

Posted - 10/19/2006 :  10:23:23
вот статья про то как с помощью формулы подогнать текст под размеры
заданного прямоугольника и наоборот ...

http://blogs.msdn.com/visio/Default.aspx?p=2
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 10/19/2006 :  20:09:17
Ну, это более примитивный случай. Для данной задачи он не подходит.
В нем используется линейная зависимость между размером шейпа и размером шрифта.
У нас же размер шейпа постоянный, а связать нужно количество символов с размером шрифта. А такая зависимость начинает зацикливаться, если не принять специальных мер :)
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)