@tscircuit/core 0.0.1232 → 0.0.1234

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/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as circuit_json from 'circuit-json';
2
- import { PcbTraceError, PcbPlacementError, PcbManualEditConflictWarning, PcbViaClearanceError, LayerRef, AnyCircuitElement, Size, PcbTraceRoutePoint, AnySourceComponent, PcbComponent, PcbTrace as PcbTrace$1, PcbVia, SchematicPort, SchematicComponent, RouteHintPoint, CircuitJson } from 'circuit-json';
2
+ import { PcbTraceError, PcbPlacementError, PcbManualEditConflictWarning, PcbViaClearanceError, LayerRef, AnyCircuitElement, Size, PcbTrace as PcbTrace$1, PcbTraceRoutePoint, AnySourceComponent, PcbComponent, PcbVia, SchematicPort, SchematicComponent, RouteHintPoint, CircuitJson } from 'circuit-json';
3
3
  import * as _tscircuit_props from '@tscircuit/props';
4
4
  import { PlatformConfig, traceProps, netProps, AutorouterProp, AutoroutingPhaseProps, subcircuitGroupProps, AutorouterConfig, PcbSx, portProps, SupplierPartNumbers, CadModelProp, SchematicPortArrangement, groupProps, boardProps, subcircuitProps, subpanelProps, capacitorProps, chipProps, pinoutProps, diodeProps, fuseProps, jumperProps, interconnectProps, solderjumperProps, ledProps, powerSourceProps, voltageSourceProps, currentSourceProps, resistorProps, constraintProps, autoroutingPhaseProps, fabricationNoteRectProps, fabricationNotePathProps, fabricationNoteTextProps, fabricationNoteDimensionProps, pcbNoteLineProps, pcbNoteRectProps, pcbNoteTextProps, pcbNotePathProps, pcbNoteDimensionProps, footprintProps, breakoutProps, breakoutPointProps, holeProps, pcbKeepoutProps, netLabelProps, cadmodelProps, cadassemblyProps, platedHoleProps, courtyardCircleProps, courtyardOutlineProps, courtyardRectProps, silkscreenCircleProps, silkscreenPathProps, silkscreenRectProps, silkscreenTextProps, silkscreenLineProps, smtPadProps, fiducialProps, traceHintProps, viaProps, copperPourProps, copperTextProps, cutoutProps, batteryProps, pinHeaderProps, resonatorProps, inductorProps, potentiometerProps, pushButtonProps, crystalProps, transistorProps, mosfetProps, opampProps, OpAmpPinLabels, switchProps, SwitchProps, testpointProps, schematicTextProps, schematicLineProps, schematicRectProps, schematicArcProps, schematicCircleProps, schematicPathProps, schematicBoxProps, schematicSectionProps, schematicTableProps, schematicRowProps, schematicCellProps, symbolProps, analogSimulationProps, voltageProbeProps, CapacitorProps, ChipProps, DiodeProps, ResistorProps, ManualEditEvent, ManualEditsFile, ChipConnections, manual_edits_file } from '@tscircuit/props';
5
5
  export { kicadFootprintStrings } from '@tscircuit/props';
@@ -131,6 +131,10 @@ type SimpleRouteJson = Omit<SimpleRouteJson$1, "connections" | "traces" | "obsta
131
131
  defaultObstacleMargin?: number;
132
132
  minTraceToPadEdgeClearance?: number;
133
133
  minViaEdgeToPadEdgeClearance?: number;
134
+ minViaHoleEdgeToViaHoleEdgeClearance?: number;
135
+ minPlatedHoleDrillEdgeToDrillEdgeClearance?: number;
136
+ minPadEdgeToPadEdgeClearance?: number;
137
+ minBoardEdgeClearance?: number;
134
138
  obstacles: Obstacle[];
135
139
  connections: SimpleRouteConnection[];
136
140
  bounds: {
@@ -454,6 +458,7 @@ declare class Trace extends PrimitiveComponent<typeof traceProps> implements Tra
454
458
  source_trace_id: string | null;
455
459
  pcb_trace_id: string | null;
456
460
  schematic_trace_id: string | null;
461
+ _inflatedPcbTrace?: PcbTrace$1;
457
462
  _portsRoutedOnPcb: Port[];
458
463
  subcircuit_connectivity_map_key: string | null;
459
464
  _traceConnectionHash: string | null;
@@ -1375,11 +1380,23 @@ declare class Net extends PrimitiveComponent<typeof netProps> {
1375
1380
  renderError(message: Parameters<typeof PrimitiveComponent.prototype.renderError>[0]): void;
1376
1381
  }
1377
1382
 
1383
+ interface RoutingPhaseDrcTolerances {
1384
+ minTraceWidth?: number;
1385
+ minViaHoleEdgeToViaHoleEdgeClearance?: number;
1386
+ minPlatedHoleDrillEdgeToDrillEdgeClearance?: number;
1387
+ minTraceToPadEdgeClearance?: number;
1388
+ minPadEdgeToPadEdgeClearance?: number;
1389
+ minBoardEdgeClearance?: number;
1390
+ minViaEdgeToPadEdgeClearance?: number;
1391
+ minViaHoleDiameter?: number;
1392
+ minViaPadDiameter?: number;
1393
+ }
1378
1394
  interface RoutingPhasePlan {
1379
1395
  routingPhaseIndex: number | null;
1380
1396
  autorouter?: AutorouterProp;
1381
1397
  reroute?: boolean;
1382
1398
  region?: AutoroutingPhaseProps["region"];
1399
+ drcTolerances?: RoutingPhaseDrcTolerances;
1383
1400
  nets: Net[];
1384
1401
  traces: Trace[];
1385
1402
  }
@@ -66650,7 +66667,6 @@ declare class Resistor extends NormalComponent<typeof resistorProps, PassivePort
66650
66667
  }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
66651
66668
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
66652
66669
  }>>;
66653
- footprint: zod.ZodOptional<zod.ZodType<_tscircuit_props.FootprintProp, zod.ZodTypeDef, _tscircuit_props.FootprintProp>>;
66654
66670
  symbol: zod.ZodOptional<zod.ZodType<_tscircuit_props.SymbolProp, zod.ZodTypeDef, _tscircuit_props.SymbolProp>>;
66655
66671
  schStyle: zod.ZodOptional<zod.ZodObject<{
66656
66672
  defaultPassiveSize: zod.ZodOptional<zod.ZodUnion<[zod.ZodEnum<["xs", "sm", "md"]>, zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>]>>;
@@ -66665,9 +66681,7 @@ declare class Resistor extends NormalComponent<typeof resistorProps, PassivePort
66665
66681
  relative: zod.ZodOptional<zod.ZodBoolean>;
66666
66682
  schRelative: zod.ZodOptional<zod.ZodBoolean>;
66667
66683
  pcbRelative: zod.ZodOptional<zod.ZodBoolean>;
66668
- } & {
66669
66684
  supplierPartNumbers: zod.ZodOptional<zod.ZodRecord<zod.ZodEnum<["jlcpcb", "macrofab", "pcbway", "digikey", "mouser", "lcsc"]>, zod.ZodArray<zod.ZodString, "many">>>;
66670
- } & {
66671
66685
  key: zod.ZodOptional<zod.ZodAny>;
66672
66686
  name: zod.ZodString;
66673
66687
  displayName: zod.ZodOptional<zod.ZodString>;
@@ -69937,6 +69951,7 @@ declare class Resistor extends NormalComponent<typeof resistorProps, PassivePort
69937
69951
  mfn: zod.ZodOptional<zod.ZodString>;
69938
69952
  manufacturerPartNumber: zod.ZodOptional<zod.ZodString>;
69939
69953
  } & {
69954
+ footprint: zod.ZodType<_tscircuit_props.FootprintProp | undefined, zod.ZodTypeDef, _tscircuit_props.FootprintProp | undefined>;
69940
69955
  resistance: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
69941
69956
  tolerance: zod.ZodOptional<zod.ZodPipeline<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>, zod.ZodNumber>>;
69942
69957
  pullupFor: zod.ZodOptional<zod.ZodString>;
@@ -152702,7 +152717,7 @@ declare const applyEditEvents: ({ circuitJson, editEvents, }: {
152702
152717
  /**
152703
152718
  * This function can only be called in the PcbTraceRender phase or later
152704
152719
  */
152705
- declare const getSimpleRouteJsonFromCircuitJson: ({ db, circuitJson, subcircuit_id, minTraceWidth, minTraceToPadEdgeClearance, minViaEdgeToPadEdgeClearance, nominalTraceWidth, subcircuitComponent, }: {
152720
+ declare const getSimpleRouteJsonFromCircuitJson: ({ db, circuitJson, subcircuit_id, minTraceWidth, minTraceToPadEdgeClearance, minViaEdgeToPadEdgeClearance, minViaHoleEdgeToViaHoleEdgeClearance, minPlatedHoleDrillEdgeToDrillEdgeClearance, minPadEdgeToPadEdgeClearance, minBoardEdgeClearance, minViaHoleDiameter, minViaPadDiameter, nominalTraceWidth, subcircuitComponent, }: {
152706
152721
  db?: CircuitJsonUtilObjects;
152707
152722
  circuitJson?: AnyCircuitElement[];
152708
152723
  subcircuit_id?: string | null;
@@ -152710,6 +152725,12 @@ declare const getSimpleRouteJsonFromCircuitJson: ({ db, circuitJson, subcircuit_
152710
152725
  nominalTraceWidth?: number;
152711
152726
  minTraceToPadEdgeClearance?: number;
152712
152727
  minViaEdgeToPadEdgeClearance?: number;
152728
+ minViaHoleEdgeToViaHoleEdgeClearance?: number;
152729
+ minPlatedHoleDrillEdgeToDrillEdgeClearance?: number;
152730
+ minPadEdgeToPadEdgeClearance?: number;
152731
+ minBoardEdgeClearance?: number;
152732
+ minViaHoleDiameter?: number;
152733
+ minViaPadDiameter?: number;
152713
152734
  subcircuitComponent?: {
152714
152735
  selectAll(selector: string): unknown[];
152715
152736
  };
package/dist/index.js CHANGED
@@ -4541,7 +4541,8 @@ function Trace_doInitialPcbManualTraceRender(trace) {
4541
4541
  const subcircuit = trace.getSubcircuit();
4542
4542
  const hasPcbPath = props.pcbPath !== void 0;
4543
4543
  const wantsStraightLine = Boolean(props.pcbStraightLine);
4544
- if (!hasPcbPath && !wantsStraightLine) return;
4544
+ const inflatedPcbTrace = trace._inflatedPcbTrace;
4545
+ if (!hasPcbPath && !wantsStraightLine && !inflatedPcbTrace) return;
4545
4546
  let allPortsFound;
4546
4547
  let ports;
4547
4548
  let portsWithSelectors;
@@ -4594,6 +4595,49 @@ function Trace_doInitialPcbManualTraceRender(trace) {
4594
4595
  return;
4595
4596
  }
4596
4597
  const width = trace._getExplicitTraceThickness() ?? trace.getSubcircuit()._parsedProps.minTraceWidth ?? jlcMinTolerances.min_trace_width;
4598
+ if (inflatedPcbTrace) {
4599
+ const { maybeFlipLayer } = trace._getPcbPrimitiveFlippedHelpers();
4600
+ const transform2 = trace._computePcbGlobalTransformBeforeLayout();
4601
+ const transformedRoute = inflatedPcbTrace.route.map((point6) => {
4602
+ const { x, y, ...restOfPoint } = point6;
4603
+ const transformedPoint = applyToPoint2(transform2, { x, y });
4604
+ if (point6.route_type === "wire" && point6.layer) {
4605
+ return {
4606
+ ...transformedPoint,
4607
+ ...restOfPoint,
4608
+ layer: maybeFlipLayer(point6.layer)
4609
+ };
4610
+ }
4611
+ return { ...transformedPoint, ...restOfPoint };
4612
+ });
4613
+ const pcb_trace2 = db.pcb_trace.insert({
4614
+ ...inflatedPcbTrace,
4615
+ route: transformedRoute,
4616
+ source_trace_id: trace.source_trace_id,
4617
+ subcircuit_id: subcircuit?.subcircuit_id ?? void 0,
4618
+ pcb_group_id: trace.getGroup()?.pcb_group_id ?? void 0
4619
+ });
4620
+ const pcbStyle2 = trace.getInheritedMergedProperty("pcbStyle");
4621
+ const { holeDiameter: holeDiameter2, padDiameter: padDiameter2 } = getViaDiameterDefaults(pcbStyle2);
4622
+ for (const point6 of transformedRoute) {
4623
+ if (point6.route_type === "via") {
4624
+ db.pcb_via.insert({
4625
+ pcb_trace_id: pcb_trace2.pcb_trace_id,
4626
+ x: point6.x,
4627
+ y: point6.y,
4628
+ hole_diameter: holeDiameter2,
4629
+ outer_diameter: padDiameter2,
4630
+ layers: [point6.from_layer, point6.to_layer],
4631
+ from_layer: point6.from_layer,
4632
+ to_layer: point6.to_layer
4633
+ });
4634
+ }
4635
+ }
4636
+ trace._portsRoutedOnPcb = ports;
4637
+ trace.pcb_trace_id = pcb_trace2.pcb_trace_id;
4638
+ trace._insertErrorIfTraceIsOutsideBoard(pcb_trace2.route, ports);
4639
+ return;
4640
+ }
4597
4641
  if (wantsStraightLine && !hasPcbPath) {
4598
4642
  if (!ports || ports.length < 2) {
4599
4643
  trace.renderError("pcbStraightLine requires exactly two connected ports");
@@ -4960,6 +5004,7 @@ var Trace3 = class extends PrimitiveComponent2 {
4960
5004
  source_trace_id = null;
4961
5005
  pcb_trace_id = null;
4962
5006
  schematic_trace_id = null;
5007
+ _inflatedPcbTrace;
4963
5008
  _portsRoutedOnPcb;
4964
5009
  subcircuit_connectivity_map_key = null;
4965
5010
  _traceConnectionHash = null;
@@ -13950,6 +13995,12 @@ var getSimpleRouteJsonFromCircuitJson = ({
13950
13995
  minTraceWidth,
13951
13996
  minTraceToPadEdgeClearance,
13952
13997
  minViaEdgeToPadEdgeClearance,
13998
+ minViaHoleEdgeToViaHoleEdgeClearance,
13999
+ minPlatedHoleDrillEdgeToDrillEdgeClearance,
14000
+ minPadEdgeToPadEdgeClearance,
14001
+ minBoardEdgeClearance,
14002
+ minViaHoleDiameter,
14003
+ minViaPadDiameter,
13953
14004
  nominalTraceWidth,
13954
14005
  subcircuitComponent
13955
14006
  }) => {
@@ -14291,6 +14342,14 @@ var getSimpleRouteJsonFromCircuitJson = ({
14291
14342
  conn.externallyConnectedPointIds ??= [];
14292
14343
  conn.externallyConnectedPointIds.push([...tracePortIds]);
14293
14344
  }
14345
+ const resolvedMinViaHoleDiameter = minViaHoleDiameter ?? board?.min_via_hole_diameter;
14346
+ const resolvedMinViaPadDiameter = minViaPadDiameter ?? board?.min_via_pad_diameter;
14347
+ const resolvedMinTraceToPadEdgeClearance = minTraceToPadEdgeClearance ?? board?.min_trace_to_pad_edge_clearance;
14348
+ const resolvedMinViaEdgeToPadEdgeClearance = minViaEdgeToPadEdgeClearance ?? board?.min_via_edge_to_pad_edge_clearance;
14349
+ const resolvedMinViaHoleEdgeToViaHoleEdgeClearance = minViaHoleEdgeToViaHoleEdgeClearance ?? board?.min_via_hole_edge_to_via_hole_edge_clearance;
14350
+ const resolvedMinPlatedHoleDrillEdgeToDrillEdgeClearance = minPlatedHoleDrillEdgeToDrillEdgeClearance ?? board?.min_plated_hole_drill_edge_to_drill_edge_clearance;
14351
+ const resolvedMinPadEdgeToPadEdgeClearance = minPadEdgeToPadEdgeClearance ?? board?.min_pad_edge_to_pad_edge_clearance;
14352
+ const resolvedMinBoardEdgeClearance = minBoardEdgeClearance ?? board?.min_board_edge_clearance;
14294
14353
  return {
14295
14354
  simpleRouteJson: {
14296
14355
  bounds,
@@ -14300,13 +14359,17 @@ var getSimpleRouteJsonFromCircuitJson = ({
14300
14359
  // subcircuit
14301
14360
  layerCount: board?.num_layers ?? 2,
14302
14361
  minTraceWidth: minTraceWidth ?? board?.min_trace_width ?? 0.1,
14303
- minViaDiameter: board?.min_via_pad_diameter,
14304
- minViaHoleDiameter: board?.min_via_hole_diameter,
14305
- minViaPadDiameter: board?.min_via_pad_diameter,
14306
- min_via_hole_diameter: board?.min_via_hole_diameter,
14307
- min_via_pad_diameter: board?.min_via_pad_diameter,
14308
- minTraceToPadEdgeClearance: minTraceToPadEdgeClearance ?? board?.min_trace_to_pad_edge_clearance,
14309
- minViaEdgeToPadEdgeClearance: minViaEdgeToPadEdgeClearance ?? board?.min_via_edge_to_pad_edge_clearance,
14362
+ minViaDiameter: resolvedMinViaPadDiameter,
14363
+ minViaHoleDiameter: resolvedMinViaHoleDiameter,
14364
+ minViaPadDiameter: resolvedMinViaPadDiameter,
14365
+ min_via_hole_diameter: resolvedMinViaHoleDiameter,
14366
+ min_via_pad_diameter: resolvedMinViaPadDiameter,
14367
+ minTraceToPadEdgeClearance: resolvedMinTraceToPadEdgeClearance,
14368
+ minViaEdgeToPadEdgeClearance: resolvedMinViaEdgeToPadEdgeClearance,
14369
+ minViaHoleEdgeToViaHoleEdgeClearance: resolvedMinViaHoleEdgeToViaHoleEdgeClearance,
14370
+ minPlatedHoleDrillEdgeToDrillEdgeClearance: resolvedMinPlatedHoleDrillEdgeToDrillEdgeClearance,
14371
+ minPadEdgeToPadEdgeClearance: resolvedMinPadEdgeToPadEdgeClearance,
14372
+ minBoardEdgeClearance: resolvedMinBoardEdgeClearance,
14310
14373
  nominalTraceWidth,
14311
14374
  outline: board?.outline?.map((point6) => ({ ...point6 }))
14312
14375
  },
@@ -18284,6 +18347,45 @@ function getAutoroutingPhasePropsByPhaseIndex(group) {
18284
18347
  }
18285
18348
  return propsByPhaseIndex;
18286
18349
  }
18350
+ function toParsedDistance(value) {
18351
+ if (value === void 0) return void 0;
18352
+ return Number(value);
18353
+ }
18354
+ function getDrcTolerancesFromAutoroutingPhaseProps(phaseProps) {
18355
+ const {
18356
+ minTraceWidth,
18357
+ minViaHoleEdgeToViaHoleEdgeClearance,
18358
+ minPlatedHoleDrillEdgeToDrillEdgeClearance,
18359
+ minTraceToPadEdgeClearance,
18360
+ minPadEdgeToPadEdgeClearance,
18361
+ minBoardEdgeClearance,
18362
+ minViaEdgeToPadEdgeClearance,
18363
+ minViaHoleDiameter,
18364
+ minViaPadDiameter
18365
+ } = phaseProps;
18366
+ if (minTraceWidth === void 0 && minViaHoleEdgeToViaHoleEdgeClearance === void 0 && minPlatedHoleDrillEdgeToDrillEdgeClearance === void 0 && minTraceToPadEdgeClearance === void 0 && minPadEdgeToPadEdgeClearance === void 0 && minBoardEdgeClearance === void 0 && minViaEdgeToPadEdgeClearance === void 0 && minViaHoleDiameter === void 0 && minViaPadDiameter === void 0) {
18367
+ return void 0;
18368
+ }
18369
+ return {
18370
+ minTraceWidth: toParsedDistance(minTraceWidth),
18371
+ minViaHoleEdgeToViaHoleEdgeClearance: toParsedDistance(
18372
+ minViaHoleEdgeToViaHoleEdgeClearance
18373
+ ),
18374
+ minPlatedHoleDrillEdgeToDrillEdgeClearance: toParsedDistance(
18375
+ minPlatedHoleDrillEdgeToDrillEdgeClearance
18376
+ ),
18377
+ minTraceToPadEdgeClearance: toParsedDistance(minTraceToPadEdgeClearance),
18378
+ minPadEdgeToPadEdgeClearance: toParsedDistance(
18379
+ minPadEdgeToPadEdgeClearance
18380
+ ),
18381
+ minBoardEdgeClearance: toParsedDistance(minBoardEdgeClearance),
18382
+ minViaEdgeToPadEdgeClearance: toParsedDistance(
18383
+ minViaEdgeToPadEdgeClearance
18384
+ ),
18385
+ minViaHoleDiameter: toParsedDistance(minViaHoleDiameter),
18386
+ minViaPadDiameter: toParsedDistance(minViaPadDiameter)
18387
+ };
18388
+ }
18287
18389
  function Group_getRoutingPhasePlans(group) {
18288
18390
  const traces = group.selectAll("trace");
18289
18391
  const nets = group.selectAll("net");
@@ -18317,6 +18419,7 @@ function Group_getRoutingPhasePlans(group) {
18317
18419
  const phaseProps = phasePropsByPhaseIndex.get(plan.routingPhaseIndex);
18318
18420
  plan.reroute = phaseProps?.reroute;
18319
18421
  plan.region = phaseProps?.region;
18422
+ plan.drcTolerances = phaseProps ? getDrcTolerancesFromAutoroutingPhaseProps(phaseProps) : void 0;
18320
18423
  }
18321
18424
  const defaultPhaseProps = phasePropsByPhaseIndex.get(null);
18322
18425
  if (phasePropsByPhaseIndex.size === 1 && defaultPhaseProps?.reroute && plans.length === 1 && plans[0]?.routingPhaseIndex === null) {
@@ -18471,6 +18574,52 @@ function Group_filterSimpleRouteJsonForPhase(simpleRouteJson, phasePlan) {
18471
18574
  connections
18472
18575
  };
18473
18576
  }
18577
+ function hasDrcTolerances(drcTolerances) {
18578
+ if (!drcTolerances) return false;
18579
+ return Object.values(drcTolerances).some((value) => value !== void 0);
18580
+ }
18581
+ function applyMinTraceWidthToConnections(connections, minTraceWidth) {
18582
+ if (minTraceWidth === void 0) return connections;
18583
+ return connections.map((connection) => ({
18584
+ ...connection,
18585
+ nominalTraceWidth: Math.max(
18586
+ connection.nominalTraceWidth ?? minTraceWidth,
18587
+ minTraceWidth
18588
+ ),
18589
+ width: Math.max(connection.width ?? minTraceWidth, minTraceWidth)
18590
+ }));
18591
+ }
18592
+ function Group_applyDrcTolerancesToSimpleRouteJson(simpleRouteJson, drcTolerances) {
18593
+ if (!hasDrcTolerances(drcTolerances)) return simpleRouteJson;
18594
+ const minTraceWidth = drcTolerances.minTraceWidth ?? simpleRouteJson.minTraceWidth;
18595
+ const minViaHoleDiameter = drcTolerances.minViaHoleDiameter ?? simpleRouteJson.minViaHoleDiameter;
18596
+ const minViaPadDiameter = drcTolerances.minViaPadDiameter ?? simpleRouteJson.minViaPadDiameter;
18597
+ const minTraceToPadEdgeClearance = drcTolerances.minTraceToPadEdgeClearance ?? simpleRouteJson.minTraceToPadEdgeClearance;
18598
+ const minViaEdgeToPadEdgeClearance = drcTolerances.minViaEdgeToPadEdgeClearance ?? simpleRouteJson.minViaEdgeToPadEdgeClearance;
18599
+ const minViaHoleEdgeToViaHoleEdgeClearance = drcTolerances.minViaHoleEdgeToViaHoleEdgeClearance ?? simpleRouteJson.minViaHoleEdgeToViaHoleEdgeClearance;
18600
+ const minPlatedHoleDrillEdgeToDrillEdgeClearance = drcTolerances.minPlatedHoleDrillEdgeToDrillEdgeClearance ?? simpleRouteJson.minPlatedHoleDrillEdgeToDrillEdgeClearance;
18601
+ const minPadEdgeToPadEdgeClearance = drcTolerances.minPadEdgeToPadEdgeClearance ?? simpleRouteJson.minPadEdgeToPadEdgeClearance;
18602
+ const minBoardEdgeClearance = drcTolerances.minBoardEdgeClearance ?? simpleRouteJson.minBoardEdgeClearance;
18603
+ return {
18604
+ ...simpleRouteJson,
18605
+ connections: applyMinTraceWidthToConnections(
18606
+ simpleRouteJson.connections,
18607
+ drcTolerances.minTraceWidth
18608
+ ),
18609
+ minTraceWidth,
18610
+ minViaDiameter: minViaPadDiameter,
18611
+ minViaHoleDiameter,
18612
+ minViaPadDiameter,
18613
+ min_via_hole_diameter: minViaHoleDiameter,
18614
+ min_via_pad_diameter: minViaPadDiameter,
18615
+ minTraceToPadEdgeClearance,
18616
+ minViaEdgeToPadEdgeClearance,
18617
+ minViaHoleEdgeToViaHoleEdgeClearance,
18618
+ minPlatedHoleDrillEdgeToDrillEdgeClearance,
18619
+ minPadEdgeToPadEdgeClearance,
18620
+ minBoardEdgeClearance
18621
+ };
18622
+ }
18474
18623
  function Group_getObstaclesFromRoutedTraces(traces) {
18475
18624
  const obstacles = [];
18476
18625
  for (const trace of traces) {
@@ -19327,6 +19476,10 @@ var Group6 = class extends NormalComponent3 {
19327
19476
  ...Group_getObstaclesFromRoutedTraces(outputTraces)
19328
19477
  ];
19329
19478
  }
19479
+ simpleRouteJson = Group_applyDrcTolerancesToSimpleRouteJson(
19480
+ simpleRouteJson,
19481
+ routingPhasePlan.drcTolerances
19482
+ );
19330
19483
  if (hasPhasedAutorouting && simpleRouteJson.connections.length === 0) {
19331
19484
  continue;
19332
19485
  }
@@ -20433,10 +20586,11 @@ function inflateSourceTrace(sourceTrace, inflatorContext) {
20433
20586
  }
20434
20587
  if (pcbPath && pcbPath.length > 0) {
20435
20588
  traceProps2.pcbPath = pcbPath;
20436
- } else if (pcbTrace) {
20589
+ } else if (!pcbTrace && sourceTrace.connected_source_port_ids.length === 2 && sourceTrace.connected_source_net_ids.length === 0) {
20437
20590
  traceProps2.pcbStraightLine = true;
20438
20591
  }
20439
20592
  const trace = new Trace3(traceProps2);
20593
+ trace._inflatedPcbTrace = pcbTrace ?? void 0;
20440
20594
  subcircuit.add(trace);
20441
20595
  }
20442
20596
 
@@ -20647,7 +20801,7 @@ import { identity as identity5 } from "transformation-matrix";
20647
20801
  var package_default = {
20648
20802
  name: "@tscircuit/core",
20649
20803
  type: "module",
20650
- version: "0.0.1231",
20804
+ version: "0.0.1233",
20651
20805
  types: "dist/index.d.ts",
20652
20806
  main: "dist/index.js",
20653
20807
  module: "dist/index.js",
@@ -20693,7 +20847,7 @@ var package_default = {
20693
20847
  "@tscircuit/math-utils": "^0.0.36",
20694
20848
  "@tscircuit/miniflex": "^0.0.4",
20695
20849
  "@tscircuit/ngspice-spice-engine": "^0.0.8",
20696
- "@tscircuit/props": "^0.0.527",
20850
+ "@tscircuit/props": "^0.0.531",
20697
20851
  "@tscircuit/schematic-match-adapt": "^0.0.16",
20698
20852
  "@tscircuit/schematic-trace-solver": "^0.0.55",
20699
20853
  "@tscircuit/solver-utils": "^0.0.3",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tscircuit/core",
3
3
  "type": "module",
4
- "version": "0.0.1232",
4
+ "version": "0.0.1234",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -47,7 +47,7 @@
47
47
  "@tscircuit/math-utils": "^0.0.36",
48
48
  "@tscircuit/miniflex": "^0.0.4",
49
49
  "@tscircuit/ngspice-spice-engine": "^0.0.8",
50
- "@tscircuit/props": "^0.0.527",
50
+ "@tscircuit/props": "^0.0.531",
51
51
  "@tscircuit/schematic-match-adapt": "^0.0.16",
52
52
  "@tscircuit/schematic-trace-solver": "^0.0.55",
53
53
  "@tscircuit/solver-utils": "^0.0.3",