Hi Peter,

>From Python call Catia.SystemService.Evaluate() and hand over a VB script that 
>does what you need
but returns an Array.

This works for all CATIA methods that use an Array as Input/Output-parameter.

Regards

Andreas


Peter Enenkel schrieb am 17.02.2017 um 23:29:
> 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
> <https://mail.python.org/pipermail/python-win32/2002-November/000562.html> and
> (2)https://mail.python.org/pipermail/python-win32/2014-July/013234.html
> <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
> 
_______________________________________________
python-win32 mailing list
python-win32@python.org
https://mail.python.org/mailman/listinfo/python-win32

Reply via email to