[ID CC-CC2022] Выбор прямоугольного фрейма

  • Автор темы Автор темы Dark_Nir
  • Дата начала Дата начала

Dark_Nir

Участник
Топикстартер
Сообщения
4
Реакции
0
Добрый день. Только начал изучать по видеоурокам и поиску по форуму написание скриптов, так как понадобилось написать для себя небольшой "конструктор" карт для настольной игры.
Столкнулся со следующими вопросами:
1) Как пописать (выбрать) определённый прямоугольный фрейм? Текстовый фрейм по имени я нашёл как выбрать activeDocument.textFrames.itemByName("Zagolovok"), а как аналогичным образом выбрать прямоугольный фрейм, в которое вставляется изображение?
2) Как определить, что текстовый и прямоугольный фрейм пустой? Буду загружать данные из таблицы через "Объединение данных", и в некоторых ячейках будет присутствовать текст или изображение, а некоторых нет. И нужно, чтобы в те, которые пустые применялось другое условие.
3) Как посчитать количество строк в текстовом фрейме? Опять же, так как данные из таблицы будут загружаться, то часть"заголовок" будет идти в одну строку, а часть в две строки. И чтобы те, которые идут в две строки применять другое форматирование, чтобы влезли красиво в нужный размер.
Извиняюсь за большое количество вопросов и заранее благодарен за ответы.
 
Последнее редактирование:
Извиняюсь за большое количество вопросов
Комментарий модератора: Когда получите ответы на эти вопросы, у Вас наверняка возникнут новые. Для новых вопросов создавайте новые темы по принципу «Один вопрос — одна тема».
 
  • Спасибо
Реакции: bossrus
навскидку:
1) Как пописать (выбрать) определённый прямоугольный фрейм? Текстовый фрейм по имени я нашёл как выбрать activeDocument.textFrames.itemByName("Zagolovok"), а как аналогичным образом выбрать прямоугольный фрейм, в которое вставляется изображение?
так же.
Код:
activeDocument.rectangles.itemByName("Zagolovok")
2) Как определить, что текстовый и прямоугольный фрейм пустой? Буду загружать данные из таблицы через "Объединение данных", и в некоторых ячейках будет присутствовать текст или изображение, а некоторых нет. И нужно, чтобы в те, которые пустые применялось другое условие.
Код:
if (activeDocument.rectangles[0].allGraphics.length==0) {значит картинок нет}
if (activeDocument.textFrames[0].texts.length==0) {значит текстовый бокс пустой}
3) Как посчитать количество строк в текстовом фрейме? Опять же, так как данные из таблицы будут загружаться, то часть"заголовок" будет идти в одну строку, а часть в две строки. И чтобы те, которые идут в две строки применять другое форматирование, чтобы влезли красиво в нужный размер.
где-то тут в темах был разбор как считать количество строк
 
Последнее редактирование:
  • Спасибо
Реакции: Dark_Nir
Еще можно contents проверять на пустоту
if (textFrames[0].contents.length==0)

Получилось, но работает странно. Если фрейм изначально пустой, так как в него не попали данные, то он всё равно будет считаться как непустой. Если в него руками занести данные, то он начнёт понимать, что он действительно не пустой. И вот после того, как данные из него удалить, тогда он поймёт, что и правда пустой. А можно ли сразу заставить думать, что он пустой?
 
Так вы посмотрите что в contents это ж строка
 
Так вы посмотрите что в contents это ж
Так в том то и дело, что ничего) Только синяя решетка, но она тут как я понял не влияет.
Провёл ещё один опыт. Так как я загружаю данные из таблицы, то в этом текстовом фрейме изначально хранится название столбца, от куда данные берутся (например <<Столбец1>>). Так вот, если это от туда удалить, то есть изначально сделать фрейм пустой, и сделать "Объединение данных", то она сразу определяется как пустая. А если как раз таки оставить <<Столбец1>>, и при "Объединении данных" туда ничего не попадёт - то фрейм будет пустой, но определяться как не пустой. Может как раз в этом дело?
 
Хорошо, а если количество слов проверять? Допустим, если words.length нулевое то фрейм пустой
 
  • Спасибо
Реакции: Dark_Nir
Хорошо, а если количество слов проверять? Допустим, если words.length нулевое то фрейм пустой
Да, это помогло. Тоже думал подобное проверить, только не количество слов, а символов, но не успел найти.
Спасибо большое!