Thomas Heller schrieb:
> Ed Blake schrieb:
>> AutoCAD 2008 typelib:
>> [id(0x00000403), helpstring("Sets the extended data (XData) associated with 
>> an object"), helpcontext(0x00010231)] void SetXData(
>>                 [in] VARIANT XDataType, 
>>                 [in] VARIANT XDataValue);
>> 
>> Taken from Ole2View.
>>>From Autocad Developer Help:
>> Signature 
>> 
>> object.SetXData XDataType, XData 
>> 
>> Object
>> 
>> All Drawing Objects , AttributeReference, Block, Dictionary, DimStyle, 
>> Group, Layer, Linetype, PlotConfigurations, RegisteredApplication, 
>> TextStyle, UCS, View, Viewport; XRecord
>> The object or objects this method applies to. 
>> 
>> XDataType
>> 
>> Variant (array of short); input-only 
>> 
>> XData
>> 
>> Array of Variant; input-only 
> 
> Ah, if XDataType must be an array of short (integers), then this call should 
> work:
> 
>   line.SetXData(array.array("h", [1001, 1070]), ['Test_Application', 600])
> 
> 
> The rules how the parameters (array.array("h", ...) and [...]) are converted
> into VARIANTs are as follows:
> 
> - tuples and lists (which can contain items of any datatype - string, 
> integer, float, ...)
>   are converted to a VARIANT containing a SAFEARRAY of VARIANTs, typecode 
> VT_SAFEARRAY | VT_VARIANT
> 
> - array.array instances are converted to a VARIANT containing a SAFEARRAY a 
> VARIANTs
>   with a typecode as specified in the 
> comtypes.automation._arraycode_to_vartype
>   dictionary, near line 650:
> 
>   _arraycode_to_vartype = {
>     "d": VT_R8,
>     "f": VT_R4,
>     "l": VT_I4,
>     "i": VT_INT,
>     "h": VT_I2,
>     "b": VT_I1,
>     "I": VT_UINT,
>     "L": VT_UI4,
>     "H": VT_UI2,
>     "B": VT_UI1,
>     }
> 
> So, an array.array("h", ...) will result in a VARIANT with typecode VT_ARRAY 
> | VT_I2.
> 
> In the comtypes 0.5 version, this can be easily checked since VARIANT 
> instances
> contain the typecode in their repr() string (VARIANT.from_param(arg) is what 
> comtypes
> calls internally when 'arg' is passed as parameter to a method which expects 
> a VARIANT):
> 
>>>> VARIANT.from_param(array.array('i', [1001, 1070]))
> VARIANT(vt=0x2003, (1001, 1070))
>>>> VARIANT.from_param(array.array('h', [1001, 1070]))
> VARIANT(vt=0x2002, (1001, 1070))
>>>> VARIANT.from_param(['foo', 600])
> VARIANT(vt=0x200c, (u'foo', 600))
>>>>
> 
> The typecodes are: 0x2000 - VT_ARRAY, 0x3 - VT_I4, 0x2 - VT_I2

Oh, and 0xc is VT_VARIANT.

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