Numerical Matrix Format
User Reference
PANEL array

MATRIX Array Level: 4

The PANEL array is used to create and build a complete panel. It can automatically panelize/merge jobs, create fiducials, tooling holes, perform venting, and more. Jobs must be imported and available before Panel. PANEL array is optional. Relative Panel Coordinates are also supported.

Note
More information about Using Panelization Setup >
Fields in the PANEL array
Description
NAME The name of the panel. This will be the name used when it creates the panel.
UNITS=VALUE Units to use for this panel array. Must be either: INCH or MM (Default: MM)
WIDTH=VALUE Panel Width. The value is defined in the panel units.
HEIGHT=VALUE Panel Height. The value is defined in the panel units.
BORDERSPACING

Defines the panel margins between edge of panel and inserted PCB's. Border spacing is defined as either:
BORDERSPACING=LEFT,RIGHT,TOP,BOTTOM
or if all spacing is the same for all sides use one value.
BORDERSPACING=MARGIN

STEPREPEAT

This field contains the Job Name, X and Y Origin, X and Y Spacing, X and Y Count, Job Angle (must be 0, 90, 180, 270), Mirror (must be either: YES or NO), and the optional Job Orientation to use (Lower-Left, Center, Origin) all separated by a commas.

Note
Origin and Spacing values are defined in the panel units.
Note: If you only require a 1 up (no array) use INSERT (see below).
Note: By default use the Lower-Left of each Job as the insert point. If you wish to use the Insert Point to be the Job Center use Center. If you wish to insert by the actual 0,0 origin of the Job use Origin.

STEPREPEAT=JOB,X,Y,JOB_SPACING_X,JOB_SPACING_Y,COUNT_X,COUNT_Y,ANGLE,MIRROR,ORIGIN
JOB: Name of job (ie. child cell) which is to be inserted. Cannot be the same name as the panel (ie. parent cell). Dynamic Job References are also supported.
X, Y The StepRepeat Insert coordinate.
JOB_SPACING_X Job Spacing (Horizontal)
JOB_SPACING_Y Job Spacing (Vertical)
COUNT_X Job Count (Horizontal)
COUNT_Y Job Count (Vertical)
ANGLE The insert angle.
MIRROR Assign TRUE for mirrored insert and FALSE for non-mirror. YES or NO is also accepted
ORIGIN Optional. Job Orientation to use: LOWER-LEFT, CENTER, ORIGIN By default use the Lower-Left of each Job as the insert point. If you wish to use the Insert Point to be the Job Center use Center. If you wish to insert by the actual 0,0 origin of the Job use Origin.

Example: STEPREPEAT=board1,17.0,4,3.8,3.4,2,5,90,No,Origin

INSERT Add an insert to the Panel. Relative Panel Coordinates are also supported.
Note
If you only require an array use STEPREPEAT above.
INSERT=JOB,X,Y,ANGLE,MIRROR,[ORIGIN]
JOB name of job (ie. child cell) which is to be inserted. Cannot be the same name as the panel (ie. parent cell). Dynamic Job References are also supported.
X, Y are the Insert coordinate.
ANGLE is the insert angle.
MIRROR assign TRUE for mirrored insert and FALSE for non-mirror. YES or NO is also accepted
ORIGIN is optional Job Orientation to use (Lower-Left, Center, Origin). By default use the Lower-Left of each Job as the insert point. If you wish to use the Insert Point to be the Job Center use Center. If you wish to insert by the actual 0,0 origin of the Job use Origin.

Example:
INSERT=Board4,17.5,15.35,180,No
INSERT=Board4,17.5,15.35,180,Yes
INSERT=pcb,100,100,0,No,Center
FIDUCIAL

Add Fiducials to the Panel. Define Fiducial Shape, Width, Mask Shape, Mask Width, X/Y Coordinates, Fiducial Type, and layer(s). Relative Panel Coordinates are also supported.


FIDUCIAL=shape,width,mask_shape,mask_width,x,y,fid_type,layer(s)
shape=[circle hash target cross octagon butterfly donut rectangle diamond]
mask_shape=[circle square]
fid_type=[local global panel]. If none, may be left intentionally blank

For additional information view, https://support.numericalinnovations.com/support/discussions/topics/14000018616

Example:
FIDUCIAL=circle,1,rectangle,2,@left+5,@bottom+7.2,Panel,[Top+Bottom]
FIDUCIAL=rectangle,1,rectangle,2,@right-25,@top-5,,topside34dd,botside34dd

TEXTLABEL

Add Text Label to the active Panel. Relative Panel Coordinates are also supported.

TEXTLABEL=font,height,x,y,rotate,mirror,negative,layer(s),text_label
font=Choose the font file (*.fnt) you wish for the Text label. If empty "fab.fnt" will be used. FAB 3000 supports almost any TrueType or AutoCAD SHX font, so if you don't see a specific font you require it can be compiled into a FAB 3000 font file (*.fnt). https://support.numericalinnovations.com/support/discussions/topics/14000003029
mirror=[no yes] If yes, mirrored Horizontally (about the Y axis). If empty will be "no" mirror.
negative=[no yes] If yes, text will be clear. Make sure text is over an existing metal area or else it will appear invisible. If empty will be "no" (positive)
text_label=Enter the text you require on the panel. All dynamic Text variables are fully supported, https://support.numericalinnovations.com/support/discussions/topics/14000018603


For additional information view, https://support.numericalinnovations.com/discussions/topics/14000018617

Example:
TEXTLABEL=arial.fnt,2,@right-15,@bottom+5,0.0,1,0,[Bottom_Silk],PANEL LABEL
TEXTLABEL=arial.fnt,2,@left+15,@bottom+5,0.0,0,0,[Top_Silk],PANEL LABEL
TEXTLABEL=,1.6,@right-100,@top-6.5,0.0,1,0,[Bottom_Silk],dX: $$PANEL_SPACING_X
TEXTLABEL=,1.6,@left+2,@top-4,0.0,0,0,[Top_Silk],TOP SIDE LEFT CORNER. PCB#$$WORKSPACE_NAME x $$PANEL_TOTAL
TEXTLABEL=fab.fnt,1.6,@left+2,@top-9,0.0,0,0,[Top_Silk],PANEL ORIGIN BOTTOM LEFT OF PCB AREA
TEXTLABEL=,1.6,@left+2,@top-6.5,0.0,0,0,[Top_Silk],$$PANEL_WIDTH x $$PANEL_HEIGHT x $$PANEL_THICKNESS

TOOLINGHOLE

Add NC Tooling Holes and then enter Width, Height, X/Y Coordinates, Rotation, and Clearance. Relative Panel Coordinates are also supported.

TOOLINGHOLE=shape,width,height,x,y,rotation,clearance
shape=[drill slot]

For additional information view, https://support.numericalinnovations.com/discussions/topics/14000018619

Example:
TOOLINGHOLE=drill,2,2,5,7.2,0,1
TOOLINGHOLE=slot,4,1,@right-25,@top-5,0,1

COUPON Insert Coupons and other external resources into the Panel. Relative Panel Coordinates are also supported.

COUPON=resource,x,y,rotate,mirror,clearance,layer(s)
resource=Resources include: Job files (*.job), Numerical Matrix Files (*.fm6,xml,json), and existing Job/Panels (already loaded and available).

For additional information view, https://support.numericalinnovations.com/discussions/topics/14000018618

Example:
COUPON="C:/Support/Coupon32.job",@l+100,+10,0,No,1
COUPON="C:/Support/customfeature.fm6",34.5,75,0,No,1,[Top+Bottom]
COUPON=myjobname,200,5,0,No,1,[Top+Bottom]
VENT

Venting adds copper which isn't connected to any nets on the board and does not affect the functionality. The are various purposes for Venting (i.e Thieving) such as improving etching throughout the entire panel, to improve manufacturing efficiency, and more. Typically small copper circles, squares or even a solid copper plane will be added to larger blank spaces to even out the copper distribution across a copper layer. Relative Panel Coordinates are also supported.

VENT=rail,panel_clearance,job_clearance,symbol_clearance,width,layer(s)
VENT=vrail,panel_clearance,job_clearance,symbol_clearance,width,layer(s)
VENT=hrail,panel_clearance,job_clearance,symbol_clearance,width,layer(s)
VENT=solid,panel_clearance,job_clearance,job_clearance,symbol_clearance,layer(s)
VENT=dot,panel_clearance,job_clearance,symbol_clearance,patternX,patternY,dy,shape1,width1,x1,dx1,shape2,width2,x2,dx2,layer(s)
VENT=hatch,panel_clearance,job_clearance,symbol_clearance,patternX,patternY,width1,offset1,angle1,width2,offset2,angle2,width3,offset3,angle3,layer(s)


For additional information view, https://support.numericalinnovations.com/discussions/topics/14000018620

Example:
VENT=solid,0.1,0,0.1,[Top+Bottom]
VENT=dot,0,0.1,0.1,0,0,0.12,circle,0.06,0,0.12,circle,0.06,0.06,.12,[odd metal]
VENT=hatch,0.1,0,0,0,0,0.01,0.5,0,0.01,0.5,45,0.01,0.5,90,[even metal]

OBJECT Add various Objects into the Panel such as Rout, Score, Polygon, Line, Path, Circle, Arc. Relative Panel Coordinates are also supported.

OBJECT=SHAPE,LAYER,COMPOSITE,SHAPE_DESCRIPTION
LAYER name. Dynamic Layer Types are also supported.
COMPOSITE=[dark clear], or Composite Level number. If blank, the default is Dark. For more information about composites, please view Help Center: About Composites

SHAPE_DESCRIPTION [ROUT SCORE POLYGON LINE PATH CIRCLE ARC]

ROUT Description:
WIDTH,POINT_COUNT,[X],[Y],[...]

WIDTH is the rout path tool width.
POINT_COUNT is the number of points for the nc path.
X,Y,... are the X,Y point array.
Example: 2.2,2,@left,10,@right,10

SCORE Description:
X1,Y1,X2,Y2

X1,Y1 is the start point.
X2,Y2 is the end point.
Note: Score lines only contain two points and are typically orthogonal.

POLYGON Description:
POINT_COUNT,[X],[Y],[...]

POINT_COUNT is the number of points for the path.
X,Y,... are the X,Y point array.
Example: 7,-9,-9,-9,-8,-8.25,-8,-8.25,-6,-2,-6,-2,-9,-9,-9

LINE Description:
POINT_COUNT,[X],[Y],[...]

POINT_COUNT is the number of points for the path.
X,Y,... are the X,Y point array.
Example: 7,-9,-9,-9,-8,-8.25,-8,-8.25,-6,-2,-6,-2,-9,-9,-9

PATH Description:
WIDTH,POINT_COUNT,[X],[Y],[...]

WIDTH is the path width.
POINT_COUNT is the number of points for the path.
X,Y,... are the X,Y point array.
Example: 0.025,7,-9,-9,-9,-8,-8.25,-8,-8.25,-6,-2,-6,-2,-9,-9,-9

CIRCLE Description:
X,Y,OD,ID

X, Y are the Circle Center coordinate.
OD is the Circle Outer diameter
ID is the Circle inside diameter. This is optional, and the default is 0.
Example: 0.25,0.25,0.1,0.05

ARC Description:
SX, SY, EX,EY,CX,CY,COUNTER-CLOCKWISE DIRECTION,LINEWIDTH

SX, SY are the Arc start coordinate.
EX, EY are the Arc end coordinate.
CX, CY are the Arc center coordinate.
COUNTER-CLOCKWISE DIRECTION is Y for Counter-Clockwise, or N for Clockwise.
LINEWIDTH is the line width for the Arc
Example: 1,0,0,1,0,0,Y,0.1


For additional information about Panel Objects view, https://support.numericalinnovations.com/discussions/topics/14000018609

ADD_CROP_MARKS
Crop marks are placed onto the silkscreen layer at the four corners of the final panel. Some board manufacturers may require crop marks.

ADD_OUTLINE_LAYER=VALUE

or

ADD_OUTLINE_LAYER


The outline layer is used more as a reference guide where a new layer is created with all individual board outlines plus the panel outline

ADD_OUTLINE_LAYER=PANEL_CLEARANCE,JOB_CLEARANCE,<FILL|OUTLINE>
PANEL_CLEARANCE=Clearance from Board edges (in Panel units). Default: 0.0 JOB_CLEARANCE=Clearance from Board edges (in Panel units). Default: 0.0 <FILL|OUTLINE>=Output Panel Outline Layer as filled polygons instead of outlines. Default: Outline

Note
Shortcut: ADD_OUTLINE_LAYER without any assigned values will result in an outline layer being created with 0.0 clearances from Panel/Job and Outlines (no fill)
ADD_CUTLINES=CLEARANCE


Cut lines are board outlines placed onto the silkscreen layer used to help guide you in cutting out the individual boards from the panel.

Clearance spacing of cut lines from true boarder edges. The clearance value is defined in the panel units.

Example:
add_cutlines=0.1

ADD_SCORING_LINES=<JOB|PANEL>


Automatically place scoring lines throughout the entire panel. Scoring lines are extended to the edge of either: JOB or PANEL

Note
Scoring lines are 1/2 depth routed paths placed between jobs, so that each board may be easily snapped apart from the panel.


Example:
add_scoring_lines=panel

PANEL_FILE=FILE

or

PAN_FILE=FILE


Provide name of an existing Panel file (*.pan). All panel parameters will be used from that file.

Note
PANEL_FILE parameters will be overwritten if any Panel array pararameters are defined afterwards (must be same Panel array).

Example:
panel_file=Customer234/PanelArray-23433.pan

Note
Use PCB Preflight Free Viewer to preview and edit Panel files (*.pan)
1. Start PCB Preflight Viewer.
2. Go to menu: File > New > Panel...
3. View and edit Panel settings Resulting Image
PANELWIZARD_FIXED


Automatically Panelize Jobs into the defined fixed panel size. Relative Panel Coordinates are also supported.

PANELWIZARD_FIXED=JOB_SPACING_X,JOB_SPACING_Y,[jobname,min_count,surplus,...]
JOB_SPACING_X=Job Spacing (Horizontal)
JOB_SPACING_Y=Job Spacing (Vertical)
jobname=name of job to panelize. Dynamic Job References are also supported.
min_count=Enter minimum job count required in panel.
surplus=Enter Surplus count. Searches for any available spaces remaining to place more jobs. (Default 0).

Example:
PANELWIZARD_FIXED=3,3,myPCB,4,10
Create a fixed panel size with 4 myPCB's, with the possibility of adding up to 10 more instances (if space is available).

PANELWIZARD_FIXED=0.1,0.1,@first,15,10,@last,5,10
Create a fixed panel size 12in. x 12in. with two merged PCB's. PCB#1 15 count (10 surplus), PCB#2 5 count (10 surplus)

PANELWIZARD_SMALLEST


Automatically Panelize Jobs into the smalled panel size possible. Relative Panel Coordinates are also supported.

PANELWIZARD_SMALLEST=JOB_SPACING_X,JOB_SPACING_Y,[jobname,count,...]
JOB_SPACING_X=Job Spacing (Horizontal)
JOB_SPACING_Y=Job Spacing (Vertical)
jobname=name of job to panelize. Dynamic Job References are also supported.
count=Enter job count required in panel.

Example:
PANELWIZARD_SMALLEST=0.1,0.1,myPCB,2,pcb2232,4,harris2344,8
This will create the smallest possible panel to contain all required jobs:

  • myPCB (2 qty)
  • pcb2232 (4 qty)
  • harris2344 (8 qty)


Note
When using PANELWIZARD_SMALLEST, assign a larger Panel Size (Width/Height) than needed.
Why? PANELWIZARD_SMALLEST will always start using the Largest Possible Panel (first), and then reduces down to the smallest and most efficient Panel Size containing all required jobs.

PANEL_EFFICIENCY=PERCENT


Minimum Panel Efficiency (%) used solely by PANELWIZARD_SMALLEST
Efficiency percentage is calculated as the Panel Area/PCB Area.
The closer the panel efficiency is to 100, the more cost-effective the Panel will be.

PERCENT Typically a number between 1 and 99. The Default Value is 75
Typically you will want to adjust the panel efficiency if PANELWIZARD_SMALLEST cannot generate any panels.

Example:
panel_efficiency=80

Note
For best results, avoid Panel Efficiency (%) under 50 and above 95. Only used by PANELWIZARD_SMALLEST
PANEL_ORIENTATION=OPTION


Panel Orientation is used solely by PANELWIZARD_SMALLEST.
The purpose is to ensure the final panel dimensions favors the
charatericsts most important to your manufacturing requirements.

OPTION Choose from 3 options: OPTIMIZED, PORTRAIT, LANDSCAPE
OPTIMIZED = Get the best panel efficiency possible - regardless of orientation. DEFAULT
PORTRAIT = Create a Vertical Panel (i.e shorter width, longer height).
LANDSCAPE = Create a Horizontal Panel (i.e longer width, shorter height).

Example:
panel_orientation=portrait

Note
For best Efficiency (%) leave the default OPTIMIZED. Only used by PANELWIZARD_SMALLEST
The default Panel Orientation is: OPTIMIZED

PANEL_NO_JOB_ROTATION
Prevents Panel Wizards (Fixed and Smallest) from automatically rotating jobs in a panel.
By default Jobs are automatically rotated (whenever needed) to maximize Panel Efficiency.

Note
This may be useful to create column/row channels between jobs
when adding scoring lines (ADD_SCORING_LINES) to the Panel.

FLATTEN_HIERARCHY


Flattens all hierarchy in a Panel (without Step/Repeat). Output files will be larger but more compatible with other CAD/CAM tools that do not support hierarchy or step/repeat.

Example PANEL Array:

PANEL {
NAME=mypanel
UNITS=INCH
WIDTH=19
HEIGHT=19.5
BORDERSPACING=0.5
STEPREPEAT=board4,18,0.5,0,2.5,1,7,90,No
STEPREPEAT=board1,17.5,4.5,3.8,3.4,2,5,90,No
STEPREPEAT=testgerber,18.35,12.0,7,6,1,3,90,No
FIDUCIAL=circle,.03,rectangle,.06,@l+.5,@b+.72,Panel,[Top+Bottom]
FIDUCIAL=rectangle,.03,rectangle,.06,@right-.25,@t-.5,,topside34dd,botside34dd
VENT=rail,0,0,0,0.5,[Top+Bottom]
VENT=solid,0.1,0,0.1,layer_2
VENT=dot,0,0.1,0.1,0,0,0.12,circle,0.06,0,0.12,circle,0.06,0.06,.12,layer_3
VENT=hatch,0.1,0,0,0,0,0.01,0.5,0,0.01,0.5,45,0.01,0.5,90,layer_4
}
PANEL {
NAME=mypanel
UNITS=MM
PANEL_FILE=Panel 406x508.pan
PANELWIZARD_SMALLEST=2.54,2.54,@first,2
panel_orientation=landscape
}

XML example:

<PANEL>
<NAME>mypanel</NAME>
<UNITS>INCH</UNITS>
<WIDTH>19</WIDTH>
<HEIGHT>19.5</HEIGHT>
<BORDERSPACING>0.5</BORDERSPACING>
<STEPREPEAT>board4,18,0.5,0,2.5,1,7,90,No</STEPREPEAT>
<STEPREPEAT>board1,17.5,4.5,3.8,3.4,2,5,90,No</STEPREPEAT>
<STEPREPEAT>testgerber,18.35,12.0,7,6,1,3,90,No</STEPREPEAT>
<FIDUCIAL>circle,.03,rectangle,.06,@l+.5,@b+.72,Panel,[Top+Bottom]</FIDUCIAL>
<FIDUCIAL>rectangle,.03,rectangle,.06,@right-.25,@t-.5,,topside34dd,botside34dd</FIDUCIAL>
<VENT>rail,0,0,0,0.5,[Top+Bottom]</VENT>
<VENT>solid,0.1,0,0.1,layer_2</VENT>
<VENT>dot,0,0.1,0.1,0,0,0.12,circle,0.06,0,0.12,circle,0.06,0.06,.12,layer_3</VENT>
<VENT>hatch,0.1,0,0,0,0,0.01,0.5,0,0.01,0.5,45,0.01,0.5,90,layer_4</VENT>
</PANEL>
<PANEL>
<NAME>mypanel</NAME>
<UNITS>MM</UNITS>
<PANEL_FILE>Panel 406x508.pan</PANEL_FILE>
<PANELWIZARD_SMALLEST>2.54,2.54,@first,2</PANELWIZARD_SMALLEST>
<panel_orientation>landscape</panel_orientation>
</PANEL>

JSON example:

"PANEL": {
"NAME": "mypanel",
"UNITS": "INCH",
"WIDTH": 19,
"HEIGHT": 19.5,
"BORDERSPACING": 0.5,
"STEPREPEAT": [
"board4,18,0.5,0,2.5,1,7,90,No",
"board1,17.5,4.5,3.8,3.4,2,5,90,No",
"testgerber,18.35,12.0,7,6,1,3,90,No"
],
"FIDUCIAL": [
"circle,.03,rectangle,.06,@l+.5,@b+.72,Panel,[Top+Bottom]",
"rectangle,.03,rectangle,.06,@right-.25,@t-.5,,topside34dd,botside34dd"
],
"VENT": [
"rail,0,0,0,0.5,[Top+Bottom]",
"solid,0.1,0,0.1,layer_2",
"dot,0,0.1,0.1,0,0,0.12,circle,0.06,0,0.12,circle,0.06,0.06,.12,layer_3",
"hatch,0.1,0,0,0,0,0.01,0.5,0,0.01,0.5,45,0.01,0.5,90,layer_4"
]
}
"PANEL": {
"NAME": "mypanel",
"UNITS": "MM",
"PANEL_FILE": "Panel 406x508.pan",
"PANELWIZARD_SMALLEST": "2.54,2.54,@first,2",
"panel_orientation": "landscape"
}