PCB Matrix Format
Developed by Numerical Innovations, Inc. (www.numericalinnovations.com)
BOOLEAN array

MATRIX Array Level: 3

The BOOLEAN array performs boolean logic on any selected object sets and/or layers.

Fields in the BOOLEAN array
Description
JOB=NAME The name of the Job to perform Boolean logic. Required. Dynamic Job References are also supported.
UNITS=VALUE

Units to use for this BOOLEAN array only. Choose from: mil mm cm inch um (default: mm)

ADD=VALUE

Perform boolean operation (OR) between layers and/or groups.

ADD=OPERAND_A,OPERAND_B,OUTPUT_LAYER

OPERAND_A Assign Objects for Operand A. Can be either: Layer name, Dynamic Layer Types, or Selection set.
OPERAND_B Assign Objects for Operand B. Can be either: Layer name, Dynamic Layer Types, or Selection set.
OUTPUT_LAYER Layer for the boolean output results. If undefined, a name starting with "BoolLayer..." will be created for the output layer.

SUBTRACT=VALUE

Perform boolean operation Subtract between layers and/or groups.

SUBTRACT=OPERAND_A,OPERAND_B,OUTPUT_LAYER

OPERAND_A Assign Objects for Operand A. Can be either: Layer name, Dynamic Layer Types, or Selection set.
OPERAND_B Assign Objects for Operand B. Can be either: Layer name, Dynamic Layer Types, or Selection set.
OUTPUT_LAYER Layer for the boolean output results. If undefined, a name starting with "BoolLayer..." will be created for the output layer.

INTERSECT=VALUE

Perform boolean operation (AND). Used to show similarities between groups.

INTERSECT=OPERAND_A,OPERAND_B,OUTPUT_LAYER

OPERAND_A Assign Objects for Operand A. Can be either: Layer name, Dynamic Layer Types, or Selection set.
OPERAND_B Assign Objects for Operand B. Can be either: Layer name, Dynamic Layer Types, or Selection set.
OUTPUT_LAYER Layer for the boolean output results. If undefined, a name starting with "BoolLayer..." will be created for the output layer.

XOR=VALUE

Perform boolean operation (XOR) between layers and/or groups. Used to show differences between groups.

XOR=OPERAND_A,OPERAND_B,OUTPUT_LAYER

OPERAND_A Assign Objects for Operand A. Can be either: Layer name, Dynamic Layer Types, or Selection set.
OPERAND_B Assign Objects for Operand B. Can be either: Layer name, Dynamic Layer Types, or Selection set.
OUTPUT_LAYER Layer for the boolean output results. If undefined, a name starting with "BoolLayer..." will be created for the output layer.

INVERT=VALUE

Perform boolean operation Invert.

INVERT=OPERAND_A,OUTPUT_LAYER

OPERAND_A Assign Objects for Operand A. Can be either: Layer name, Dynamic Layer Types, or Selection set.
OUTPUT_LAYER Layer for the boolean output results. If undefined, a name starting with "BoolLayer..." will be created for the output layer.

SIZE=VALUE

Perform boolean operation OR plus over/under size. Offset per side.

SIZE=OPERAND_A,OUTPUT_LAYER,OFFSET

OPERAND_A Assign Objects for Operand A. Can be either: Layer name, Dynamic Layer Types, or Selection set.
OUTPUT_LAYER Layer for the boolean output results. If undefined, a name starting with "BoolLayer..." will be created for the output layer.
OFFSET Distance per side to either enlarge or reduce.

METHOD=VALUE

Determines how resulting polygons will be output. This is optional. Default: Standard

Choose either method: STANDARD, CUTLINES, TRIANGLES

STANDARD All output objects will be optimized.
CUTLINES All output objects will have a cutline connecting any islands.
TRIANGLES All output objects will output as tesselated triangles.


Example BOOLEAN Array:

XML example:

<!-- Moves objects contained in selection set "TopLayerPadsSet" 1 inch in X direction, and 3 inches in Y direction. -->
<BOOLEAN>
<JOB>@active</JOB>
<INTERSECT>[Top],[Top_Mask],MyLayerExposedCopperTop</INTERSECT>
<INTERSECT>[Bottom],[Bottom_Mask],MyLayerExposedCopperBottom</INTERSECT>
</BOOLEAN>

JSON example:

{
"BOOLEAN": {
"JOB": "@active",
"INTERSECT": "[Top],[Top_Mask],MyLayerExposedCopperTop",
"INTERSECT": "[Bottom],[Bottom_Mask],MyLayerExposedCopperBottom"
}
}

LEGACY example:

# Use Boolean Intersection (AND) to create exposed copper areas (i.e areas where copper layer intersects soldermask layer).
BOOLEAN {
JOB=@active
INTERSECT=[Top],[Top_Mask],MyLayerExposedCopperTop
INTERSECT=[Bottom],[Bottom_Mask],MyLayerExposedCopperBottom
}