@tracespace/parser
Version:
Gerber and NC drill file parser
187 lines (164 loc) • 3.96 kB
text/typescript
// common types
import * as Constants from './constants'
/**
* Gerber file or NC drill file
*/
export type Filetype = typeof Constants.GERBER | typeof Constants.DRILL
/**
* Millimieters or inches
*/
export type UnitsType = typeof Constants.MM | typeof Constants.IN
/**
* Coordinate string decimal format, where Format[0] represents the maximum
* number of integer digits in the string and Format[1] represents the number
* of decimal digits. The decimal point itself is usually implicit.
*/
export type Format = [number, number]
/**
* Leading or trailing zero-suppression for coordinate strings
*/
export type ZeroSuppression =
| typeof Constants.LEADING
| typeof Constants.TRAILING
/**
* Absolute or incremental coordinates
*/
export type Mode = typeof Constants.ABSOLUTE | typeof Constants.INCREMENTAL
/**
* Union type of valid tool shapes
*
* @category Shape
*/
export type ToolShape = Circle | Rectangle | Obround | Polygon | MacroShape
/**
* Union type of valid tool hole shapes
*
* @category Shape
*/
export type HoleShape = Circle | Rectangle
/**
* A centered circle with a given diameter.
*
* @category Shape
*/
export interface Circle {
type: typeof Constants.CIRCLE
diameter: number
}
/**
* A centered rectangle with given side lengths in the x and y axes.
*
* @category Shape
*/
export interface Rectangle {
type: typeof Constants.RECTANGLE
xSize: number
ySize: number
}
/**
* A variant of a rectangle with rounded corners. The shape's border radius is
* equal to half of the length of the shorter sides, making a pill shape.
*
* @category Shape
*/
export interface Obround {
type: typeof Constants.OBROUND
xSize: number
ySize: number
}
/**
* A regular polygon with a circumscribed circle diamter, number of vertices,
* and optional counter-clockwise rotation in degrees. If `rotation` is
* unspecified or `0`, a point will lie on the positive x axis.
*
* @category Shape
*/
export interface Polygon {
type: typeof Constants.POLYGON
diameter: number
vertices: number
rotation: number | null
}
/**
* A shape defined by the {@linkcode ToolMacro} with `name`.
*
* @category Shape
*/
export interface MacroShape {
type: typeof Constants.MACRO_SHAPE
name: string
params: number[]
}
/**
* Union type of macro primitive shape identifiers
*
* @category Macro
*/
export type MacroPrimitiveCode =
| typeof Constants.MACRO_CIRCLE
| typeof Constants.MACRO_VECTOR_LINE
| typeof Constants.MACRO_CENTER_LINE
| typeof Constants.MACRO_OUTLINE
| typeof Constants.MACRO_POLYGON
| typeof Constants.MACRO_MOIRE
| typeof Constants.MACRO_THERMAL
/**
* An arithmatic expression in a macro
*
* @category Macro
*/
export interface MacroExpression {
left: MacroValue
right: MacroValue
operator: '+' | '-' | 'x' | '/'
}
/**
* A value in a macro. The number may be a literal number, a string
* representing a variable in the macro, or an arithmetic expression.
*
* @category Macro
*/
export type MacroValue = number | string | MacroExpression
/**
* A map of axes to coordinate strings used to define the location of a
* graphical operation
*/
export interface Coordinates {
[axis: string]: string
}
/**
* Paramters of a step repeat
*/
export interface StepRepeatParameters {
[axis: string]: number
}
/**
* Valid graphical operation types
*/
export type GraphicType =
| typeof Constants.SHAPE
| typeof Constants.MOVE
| typeof Constants.SEGMENT
| typeof Constants.SLOT
| null
/**
* Valid interpolations modes
*/
export type InterpolateModeType =
| typeof Constants.LINE
| typeof Constants.CW_ARC
| typeof Constants.CCW_ARC
| typeof Constants.MOVE
| typeof Constants.DRILL
| null
/**
* Valid quadrant modes
*/
export type QuadrantModeType =
| typeof Constants.SINGLE
| typeof Constants.MULTI
| null
/**
* Valid image polarities
*/
export type Polarity = typeof Constants.DARK | typeof Constants.CLEAR