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

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

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

(myID - это InDesign.Application)

Set myCurrentPage = myID.ActiveWindow.ActivePage
Set myCurrentLayer = myID.ActiveWindow.ActiveLayer

Необходимо помнить, что окна (Window) бывают LayoutWindow и StoryWindow. Первое – это привычное нам окно верстки, второе – окно встроенного текстового редактора. Понятное дело, у последнего нет ни активной страницы, ни активного слоя, поэтому при запуске скрипт в активном StoryWindow может появляться ошибка.
 
Ответ: Получение размера текстового фрейма

Спасибо большое!

Как получать имя активного слоя стало ясно. А вот как сделать другой слой активным?

myText.ItemLayer = ИмяСлоя

не могу найти как правильно писать ИмяСлоя.
 
Ответ: Получение размера текстового фрейма

Могу соврать, потому как пишу не проверяю, но попробуй, например,
myText.ItemLayer = myDoc.Layers.Item("MyLikedLayer")

Там ведь нужно сослаться на объект Layer, а не на его имя
 
Ответ: Получение размера текстового фрейма

Выдает ошибку
"Run-Time error '91':"
Object Variable or With block variable not set
 
Ответ: Получение размера текстового фрейма

Вот я тут поэкспериментировал, создал пустую публикацию, нарисовал текстовый фрейм, наплюхал пять слоев (Layer 1, Layer 2 и т. д.) и написал дурацкий скрипт, который последовательно перемещает объект со слоя на слой.
Есть два способа перекинуть объект со слоя на слой.
Первый с помощью свойства ItemLayer:
Код:
Dim myID As InDesign.Application
Dim myTextFrame As TextFrame
Set myID = CreateObject("InDesign.Application.CS")

Set myTextFrame = myID.Selection(1)

For i = 1 To 5
    myLayerName = "Layer " + Trim(Str(i))
    myTextFrame.ItemLayer = myID.ActiveDocument.Layers(myLayerName)
Next

Второй способ: использование метода Move:
Код:
Dim myID As InDesign.Application
Dim myTextFrame As TextFrame
Set myID = CreateObject("InDesign.Application.CS")

Set myTextFrame = myID.Selection(1)

For i = 1 To 5
    myLayerName = "Layer " + Trim(Str(i))
    myTextFrame.Move myID.ActiveDocument.Layers(myLayerName)
Next

У меня все работает.

P.S. Лепилось все в VB6, чтобы отдебагить это дело :) Для VBS нужно убрать "As InDesign.Application" :)
 
Ответ: Получение размера текстового фрейма

Если я правильно понял суть вопроса - необходимо написать аналог Пейждевской функции, которая определяла баунд выделенного текста?
У меня есть сэт прототипов функций, которые делают это - однако он находиться в состоянии глубокой альфа-версии. Писал я его, правда, исходя из другой интенции - меня окончательно достали глюки функции FitFrameToContent - имхо - она скорее НЕ работает, чем работает, в том, что касается текста. Если хватит времени - доведу до ума.
Для не желающих ожидать - даю совет - надо использовать свойства объекта InsertionPoint - то бишь находить первый и последний Пойнты фрейма (или связки колонок или фреймов и т. д.), определять их координаты и делать соответствующие вычисления.
 
Ответ: Получение размера текстового фрейма

Хочу вставить на 2-ую и 3-юю страницы фреймы, установить активным слой Layer 3 и в эти фреймы вставить файлы. Скрипт на vbs.
Код:
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.ActiveDocument

Set myTextFrame = myDocument.Pages.Item(1).TextFrames.Add
myTextFrame.ItemLayer = myDocument.Layers.Item("Layer 3")
myTextFrame.GeometricBounds = Array(0, 0, 1082, 782)
myTextFrame.Place "C:\file1.pdf"

Set myTextFrame = myDocument.Pages.Item(2).TextFrames.Add
myTextFrame.ItemLayer = myDocument.Layers.Item("Layer 3")
myTextFrame.GeometricBounds = Array(0, 0, 1082, 782)
myTextFrame.Place "C:\file2.pdf"
Но у меня фреймы и файлы ложаться на первую страницу.
Как сделать, чтоб они ложились по своим страницам?
 
Ответ: Получение размера текстового фрейма

1. В Бейсике индексы считаются с 1, а не с 0.

Стр 2 -- Pages.Item(2)

2. Посмотри на линейки. Если шкала общая на весь
разворот, то подумай, куда попадут фреймы при
задании одинаковых координат для четных и нечетных
страниц.
Поставь в преференсах линейки постраничные
и заработает.
 
Статус
Закрыто для дальнейших ответов.