What is a extensive API? Is it just VBA script add on?
Why would one want one in a CAM system? This is confusing.
Can one use Python?
Bob
You can think of an API as essentially a control panel for a program's functions that allow other programs to interact with it. In the same way that a typical CAD/CAM program has a graphical user interface with buttons etc. that allow human interaction and control of program functions, an API provides a defined set of methods by which two programs can interact and control each other's functions.
While they share some similarities, I think that it is important to distinguish an API from macro functionality. Both do allow automation. However, macros are often limited to the application scope, in that they only allow automation within the "parent" program's functionality. Macro functionality also often uses a scripting language (or simple recording of UI interactions) which can be specific to the parent program, rather than using a general purpose programming language such as Python or C. This can be problematic when the scripting language is buggy, difficult to work with, or doesn't provide functions you need for your goal- and you're forced to rely on support from the parent program's developer, who may or may or may not be interested in improving the macro functionality.
In contrast, APIs are designed to interface the program with other programs outside it's scope, rather than just internal automation. To give a generic fictional example, I could write a macro that takes three numbers as inputs and generates a CAD model that uses those three numbers to dimension a certain design. With a powerful API, I could do the same thing, but plug it all into a web site that lets a customer input those three numbers, quotes them a price for the design, determines weight to calculate shipping cost and returns them a render of the finished product. All totally automated. An API will generally provide an interface that will be either language-agnostic (using HTTP requests carrying JSON objects is an extremely common method, done by sites/apps you use everyday) or by extending an existing general purpose programming language (i.e. python/c/javascript) by providing libraries that simplify and abstract the programming of interactions with the program. This allows you to leverage the massive functionality provided by existing languages to interact with your CAD program, as well as programming tools such as IDEs and dedicated hosting/deployment methods.
However, with both APIs and macros, the developer of the parent program needs to support the functions you need via the API or macro language. This is where the "extensiveness" of the API matters. If you're trying to achieve a specific goal in your automation efforts, the question of "what functionality does the API expose" is as critical as "is there an API?" Like if I want to programmatically create CAD models but the API only allows me to read data about existing models created through the GUI, that's useless for my needs. All APIs are not created equal, so the type of functions exposed by the API, the type of interface, how well supported/buggy it is, and performance of API calls can all be serious considerations.
adamm seems to know what they are looking for, so not posting this for their benefit. Just clarifying for other readers of this thread because I think it's an interesting topic.