PCB API Constants and Functions

Old Content - visit altium.com/documentation

Parent page: Technical Reference - PCB API

PCB API: Constants and Functions Reference

The PCB API Constants and Functions reference includes the following sections and content:

PCB Constants PCB Functions
PCB Constants
AllLayers
AllObjects
AllPrimitives
cAdvPCB
cBoardSideStrings constant
cComonentCollisionCheckModeStrings constant
cDefaultLayerDrawingOrder constant
cDir_NONE
cDir_ANY
cDir_Diagonal
cDir_HorVert
cLayerStrings
cMaxTestPointStyle
cMinTestPointStyle
cMidLayers
cMinLayer_WidthRule
cMaxLayer_WidthRule
cRoutingWidthModeStrings
cRuleIdStrings
cTextAutopositionStrings
cTestPointPriorityHigh
cTestPointPriorityLow
cWidthRuleLayers
FirstObjectId
InternalUnits
InternalPlanes
kDiameterSymbolANSI
kDiameterSymbolUnicode
kDegreeSymbol
k1Inch
kDefaultArcResolution
k1Mil
kMaxCoord
kMinCoord
kMaxInternalPlane
kMinInternalPlane
kMaxPolySize
LastObjectId
kMaxStrokes
MaxLayer
MaxBoardLayer
MaxLogicalTextSize
MaxRouteLayer
MaxMechanicalLayer constant
MechanicalLayers
MinLayer
MinMechanicalLayer constant
Numbers
WideStringObjects
PCB Messages
SignalLayers
Unit conversion functions
Angle and Trigonometric functions
Object Boundary Functions
Layer conversion functions
Font Functions
Locale Functions
General Functions

 

PCB Constants

AllLayers

AllLayers = [MinLayer..eConnectLayer];

AllObjects

AllObjects = [FirstObjectId..LastObjectId];

AllPrimitives

AllPrimitives = [ eArcObject         ,
                  eViaObject         ,
                  eTrackObject       ,
                  eTextObject        ,
                  eFillObject        ,
                  ePadObject         ,
                  eComponentObject   ,
                  eNetObject         ,
                  ePolyObject        ,
                  eDimensionObject   ,
                  eCoordinateObject  ,
                  eEmbeddedObject    ,
                  eEmbeddedBoardObject,
                  eFromToObject      ,
                  eConnectionObject,
                  ePolyRegionObject,
                  eComponentBodyObject
                  ];

cAdvPCB

cAdvPCB = 'AdvPCB';

cBoardSideStrings constant

cBoardSideStrings : Array [TBoardSide] Of String[20] =
('Top Side','Bottom Side');

cComonentCollisionCheckModeStrings constant

cComponentCollisionCheckModeStings : Array [TComponentCollisionCheckMode] Of String[22]= ('Quick Check Mode','Multi-Layer Check Mode','Full Check Mode','Component Body Mode');

cDefaultLayerDrawingOrder constant

cDefaultLayerDrawingOrder : TDrawingOrderArray = (
eBackGroundLayer,
eMultiLayer,
eTopOverlay,
eBottomOverlay,
eConnectLayer,
eNoLayer,
eTopLayer,
eMidLayer1,
eMidLayer2,
eMidLayer3,
eMidLayer4,
eMidLayer5,
eMidLayer6,
eMidLayer7,
eMidLayer8,
eMidLayer9,
eMidLayer10,
eMidLayer11,
eMidLayer12,
eMidLayer13,
eMidLayer14,
eMidLayer15,
eMidLayer16,
eMidLayer17,
eMidLayer18,
eMidLayer19,
eMidLayer20,
eMidLayer21,
eMidLayer22,
eMidLayer23,
eMidLayer24,
eMidLayer25,
eMidLayer26,
eMidLayer27,
eMidLayer28,
eMidLayer29,
eMidLayer30,
eBottomLayer,
eTopPaste,
eBottomPaste,
eTopSolder,
eBottomSolder,
eInternalPlane1,
eInternalPlane2,
eInternalPlane3,
eInternalPlane4,
eInternalPlane5,
eInternalPlane6,
eInternalPlane7,
eInternalPlane8,
eInternalPlane9,
eInternalPlane10,
eInternalPlane11,
eInternalPlane12,
eInternalPlane13,
eInternalPlane14,
eInternalPlane15,
eInternalPlane16,
eDrillGuide,
eKeepOutLayer,
eMechanical1,
eMechanical2,
eMechanical3,
eMechanical4,
eMechanical5,
eMechanical6,
eMechanical7,
eMechanical8,
eMechanical9,
eMechanical10,
eMechanical11,
eMechanical12,
eMechanical13,
eMechanical14,
eMechanical15,
eMechanical16,
eDrillDrawing,
eGridColor1,
eBackGroundLayer,
eBackGroundLayer,
eBackGroundLayer,
eBackGroundLayer,
eBackGroundLayer);

cDir_NONE

cDir_NONE     = [];

cDir_ANY

cDir_ANY      = [eDir_N..eDir_NW];

cDir_Diagonal

cDir_Diagonal = [eDir_NE, eDir_SE, eDir_SW, eDir_NW];

cDir_HorVert

cDir_HorVert  = cDir_ANY - cDir_Diagonal;

cLayerStrings

cLayerStrings : Array[TLayer] Of String
              = ( 'NoLayer'        ,
                  'TopLayer'       ,
                  'MidLayer1'      ,
                  'MidLayer2'      ,
                  'MidLayer3'      ,
                  'MidLayer4'      ,
                  'MidLayer5'      ,
                  'MidLayer6'      ,
                  'MidLayer7'      ,
                  'MidLayer8'      ,
                  'MidLayer9'      ,
                  'MidLayer10'     ,
                  'MidLayer11'     ,
                  'MidLayer12'     ,
                  'MidLayer13'     ,
                  'MidLayer14'     ,
                  'MidLayer15'     ,
                  'MidLayer16'     ,
                  'MidLayer17'     ,
                  'MidLayer18'     ,
                  'MidLayer19'     ,
                  'MidLayer20'     ,
                  'MidLayer21'     ,
                  'MidLayer22'     ,
                  'MidLayer23'     ,
                  'MidLayer24'     ,
                  'MidLayer25'     ,
                  'MidLayer26'     ,
                  'MidLayer27'     ,
                  'MidLayer28'     ,
                  'MidLayer29'     ,
                  'MidLayer30'     ,
                  'BottomLayer'    ,
                  'TopOverlay'     ,
                  'BottomOverlay'  ,
                  'TopPaste'       ,
                  'BottomPaste'    ,
                  'TopSolder'      ,
                  'BottomSolder'   ,
                  'InternalPlane1' ,
                  'InternalPlane2' ,
                  'InternalPlane3' ,
                  'InternalPlane4' ,
                  'InternalPlane5' ,
                  'InternalPlane6' ,
                  'InternalPlane7' ,
                  'InternalPlane8' ,
                  'InternalPlane9' ,
                  'InternalPlane10',
                  'InternalPlane11',
                  'InternalPlane12',
                  'InternalPlane13',
                  'InternalPlane14',
                  'InternalPlane15',
                  'InternalPlane16',
                  'DrillGuide'     ,
                  'KeepOutLayer'   ,
                  'Mechanical1'    ,
                  'Mechanical2'    ,
                  'Mechanical3'    ,
                  'Mechanical4'    ,
                  'Mechanical5'    ,
                  'Mechanical6'    ,
                  'Mechanical7'    ,
                  'Mechanical8'    ,
                  'Mechanical9'    ,
                  'Mechanical10'   ,
                  'Mechanical11'   ,
                  'Mechanical12'   ,
                  'Mechanical13'   ,
                  'Mechanical14'   ,
                  'Mechanical15'   ,
                  'Mechanical16'   ,
                  'DrillDrawing'   ,
                  'MultiLayer'     ,
                  'ConnectLayer'   ,
                  'BackGroundLayer',
                  'DRCErrorLayer'  ,
                  'HighlightLayer' ,
                  'GridColor1'     ,
                  'GridColor10'    ,
                  'PadHoleLayer'   ,
                  'ViaHoleLayer');

cMaxTestPointStyle

cMaxTestPointStyle             = eNewTHTop;

cMinTestPointStyle

cMinTestPointStyle = eExistingSMDBottom;

cMidLayers

cMidLayers       : Set Of TLayer = [eMidLayer1 .. eMidLayer30];

cMinLayer_WidthRule

cMinLayer_WidthRule = eTopLayer;

cMaxLayer_WidthRule

cMaxLayer_WidthRule = eBottomLayer;

cRoutingWidthModeStrings

cRoutingWidthModeStrings : Array[TRoutingWidthMode] Of String[20]
                           = ('User Choice'   , //eRoutingWidth_Default
                              'Rule Minimum'  , //eRoutingWidth_Min
                              'Rule Preferred', //eRoutingWidth_Preferred
                              'Rule Maximum'    //eRoutingWidth_Max);

cRuleIdStrings

cRuleIdStrings : Array [TRuleKind] Of String[21]
               = ( 'Clearance'            ,
                   'ParallelSegment'      ,
                   'Width'                ,
                   'Length'               ,
                   'MatchedLengths'       ,
                   'StubLength'           ,
                   'PlaneConnect'         ,
                   'RoutingTopology'      ,
                   'RoutingPriority'      ,
                   'RoutingLayers'        ,
                   'RoutingCorners'       ,
                   'RoutingVias'          ,
                   'PlaneClearance'       ,
                   'SolderMaskExpansion'  ,
                   'PasteMaskExpansion'   ,
                   'ShortCircuit'         ,
                   'UnRoutedNet'          ,
                   'ViasUnderSMD'         ,
                   'MaximumViaCount'      ,
                   'MinimumAnnularRing'   ,
                   'PolygonConnect'       ,
                   'AcuteAngle'           ,
                   'RoomDefinition'       ,
                   'SMDToCorner'          ,
                   'ComponentClearance'   ,
                   'ComponentOrientations',
                   'PermittedLayers'      ,
                   'NetsToIgnore'         ,
                   'SignalStimulus'       ,
                   'OvershootFalling'     ,
                   'OvershootRising'      ,
                   'UndershootFalling'    ,
                   'UndershootRising'     ,
                   'MaxMinImpedance'      ,
                   'SignalTopValue'       ,
                   'SignalBaseValue'      ,
                   'FlightTimeRising'     ,
                   'FlightTimeFalling'    ,
                   'LayerStack'           ,
                   'SlopeRising'          ,
                   'SlopeFalling'         ,
                   'SupplyNets'           ,
                   'HoleSize'             ,
                   'Testpoint'            ,
                   'TestPointUsage'       ,
                   'UnConnectedPin'       ,
                   'SMDToPlane'           ,
                   'SMDNeckDown'          ,
                   'LayerPairs'           ,
                   'FanoutControl'        ,
                   'Height',
                   'DiffPairsRouting'
);

cTextAutopositionStrings

cTextAutopositionStrings : Array[TTextAutoPosition] Of String[20]
                         = ( 'Manual'      ,
                             'Left-Above'  ,
                             'Left-Center' ,
                             'Left-Below'  ,
                             'Center-Above',
                             'Center'      ,
                             'Center-Below',
                             'Right-Above' ,
                             'Right-Center',
                             'Right-Below');

cTestPointPriorityHigh

cTestPointPriorityHigh = Ord(cMinTestPointStyle);

cTestPointPriorityLow

cTestPointPriorityLow = Ord(cMaxTestPointStyle);

cWidthRuleLayers

cWidthRuleLayers = [cMinLayer_WidthRule..cMaxLayer_WidthRule];

FirstObjectId

FirstObjectId = eArcObject;

InternalUnits

InternalUnits = 10000;

InternalPlanes

InternalPlanes   : Set Of TLayer = [eInternalPlane1..eInternalPlane16];

kDiameterSymbolANSI

kDiameterSymbolANSI    = #$F8;

kDiameterSymbolUnicode

kDiameterSymbolUnicode = #$3A6;

kDegreeSymbol

kDegreeSymbol          = #$B0;

k1Inch

k1Inch = 1000 * InternalUnits;
Notes
1 mil = 10000 internal units
1 inch = 1000 mils
1 inch = 2.54 cm
1 inch = 25.4 mm and 1 cm = 10 mm
PCB object's coordinates are usually in mils or mm depending on the board's current measurement units.

kDefaultArcResolution

kDefaultArcResolution            = k1Mil Div 2;
Notes
1 mil = 10000 internal units
1 inch = 1000 mils
1 inch = 2.54 cm
1 inch = 25.4 mm and 1 cm = 10 mm
PCB object's coordinates are usually in mils or mm depending on the board's current measurement units.

k1Mil

k1Mil = 1 * InternalUnits;
Notes
1 mil = 10000 internal units
1 inch = 1000 mils
1 inch = 2.54 cm
1 inch = 25.4 mm and 1 cm = 10 mm
PCB object's coordinates are usually in mils or mm depending on the board's current measurement units.

kMaxCoord

kMaxCoord = 99999  * InternalUnits;

kMinCoord

kMinCoord = 0 * InternalUnits;

kMaxInternalPlane

kMaxInternalPlane = eInternalPlane16;

kMinInternalPlane

kMinInternalPlane = eInternalPlane1;

kMaxPolySize

kMaxPolySize = 5000;

LastObjectId

LastObjectId = eEmbeddedBoardObject;

kMaxStrokes

kMaxStrokes = 2000;

MaxLayer

MaxLayer = eViaHoleLayer;
Notes
Refer to Layer2String and String2Layer functions in the PCB Functions topic.

MaxBoardLayer

MaxBoardLayer = eMultiLayer;

MaxLogicalTextSize

MaxLogicalTextSize = k1Inch;

MaxRouteLayer

MaxRouteLayer = eBottomLayer;

MaxMechanicalLayer constant

MaxMechanicalLayer = eMechanical16;

MechanicalLayers

MechanicalLayers : Set Of TLayer = [eMechanical1..eMechanical16];

MinLayer

MinLayer = eTopLayer;
Notes
Refer to Layer2String and String2Layer functions in the PCB Functions topic.

MinMechanicalLayer constant

MinMechanicalLayer = eMechanical1;

Numbers

Numbers          : Set Of Char   = ['0'..'9'];

WideStringObjects

WideStringObjects = [ eTextObject, eDimensionObject, eCoordinateObject, eComponentObject];

PCB Messages

Overview
The PCB Messages are messages that are broadcasted by the PCB Editor server. There are different types of messages that describe a specific action within the PCB server.
Normally the PCB message constants are used for the IPCB_ServerInterface.SendMessageToRobots method.
Syntax
PCBM_NullMessage         = 0;
PCBM_BeginModify         = 1;
PCBM_BoardRegisteration  = 2;
PCBM_EndModify           = 3;
PCBM_CancelModify        = 4;
PCBM_Create              = 5;
PCBM_Destroy             = 6;
PCBM_ProcessStart        = 7;
PCBM_ProcessEnd          = 8;
PCBM_ProcessCancel       = 9;
PCBM_YieldToRobots       = 10;
PCBM_CycleEnd            = 11;
PCBM_CycleStart          = 12;
PCBM_SystemInvalid       = 13;
PCBM_SystemValid         = 14;
PCBM_ViewUpdate          = 15;
PCBM_UnDoRegister        = 16;
c_BroadCast   = Nil;
c_NoEventData = Nil;
c_FromSystem  = Nil;
See also
SendMessageToRobots method

SignalLayers

SignalLayers     : Set Of TLayer = [eTopLayer.. eBottomLayer];

 

PCB Functions

The major PCB Functions are defined and implemented in the RT_PCBProcs unit.

Unit conversion functions

Function  RealToMils     (C : TReal)  : TReal;
Function  RealToMMs      (C : TReal)  : TReal;
Function  CoordToMils    (C : TCoord) : TReal;
Function  CoordToMMs     (C : TCoord) : TReal;
Function  MilsToCoord    (M : TReal)  : TCoord;
Function  MMsToCoord     (M : TReal)  : TCoord;
Function  MilsToRealCoord(M : TReal)  : TReal;
Function  MMsToRealCoord (M : TReal)  : TReal;
Function  MetricString  (Var S        : TString;
                         DefaultUnits : TUnit)  : Boolean;
Function  ImperialString(Var S        : TString;
                         DefaultUnits : TUnit)  : Boolean;
 
Procedure StringToCoordUnit(S     : TString;
                            Var C : TCoord;
                            Var U : TUnit);
 
Procedure StringToRealUnit (S     : TString;
                            Var R : TReal;
                            Var U : TUnit);
 
Function  CoordUnitToString(C : TCoord;
                            U : TUnit) : TString;
 
Function  RealUnitToString (R : TReal;
                            U : TUnit) : TString;

Angle and Trigonometric functions

Function  Degrees2Radians       (Angle             : TAngle)        : TReal;
Function  AngleToFormattedString(TextValue         : TReal;
                                 TextFormat        : TString;
                                 TextDimensionUnit : TDimensionUnit;
                                 TextPrecision     : Integer;
                                 TextPrefix        : TString;
                                 TextSuffix        : TString;
                                 UseTTFonts        : Boolean) : TString;
 
Function  DistanceToFormattedString    (TextValue         : TReal;
                                        TextFormat        : TString;
                                        TextDimensionUnit : TDimensionUnit;
                                        TextPrecision     : Integer;
                                        TextPrefix        : TString;
                                        TextSuffix        : TString;
                                        DisplayUnit       : TUnit;
                                        DimensionKind     : TDimensionKind;
                                        UseTTFonts        : Boolean)        : TString;
 
Procedure NormalizeAngle               (Var Angle         : TAngle);
 
Procedure RotateCoordsAroundXY         (Var x, y          : TCoord;
                                        Xr, Yr            : TCoord;
                                        Angle             : TAngle);
 
Procedure FindZoomRect(Const FarRect, CloseRect : TCoordRect; Out ZoomRect : TCoordRect); Overload;
Procedure FindZoomRect(Const FarRect, CloseRect : TCoordRect; Out ZoomRect : TCoordRect; Const PrecisionFactor : Double); Overload;
 
 

Object Boundary Functions

Function  GetFillBLX                   (P                 : TPCBObjectHandle;
                                        ExpandBy          : TCoord)         : TCoord;
Function  GetFillBLY                   (P                 : TPCBObjectHandle;
                                        ExpandBy          : TCoord)         : TCoord;
Function  GetFillTLX                   (P                 : TPCBObjectHandle;
                                        ExpandBy          : TCoord)         : TCoord;
Function  GetFillTLY                   (P                 : TPCBObjectHandle;
                                        ExpandBy          : TCoord)         : TCoord;
Function  GetFillTRX                   (P                 : TPCBObjectHandle;
                                        ExpandBy          : TCoord)         : TCoord;
Function  GetFillTRY                   (P                 : TPCBObjectHandle;
                                        ExpandBy          : TCoord)         : TCoord;
Function  GetFillBRX                   (P                 : TPCBObjectHandle;
                                        ExpandBy          : TCoord)         : TCoord;
Function  GetFillBRY                   (P                 : TPCBObjectHandle;
                                        ExpandBy          : TCoord)         : TCoord;

Layer conversion functions

Function  Layer2String (Layer : TLayer) : TString;
Function  String2Layer (Layer : TString): TLayer;

Font Functions

Procedure EnumFontsW                   (DC                : HDC;
                                        Const AFontName   : TPCBString;
                                        Items             : TWideStrings);
Procedure EnumFontsA                   (DC                : HDC;
                                        Const AFontName   : TPCBString;
                                        Items             : TStrings);
Function  LoadFontNamesW               (Items             : TWideStrings)   : Integer;
Function  LoadFontNamesA               (Items             : TStrings)       : Integer;
Function  GetLocalizedFontName         (Const FontName    : TPCBString)     : TPCBString;

Locale Functions

Function  GetLocaleData(AID   : LCID; AFlag : DWORD) : TDynamicString;
Function  IsLocaleLanguageJapanese : Boolean;
Function  IsLocaleLanguageEnglish  : Boolean;
Function  IsLocaleLanguageAsian    : Boolean;

General Functions

GetIniFileName

Function GetIniFileName : AnsiString;

CoordsEqual

Function  CoordsEqual (c1, c2 : Double) : Boolean;

ConvertEncodedText2WideString

Function  ConvertEncodedText2WideString(Const EncodedText : TDynamicString) : TPCBString;

ConvertWideString2EncodedText

Function  ConvertWideString2EncodedText(Const WString     : TPCBString)     : TDynamicString;

StringListCopy

Function  StringListCopy               (AWideStringList : TWideStringList;
                                        AAnsiStringList : TStringList)      : Boolean;

StringToWideString

Function  StringToWideString           (const Str         : string)         : TPCBString;

You are reporting an issue with the following selected text and/or image within the active document:
ALTIUM DESIGNER FREE TRIAL
Altium Designer Free Trial
Let’s get started. First off, are you or your organization already using Altium Designer?

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

In that case, why do you need an evaluation license?

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

Got it. You actually don’t need an evaluation license for that.

Click the button below to download the latest Altium Designer installer.

Download Altium Designer Installer

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

Please fill out the form below to get a quote for a new seat of Altium Designer.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

If you are on Altium Subscription, you don’t need an evaluation license.

If you are not an active Altium Subscription member, please fill out the form below to get your free trial.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

Why are you looking to evaluate Altium Designer?

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

You came to the right place! Please fill out the form below to get your free trial started.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

Sounds exciting! Did you know we offer special discounted student licenses? For more information, click here.

In the meantime, feel free to request a free trial by filling out the form below.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

Got it. You can download a free Altium Designer Viewer license which is valid for a 6 months.

Please fill out the form below to request one.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.

That’s great! Making things is awesome. We have the perfect program for you.

Upverter is a free community-driven platform designed specifically to meet the needs of makers like you.

Click here to give it a try!

If would like to speak with a representative, please contact your local Altium office.
Copyright © 2019 Altium Limited

Got it. You can download a free Altium Designer Viewer license which is valid for a 6 months.

Please fill out the form below to request one.

By clicking “Get Your Free Trial”, you are agreeing to our Privacy Policy.
You may receive communications from Altium and can change your notification preferences at any time.