@tscircuit/rectdiff 0.0.22 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/SolverDebugger3d.tsx +2 -2
- package/dist/index.d.ts +23 -3
- package/dist/index.js +291 -80
- package/lib/RectDiffPipeline.ts +42 -35
- package/lib/buildFinalRectDiffVisualization.ts +46 -0
- package/lib/fixtures/twoNodeExpansionFixture.ts +10 -2
- package/lib/rectdiff-visualization.ts +2 -1
- package/lib/solvers/RectDiffExpansionSolver/RectDiffExpansionSolver.ts +8 -3
- package/lib/solvers/RectDiffGridSolverPipeline/RectDiffGridSolverPipeline.ts +48 -9
- package/lib/solvers/RectDiffGridSolverPipeline/buildObstacleIndexes.ts +14 -6
- package/lib/solvers/RectDiffSeedingSolver/RectDiffSeedingSolver.ts +16 -5
- package/lib/solvers/RectDiffSeedingSolver/computeCandidates3D.ts +12 -2
- package/lib/solvers/RectDiffSeedingSolver/computeEdgeCandidates3D.ts +53 -13
- package/lib/solvers/RectDiffSeedingSolver/layers.ts +9 -5
- package/lib/utils/buildOutlineGraphics.ts +39 -0
- package/lib/utils/expandRectFromSeed.ts +11 -1
- package/lib/utils/finalizeRects.ts +17 -9
- package/lib/utils/padRect.ts +11 -0
- package/lib/utils/renderObstacleClearance.ts +50 -0
- package/package.json +1 -1
- package/pages/bugreport11.page.tsx +1 -0
- package/tests/board-outline.test.ts +1 -1
- package/tests/fixtures/makeSimpleRouteOutlineGraphics.ts +5 -1
- package/tests/should-expand-node.test.ts +9 -1
- package/tests/solver/__snapshots__/rectDiffGridSolverPipeline.snap.svg +1 -1
- package/tests/solver/bugreport01-be84eb/__snapshots__/bugreport01-be84eb.snap.svg +2 -2
- package/tests/solver/bugreport02-bc4361/__snapshots__/bugreport02-bc4361.snap.svg +2 -2
- package/tests/solver/bugreport03-fe4a17/__snapshots__/bugreport03-fe4a17.snap.svg +1 -1
- package/tests/solver/bugreport07-d3f3be/__snapshots__/bugreport07-d3f3be.snap.svg +1 -1
- package/tests/solver/bugreport08-e3ec95/__snapshots__/bugreport08-e3ec95.snap.svg +1 -1
- package/tests/solver/bugreport09-618e09/__snapshots__/bugreport09-618e09.snap.svg +2 -2
- package/tests/solver/bugreport10-71239a/__snapshots__/bugreport10-71239a.snap.svg +2 -2
- package/tests/solver/bugreport11-b2de3c/__snapshots__/bugreport11-b2de3c.snap.svg +1 -1
- package/tests/solver/bugreport11-b2de3c/bugreport11-b2de3c-clearance-equivalence.test.ts +52 -0
- package/tests/solver/bugreport12-35ce1c/__snapshots__/bugreport12-35ce1c.snap.svg +1 -1
- package/tests/solver/bugreport13-b9a758/__snapshots__/bugreport13-b9a758.snap.svg +2 -2
- package/tests/solver/bugreport16-d95f38/__snapshots__/bugreport16-d95f38.snap.svg +2 -2
- package/tests/solver/bugreport19/__snapshots__/bugreport19.snap.svg +1 -1
- package/tests/solver/bugreport22-2a75ce/__snapshots__/bugreport22-2a75ce.snap.svg +1 -1
- package/tests/solver/bugreport23-LGA15x4/__snapshots__/bugreport23-LGA15x4.snap.svg +1 -1
- package/tests/solver/bugreport24-05597c/__snapshots__/bugreport24-05597c.snap.svg +1 -1
- package/tests/solver/bugreport26-66b0b2/__snapshots__/bugreport26-66b0b2.snap.svg +2 -2
- package/tests/solver/bugreport27-dd3734/__snapshots__/bugreport27-dd3734.snap.svg +2 -2
- package/tests/solver/bugreport28-18a9ef/__snapshots__/bugreport28-18a9ef.snap.svg +2 -2
- package/tests/solver/bugreport29-7deae8/__snapshots__/bugreport29-7deae8.snap.svg +2 -2
- package/tests/solver/bugreport30-2174c8/__snapshots__/bugreport30-2174c8.snap.svg +1 -1
- package/tests/solver/bugreport33-213d45/__snapshots__/bugreport33-213d45.snap.svg +2 -2
- package/tests/solver/bugreport34-e9dea2/__snapshots__/bugreport34-e9dea2.snap.svg +2 -2
- package/tests/solver/bugreport35-191db9/__snapshots__/bugreport35-191db9.snap.svg +2 -2
- package/tests/solver/bugreport36-bf8303/__snapshots__/bugreport36-bf8303.snap.svg +1 -1
- package/tests/solver/interaction/__snapshots__/interaction.snap.svg +1 -1
- package/tests/solver/multi-point/__snapshots__/multi-point.snap.svg +1 -1
- package/tests/solver/pcb_trace_id-should-return-root-connection-name/__snapshots__/pcb_trace_id-should-return-root-connection-name.snap.svg +1 -1
|
@@ -602,7 +602,7 @@ export const SolverDebugger3d: React.FC<SolverDebugger3dProps> = ({
|
|
|
602
602
|
useEffect(() => {
|
|
603
603
|
const interval = setInterval(() => {
|
|
604
604
|
// Only update if solver has output available
|
|
605
|
-
if (solver.solved ||
|
|
605
|
+
if (solver.solved || solver.stats?.placed > 0) {
|
|
606
606
|
updateMeshNodes()
|
|
607
607
|
}
|
|
608
608
|
}, 100) // Poll every 100ms during active solving
|
|
@@ -731,7 +731,7 @@ export const SolverDebugger3d: React.FC<SolverDebugger3dProps> = ({
|
|
|
731
731
|
{/* Render 2D view */}
|
|
732
732
|
{renderMode === "2d" && (
|
|
733
733
|
<GenericSolverDebugger
|
|
734
|
-
solver={solver
|
|
734
|
+
solver={solver}
|
|
735
735
|
onSolverCompleted={handleSolverCompleted}
|
|
736
736
|
/>
|
|
737
737
|
)}
|
package/dist/index.d.ts
CHANGED
|
@@ -220,6 +220,9 @@ type RectDiffSeedingSolverInput = {
|
|
|
220
220
|
obstacleIndexByLayer: Array<RBush<RTreeRect>>;
|
|
221
221
|
gridOptions?: Partial<GridFill3DOptions>;
|
|
222
222
|
boardVoidRects?: XYRect[];
|
|
223
|
+
layerNames: string[];
|
|
224
|
+
zIndexByName: Map<string, number>;
|
|
225
|
+
obstacleClearance?: number;
|
|
223
226
|
};
|
|
224
227
|
/**
|
|
225
228
|
* First phase of RectDiff: grid-based seeding and placement.
|
|
@@ -258,7 +261,6 @@ declare class RectDiffSeedingSolver extends BaseSolver {
|
|
|
258
261
|
* expansion phase solver.
|
|
259
262
|
*/
|
|
260
263
|
getOutput(): {
|
|
261
|
-
srj: SimpleRouteJson;
|
|
262
264
|
layerNames: string[];
|
|
263
265
|
layerCount: number;
|
|
264
266
|
bounds: XYRect;
|
|
@@ -274,13 +276,14 @@ declare class RectDiffSeedingSolver extends BaseSolver {
|
|
|
274
276
|
edgeAnalysisDone: boolean;
|
|
275
277
|
totalSeedsThisGrid: number;
|
|
276
278
|
consumedSeedsThisGrid: number;
|
|
279
|
+
obstacles: Obstacle[];
|
|
280
|
+
obstacleClearance: number | undefined;
|
|
277
281
|
};
|
|
278
282
|
/** Visualization focused on the grid seeding phase. */
|
|
279
283
|
visualize(): GraphicsObject;
|
|
280
284
|
}
|
|
281
285
|
|
|
282
286
|
type RectDiffExpansionSolverInput = {
|
|
283
|
-
srj: SimpleRouteJson;
|
|
284
287
|
layerNames: string[];
|
|
285
288
|
layerCount: number;
|
|
286
289
|
bounds: XYRect;
|
|
@@ -297,6 +300,10 @@ type RectDiffExpansionSolverInput = {
|
|
|
297
300
|
totalSeedsThisGrid: number;
|
|
298
301
|
consumedSeedsThisGrid: number;
|
|
299
302
|
obstacleIndexByLayer: Array<RBush<RTreeRect>>;
|
|
303
|
+
zIndexByName: Map<string, number>;
|
|
304
|
+
layerNamesCanonical: string[];
|
|
305
|
+
obstacles: Obstacle[];
|
|
306
|
+
obstacleClearance?: number;
|
|
300
307
|
};
|
|
301
308
|
/**
|
|
302
309
|
* Second phase of RectDiff: expand placed rects to their maximal extents.
|
|
@@ -322,14 +329,24 @@ declare class RectDiffExpansionSolver extends BaseSolver {
|
|
|
322
329
|
}
|
|
323
330
|
|
|
324
331
|
type RectDiffGridSolverPipelineInput = {
|
|
325
|
-
|
|
332
|
+
bounds: Bounds;
|
|
333
|
+
obstacles: Obstacle[];
|
|
334
|
+
connections: SimpleRouteConnection[];
|
|
335
|
+
outline?: Pick<SimpleRouteJson, "outline">;
|
|
336
|
+
layerCount: number;
|
|
337
|
+
minTraceWidth: number;
|
|
338
|
+
obstacleClearance?: number;
|
|
326
339
|
gridOptions?: Partial<GridFill3DOptions>;
|
|
327
340
|
boardVoidRects?: XYRect[];
|
|
341
|
+
layerNames?: string[];
|
|
342
|
+
zIndexByName?: Map<string, number>;
|
|
328
343
|
};
|
|
329
344
|
declare class RectDiffGridSolverPipeline extends BasePipelineSolver<RectDiffGridSolverPipelineInput> {
|
|
330
345
|
rectDiffSeedingSolver?: RectDiffSeedingSolver;
|
|
331
346
|
rectDiffExpansionSolver?: RectDiffExpansionSolver;
|
|
332
347
|
private obstacleIndexByLayer;
|
|
348
|
+
private layerNames;
|
|
349
|
+
private zIndexByName;
|
|
333
350
|
constructor(inputProblem: RectDiffGridSolverPipelineInput);
|
|
334
351
|
pipelineDef: PipelineStep<any>[];
|
|
335
352
|
getConstructorParams(): RectDiffGridSolverPipelineInput[];
|
|
@@ -342,11 +359,14 @@ declare class RectDiffGridSolverPipeline extends BasePipelineSolver<RectDiffGrid
|
|
|
342
359
|
interface RectDiffPipelineInput {
|
|
343
360
|
simpleRouteJson: SimpleRouteJson;
|
|
344
361
|
gridOptions?: Partial<GridFill3DOptions>;
|
|
362
|
+
obstacleClearance?: number;
|
|
345
363
|
}
|
|
346
364
|
declare class RectDiffPipeline extends BasePipelineSolver<RectDiffPipelineInput> {
|
|
347
365
|
rectDiffGridSolverPipeline?: RectDiffGridSolverPipeline;
|
|
348
366
|
gapFillSolver?: GapFillSolverPipeline;
|
|
349
367
|
boardVoidRects: XYRect[] | undefined;
|
|
368
|
+
zIndexByName?: Map<string, number>;
|
|
369
|
+
layerNames?: string[];
|
|
350
370
|
pipelineDef: PipelineStep<any>[];
|
|
351
371
|
_setup(): void;
|
|
352
372
|
getConstructorParams(): RectDiffPipelineInput[];
|