[ID CC-CC2022] Одинаковые координаты geometricBounds

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

kostya_

Участник
Топикстартер
Сообщения
8
Реакции
0
Приветствую, форумчане!
(win 10 x64; Indesign CC 2015.3 x64)
Столкнулся со следующей проблемой: при переборе pageitems на полосе и получении их координат индизайн выдает одни и те же координаты, хотя pageitems находятся в разных местах страницы. Удивительно, но если оставить два pageitems, то geometricBounds выдает разные координаты, но если на эту полосу добавить третий pageitem, то geometricBounds опять выдает для всех pageitems одинаковые значения.

Код:
app = win32com.client.dynamic.Dispatch('Indesign.Application.CC.2015')
doc = app.ActiveDocument
page = doc.pages
for n_page in xrange(0,page.count):
    if page[n_page].pageitems.count == 0:continue
    print 'page - ',page[n_page],' ___  objects - ', page[n_page].pageitems.count
    for n_item in xrange(0,page[n_page].pageitems.count):
        my_geo = page[n_page].pageitems[n_item].geometricBounds
        print my_geo

Два pageitems на одной полосе, третий на другой:
page - 2 ___ objects - 2
(23.358550293608683, 12.7, 33.66281274482828, 36.3333342481329)
(273.64144970585255, 170.1806721755204, 283.9457121570721, 193.8140064236533)
page - 3 ___ objects - 1
(155.65855029360878, 293.17233884218706, 165.96281274482834, 316.80567309031994)

Два pageitems не трогали, к ним перенесли третий (примерно в центр страницы):
page - 2 ___ objects - 3
(137.34144970639144, 93.83900550891762, 147.645712157611, 117.47233975705052)
(137.34144970639144, 93.83900550891762, 147.645712157611, 117.47233975705052)
(137.34144970639144, 93.83900550891762, 147.645712157611, 117.47233975705052)

Может быть кто-нибудь сталкивался с подобным и ему удалось разобраться, поделись плиз, в чем загвоздка.

пс
На мой взгляд это несусветная мистика и разум отказывается строить какие бы то ни было предположения.
 
В последней строке рядом с my_geo выведите ещё n_item; может, что-то прояснится.
 
  • Спасибо
Реакции: kostya_
@kostya_, ну питон не знаю. но например на C# при проходе по элементам нужно указывать первые индекс не ноль а единицу. так что может и язык влиять.
 
В последней строке рядом с my_geo выведите ещё n_item; может, что-то прояснится.
Добавил в код строку, чтобы питон печатал pageitems.id
Оказывается каким-то образом берутся координаты одного и того же id.
Потом попробовал убрать все функции и оставить голый перебор - проблема исчезла. Вероятно где-то кешировалось соединение с индизайном. Хотя все равно странно - при проходе скрипта контент нескольких текстовых фреймов внутри группы меняется без проблем и без ошибок, и в то же время печатается одинаковый id группы.
Пойду переваривать. Спасибо за ответы.
 
там несколько сложная система т.н. specifiers. перед обработкой коллекции лучше всего их ресолвить
на js эта конструкция выглядит как pageItems.everyItem().getElements().slice(0)
 
  • Спасибо
Реакции: kostya_
там несколько сложная система т.н. specifiers. перед обработкой коллекции лучше всего их ресолвить
на js эта конструкция выглядит как pageItems.everyItem().getElements().slice(0)
Боюсь, что из питона эта штука будет работать только через doscript, т.е. медленно. Но все равно спасибо.
 
Статус
Закрыто для дальнейших ответов.