How to automate CATIA V5 with Python on Windows

If you want to automate CATIA V5 with Python you need Pywin32 and
Python for Windows. Python is free software and you can develop
professional applications with all advantages of Python for CATIA V5.
And you can deploy your applications as a standard Windows executable
what you cannot do with the builtin Macro language VB.

For developing a small application which interacts to CATIA V5 you
only have to download Python for Windows and Pywin32 from Marc Hammond
(please see the Download section). CATIA V5 must be also installed and should be running when testing the application.

If you have done that you can test it with this source code:

import win32com.client
a = win32com.client.Dispatch('catia.application')
for i in range(doc.Products.Count):
    print 'Part Number:', doc.Products.Item(i+1).PartNumber

It prints out the part names of a loaded CATProduct. Other examples can be found in the script collection.

Hint: You can automate DMU Navigator as well as CATIA V5 with this Dispatch string:

a = win32com.client.Dispatch(‘DMU.application’)

Important notes:

If you want to use early binding for the CATIA V5 object libraries
you can use the Makepy utility from Pythonwin. After that every object
and its methods will be usable from the pulldown menu while typing and
you can have a performance advantage. You should use makepy for every
object library which you want to use e.g. “ProductStructure Object
Library” for working with CATProducts). Not for the “CATIA V5 Interfaces Objekt Library”!

But if you have done that stupidly, every application which uses early binding for the
“CATIA V5 Interfaces Objekt Library” will not work ! A workaround
is not to use makepy for the “CATIA V5 Interfaces Objekt Library”
or use explicit late binding “(import win32com.client.dynamic as the
first line).

For starting developing applications with Python for CATIA V5 you should use the manual V5Automation.chm
which you can find in the bin-directory of CATIA V5. You will see that
you can develop Python applications in the same way like VB with the
builtin VB editor.

If you have problems to access the COM Interface from CATIA V5 (eg.
no object libraries from CATIA V5 in makepy) please check whether CATIA
V5 was registrated as a COM server. If not you can do that with cnext.exe /regserver in the CATIA V5 bin-directory. Then everything should work well…

More information for developing with Python for COM applications
with Pywin32 you can find in this excellent book. A whole example
Chapter about COM Programming with Python/Pywin32 can be found here.

Python Programming on Win32
by Mark Hammond, Andy Robinson
ISBN: 1-56592-621-8
652 pages. January 2000.

3 Replies to “How to automate CATIA V5 with Python on Windows”

  1. >>> from win32com.client import Dispatch
    >>> catia = Dispatch(‘catia.application’)
    >>> catia.Visible = True
    >>> partDoc = catia.Documents.Add(“Part”)
    >>> partDoc.Part
    Traceback (most recent call last):
    File “”, line 1, in
    File “C:\Users\patil\anaconda3\lib\site-packages\win32com\client\”, line 473, in __getattr__
    raise AttributeError(“‘%s’ object has no attribute ‘%s'” % (repr(self), attr))
    AttributeError: ” object has no attribute ‘Part’

  2. I’m trying with win32com to check material from a body
    In visual basic we have that variable defined as “objMat As Material”
    In python we don’t declare variable types, and for this task with win32com and python I’m not able to get the material, error occurs
    ( I try to declare the variable None, but with no luck)
    Somebody try this type of code?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.