UNPKG

@typecad/typecad

Version:

🤖programmatically 💥create 🛰️hardware

116 lines (115 loc) 3.35 kB
export declare function pointToSegmentDistance(px: number, py: number, x1: number, y1: number, x2: number, y2: number): number; export interface IGridCell { x: number; y: number; layer: string; occupied: boolean; net?: string; isManualRoute?: boolean; absoluteBlock?: boolean; pad?: boolean; cost: number; clearance?: number; obstacleHalfWidthMm?: number; obstacleIds?: string[]; } export interface IRoutingObstacle { type: 'component' | 'pad' | 'track' | 'zone' | 'keepout' | 'outline'; bounds: { minX: number; maxX: number; minY: number; maxY: number; }; layers: string[]; net?: string; clearance: number; priority?: number; isManualRoute?: boolean; segment?: { x1: number; y1: number; x2: number; y2: number; width: number; }; padShape?: { shape: 'circle' | 'rect' | 'oval' | 'roundrect'; center: { x: number; y: number; }; width: number; height: number; rotation: number; }; polygon?: { points: { x: number; y: number; }[]; }; } export declare class RoutingGrid { private debug; private bounds; private gridResolution; private layers; private cells; private gridWidth; private gridHeight; private maxObstacleClearance; private maxObstacleHalfWidthMm; private obstacles; constructor(bounds: { minX: number; maxX: number; minY: number; maxY: number; }, gridResolution: number, layers: string[], debug?: boolean); addObstacle(obstacle: IRoutingObstacle): void; isPadCell(x: number, y: number, layer: string): boolean; hasPadWithinClearance(x: number, y: number, layer: string, clearanceMm: number): boolean; isOccupied(x: number, y: number, layer: string, clearance?: number, net?: string, considerObstacleClearance?: boolean, sumObstacleClearance?: boolean): boolean; checkTrackObstaclePrecise(worldX: number, worldY: number, layer: string, clearance: number, net?: string): boolean; private getCellObstacle; gridToWorldX(gridX: number): number; gridToWorldY(gridY: number): number; getWorldXFromGrid(gridX: number): number; getWorldYFromGrid(gridY: number): number; private isCellOccupied; getCellCost(x: number, y: number, layer: string): number; setCellCost(x: number, y: number, layer: string, cost: number): void; worldToGrid(worldX: number, worldY: number): { x: number; y: number; }; gridToWorld(gridX: number, gridY: number): { x: number; y: number; }; isInBounds(x: number, y: number): boolean; private getCellKey; getCell(x: number, y: number, layer: string): IGridCell | undefined; private worldBoundsToGridBounds; getDimensions(): { width: number; height: number; layers: number; }; getResolution(): number; getLayers(): string[]; getBounds(): { minX: number; maxX: number; minY: number; maxY: number; }; clear(): void; getStats(): { totalCells: number; occupiedCells: number; freeCells: number; occupancyPercent: number; }; }