Python win32com и 2-мерные массивы

При использовании python и win32com для автоматизации формы программного обеспечения Adobe возникает проблема с передачей массивов 2d координат. Если взглянуть на код, который Adobe поставляет для Visual Basic (VB), то все просто. Упрощенный пример рисования линии в Illustrator будет выглядеть следующим образом:

<code>Set appObj = CreateObject("Illustrator.Application")
Set docObj = appObj.Documents.Add

Set pathItem = docObj.PathItems.Add
    pathItem.SetEntirePath Array(Array(0.0, 0.0), Array(20.0, 20.0))
</code>

Теперь наивное предположение состоит в том, что код VB можно просто превратить в python, преобразовав его следующим образом:

<code>from win32com.client import Dispatch

appObj = Dispatch("Illustrator.Application")  
docObj = appObj.Documents.Add()

pathItem = docObj.PathItems.Add()
pathItem.SetEntirePath( [ [0.0,0.0], [20.0,20.0] ] )
</code>

Очевидно, что это не так просто, Python выдает ошибку, говоря: «Поддерживаются только массивы с измерением 1». Теперь я знаю, что существует разница между массивами массивов и 2-мерными массивами. Итак, вопрос в том, как заставить Python создать массив правильного вида?

Я пытался сделать свой собственный тип VARIANT, но с треском провалился. Ive также посмотрел на ctypes для этого. У кого-нибудь была такая же проблема, и она могла бы пролить свет?

PS:

Я знаю, что проблему можно обойти, используя:

<code>pathItem = docObj.PathItems.Add()
for point in (  [0.0,0.0], [20.0,20.0] ):
    pp = pathItem.PathPoints.Add() 
    pp.Anchor = point
</code>

Но есть подобные случаи, когда это на самом деле не работает. В любом случае, смысл состоит в том, чтобы написать руководство по переносу на студентов, чтобы быть ближе к первоначальному замыслу было бы лучше.

Ответы на вопрос(2)

Ваш ответ на вопрос