[Tutor] How to create array of variants?

Alan Gauld alan.gauld at btinternet.com
Tue Jul 8 22:20:53 CEST 2008

"Kelie" <kf9150 at gmail.com> wrote

> I'm trying to translate the following VB code into Python and not 
> sure how to
> create an array of variants.

An array of variants in Python is a list.
But I'm not sure why you think you need one?

> VB Code:
> Sub SetXdata()
>    Dim lineObj As AcadLine
>    Set lineObj = ThisDrawing.ModelSpace.Item(0)
>    Dim DataType(0 To 1) As Integer
>    Dim Data(0 To 1) As Variant
>    DataType(0) = 1001: Data(0) = "Test_Application"
>    DataType(1) = 1070: Data(1) = 600

So this is basically setting up two lists where
the DataType is an integer and the Data is  - in
these cases - a string or an integer.

>    lineObj.SetXdata DataType, Data

So if you pass in two Python lists containing:

DataType = [1001,1070]
Data = ["Test_Application", 600]

Does it work?

If not what error do you get? (The full text please)

> import comtypes.client
> def SetXData():
>    activedoc =
> comtypes.client.GetActiveObject("AutoCAD.Application").ActiveDocument
>    line = activedoc.ModelSpace.Item(0)
>    dataType = array.array('i', [1001, 1070])
>    dataValue = array.array('?', ['Test_Application', 600]) #What 
> should I use
> for the type code?

I don;t think you use an array here. An array in this context expects
a homogenous set of data. You need a mixed set. So a normal list
is most likely construct to use.

Alternatively does comtypes have a mechanism for converting Python
types to VB/COM Variants?

Alan G

More information about the Tutor mailing list