Получение размера текстового фрейма

  • Автор темы Автор темы jurami
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

jurami

Участник
Топикстартер
Сообщения
6
Реакции
0
Есть некий текст, размещенный в Индизайне в несколько колонок. Этот текст был автоматически обработан, отформатирован и пр. Хочу узнать, сколько теперь занимает текст. Как?
Спасибо ))
 
Ответ: Получение размера текстового фрейма

А мерить в чем?
 
В миллиметрах

Собственно, требуется узнать общую высоту колонок с текстом. Естественно, до границы текста, ведь колонку можно вытянуть...
 
Ответ: Получение размера текстового фрейма

Было бы неплохо высоту и ширину расположить над фреймом. Текстовый блок должен находится на другом слою, к примеру зеленый слой "Измерения".
Также очень желателен расчет площади фрейма. Единицы измерения - сантиметры.
Желаемое хорошо видно на скриншоте. Размер шрифта <= 6.
 

Вложения

  • frame.gif
    frame.gif
    25.6 КБ · Просм.: 654
Ответ: Получение размера текстового фрейма

Господа, на меня либо Федор Михалыч действует, либо я совсем поглупел. Зачем?? Ну, хорошо, площадь, положим, при отсутствии модульной верстки, я могу понять, размеры фрейма по длине и высоте зачем на слоях писать? Глаза опустить (поднять/скосить) до панельки Transform, нет?
Ну, это Дону Педро.
А вот jurami - общая высота колонок с текстом, не понимаю, количество строк посчитать и умножить их на межстрочный интервал? Или что? Право, чуть поподробнее!
 
Ответ: Получение размера текстового фрейма

Объясняю.
Печатаем кучу объавлений (100-120 за номер). Действует правило: мы объявления размещаем, после этого высчитываем площадь каждого из них и отправляем заказчику счет. В счете указываем в кв.см. площадь и цену.
Для этого мне приходиться ручками над фреймом прописывать X*Y=S. X и Y печатаються для прозрачности. В смысле для того чтобы любой человечек приходя в бухгалтерию смог на калькуляторе посчитать сколько занимает его объявление. Люди разные бывают. Распечатки с этими размерами храняться у главбуха как финансовые документы. К тому же, мне вовсе не хочеться чтобы некоторые люди думали что эту работу делает автоматом программа. :) :) Пусть думают что я сам с калькулятором высчитываю. А то им покажеться что я мало работаю.

После вывода на принтер, слой с размерами прячу или вовсе удаляю, чтоб не мозолил глаза.
 
Ответ: Получение размера текстового фрейма

Объясняю. Если бы фрейм был отдельный - проблем бы не было. FrameToContent и смотрим размер фрейма. НО! Колонок несколько, в них текст сформатирован разным стилями, с разным размером шрифта, т.е., просто перемножить нельзя. Сделать для связанных колонок FrameToContent нельзя. Основной вопрос вот в чем: как узнать, где в последней колонке заканчивается текст!
И действительно спасибо за внимание к проблеме!
 
Ответ: Получение размера текстового фрейма

Так, с Доном разобрались, проблема ясна, но она очень специфическая... Интересно, а много еще человек нуждается в подобном решении?
Почему спрашиваю:
а) если достаточно много, чтобы после написания этот скрипт можно было бы выложить на сайте, тогда можно сделать и на общественных началах
б) если же эта вещь нужна только Вам, уважаемый Дон, то автоматически разговор переходит в другую плоскость.

jurami:
Вот хоть убейте меня, не могу догнать, в каких единицах нужно замерить, а главное, для чего это нужно???
 
Ох

Так, единицу измерения я уже вроде бы упоминал - миллиметры. В общем, система СИ ))
Теперь, если это поможет для решения проблемы, для чего это нужно. Речь идет о верстке частных объявлений. Исходя из технологии изготовления газеты, нужно заранее знать, сколько занимают правильно сверстанные частные объявления, чтобы потом спланировать номер.
 
Ответ: Ох

Думаю можно сделать скрипт для всех. Чтобы была галочка "Показывать X*Y". Тогда пользователь будет выбирать нужны ему XY для отображения или нет. А также чтоб присутствовал выбор: где надпись размещать: справа, слева, по центру, сверху или снизу и.т.д. Плюс присвоение стиля тексту надписи.
Думаю такой скрипт заитересует всех тех у кого верстка не модульная.
 
Ответ: Получение размера текстового фрейма

Думаю такой скрипт заитересует всех тех у кого верстка не модульная.

Совершенно, не в тему, но страшно любопытно мне, неужели так работать удобно? Нет, про рекламный отдел я молчу, им все удобно, особено в ведомости расписываться, но верстальщикам? но газете самой?
 
Ответ: Получение размера текстового фрейма

Дык, все объявления текстовые, никакой графики, приходиться иногда очень изощряться чтобы вместить все как надо. Сейчас легче стало, раньше по 7-8 страниц таких объявлений делал, на двух языках. И все объявления каждый раз новые. Повторов нет.

Не удобно, а как по другому?
 
Ну, уже пошел флейм...

А, тем временем, пришло озарение... Насчет Дона - вообще не проблема, одно объявление - один фрейм, что бы внутри него не было - FrameToContent, смотришь размер фрейма... А написать шестерочкой размеры и для удобства сгруппировать - уже техника.
А вот насчет моего случая - вот что пришло в голову. Итак, для связанного фрейма нельзя сделать этот самый FrameToContent. В этом и вся проблема. Так вот, выбираем этот самый фрейм, COPY-PASTE - и получаем отдельно стоящий фрейм )))
Может, у кого еще есть какие мысли на этот счет?
 
2Jurami: Честно, а ничего не понимаю что же нужно получить.
Размер фрейма который связан с другим фреймом?
Я так понимаю что под термином колонки имеются ввиду фреймы? Я же считаю что "колонки" это колонки внутри фрейма - columns, они и на всю страницу тоже columns, но тогда на это надо указывать, что мол полоса разбита на столько-то колонок.
Есть фрейм, по ширине вписанный в колонку и этот фрейм связан с другим(и).
Как определить общую высоту текстовых строк (в миллиметрах) находящиеся в последнем фрейме?
Так?
 
Ответ: Да, именно так

Мне бы просто обычный скрипт который обмеривает и ставит сверху надпись. Как я описывал в теме №4.

Заранее спасибо!
 
Ответ: Да, именно так

Наконец-то установил себе Visual Basic 6.0
Скачал себе indesign_cs_scripting_guide.pdf
Сейчас пытаюсь сделать скрипт о котором я писал выше, ничего не получаеться. Нужен пример кода, чтоб я его по полочкам разложил и изучил.
Приветствуются любые советы по данной задаче а также просто о том с чего начинать изучение скриптописания.

P.S. Скачал исходник скрипта AlignByPage, сижу штудирую.
 
Ответ: Получение размера текстового фрейма

Собрал такой скрипт:

PHP:
Private Sub Command1_Click()

Dim myText As InDesign.TextFrame
Dim myDocument As InDesign.Document
Set myInDesign = CreateObject("InDesign.Application.CS")
Set mySelection = myInDesign.Selection.Item(1)
Set myText = myDocument.TextFrames.Add
myXYS = myCalculate(mySelection)

MsgBox ("x: " & myXYS(0) & "cm" & vbCr & "y: " & myXYS(1) & "cm" & vbCr & "Aria: " & myXYS(2))

myText.GeometricBounds = Array(myXYS(3), myXYS(4), myXYS(5), myXYS(6))
myText.Contents = myXYS(2)
End Sub

Private Function myCalculate(myObject)
myBounds = myObject.VisibleBounds
myXl = myBounds(1)
myYl = myBounds(0)
myX2 = myBounds(3)
myY2 = myBounds(2)
myX = CSng((myX2 - myXl) / 10)
myY = CSng((myY2 - myYl) / 10)
TmyX1 = (myX1 - 2)
TmyY1 = (myY1 - 2)
TmyX2 = (myX2 - 2)
TmyY2 = (myY2 - 2)
aria = myX * myY
myCalculate = Array(myX, myY, aria, TmyX1, TmyY1, TmyX2, TmyY2)

End Function

Выдает такую ошибку:

Run-Time error '91':

Object variable or With block not set

При нажатии на кнопку Debug подсвечивает желтым строку:
Set myText = myDocument.TextFrames.Add

Уже вечер и сильно торможу... :)
 
Ответ: Получение размера текстового фрейма

У текстового фрейма родитель не документ, а страница, создавай оный текстовый фрейм на странице, а не в документе.
 
Ответ: Получение размера текстового фрейма

Спасибо, получилось!
Вот переделанный скрипт:
PHP:
Private Sub Command1_Click()

Dim myIndesign As InDesign.Application
Dim myDocument As InDesign.Document
Dim myText As InDesign.TextFrame
Dim myPage As InDesign.Page

Set myIndesign = CreateObject("InDesign.Application.CS")
Set mySelection = myIndesign.Selection.Item(1)
Set myDocument = myIndesign.Documents.FirstItem
Set myPage = myDocument.Pages.Item(1)
Set myText = myPage.TextFrames.Add

myXYS = myCalculate(mySelection)

MsgBox ("x: " & myXYS(0) & "cm" & vbCr & "y: " & myXYS(1) & "cm" & vbCr & "Aria: " & myXYS(2))

myText.GeometricBounds = Array(myXYS(3), myXYS(4), myXYS(5), myXYS(6))
myText.Contents = Str$(myXYS(2))

End Sub

Private Function myCalculate(myObject)
myBounds = myObject.VisibleBounds
myX1 = myBounds(1)
myY1 = myBounds(0)
myX2 = myBounds(3)
myY2 = myBounds(2)
myX = CSng((myX2 - myX1) / 10)
myY = CSng((myY2 - myY1) / 10)
TmyY1 = (myY1 - 5)
TmyY2 = (myY1 - 1)
aria = myX * myY
myCalculate = Array(myX, myY, aria, TmyY1, myX1, TmyY2, myX2)

End Function

Теперь, подскажите пожалуйста:
1. Set myDocument = myIndesign.Documents.FirstItem - верно указано или стоит использовать другой метод (для случая когда открыто несколько документов)?
2. Как сделать чтобы myDocument.Pages работал на текущей странице? Использовать метод AnyItem?

3. Как сделать активным слой с именем, например, "Measures" с одновременным включением видимости?
 
Статус
Закрыто для дальнейших ответов.