Hello All,
I'm trying to read some data from CATIA v5 (which is an older CAD application) via its COM server. Overall it works rather well, even if I'm fairly new to COM communication. Nevertheless I have run into a problem: One specific function *GetComponents * is supposed to return its results via an array passed by reference. As far as I can tell it is exactly the same problem as in (1) https://mail.python.org/pipermail/python-win32/2002-November/000562.html and (2) https://mail.python.org/pipermail/python-win32/2014-July/013234.html unfortunately there doesn't appear to be a solution as of yet. The python call looks something like this a = list(range(0,12)) b = catapp.ActiveProduct.Position.GetComponents(a) print(a) # outputs (0,1,2,3,4,5,6,7,8,9,10,11) instead of the actual values The equivalent VBScript code is Dim a(11) As Float CATIA.ActiveProduct.Position.GetComponents(a) MsgBox a(0) & ", " & a(1) & ... The VBScript works as intended, the python one just passes the array back out unmodified. As both other threads state: The Position object above has two methods *GetComponents *and *SetComponents *that each take a *CATSafeArrayVariant *as an argument. This *CATSafeArrayVariant *should in this case be a one-dimensional array of real values. CATSafeArrayVariant is a typedef for a *CATVariant *which itself is *typedef any CATVariant*. Any help would be appreciated. As stated above I haven't done much with COM, but otherwise I'm reasonably computer savvy and know my way around python. Obviously Catia is a commercial application but I have access to the .tlb file if that helps. best regards Peter Enenkel
_______________________________________________ python-win32 mailing list python-win32@python.org https://mail.python.org/mailman/listinfo/python-win32