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

Статус
Закрыто для дальнейших ответов.

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)

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

пс
На мой взгляд это несусветная мистика и разум отказывается строить какие бы то ни было предположения.
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
В последней строке рядом с my_geo выведите ещё n_item; может, что-то прояснится.
 
  • Спасибо
Реакции: kostya_

Nindzzya

Участник
Сообщения
19
Реакции
8
@kostya_, ну питон не знаю. но например на C# при проходе по элементам нужно указывать первые индекс не ноль а единицу. так что может и язык влиять.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

kostya_

Участник
Топикстартер
Сообщения
8
Реакции
0
В последней строке рядом с my_geo выведите ещё n_item; может, что-то прояснится.
Добавил в код строку, чтобы питон печатал pageitems.id
Оказывается каким-то образом берутся координаты одного и того же id.
Потом попробовал убрать все функции и оставить голый перебор - проблема исчезла. Вероятно где-то кешировалось соединение с индизайном. Хотя все равно странно - при проходе скрипта контент нескольких текстовых фреймов внутри группы меняется без проблем и без ошибок, и в то же время печатается одинаковый id группы.
Пойду переваривать. Спасибо за ответы.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
там несколько сложная система т.н. specifiers. перед обработкой коллекции лучше всего их ресолвить
на js эта конструкция выглядит как pageItems.everyItem().getElements().slice(0)
 
  • Спасибо
Реакции: kostya_

kostya_

Участник
Топикстартер
Сообщения
8
Реакции
0
там несколько сложная система т.н. specifiers. перед обработкой коллекции лучше всего их ресолвить
на js эта конструкция выглядит как pageItems.everyItem().getElements().slice(0)
Боюсь, что из питона эта штука будет работать только через doscript, т.е. медленно. Но все равно спасибо.
 
Статус
Закрыто для дальнейших ответов.