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