Altium Design Software API
The Altium NEXUS Application Programming Interface (API) exposes program functionality to external sources, such as the Altium NEXUS scripting system.
The API is composed of sub APIs, such as those offered by Altium NEXUS's range of design editors. For example the PCB editor has the PCB API, the Schematic editor has the Schematic API, the Project Manager has the Workspace manager API, Altium NEXUS platform has its own Client API, and so on.
Each API can compose of object interfaces, classes, routines and enumerated constants. The editor-specific APIs have their own Object Model, which in itself is a hierarchical system of Object Interfaces. These object interfaces represent Altium NEXUS's objects.
Object Model Hierarchy
Object Interfaces represent design objects, and can be used in scripts to access data in design documents that are open in Altium NEXUS.
Object Interfaces have properties and methods:
- Methods of Object Interfaces are the actions an Object Interface can perform.
- Properties of Object Interfaces represent the data contained in the object that's represented by the interface.
A parent object interface can have child object interfaces, and in turn, child object interfaces can act as parent object interfaces to child object interfaces, and so on down the chain.
This forms an Object Model Hierarchy. For example, in the Workspace Manager Object Model, the IWorkspace
Object Interface is the top level interface representing the Workspace manager in Altium NEXUS. Projects are part of the Workspace Manager, therefore an IProject
interface is a child interface to the parent IWorkspace
interface.
Continuing on, documents are part of a project, so the IProject
interface is the parent interface and IDocument
is a child interface. Design objects such as sheet symbols, components and buses are child objects of the document object (represented by the IDocument
interface).
This can be illustrated in the following simple example hierarchy:
IWorkspace
. IProject
. . IDocument
. . . ISheetSymbol
. . . IComponent
. . . IBus
The figure below is an illustration of the relationship between objects in Altium NEXUS, and the object Interfaces supported by the various Object Models from Altium NEXUS API.
Projects and the corresponding documents are managed by the Workspace Manager. A project open in Altium NEXUS is represented by the IProject
object interface, and the documents from this project are represented by the IDocument
interfaces.
As also shown, the PCB documents and PCB design objects are managed by the PCB Editor and its PCB Object Model. The open PCB document is represented by its IPCB_Board
interface and the design objects, in this case the pad and track objects, are represented by IPCB_Pad
and IPCB_Track
interfaces.
Using the API in scripts
The scripting engine in Altium NEXUS has built in PCB, Schematic and Workspace Manager APIs as well as a subset of Embarcadero Delphi's Run Time Library. The PCB, Schematic, Workspace Manager Object Models from the scripting engine enable you to write scripts that act on PCB or Schematic documents, or invoke one of the file management routines.
The Object Models from the Altium NEXUS API are accessible in scripts, so you can code the object and method names (with appropriate parameter values) using one of the several supported scripting languages, such as EnableBasic, Visual Basic, Javascript, TCL and the most commonly-used DelphiScript (which is very much like Embarcadero Delphi).
DelphiScript Example
Procedure PadCount;
Var
Board : IPCB_Board;
Pad : IPCB_Primitive;
Iterator : IPCB_BoardIterator;
PadNumber : Integer;
Begin
PadNumber := 0;
Board := PCBServer.GetCurrentPCBBoard;
If Board = Nil Then Exit;
Iterator := Board.BoardIterator_Create;
Iterator.AddFilter_ObjectSet(MkSet(ePadObject));
Iterator.AddFilter_LayerSet(AllLayers);
Iterator.AddFilter_Method(eProcessAll);
Pad := Iterator.FirstPCBObject;
While (Pad <> Nil) Do
Begin
Inc(PadNumber);
Pad := Iterator.NextPCBObject;
End;
Board.BoardIterator_Destroy(Iterator);
ShowMessage('Pad Count = ' + IntToStr(PadNumber));
End;
Using the API for server development
The Altium NEXUS scripting system implements a subset of the complete Altium NEXUS API and its Object Interfaces. The Altium DXP Developer, used for developing Altium NEXUS server Extensions, has access to the full Altium NEXUS API via a set of API SDK source units.
More information
Refer to the Using the Altium NEXUS API document for an guide to using the Altium NEXUS API in scripts.
Refer to Scripting System Overview and Setup and its associated documents for more information on how to create and use scripts in Altium NEXUS.
Refer to the Altium NEXUS API documentation for detailed API reference information.