@@ -4,12 +4,13 @@ import {
44 type PipelineStep ,
55} from "@tscircuit/solver-utils"
66import type { SimpleRouteJson } from "./types/srj-types"
7- import type { GridFill3DOptions } from "./rectdiff-types"
7+ import type { GridFill3DOptions , XYRect } from "./rectdiff-types"
88import type { CapacityMeshNode } from "./types/capacity-mesh-types"
99import type { GraphicsObject } from "graphics-debug"
1010import { GapFillSolverPipeline } from "./solvers/GapFillSolver/GapFillSolverPipeline"
1111import { RectDiffGridSolverPipeline } from "./solvers/RectDiffGridSolverPipeline/RectDiffGridSolverPipeline"
1212import { createBaseVisualization } from "./rectdiff-visualization"
13+ import { computeInverseRects } from "./solvers/RectDiffSeedingSolver/computeInverseRects"
1314
1415export interface RectDiffPipelineInput {
1516 simpleRouteJson : SimpleRouteJson
@@ -19,6 +20,7 @@ export interface RectDiffPipelineInput {
1920export class RectDiffPipeline extends BasePipelineSolver < RectDiffPipelineInput > {
2021 rectDiffGridSolverPipeline ?: RectDiffGridSolverPipeline
2122 gapFillSolver ?: GapFillSolverPipeline
23+ boardVoidRects : XYRect [ ] | undefined
2224
2325 override pipelineDef : PipelineStep < any > [ ] = [
2426 definePipelineStep (
@@ -28,6 +30,7 @@ export class RectDiffPipeline extends BasePipelineSolver<RectDiffPipelineInput>
2830 {
2931 simpleRouteJson : rectDiffPipeline . inputProblem . simpleRouteJson ,
3032 gridOptions : rectDiffPipeline . inputProblem . gridOptions ,
33+ boardVoidRects : rectDiffPipeline . boardVoidRects ,
3134 } ,
3235 ] ,
3336 ) ,
@@ -39,11 +42,34 @@ export class RectDiffPipeline extends BasePipelineSolver<RectDiffPipelineInput>
3942 meshNodes :
4043 rectDiffPipeline . rectDiffGridSolverPipeline ?. getOutput ( )
4144 . meshNodes ?? [ ] ,
45+ boardVoid : {
46+ boardVoidRects : rectDiffPipeline . boardVoidRects || [ ] ,
47+ layerCount :
48+ rectDiffPipeline . inputProblem . simpleRouteJson . layerCount || 0 ,
49+ } ,
4250 } ,
4351 ] ,
4452 ) ,
4553 ]
4654
55+ override _setup ( ) : void {
56+ if ( this . inputProblem . simpleRouteJson . outline ) {
57+ this . boardVoidRects = computeInverseRects (
58+ {
59+ x : this . inputProblem . simpleRouteJson . bounds . minX ,
60+ y : this . inputProblem . simpleRouteJson . bounds . minY ,
61+ width :
62+ this . inputProblem . simpleRouteJson . bounds . maxX -
63+ this . inputProblem . simpleRouteJson . bounds . minX ,
64+ height :
65+ this . inputProblem . simpleRouteJson . bounds . maxY -
66+ this . inputProblem . simpleRouteJson . bounds . minY ,
67+ } ,
68+ this . inputProblem . simpleRouteJson . outline ?? [ ] ,
69+ )
70+ }
71+ }
72+
4773 override getConstructorParams ( ) {
4874 return [ this . inputProblem ]
4975 }
0 commit comments