Python win32com i 2-wymiarowe tablice

Używając Pythona i Win32com do automatyzacji oprogramowania z Adobe, napotyka się problem z przekazywaniem tablic o współrzędnych 2d. Jeśli spojrzymy na kod, który Adobe dostarcza dla Visual Basic (VB), jest prosty. Uproszczony przykład rysowania linii w programie Illustrator wyglądałby następująco:

<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>

Teraz naiwnym założeniem jest to, że kod VB można po prostu przekształcić w python, konwertując go w następujący sposób:

<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>

Oczywiście nie jest to takie proste, python wydaje błąd mówiący „Obsługiwane są tylko tablice o wymiarze 1”. Teraz wiem, że istnieje różnica między tablicami tablic i tablicami dwuwymiarowymi. Pytanie brzmi: jak zmusić Pythona do utworzenia tablicy odpowiedniego rodzaju?

Próbowałem zrobić własny typ VARIANT, ale nie udało mi się. Spojrzałem też na ctypes. Ktoś miał ten sam problem i mógł rzucić trochę światła?

PS:

Zdaję sobie sprawę, że problem można obejść, używając:

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

Są jednak podobne przypadki, w których to nie działa. W każdym razie chodzi o to, aby napisać wytyczne dotyczące przenoszenia do studentów, aby lepiej było zbliżyć się do pierwotnych intencji.

questionAnswers(2)

yourAnswerToTheQuestion