>> I'm trying to translate the following VB code into Python and not sure how to
>> create an array of variants.
>>
>> Thanks for your help!
>>
>> 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
>>
>>    lineObj.SetXdata DataType, Data
>> End Sub
>>
>> Python code:
>> import array
>> 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 here?
>>
>>    line.SetXData(dataType, dataValue)
>>
>> if __name__ == "__main__":
>>    SetXData()
>>
> AFAIK comtypes automatically converts lists to COM arrays and you can
> get variant using following statement:
> from comtypes.automation import VARIANT
> 
> So following should work
> line.SetXData([1001, 1070], [VARIANT('Test_Application'), VARIANT(600)])

I think Suraj is close.  Can you look up somhow the IDL definition of the 
SetXData
method, or posth the corresponding line from the generated code?

Does this code work?

  line.SetXData([1001, 1070], ['Test_Application', 600])

Thomas


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
comtypes-users mailing list
comtypes-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/comtypes-users

Reply via email to