@typecad/typecad
Version:
🤖programmatically 💥create 🛰️hardware
105 lines (104 loc) • 2.06 kB
TypeScript
import { Schematic } from "./schematic";
export interface IPcbOptions {
Schematic?: Schematic;
safe_write?: boolean;
remove_orphans?: boolean;
thickness?: number;
copper_thickness?: number;
}
export interface INetResolution {
found: boolean;
netCode: number;
netName: string;
schematicNetCode?: number;
schematicNetName?: string;
}
export interface IVia {
uuid?: string;
netCode?: number;
net?: string;
layers?: string[];
at?: {
x: number;
y: number;
};
size?: number;
drill?: number;
powerInfo?: IViaPowerInfo;
}
export interface IGraphicPrimitive {
uuid: string;
layer: string;
strokeWidth: number;
}
export interface IGrLine extends IGraphicPrimitive {
type: 'line';
start: {
x: number;
y: number;
};
end: {
x: number;
y: number;
};
locked?: boolean;
}
export interface IGrArc extends IGraphicPrimitive {
type: 'arc';
start: {
x: number;
y: number;
};
mid: {
x: number;
y: number;
};
end: {
x: number;
y: number;
};
}
export type OutlineElement = IGrLine | IGrArc;
export interface IOutline {
uuid: string;
x: number;
y: number;
width: number;
height: number;
filletRadius: number;
elements: OutlineElement[];
}
export interface IPowerInfo {
current: number;
maxTempRise?: number;
thickness?: number;
}
export interface IViaPowerInfo {
current: number;
maxTempRise?: number;
thickness?: number;
}
export interface IPinPowerInfo {
minimum_voltage?: number;
maximum_voltage?: number;
current?: number;
}
export interface ITrackDetails {
start: {
x: number;
y: number;
};
end: {
x: number;
y: number;
};
width: number;
layer: string;
locked: boolean;
powerInfo?: IPowerInfo;
}
export interface IGeneratedElement {
type: 'track' | 'via';
uuid: string;
details: ITrackDetails | IVia;
}