Hi,

I wrote some code to control CST a couple of years ago. It was quite difficult to interface via COM, since some commands simply refused to work. What I did in the end was to as few com-calls as possible and did the rest in VB. Even if VB is a terrible language the end result was more stable.

Among other things I wrote code to remotely create matching networks in the Schematics (DS canvas). Then I created a class in Python to generate VB code on the fly, saved it as a VB-file and used the DS.RunScript(path) command to get CST to generate the network. This worked well.

One more thing: I found that I had to use the DS._FlagAsMethod before I used the actual command. I.e I had to do:

    DS._FlagAsMethod("RunScript")
    DS.RunScript(script_file_name)

That helped to get many commands to work - but not all.

BR,
Max

On 2017-04-24 21:12, gowri shankar wrote:
Dear all,
I want to control a commercial numerical solver CST through python. Usually, CST can be controlled using MATLAB. CST accepts both COM and VBA macros from MATLAB. As VBA is difficult and time consuming to program, i was successful in connecting the CST through COM interface from MATLAB. The sample snapshot of the commands are as below:
***********************************************************************
/    cst = actxserver('CSTStudio.application') % to open the CST/
/mws=cst.OpenFile('D:\Gowrishankar\PDF\cuboid.cst'); %to open a particular file/
/    a=20;/
/    b=20;/
/    c=72;/
/    %To store the parameters/
/ mws.invoke('StoreParameter','a',a); %These are the COM interface commands from MATLAB to CST/
/    mws.invoke('StoreParameter','b',b);/
/    mws.invoke('StoreParameter','c',c);/
/    %To rebuild /
/    invoke(mws,'Rebuild');/
/
/
/    %%Setting only the required boudnary conditions only/
/ bound=invoke(mws,'Boundary'); %These are the COM interface commands from MATLAB to CST/
/    bound.invoke('Zmin','magnetic');/
/    bound.invoke('Zmax','magnetic');/
/
/
/    %% Set the frequency range/
/    solver=invoke(mws,'Solver');/
/    invoke(solver,'FrequencyRange',freMin,freMax);/
/
/
/    Esolver=invoke(mws,'EigenmodeSolver');/
/    invoke(Esolver,'Reset');/
/    invoke(Esolver,'SetMeshType','Tetrahedral Mesh');
/
/    invoke(Esolver,'SetNumberOfModes',noOfMode);/
/    invoke(Esolver,'Start'); %Run the solver
/
/noOfModesCalculated=invoke(Esolver,'GetNumberOfModesCalculated');/
/    for j=1:noOfModesCalculated/
/eigenFreq(j)=invoke(Esolver,'GetModeFrequencyInHz',j);/
/    end/
/
/
/    invoke(mws,'Save'); %Save the file/
/    invoke(mws, 'Quit');  %closes the file/
/    release(mws); /
/    invoke(cst, 'Quit');   % closes the CST application/
/    release(cst);/
/   dos(['taskkill /F /IM ' '"CST DESIGN ENVIRONMENT.exe"']);/

**************************************************************************
MATLAB commands work perfectly wihtout any fuss.
*I have translated the above code in python but i was able to talk to CST with only first 2-3 commands i.e*
*********************************
/import win32com.client/
/cst = win32com.client.Dispatch("CSTStudio.Application")/
/#Opens a new CST file/
/mws=cst.OpenFile('D:\Gowrishankar\PDF\cuboid.cst');/
/
/
/#mws=cst.NewMWS()/
/
/
/###*Below this commands i got error or sometimes it didn't give any error but just it didn't worked*/
/mws.StoreParameter('len2',10.1)/
/mwssolver=mws.Solver()/
/mws.Solver.Start()/
*******************************
I tried different online forums for help and i was unsuccessful in getting any clue how to move forward. Erros messages didnt revealed any information. I even checked and compared the COM commands used to control Excel from MATLAB and Python. But, still i am not able to progress any further. Moreover, the commercial software guys wont help me in doing with python. Furthermore, i used combrowse.py and make.py to access the different objects of the interface but they are all hidden for CST. Can someone suggest me how should i move ahead, are there any examples available for controlling a windows application through MATLAB and python so that i can understand the co-relation between the commands between the two. Any help in this regard is highly appreciated.


Regards,
GOWRISHANKAR.T.H



_______________________________________________
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