@tscircuit/core 0.0.2005 → 0.0.2007
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 +24 -3
- package/dist/index.js +353 -57
- package/package.json +8 -8
package/dist/index.d.ts
CHANGED
|
@@ -63,6 +63,8 @@ type Obstacle = {
|
|
|
63
63
|
componentId?: string;
|
|
64
64
|
/** True when this obstacle replaces one completed fanout source footprint. */
|
|
65
65
|
isFanoutSourceKeepout?: boolean;
|
|
66
|
+
/** Non-plated hole geometry, with no electrical connections. */
|
|
67
|
+
isNonPlatedHole?: boolean;
|
|
66
68
|
/** Circuit JSON provenance carried through SRJ but forbidden for routing. */
|
|
67
69
|
circuitJsonMetadata?: CircuitJsonMetadata;
|
|
68
70
|
shape?: "circle";
|
|
@@ -224,6 +226,7 @@ type SimpleRouteJson = Omit<SimpleRouteJson$1, "connections" | "traces" | "obsta
|
|
|
224
226
|
min_via_pad_diameter?: number;
|
|
225
227
|
defaultObstacleMargin?: number;
|
|
226
228
|
minTraceToPadEdgeClearance?: number;
|
|
229
|
+
minTraceToHoleEdgeClearance?: number;
|
|
227
230
|
minViaEdgeToPadEdgeClearance?: number;
|
|
228
231
|
minViaHoleEdgeToViaHoleEdgeClearance?: number;
|
|
229
232
|
minPlatedHoleDrillEdgeToDrillEdgeClearance?: number;
|
|
@@ -381,9 +384,9 @@ interface IIsolatedCircuit {
|
|
|
381
384
|
interface IRootCircuit extends IIsolatedCircuit {
|
|
382
385
|
}
|
|
383
386
|
|
|
384
|
-
declare const orderedRenderPhases: readonly ["ReactSubtreesRender", "RenderIsolatedSubcircuits", "InflateSubcircuitCircuitJson", "SourceNameDuplicateComponentRemoval", "PcbFootprintStringRender", "FetchPartFootprint", "ResolveFootprintPinLabels", "InitializePortsFromChildren", "CreateNetsFromProps", "AssignFallbackProps", "CreateTracesFromProps", "CreateTracesFromNetLabels", "CreateTraceHintsFromProps", "CreateAutoplacedBreakoutPoints", "SourceGroupRender", "AssignNameToUnnamedComponents", "SourceRender", "CheckRefDesConvention", "SourceComponentPropertyValidation", "SourceParentAttachment", "PortMatching", "OptimizeSelectorCache", "SourceTraceRender", "SourceAddConnectivityMapKey", "SourceDesignRuleChecks", "SimulationRender", "SchematicComponentRender", "SchematicPortRender", "SymbolContainerRender", "SchematicPrimitiveRender", "SchematicSymbolResize", "SchematicComponentSizeCalculation", "SchematicLayout", "SchematicSectionRender", "SchematicTraceRender", "SchematicSheetRender", "SchematicReplaceNetLabelsWithSymbols", "SchematicLabelNetsWithConflictingNames", "PanelBoardLayout", "ValidatePcbCoordinates", "PcbComponentRender", "PcbPrimitiveRender", "PcbFootprintLayout", "PcbPortRender", "PcbPortAttachment", "PcbComponentSizeCalculation", "PcbComponentAnchorAlignment", "PcbCalcPlacementResolution", "PcbLayout", "PcbBoardAutoSize", "PanelLayout", "PcbFlexRender", "PcbAutoplaceBreakoutPoints", "PcbTraceHintRender", "PcbManualTraceRender", "PcbPlacementDesignRuleChecks", "PcbTraceRender", "PcbRouteNetIslands", "PcbCopperPourRender", "PcbViaStitchRender", "PcbCopperPourCleanup", "PcbDesignRuleChecks", "SilkscreenOverlapAdjustment", "CadModelRender", "PartsEngineRender", "PartOrientationAnalysis", "SupplierFootprintMismatchWarning", "SimulationSpiceEngineRender"];
|
|
387
|
+
declare const orderedRenderPhases: readonly ["ReactSubtreesRender", "RenderIsolatedSubcircuits", "InflateSubcircuitCircuitJson", "SourceNameDuplicateComponentRemoval", "PcbFootprintStringRender", "FetchPartFootprint", "ResolveFootprintPinLabels", "InitializePortsFromChildren", "CreateNetsFromProps", "AssignFallbackProps", "CreateTracesFromProps", "CreateTracesFromNetLabels", "CreateTraceHintsFromProps", "CreateAutoplacedBreakoutPoints", "SourceGroupRender", "AssignNameToUnnamedComponents", "SourceRender", "CheckRefDesConvention", "SourceComponentPropertyValidation", "SourceParentAttachment", "PortMatching", "OptimizeSelectorCache", "SourceTraceRender", "SourceAddConnectivityMapKey", "SourceDesignRuleChecks", "SimulationRender", "SchematicComponentRender", "SchematicPortRender", "SymbolContainerRender", "SchematicPrimitiveRender", "SchematicSymbolResize", "SchematicComponentSizeCalculation", "SchematicLayout", "SchematicSectionRender", "SchematicTraceRender", "SchematicSheetRender", "SchematicReplaceNetLabelsWithSymbols", "SchematicLabelNetsWithConflictingNames", "PanelBoardLayout", "ValidatePcbCoordinates", "PcbComponentRender", "PcbPrimitiveRender", "PcbFootprintLayout", "PcbPortRender", "PcbPortAttachment", "PcbComponentSizeCalculation", "PcbComponentAnchorAlignment", "PcbCalcPlacementResolution", "PcbLayout", "PcbBoardAutoSize", "PanelLayout", "PcbFlexRender", "PcbAutoplaceBreakoutPoints", "PcbTraceHintRender", "PcbManualTraceRender", "PcbPlacementDesignRuleChecks", "PcbTraceRender", "PcbRouteNetIslands", "PcbTraceTeardropRender", "PcbCopperPourRender", "PcbViaStitchRender", "PcbCopperPourCleanup", "PcbDesignRuleChecks", "SilkscreenOverlapAdjustment", "CadModelRender", "PartsEngineRender", "PartOrientationAnalysis", "SupplierFootprintMismatchWarning", "SimulationSpiceEngineRender"];
|
|
385
388
|
type RenderPhase = (typeof orderedRenderPhases)[number];
|
|
386
|
-
declare const renderPhaseIndexMap: Map<"ReactSubtreesRender" | "RenderIsolatedSubcircuits" | "InflateSubcircuitCircuitJson" | "SourceNameDuplicateComponentRemoval" | "PcbFootprintStringRender" | "FetchPartFootprint" | "ResolveFootprintPinLabels" | "InitializePortsFromChildren" | "CreateNetsFromProps" | "AssignFallbackProps" | "CreateTracesFromProps" | "CreateTracesFromNetLabels" | "CreateTraceHintsFromProps" | "CreateAutoplacedBreakoutPoints" | "SourceGroupRender" | "AssignNameToUnnamedComponents" | "SourceRender" | "CheckRefDesConvention" | "SourceComponentPropertyValidation" | "SourceParentAttachment" | "PortMatching" | "OptimizeSelectorCache" | "SourceTraceRender" | "SourceAddConnectivityMapKey" | "SourceDesignRuleChecks" | "SimulationRender" | "SchematicComponentRender" | "SchematicPortRender" | "SymbolContainerRender" | "SchematicPrimitiveRender" | "SchematicSymbolResize" | "SchematicComponentSizeCalculation" | "SchematicLayout" | "SchematicSectionRender" | "SchematicTraceRender" | "SchematicSheetRender" | "SchematicReplaceNetLabelsWithSymbols" | "SchematicLabelNetsWithConflictingNames" | "PanelBoardLayout" | "ValidatePcbCoordinates" | "PcbComponentRender" | "PcbPrimitiveRender" | "PcbFootprintLayout" | "PcbPortRender" | "PcbPortAttachment" | "PcbComponentSizeCalculation" | "PcbComponentAnchorAlignment" | "PcbCalcPlacementResolution" | "PcbLayout" | "PcbBoardAutoSize" | "PanelLayout" | "PcbFlexRender" | "PcbAutoplaceBreakoutPoints" | "PcbTraceHintRender" | "PcbManualTraceRender" | "PcbPlacementDesignRuleChecks" | "PcbTraceRender" | "PcbRouteNetIslands" | "PcbCopperPourRender" | "PcbViaStitchRender" | "PcbCopperPourCleanup" | "PcbDesignRuleChecks" | "SilkscreenOverlapAdjustment" | "CadModelRender" | "PartsEngineRender" | "PartOrientationAnalysis" | "SupplierFootprintMismatchWarning" | "SimulationSpiceEngineRender", number>;
|
|
389
|
+
declare const renderPhaseIndexMap: Map<"ReactSubtreesRender" | "RenderIsolatedSubcircuits" | "InflateSubcircuitCircuitJson" | "SourceNameDuplicateComponentRemoval" | "PcbFootprintStringRender" | "FetchPartFootprint" | "ResolveFootprintPinLabels" | "InitializePortsFromChildren" | "CreateNetsFromProps" | "AssignFallbackProps" | "CreateTracesFromProps" | "CreateTracesFromNetLabels" | "CreateTraceHintsFromProps" | "CreateAutoplacedBreakoutPoints" | "SourceGroupRender" | "AssignNameToUnnamedComponents" | "SourceRender" | "CheckRefDesConvention" | "SourceComponentPropertyValidation" | "SourceParentAttachment" | "PortMatching" | "OptimizeSelectorCache" | "SourceTraceRender" | "SourceAddConnectivityMapKey" | "SourceDesignRuleChecks" | "SimulationRender" | "SchematicComponentRender" | "SchematicPortRender" | "SymbolContainerRender" | "SchematicPrimitiveRender" | "SchematicSymbolResize" | "SchematicComponentSizeCalculation" | "SchematicLayout" | "SchematicSectionRender" | "SchematicTraceRender" | "SchematicSheetRender" | "SchematicReplaceNetLabelsWithSymbols" | "SchematicLabelNetsWithConflictingNames" | "PanelBoardLayout" | "ValidatePcbCoordinates" | "PcbComponentRender" | "PcbPrimitiveRender" | "PcbFootprintLayout" | "PcbPortRender" | "PcbPortAttachment" | "PcbComponentSizeCalculation" | "PcbComponentAnchorAlignment" | "PcbCalcPlacementResolution" | "PcbLayout" | "PcbBoardAutoSize" | "PanelLayout" | "PcbFlexRender" | "PcbAutoplaceBreakoutPoints" | "PcbTraceHintRender" | "PcbManualTraceRender" | "PcbPlacementDesignRuleChecks" | "PcbTraceRender" | "PcbRouteNetIslands" | "PcbTraceTeardropRender" | "PcbCopperPourRender" | "PcbViaStitchRender" | "PcbCopperPourCleanup" | "PcbDesignRuleChecks" | "SilkscreenOverlapAdjustment" | "CadModelRender" | "PartsEngineRender" | "PartOrientationAnalysis" | "SupplierFootprintMismatchWarning" | "SimulationSpiceEngineRender", number>;
|
|
387
390
|
type RenderPhaseFn<K extends RenderPhase = RenderPhase> = `doInitial${K}` | `update${K}` | `remove${K}`;
|
|
388
391
|
type RenderPhaseStates = Record<RenderPhase, {
|
|
389
392
|
initialized: boolean;
|
|
@@ -737,6 +740,7 @@ declare class AutoroutingPhase extends PrimitiveComponent<typeof autoroutingPhas
|
|
|
737
740
|
minViaEdgeToPadEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
738
741
|
minPlatedHoleDrillEdgeToDrillEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
739
742
|
minTraceToPadEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
743
|
+
minTraceToHoleEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>, number, string | number>>;
|
|
740
744
|
minPadEdgeToPadEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
741
745
|
minBoardEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
742
746
|
minViaHoleDiameter: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
@@ -906,6 +910,7 @@ declare class AutoroutingPhase extends PrimitiveComponent<typeof autoroutingPhas
|
|
|
906
910
|
minViaEdgeToPadEdgeClearance?: number | undefined;
|
|
907
911
|
minPlatedHoleDrillEdgeToDrillEdgeClearance?: number | undefined;
|
|
908
912
|
minTraceToPadEdgeClearance?: number | undefined;
|
|
913
|
+
minTraceToHoleEdgeClearance?: number | undefined;
|
|
909
914
|
minPadEdgeToPadEdgeClearance?: number | undefined;
|
|
910
915
|
minBoardEdgeClearance?: number | undefined;
|
|
911
916
|
minViaHoleDiameter?: number | undefined;
|
|
@@ -961,6 +966,7 @@ declare class AutoroutingPhase extends PrimitiveComponent<typeof autoroutingPhas
|
|
|
961
966
|
minViaEdgeToPadEdgeClearance?: string | number | undefined;
|
|
962
967
|
minPlatedHoleDrillEdgeToDrillEdgeClearance?: string | number | undefined;
|
|
963
968
|
minTraceToPadEdgeClearance?: string | number | undefined;
|
|
969
|
+
minTraceToHoleEdgeClearance?: string | number | undefined;
|
|
964
970
|
minPadEdgeToPadEdgeClearance?: string | number | undefined;
|
|
965
971
|
minBoardEdgeClearance?: string | number | undefined;
|
|
966
972
|
minViaHoleDiameter?: string | number | undefined;
|
|
@@ -1026,6 +1032,7 @@ declare class AutoroutingPhase extends PrimitiveComponent<typeof autoroutingPhas
|
|
|
1026
1032
|
minViaEdgeToPadEdgeClearance?: number | undefined;
|
|
1027
1033
|
minPlatedHoleDrillEdgeToDrillEdgeClearance?: number | undefined;
|
|
1028
1034
|
minTraceToPadEdgeClearance?: number | undefined;
|
|
1035
|
+
minTraceToHoleEdgeClearance?: number | undefined;
|
|
1029
1036
|
minPadEdgeToPadEdgeClearance?: number | undefined;
|
|
1030
1037
|
minBoardEdgeClearance?: number | undefined;
|
|
1031
1038
|
minViaHoleDiameter?: number | undefined;
|
|
@@ -1081,6 +1088,7 @@ declare class AutoroutingPhase extends PrimitiveComponent<typeof autoroutingPhas
|
|
|
1081
1088
|
minViaEdgeToPadEdgeClearance?: string | number | undefined;
|
|
1082
1089
|
minPlatedHoleDrillEdgeToDrillEdgeClearance?: string | number | undefined;
|
|
1083
1090
|
minTraceToPadEdgeClearance?: string | number | undefined;
|
|
1091
|
+
minTraceToHoleEdgeClearance?: string | number | undefined;
|
|
1084
1092
|
minPadEdgeToPadEdgeClearance?: string | number | undefined;
|
|
1085
1093
|
minBoardEdgeClearance?: string | number | undefined;
|
|
1086
1094
|
minViaHoleDiameter?: string | number | undefined;
|
|
@@ -2038,6 +2046,8 @@ declare class Trace extends PrimitiveComponent<typeof traceProps> implements Tra
|
|
|
2038
2046
|
doInitialSourceTraceRender(): void;
|
|
2039
2047
|
_insertErrorIfTraceIsOutsideBoard(mergedRoute: PcbTraceRoutePoint[], ports: Port[]): void;
|
|
2040
2048
|
doInitialPcbManualTraceRender(): void;
|
|
2049
|
+
doInitialPcbTraceTeardropRender(): void;
|
|
2050
|
+
updatePcbTraceTeardropRender(): void;
|
|
2041
2051
|
doInitialPcbTraceRender(): void;
|
|
2042
2052
|
_doInitialSchematicTraceRenderWithDisplayLabel(): void;
|
|
2043
2053
|
_isSymbolToChipConnection(): boolean | undefined;
|
|
@@ -2113,6 +2123,7 @@ interface RoutingPhaseDrcTolerances {
|
|
|
2113
2123
|
minViaHoleEdgeToViaHoleEdgeClearance?: number;
|
|
2114
2124
|
minPlatedHoleDrillEdgeToDrillEdgeClearance?: number;
|
|
2115
2125
|
minTraceToPadEdgeClearance?: number;
|
|
2126
|
+
minTraceToHoleEdgeClearance?: number;
|
|
2116
2127
|
minPadEdgeToPadEdgeClearance?: number;
|
|
2117
2128
|
minBoardEdgeClearance?: number;
|
|
2118
2129
|
minViaEdgeToPadEdgeClearance?: number;
|
|
@@ -5730,6 +5741,7 @@ declare class Board extends Group<typeof boardProps> implements BoardI, Subcircu
|
|
|
5730
5741
|
minViaEdgeToPadEdgeClearance: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
5731
5742
|
minPlatedHoleDrillEdgeToDrillEdgeClearance: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
5732
5743
|
minTraceToPadEdgeClearance: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
5744
|
+
minTraceToHoleEdgeClearance: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>, number, string | number>>;
|
|
5733
5745
|
minPadEdgeToPadEdgeClearance: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
5734
5746
|
minBoardEdgeClearance: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
5735
5747
|
minViaHoleDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
@@ -6260,6 +6272,7 @@ declare class Board extends Group<typeof boardProps> implements BoardI, Subcircu
|
|
|
6260
6272
|
minViaEdgeToPadEdgeClearance?: number | undefined;
|
|
6261
6273
|
minPlatedHoleDrillEdgeToDrillEdgeClearance?: number | undefined;
|
|
6262
6274
|
minTraceToPadEdgeClearance?: number | undefined;
|
|
6275
|
+
minTraceToHoleEdgeClearance?: number | undefined;
|
|
6263
6276
|
minPadEdgeToPadEdgeClearance?: number | undefined;
|
|
6264
6277
|
minBoardEdgeClearance?: number | undefined;
|
|
6265
6278
|
minViaHoleDiameter?: number | undefined;
|
|
@@ -6607,6 +6620,7 @@ declare class Board extends Group<typeof boardProps> implements BoardI, Subcircu
|
|
|
6607
6620
|
minViaEdgeToPadEdgeClearance?: string | number | undefined;
|
|
6608
6621
|
minPlatedHoleDrillEdgeToDrillEdgeClearance?: string | number | undefined;
|
|
6609
6622
|
minTraceToPadEdgeClearance?: string | number | undefined;
|
|
6623
|
+
minTraceToHoleEdgeClearance?: string | number | undefined;
|
|
6610
6624
|
minPadEdgeToPadEdgeClearance?: string | number | undefined;
|
|
6611
6625
|
minBoardEdgeClearance?: string | number | undefined;
|
|
6612
6626
|
minViaHoleDiameter?: string | number | undefined;
|
|
@@ -7407,6 +7421,7 @@ declare class MountedBoard extends Subcircuit implements BoardI {
|
|
|
7407
7421
|
minViaEdgeToPadEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
7408
7422
|
minPlatedHoleDrillEdgeToDrillEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
7409
7423
|
minTraceToPadEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
7424
|
+
minTraceToHoleEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>, number, string | number>>;
|
|
7410
7425
|
minPadEdgeToPadEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
7411
7426
|
minBoardEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
7412
7427
|
minViaHoleDiameter: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
@@ -7953,6 +7968,7 @@ declare class MountedBoard extends Subcircuit implements BoardI {
|
|
|
7953
7968
|
minViaEdgeToPadEdgeClearance?: number | undefined;
|
|
7954
7969
|
minPlatedHoleDrillEdgeToDrillEdgeClearance?: number | undefined;
|
|
7955
7970
|
minTraceToPadEdgeClearance?: number | undefined;
|
|
7971
|
+
minTraceToHoleEdgeClearance?: number | undefined;
|
|
7956
7972
|
minPadEdgeToPadEdgeClearance?: number | undefined;
|
|
7957
7973
|
minBoardEdgeClearance?: number | undefined;
|
|
7958
7974
|
minViaHoleDiameter?: number | undefined;
|
|
@@ -8314,6 +8330,7 @@ declare class MountedBoard extends Subcircuit implements BoardI {
|
|
|
8314
8330
|
minViaEdgeToPadEdgeClearance?: string | number | undefined;
|
|
8315
8331
|
minPlatedHoleDrillEdgeToDrillEdgeClearance?: string | number | undefined;
|
|
8316
8332
|
minTraceToPadEdgeClearance?: string | number | undefined;
|
|
8333
|
+
minTraceToHoleEdgeClearance?: string | number | undefined;
|
|
8317
8334
|
minPadEdgeToPadEdgeClearance?: string | number | undefined;
|
|
8318
8335
|
minBoardEdgeClearance?: string | number | undefined;
|
|
8319
8336
|
minViaHoleDiameter?: string | number | undefined;
|
|
@@ -97054,6 +97071,7 @@ declare class Breakout extends Group<typeof breakoutProps> {
|
|
|
97054
97071
|
minViaEdgeToPadEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
97055
97072
|
minPlatedHoleDrillEdgeToDrillEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
97056
97073
|
minTraceToPadEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
97074
|
+
minTraceToHoleEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>, number, string | number>>;
|
|
97057
97075
|
minPadEdgeToPadEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
97058
97076
|
minBoardEdgeClearance: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
97059
97077
|
minViaHoleDiameter: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
@@ -97655,6 +97673,7 @@ declare class Breakout extends Group<typeof breakoutProps> {
|
|
|
97655
97673
|
minViaEdgeToPadEdgeClearance?: number | undefined;
|
|
97656
97674
|
minPlatedHoleDrillEdgeToDrillEdgeClearance?: number | undefined;
|
|
97657
97675
|
minTraceToPadEdgeClearance?: number | undefined;
|
|
97676
|
+
minTraceToHoleEdgeClearance?: number | undefined;
|
|
97658
97677
|
minPadEdgeToPadEdgeClearance?: number | undefined;
|
|
97659
97678
|
minBoardEdgeClearance?: number | undefined;
|
|
97660
97679
|
minViaHoleDiameter?: number | undefined;
|
|
@@ -98006,6 +98025,7 @@ declare class Breakout extends Group<typeof breakoutProps> {
|
|
|
98006
98025
|
minViaEdgeToPadEdgeClearance?: string | number | undefined;
|
|
98007
98026
|
minPlatedHoleDrillEdgeToDrillEdgeClearance?: string | number | undefined;
|
|
98008
98027
|
minTraceToPadEdgeClearance?: string | number | undefined;
|
|
98028
|
+
minTraceToHoleEdgeClearance?: string | number | undefined;
|
|
98009
98029
|
minPadEdgeToPadEdgeClearance?: string | number | undefined;
|
|
98010
98030
|
minBoardEdgeClearance?: string | number | undefined;
|
|
98011
98031
|
minViaHoleDiameter?: string | number | undefined;
|
|
@@ -196001,13 +196021,14 @@ type FanoutPourNetMap = Readonly<Record<string, string | readonly string[]>>;
|
|
|
196001
196021
|
/**
|
|
196002
196022
|
* This function can only be called in the PcbTraceRender phase or later
|
|
196003
196023
|
*/
|
|
196004
|
-
declare const getSimpleRouteJsonFromCircuitJson: ({ db, circuitJson, subcircuit_id, minTraceWidth, minTraceToPadEdgeClearance, minViaEdgeToPadEdgeClearance, minViaHoleEdgeToViaHoleEdgeClearance, minPlatedHoleDrillEdgeToDrillEdgeClearance, minPadEdgeToPadEdgeClearance, minBoardEdgeClearance, minViaHoleDiameter, minViaPadDiameter, nominalTraceWidth, subcircuitComponent, routingPcbGroupId, fanoutPourNetMap, ignoreExistingTopLevelPcbRouteState, }: {
|
|
196024
|
+
declare const getSimpleRouteJsonFromCircuitJson: ({ db, circuitJson, subcircuit_id, minTraceWidth, minTraceToPadEdgeClearance, minTraceToHoleEdgeClearance, minViaEdgeToPadEdgeClearance, minViaHoleEdgeToViaHoleEdgeClearance, minPlatedHoleDrillEdgeToDrillEdgeClearance, minPadEdgeToPadEdgeClearance, minBoardEdgeClearance, minViaHoleDiameter, minViaPadDiameter, nominalTraceWidth, subcircuitComponent, routingPcbGroupId, fanoutPourNetMap, ignoreExistingTopLevelPcbRouteState, }: {
|
|
196005
196025
|
db?: CircuitJsonUtilObjects;
|
|
196006
196026
|
circuitJson?: AnyCircuitElement[];
|
|
196007
196027
|
subcircuit_id?: string | null;
|
|
196008
196028
|
minTraceWidth?: number;
|
|
196009
196029
|
nominalTraceWidth?: number;
|
|
196010
196030
|
minTraceToPadEdgeClearance?: number;
|
|
196031
|
+
minTraceToHoleEdgeClearance?: number;
|
|
196011
196032
|
minViaEdgeToPadEdgeClearance?: number;
|
|
196012
196033
|
minViaHoleEdgeToViaHoleEdgeClearance?: number;
|
|
196013
196034
|
minPlatedHoleDrillEdgeToDrillEdgeClearance?: number;
|
package/dist/index.js
CHANGED
|
@@ -482,6 +482,10 @@ var getRoutePointPositions = (point6) => {
|
|
|
482
482
|
// lib/utils/reverse-pcb-trace-route.ts
|
|
483
483
|
var reversePcbTraceRoute = (route, routeThicknessMode = "constant") => {
|
|
484
484
|
const reversedRoute = route.slice().reverse().map((point6) => {
|
|
485
|
+
if (point6.route_type === "wire") {
|
|
486
|
+
const { start_width, end_width, width_interpolation_mode, ...wire } = point6;
|
|
487
|
+
return wire;
|
|
488
|
+
}
|
|
485
489
|
if (point6.route_type !== "through_pad") return { ...point6 };
|
|
486
490
|
return {
|
|
487
491
|
...point6,
|
|
@@ -491,39 +495,54 @@ var reversePcbTraceRoute = (route, routeThicknessMode = "constant") => {
|
|
|
491
495
|
end_layer: point6.start_layer
|
|
492
496
|
};
|
|
493
497
|
});
|
|
494
|
-
if (routeThicknessMode === "
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
for (let reversedIndex = 0; reversedIndex < reversedRoute.length; reversedIndex++) {
|
|
507
|
-
const reversedPoint = reversedRoute[reversedIndex];
|
|
508
|
-
if (reversedPoint?.route_type !== "wire") continue;
|
|
509
|
-
const nextReversedPoint = reversedRoute[reversedIndex + 1];
|
|
510
|
-
if (nextReversedPoint?.route_type === "wire" && nextReversedPoint.layer === reversedPoint.layer) {
|
|
511
|
-
continue;
|
|
512
|
-
}
|
|
513
|
-
let originalRunEndIndex = route.length - reversedIndex - 1;
|
|
514
|
-
while (originalRunEndIndex < route.length - 1) {
|
|
515
|
-
const originalRunPoint = route[originalRunEndIndex];
|
|
516
|
-
const nextOriginalRunPoint = route[originalRunEndIndex + 1];
|
|
517
|
-
if (originalRunPoint?.route_type !== "wire" || nextOriginalRunPoint?.route_type !== "wire" || originalRunPoint.layer !== nextOriginalRunPoint.layer) {
|
|
518
|
-
break;
|
|
498
|
+
if (routeThicknessMode === "constant") {
|
|
499
|
+
for (let reversedIndex = 0; reversedIndex < reversedRoute.length - 1; reversedIndex++) {
|
|
500
|
+
const reversedStart = reversedRoute[reversedIndex];
|
|
501
|
+
const reversedEnd = reversedRoute[reversedIndex + 1];
|
|
502
|
+
if (reversedStart?.route_type !== "wire" || reversedEnd?.route_type !== "wire" || reversedStart.layer !== reversedEnd.layer) {
|
|
503
|
+
continue;
|
|
504
|
+
}
|
|
505
|
+
const originalSegmentStart = route[route.length - reversedIndex - 2];
|
|
506
|
+
if (originalSegmentStart?.route_type === "wire") {
|
|
507
|
+
reversedStart.width = originalSegmentStart.width;
|
|
519
508
|
}
|
|
520
|
-
originalRunEndIndex++;
|
|
521
509
|
}
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
reversedPoint
|
|
510
|
+
for (let reversedIndex = 0; reversedIndex < reversedRoute.length; reversedIndex++) {
|
|
511
|
+
const reversedPoint = reversedRoute[reversedIndex];
|
|
512
|
+
if (reversedPoint?.route_type !== "wire") continue;
|
|
513
|
+
const nextReversedPoint = reversedRoute[reversedIndex + 1];
|
|
514
|
+
if (nextReversedPoint?.route_type === "wire" && nextReversedPoint.layer === reversedPoint.layer) {
|
|
515
|
+
continue;
|
|
516
|
+
}
|
|
517
|
+
let originalRunEndIndex = route.length - reversedIndex - 1;
|
|
518
|
+
while (originalRunEndIndex < route.length - 1) {
|
|
519
|
+
const originalRunPoint = route[originalRunEndIndex];
|
|
520
|
+
const nextOriginalRunPoint = route[originalRunEndIndex + 1];
|
|
521
|
+
if (originalRunPoint?.route_type !== "wire" || nextOriginalRunPoint?.route_type !== "wire" || originalRunPoint.layer !== nextOriginalRunPoint.layer) {
|
|
522
|
+
break;
|
|
523
|
+
}
|
|
524
|
+
originalRunEndIndex++;
|
|
525
|
+
}
|
|
526
|
+
const originalRunEnd = route[originalRunEndIndex];
|
|
527
|
+
if (originalRunEnd?.route_type === "wire") {
|
|
528
|
+
reversedPoint.width = originalRunEnd.width;
|
|
529
|
+
}
|
|
525
530
|
}
|
|
526
531
|
}
|
|
532
|
+
for (let index = 0; index < route.length - 1; index++) {
|
|
533
|
+
const start = route[index];
|
|
534
|
+
const end = route[index + 1];
|
|
535
|
+
if (start.route_type !== "wire" || !start.width_interpolation_mode) continue;
|
|
536
|
+
if (end.route_type !== "wire" || end.layer !== start.layer) continue;
|
|
537
|
+
const reversedStart = reversedRoute[route.length - index - 2];
|
|
538
|
+
if (reversedStart.route_type !== "wire") continue;
|
|
539
|
+
Object.assign(reversedStart, {
|
|
540
|
+
width: start.end_width,
|
|
541
|
+
start_width: start.end_width,
|
|
542
|
+
end_width: start.start_width,
|
|
543
|
+
width_interpolation_mode: start.width_interpolation_mode
|
|
544
|
+
});
|
|
545
|
+
}
|
|
527
546
|
return reversedRoute;
|
|
528
547
|
};
|
|
529
548
|
|
|
@@ -685,6 +704,7 @@ var orderedRenderPhases = [
|
|
|
685
704
|
"PcbPlacementDesignRuleChecks",
|
|
686
705
|
"PcbTraceRender",
|
|
687
706
|
"PcbRouteNetIslands",
|
|
707
|
+
"PcbTraceTeardropRender",
|
|
688
708
|
"PcbCopperPourRender",
|
|
689
709
|
"PcbViaStitchRender",
|
|
690
710
|
"PcbCopperPourCleanup",
|
|
@@ -734,12 +754,14 @@ var asyncPhaseDependencies = {
|
|
|
734
754
|
PcbBoardAutoSize: ["PcbFootprintStringRender", "FetchPartFootprint"],
|
|
735
755
|
PcbTraceHintRender: ["PcbFootprintStringRender", "FetchPartFootprint"],
|
|
736
756
|
PcbManualTraceRender: ["PcbFootprintStringRender", "FetchPartFootprint"],
|
|
757
|
+
PcbTraceTeardropRender: ["PcbTraceRender", "PcbRouteNetIslands"],
|
|
737
758
|
PcbCopperPourRender: [
|
|
738
759
|
"PcbFootprintStringRender",
|
|
739
760
|
"FetchPartFootprint",
|
|
740
761
|
"PcbPlacementDesignRuleChecks",
|
|
741
762
|
"PcbTraceRender",
|
|
742
|
-
"PcbRouteNetIslands"
|
|
763
|
+
"PcbRouteNetIslands",
|
|
764
|
+
"PcbTraceTeardropRender"
|
|
743
765
|
],
|
|
744
766
|
PcbViaStitchRender: [
|
|
745
767
|
"PcbFootprintStringRender",
|
|
@@ -3503,8 +3525,9 @@ var getObstaclesFromCircuitJson = (circuitJson, connMap) => {
|
|
|
3503
3525
|
if (element.hole_shape === "oval") {
|
|
3504
3526
|
obstacles.push({
|
|
3505
3527
|
componentId: pcbComponentId,
|
|
3506
|
-
|
|
3507
|
-
|
|
3528
|
+
obstacleId: element.pcb_hole_id,
|
|
3529
|
+
isNonPlatedHole: true,
|
|
3530
|
+
type: "rect",
|
|
3508
3531
|
layers: everyLayer,
|
|
3509
3532
|
center: {
|
|
3510
3533
|
x: element.x,
|
|
@@ -3517,6 +3540,8 @@ var getObstaclesFromCircuitJson = (circuitJson, connMap) => {
|
|
|
3517
3540
|
} else if (element.hole_shape === "pill" || element.hole_shape === "rotated_pill") {
|
|
3518
3541
|
obstacles.push({
|
|
3519
3542
|
componentId: pcbComponentId,
|
|
3543
|
+
obstacleId: element.pcb_hole_id,
|
|
3544
|
+
isNonPlatedHole: true,
|
|
3520
3545
|
type: "rect",
|
|
3521
3546
|
layers: everyLayer,
|
|
3522
3547
|
center: {
|
|
@@ -3531,6 +3556,8 @@ var getObstaclesFromCircuitJson = (circuitJson, connMap) => {
|
|
|
3531
3556
|
} else if (element.hole_shape === "rect") {
|
|
3532
3557
|
obstacles.push({
|
|
3533
3558
|
componentId: pcbComponentId,
|
|
3559
|
+
obstacleId: element.pcb_hole_id,
|
|
3560
|
+
isNonPlatedHole: true,
|
|
3534
3561
|
type: "rect",
|
|
3535
3562
|
layers: everyLayer,
|
|
3536
3563
|
center: {
|
|
@@ -3544,6 +3571,8 @@ var getObstaclesFromCircuitJson = (circuitJson, connMap) => {
|
|
|
3544
3571
|
} else if (element.hole_shape === "square") {
|
|
3545
3572
|
obstacles.push({
|
|
3546
3573
|
componentId: pcbComponentId,
|
|
3574
|
+
obstacleId: element.pcb_hole_id,
|
|
3575
|
+
isNonPlatedHole: true,
|
|
3547
3576
|
type: "rect",
|
|
3548
3577
|
layers: everyLayer,
|
|
3549
3578
|
center: {
|
|
@@ -3560,7 +3589,10 @@ var getObstaclesFromCircuitJson = (circuitJson, connMap) => {
|
|
|
3560
3589
|
) {
|
|
3561
3590
|
obstacles.push({
|
|
3562
3591
|
componentId: pcbComponentId,
|
|
3592
|
+
obstacleId: element.pcb_hole_id,
|
|
3593
|
+
isNonPlatedHole: true,
|
|
3563
3594
|
type: "rect",
|
|
3595
|
+
shape: "circle",
|
|
3564
3596
|
layers: everyLayer,
|
|
3565
3597
|
center: {
|
|
3566
3598
|
x: element.x,
|
|
@@ -5684,6 +5716,7 @@ var jlcMinTolerances = {
|
|
|
5684
5716
|
min_trace_width: 0.1,
|
|
5685
5717
|
min_via_hole_edge_to_via_hole_edge_clearance: 0.1,
|
|
5686
5718
|
min_plated_hole_drill_edge_to_drill_edge_clearance: 0.15,
|
|
5719
|
+
min_trace_to_hole_edge_clearance: 0.2,
|
|
5687
5720
|
min_trace_to_pad_edge_clearance: 0.1,
|
|
5688
5721
|
min_pad_edge_to_pad_edge_clearance: 0.1,
|
|
5689
5722
|
min_board_edge_clearance: 0.2,
|
|
@@ -6062,6 +6095,236 @@ function Trace_doInitialPcbManualTraceRender(trace) {
|
|
|
6062
6095
|
trace._insertErrorIfTraceIsOutsideBoard(route, ports);
|
|
6063
6096
|
}
|
|
6064
6097
|
|
|
6098
|
+
// lib/utils/autorouting/add-trace-teardrops.ts
|
|
6099
|
+
function addTraceTeardrops(route, contacts) {
|
|
6100
|
+
const result = [];
|
|
6101
|
+
const contactDiameter = (point6) => {
|
|
6102
|
+
let diameter = 0;
|
|
6103
|
+
for (const contact of contacts) {
|
|
6104
|
+
if (contact.layer === point6.layer && Math.hypot(contact.x - point6.x, contact.y - point6.y) < 1e-6)
|
|
6105
|
+
diameter = Math.max(diameter, contact.diameter);
|
|
6106
|
+
}
|
|
6107
|
+
return diameter;
|
|
6108
|
+
};
|
|
6109
|
+
for (let index = 0; index < route.length; index++) {
|
|
6110
|
+
const start = route[index];
|
|
6111
|
+
const end = route[index + 1];
|
|
6112
|
+
if (start.route_type !== "wire" || end?.route_type !== "wire" || start.layer !== end.layer || start.width_interpolation_mode) {
|
|
6113
|
+
result.push(start);
|
|
6114
|
+
continue;
|
|
6115
|
+
}
|
|
6116
|
+
const length8 = Math.hypot(end.x - start.x, end.y - start.y);
|
|
6117
|
+
const startDiameter = contactDiameter(start);
|
|
6118
|
+
const endDiameter = contactDiameter(end);
|
|
6119
|
+
const size = (diameter) => {
|
|
6120
|
+
const width = diameter * 0.8;
|
|
6121
|
+
const taperLength = Math.min(diameter * 1.5, length8 * 0.45);
|
|
6122
|
+
return width > start.width && taperLength > diameter / 2 ? { width, length: taperLength } : void 0;
|
|
6123
|
+
};
|
|
6124
|
+
const startTaper = size(startDiameter);
|
|
6125
|
+
const endTaper = size(endDiameter);
|
|
6126
|
+
if (!startTaper && !endTaper) {
|
|
6127
|
+
result.push(start);
|
|
6128
|
+
continue;
|
|
6129
|
+
}
|
|
6130
|
+
const atDistance = (distance23) => ({
|
|
6131
|
+
route_type: "wire",
|
|
6132
|
+
x: start.x + (end.x - start.x) * distance23 / length8,
|
|
6133
|
+
y: start.y + (end.y - start.y) * distance23 / length8,
|
|
6134
|
+
width: start.width,
|
|
6135
|
+
layer: start.layer
|
|
6136
|
+
});
|
|
6137
|
+
if (startTaper) {
|
|
6138
|
+
result.push({
|
|
6139
|
+
...start,
|
|
6140
|
+
width: startTaper.width,
|
|
6141
|
+
start_width: startTaper.width,
|
|
6142
|
+
end_width: start.width,
|
|
6143
|
+
width_interpolation_mode: "quadratic"
|
|
6144
|
+
});
|
|
6145
|
+
result.push(atDistance(startTaper.length));
|
|
6146
|
+
} else result.push(start);
|
|
6147
|
+
if (endTaper) {
|
|
6148
|
+
result.push({
|
|
6149
|
+
...atDistance(length8 - endTaper.length),
|
|
6150
|
+
start_width: start.width,
|
|
6151
|
+
end_width: endTaper.width,
|
|
6152
|
+
width_interpolation_mode: "quadratic"
|
|
6153
|
+
});
|
|
6154
|
+
}
|
|
6155
|
+
}
|
|
6156
|
+
return result;
|
|
6157
|
+
}
|
|
6158
|
+
|
|
6159
|
+
// lib/utils/autorouting/resolve-saved-trace-route-widths.ts
|
|
6160
|
+
function resolveSavedTraceRouteWidths(route) {
|
|
6161
|
+
return route.map((point6, index) => {
|
|
6162
|
+
if (point6.route_type !== "wire" || !point6.width_interpolation_mode)
|
|
6163
|
+
return { ...point6 };
|
|
6164
|
+
const next = route[index + 1];
|
|
6165
|
+
if (next?.route_type !== "wire" || next.layer !== point6.layer || next.x === point6.x && next.y === point6.y) {
|
|
6166
|
+
throw new Error(
|
|
6167
|
+
"Width interpolation requires a distinct next wire point on the same layer"
|
|
6168
|
+
);
|
|
6169
|
+
}
|
|
6170
|
+
return { ...point6, start_width: point6.width, end_width: next.width };
|
|
6171
|
+
});
|
|
6172
|
+
}
|
|
6173
|
+
function getSavedTraceViaContactWidths(route, viaIndex, fallbackWidth) {
|
|
6174
|
+
let before;
|
|
6175
|
+
let after;
|
|
6176
|
+
for (let index = viaIndex - 1; index >= 0; index--) {
|
|
6177
|
+
const point6 = route[index];
|
|
6178
|
+
if (point6.route_type === "wire") {
|
|
6179
|
+
before = point6.width;
|
|
6180
|
+
break;
|
|
6181
|
+
}
|
|
6182
|
+
}
|
|
6183
|
+
for (let index = viaIndex + 1; index < route.length; index++) {
|
|
6184
|
+
const point6 = route[index];
|
|
6185
|
+
if (point6.route_type === "wire") {
|
|
6186
|
+
after = point6.width;
|
|
6187
|
+
break;
|
|
6188
|
+
}
|
|
6189
|
+
}
|
|
6190
|
+
return {
|
|
6191
|
+
fromWidth: before ?? after ?? fallbackWidth,
|
|
6192
|
+
toWidth: after ?? before ?? fallbackWidth
|
|
6193
|
+
};
|
|
6194
|
+
}
|
|
6195
|
+
|
|
6196
|
+
// lib/components/primitive-components/Trace/Trace_doInitialPcbTraceTeardropRender.ts
|
|
6197
|
+
var generatedRoutes = /* @__PURE__ */ new WeakMap();
|
|
6198
|
+
function hasSameGeneratedGeometry(current, generated) {
|
|
6199
|
+
if (current === generated) return true;
|
|
6200
|
+
if (current.length !== generated.length) return false;
|
|
6201
|
+
const geometry = (point6) => {
|
|
6202
|
+
const { is_inside_copper_pour, copper_pour_id, ...rest } = point6;
|
|
6203
|
+
return JSON.stringify(rest);
|
|
6204
|
+
};
|
|
6205
|
+
return current.every(
|
|
6206
|
+
(point6, index) => geometry(point6) === geometry(generated[index])
|
|
6207
|
+
);
|
|
6208
|
+
}
|
|
6209
|
+
function getPadDiameter(pad) {
|
|
6210
|
+
if (pad.shape === "polygon") return 0;
|
|
6211
|
+
if (pad.shape === "circle") return pad.radius * 2;
|
|
6212
|
+
return Math.min(pad.width, pad.height);
|
|
6213
|
+
}
|
|
6214
|
+
function Trace_doInitialPcbTraceTeardropRender(trace) {
|
|
6215
|
+
if (!trace.root || trace.root.pcbDisabled || !trace.source_trace_id) return;
|
|
6216
|
+
const { db } = trace.root;
|
|
6217
|
+
const props = trace._parsedProps;
|
|
6218
|
+
const previous = generatedRoutes.get(trace);
|
|
6219
|
+
for (const [id, routes] of previous ?? []) {
|
|
6220
|
+
const current = db.pcb_trace.get(id);
|
|
6221
|
+
if (current && hasSameGeneratedGeometry(current.route, routes.generated))
|
|
6222
|
+
db.pcb_trace.update(id, { route: routes.original });
|
|
6223
|
+
}
|
|
6224
|
+
generatedRoutes.delete(trace);
|
|
6225
|
+
if (!props.pcbTeardrops && !props.pcbTeardropStart && !props.pcbTeardropEnd)
|
|
6226
|
+
return;
|
|
6227
|
+
const connected = trace._findConnectedPorts();
|
|
6228
|
+
if (!connected.allPortsFound) return;
|
|
6229
|
+
const selectors = trace._getTracePortOrNetSelectorListFromProps();
|
|
6230
|
+
const enabledPorts = connected.portsWithSelectors.map(
|
|
6231
|
+
({ port, selector }) => ({
|
|
6232
|
+
port,
|
|
6233
|
+
enabled: selector === selectors[0] ? props.pcbTeardropStart ?? props.pcbTeardrops ?? false : selector === selectors.at(-1) ? props.pcbTeardropEnd ?? props.pcbTeardrops ?? false : props.pcbTeardrops ?? false
|
|
6234
|
+
})
|
|
6235
|
+
);
|
|
6236
|
+
const padContacts = [];
|
|
6237
|
+
for (const { port, enabled } of enabledPorts) {
|
|
6238
|
+
if (!enabled || !port.pcb_port_id) continue;
|
|
6239
|
+
for (const pad of db.pcb_smtpad.list({ pcb_port_id: port.pcb_port_id })) {
|
|
6240
|
+
if (pad.shape === "polygon") continue;
|
|
6241
|
+
padContacts.push({
|
|
6242
|
+
x: pad.x,
|
|
6243
|
+
y: pad.y,
|
|
6244
|
+
layer: pad.layer,
|
|
6245
|
+
diameter: getPadDiameter(pad)
|
|
6246
|
+
});
|
|
6247
|
+
}
|
|
6248
|
+
for (const hole of db.pcb_plated_hole.list({
|
|
6249
|
+
pcb_port_id: port.pcb_port_id
|
|
6250
|
+
})) {
|
|
6251
|
+
if (hole.shape !== "circle") continue;
|
|
6252
|
+
for (const layer of hole.layers)
|
|
6253
|
+
padContacts.push({
|
|
6254
|
+
x: hole.x,
|
|
6255
|
+
y: hole.y,
|
|
6256
|
+
layer,
|
|
6257
|
+
diameter: hole.outer_diameter
|
|
6258
|
+
});
|
|
6259
|
+
}
|
|
6260
|
+
}
|
|
6261
|
+
const outputs = /* @__PURE__ */ new Map();
|
|
6262
|
+
for (const pcbTrace of db.pcb_trace.list({
|
|
6263
|
+
source_trace_id: trace.source_trace_id
|
|
6264
|
+
})) {
|
|
6265
|
+
const contacts = [...padContacts];
|
|
6266
|
+
for (const via of db.pcb_via.list({
|
|
6267
|
+
pcb_trace_id: pcbTrace.pcb_trace_id
|
|
6268
|
+
})) {
|
|
6269
|
+
const endpoint = enabledPorts.find(({ port }) => {
|
|
6270
|
+
const position = port._getGlobalPcbPositionAfterLayout();
|
|
6271
|
+
return Math.hypot(position.x - via.x, position.y - via.y) < 1e-6;
|
|
6272
|
+
});
|
|
6273
|
+
if (!(endpoint ? endpoint.enabled : props.pcbTeardrops)) continue;
|
|
6274
|
+
for (const layer of via.layers)
|
|
6275
|
+
contacts.push({
|
|
6276
|
+
x: via.x,
|
|
6277
|
+
y: via.y,
|
|
6278
|
+
layer,
|
|
6279
|
+
diameter: via.outer_diameter
|
|
6280
|
+
});
|
|
6281
|
+
}
|
|
6282
|
+
const wireContacts = pcbTrace.route.flatMap(
|
|
6283
|
+
(point6, index) => {
|
|
6284
|
+
if (point6.route_type !== "via" || !contacts.some(
|
|
6285
|
+
(contact) => Math.hypot(contact.x - point6.x, contact.y - point6.y) < 1e-6
|
|
6286
|
+
))
|
|
6287
|
+
return [point6];
|
|
6288
|
+
const { fromWidth, toWidth } = getSavedTraceViaContactWidths(
|
|
6289
|
+
pcbTrace.route,
|
|
6290
|
+
index,
|
|
6291
|
+
0
|
|
6292
|
+
);
|
|
6293
|
+
if (!fromWidth || !toWidth) return [point6];
|
|
6294
|
+
const before = pcbTrace.route[index - 1];
|
|
6295
|
+
const after = pcbTrace.route[index + 1];
|
|
6296
|
+
const result = [];
|
|
6297
|
+
if (!(before?.route_type === "wire" && before.x === point6.x && before.y === point6.y && before.layer === point6.from_layer))
|
|
6298
|
+
result.push({
|
|
6299
|
+
route_type: "wire",
|
|
6300
|
+
x: point6.x,
|
|
6301
|
+
y: point6.y,
|
|
6302
|
+
width: fromWidth,
|
|
6303
|
+
layer: point6.from_layer
|
|
6304
|
+
});
|
|
6305
|
+
result.push(point6);
|
|
6306
|
+
if (!(after?.route_type === "wire" && after.x === point6.x && after.y === point6.y && after.layer === point6.to_layer))
|
|
6307
|
+
result.push({
|
|
6308
|
+
route_type: "wire",
|
|
6309
|
+
x: point6.x,
|
|
6310
|
+
y: point6.y,
|
|
6311
|
+
width: toWidth,
|
|
6312
|
+
layer: point6.to_layer
|
|
6313
|
+
});
|
|
6314
|
+
return result;
|
|
6315
|
+
}
|
|
6316
|
+
);
|
|
6317
|
+
const route = addTraceTeardrops(wireContacts, contacts);
|
|
6318
|
+
if (route.length === pcbTrace.route.length) continue;
|
|
6319
|
+
outputs.set(pcbTrace.pcb_trace_id, {
|
|
6320
|
+
original: pcbTrace.route,
|
|
6321
|
+
generated: route
|
|
6322
|
+
});
|
|
6323
|
+
db.pcb_trace.update(pcbTrace.pcb_trace_id, { route });
|
|
6324
|
+
}
|
|
6325
|
+
generatedRoutes.set(trace, outputs);
|
|
6326
|
+
}
|
|
6327
|
+
|
|
6065
6328
|
// lib/components/primitive-components/Trace/Trace_doInitialPcbTraceRender.ts
|
|
6066
6329
|
import { MultilayerIjump } from "@tscircuit/infgrid-ijump-astar";
|
|
6067
6330
|
import "circuit-json";
|
|
@@ -7810,6 +8073,12 @@ var Trace = class extends PrimitiveComponent2 {
|
|
|
7810
8073
|
doInitialPcbManualTraceRender() {
|
|
7811
8074
|
Trace_doInitialPcbManualTraceRender(this);
|
|
7812
8075
|
}
|
|
8076
|
+
doInitialPcbTraceTeardropRender() {
|
|
8077
|
+
Trace_doInitialPcbTraceTeardropRender(this);
|
|
8078
|
+
}
|
|
8079
|
+
updatePcbTraceTeardropRender() {
|
|
8080
|
+
Trace_doInitialPcbTraceTeardropRender(this);
|
|
8081
|
+
}
|
|
7813
8082
|
doInitialPcbTraceRender() {
|
|
7814
8083
|
Trace_doInitialPcbTraceRender(this);
|
|
7815
8084
|
}
|
|
@@ -18957,7 +19226,7 @@ function getSavedAutoroutingPhaseTracesFromPaths({
|
|
|
18957
19226
|
`Saved phase path "${path.connection}" starts at an endpoint already joined by another path`
|
|
18958
19227
|
);
|
|
18959
19228
|
const transform = getSavedPcbTracePathTransform(group, port);
|
|
18960
|
-
const route = path.route.map((point6) => ({
|
|
19229
|
+
const route = resolveSavedTraceRouteWidths(path.route).map((point6) => ({
|
|
18961
19230
|
...point6,
|
|
18962
19231
|
...applyToPoint27(transform, point6)
|
|
18963
19232
|
}));
|
|
@@ -19005,15 +19274,20 @@ function getSavedAutoroutingPhaseTracesFromPaths({
|
|
|
19005
19274
|
pointId: `${pcbTraceId}_exit`
|
|
19006
19275
|
};
|
|
19007
19276
|
}
|
|
19008
|
-
const
|
|
19009
|
-
|
|
19010
|
-
|
|
19277
|
+
const routeWithViaContacts = route.flatMap((point6, index) => {
|
|
19278
|
+
if (point6.route_type !== "via") return [point6];
|
|
19279
|
+
const { fromWidth, toWidth } = getSavedTraceViaContactWidths(
|
|
19280
|
+
route,
|
|
19281
|
+
index,
|
|
19282
|
+
input.minTraceWidth
|
|
19283
|
+
);
|
|
19284
|
+
return [
|
|
19011
19285
|
{
|
|
19012
19286
|
route_type: "wire",
|
|
19013
19287
|
x: point6.x,
|
|
19014
19288
|
y: point6.y,
|
|
19015
19289
|
layer: point6.from_layer,
|
|
19016
|
-
width
|
|
19290
|
+
width: fromWidth
|
|
19017
19291
|
},
|
|
19018
19292
|
point6,
|
|
19019
19293
|
{
|
|
@@ -19021,17 +19295,22 @@ function getSavedAutoroutingPhaseTracesFromPaths({
|
|
|
19021
19295
|
x: point6.x,
|
|
19022
19296
|
y: point6.y,
|
|
19023
19297
|
layer: point6.to_layer,
|
|
19024
|
-
width
|
|
19298
|
+
width: toWidth
|
|
19025
19299
|
}
|
|
19026
|
-
]
|
|
19027
|
-
);
|
|
19300
|
+
];
|
|
19301
|
+
});
|
|
19028
19302
|
if (last.route_type === "via") {
|
|
19303
|
+
const { toWidth } = getSavedTraceViaContactWidths(
|
|
19304
|
+
route,
|
|
19305
|
+
route.length - 1,
|
|
19306
|
+
input.minTraceWidth
|
|
19307
|
+
);
|
|
19029
19308
|
routeWithViaContacts.push({
|
|
19030
19309
|
route_type: "wire",
|
|
19031
19310
|
x: last.x,
|
|
19032
19311
|
y: last.y,
|
|
19033
19312
|
layer: last.to_layer,
|
|
19034
|
-
width
|
|
19313
|
+
width: toWidth
|
|
19035
19314
|
});
|
|
19036
19315
|
}
|
|
19037
19316
|
coveredConnections.add(connection);
|
|
@@ -55163,6 +55442,7 @@ var getSimpleRouteJsonFromCircuitJson = ({
|
|
|
55163
55442
|
subcircuit_id,
|
|
55164
55443
|
minTraceWidth,
|
|
55165
55444
|
minTraceToPadEdgeClearance,
|
|
55445
|
+
minTraceToHoleEdgeClearance,
|
|
55166
55446
|
minViaEdgeToPadEdgeClearance,
|
|
55167
55447
|
minViaHoleEdgeToViaHoleEdgeClearance,
|
|
55168
55448
|
minPlatedHoleDrillEdgeToDrillEdgeClearance,
|
|
@@ -55706,6 +55986,7 @@ var getSimpleRouteJsonFromCircuitJson = ({
|
|
|
55706
55986
|
}
|
|
55707
55987
|
const resolvedMinViaHoleDiameter = minViaHoleDiameter ?? board?.min_via_hole_diameter;
|
|
55708
55988
|
const resolvedMinViaPadDiameter = minViaPadDiameter ?? board?.min_via_pad_diameter;
|
|
55989
|
+
const resolvedMinTraceToHoleEdgeClearance = minTraceToHoleEdgeClearance ?? board?.min_trace_to_hole_edge_clearance;
|
|
55709
55990
|
const resolvedMinTraceToPadEdgeClearance = minTraceToPadEdgeClearance ?? board?.min_trace_to_pad_edge_clearance;
|
|
55710
55991
|
const resolvedMinViaEdgeToPadEdgeClearance = minViaEdgeToPadEdgeClearance ?? board?.min_via_edge_to_pad_edge_clearance;
|
|
55711
55992
|
const resolvedMinViaHoleEdgeToViaHoleEdgeClearance = minViaHoleEdgeToViaHoleEdgeClearance ?? board?.min_via_hole_edge_to_via_hole_edge_clearance;
|
|
@@ -55732,6 +56013,7 @@ var getSimpleRouteJsonFromCircuitJson = ({
|
|
|
55732
56013
|
min_via_hole_diameter: resolvedMinViaHoleDiameter,
|
|
55733
56014
|
min_via_pad_diameter: resolvedMinViaPadDiameter,
|
|
55734
56015
|
minTraceToPadEdgeClearance: resolvedMinTraceToPadEdgeClearance,
|
|
56016
|
+
minTraceToHoleEdgeClearance: resolvedMinTraceToHoleEdgeClearance,
|
|
55735
56017
|
minViaEdgeToPadEdgeClearance: resolvedMinViaEdgeToPadEdgeClearance,
|
|
55736
56018
|
minViaHoleEdgeToViaHoleEdgeClearance: resolvedMinViaHoleEdgeToViaHoleEdgeClearance,
|
|
55737
56019
|
minPlatedHoleDrillEdgeToDrillEdgeClearance: resolvedMinPlatedHoleDrillEdgeToDrillEdgeClearance,
|
|
@@ -63687,7 +63969,7 @@ function getSavedFanoutTraces(breakout, input) {
|
|
|
63687
63969
|
translate14(-localExit.x, -localExit.y)
|
|
63688
63970
|
);
|
|
63689
63971
|
const originalExit = applyToPoint33(transform, localExit);
|
|
63690
|
-
const route = path.route.map((point6) => {
|
|
63972
|
+
const route = resolveSavedTraceRouteWidths(path.route).map((point6) => {
|
|
63691
63973
|
const position = applyToPoint33(transform, point6);
|
|
63692
63974
|
return {
|
|
63693
63975
|
...point6,
|
|
@@ -63722,21 +64004,30 @@ function getSavedFanoutTraces(breakout, input) {
|
|
|
63722
64004
|
throw new Error(
|
|
63723
64005
|
`Saved fanout path "${path.connection}" does not cover its connection endpoints`
|
|
63724
64006
|
);
|
|
63725
|
-
const
|
|
64007
|
+
const startContactWidths = getSavedTraceViaContactWidths(
|
|
64008
|
+
route,
|
|
64009
|
+
0,
|
|
64010
|
+
input.minTraceWidth
|
|
64011
|
+
);
|
|
64012
|
+
const endContactWidths = getSavedTraceViaContactWidths(
|
|
64013
|
+
route,
|
|
64014
|
+
route.length - 1,
|
|
64015
|
+
input.minTraceWidth
|
|
64016
|
+
);
|
|
63726
64017
|
if (first.route_type === "via") {
|
|
63727
64018
|
route.splice(1, 0, {
|
|
63728
64019
|
route_type: "wire",
|
|
63729
64020
|
x: first.x,
|
|
63730
64021
|
y: first.y,
|
|
63731
64022
|
layer: first.to_layer,
|
|
63732
|
-
width
|
|
64023
|
+
width: startContactWidths.toWidth
|
|
63733
64024
|
});
|
|
63734
64025
|
route.unshift({
|
|
63735
64026
|
route_type: "wire",
|
|
63736
64027
|
x: first.x,
|
|
63737
64028
|
y: first.y,
|
|
63738
64029
|
layer: first.from_layer,
|
|
63739
|
-
width
|
|
64030
|
+
width: startContactWidths.fromWidth
|
|
63740
64031
|
});
|
|
63741
64032
|
}
|
|
63742
64033
|
if (last.route_type === "via") {
|
|
@@ -63745,14 +64036,14 @@ function getSavedFanoutTraces(breakout, input) {
|
|
|
63745
64036
|
x: last.x,
|
|
63746
64037
|
y: last.y,
|
|
63747
64038
|
layer: last.from_layer,
|
|
63748
|
-
width
|
|
64039
|
+
width: endContactWidths.fromWidth
|
|
63749
64040
|
});
|
|
63750
64041
|
route.push({
|
|
63751
64042
|
route_type: "wire",
|
|
63752
64043
|
x: last.x,
|
|
63753
64044
|
y: last.y,
|
|
63754
64045
|
layer: last.to_layer,
|
|
63755
|
-
width
|
|
64046
|
+
width: endContactWidths.toWidth
|
|
63756
64047
|
});
|
|
63757
64048
|
}
|
|
63758
64049
|
if (last.route_type === "via") {
|
|
@@ -63761,7 +64052,7 @@ function getSavedFanoutTraces(breakout, input) {
|
|
|
63761
64052
|
x: last.x,
|
|
63762
64053
|
y: last.y,
|
|
63763
64054
|
layer: last.to_layer,
|
|
63764
|
-
width
|
|
64055
|
+
width: endContactWidths.toWidth
|
|
63765
64056
|
});
|
|
63766
64057
|
}
|
|
63767
64058
|
coveredConnections.add(connection);
|
|
@@ -63896,13 +64187,14 @@ function getDrcTolerancesFromAutoroutingPhaseProps(phaseProps) {
|
|
|
63896
64187
|
minViaHoleEdgeToViaHoleEdgeClearance,
|
|
63897
64188
|
minPlatedHoleDrillEdgeToDrillEdgeClearance,
|
|
63898
64189
|
minTraceToPadEdgeClearance,
|
|
64190
|
+
minTraceToHoleEdgeClearance,
|
|
63899
64191
|
minPadEdgeToPadEdgeClearance,
|
|
63900
64192
|
minBoardEdgeClearance,
|
|
63901
64193
|
minViaEdgeToPadEdgeClearance,
|
|
63902
64194
|
minViaHoleDiameter,
|
|
63903
64195
|
minViaPadDiameter
|
|
63904
64196
|
} = phaseProps;
|
|
63905
|
-
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) {
|
|
64197
|
+
if (minTraceWidth === void 0 && minViaHoleEdgeToViaHoleEdgeClearance === void 0 && minPlatedHoleDrillEdgeToDrillEdgeClearance === void 0 && minTraceToPadEdgeClearance === void 0 && minTraceToHoleEdgeClearance === void 0 && minPadEdgeToPadEdgeClearance === void 0 && minBoardEdgeClearance === void 0 && minViaEdgeToPadEdgeClearance === void 0 && minViaHoleDiameter === void 0 && minViaPadDiameter === void 0) {
|
|
63906
64198
|
return void 0;
|
|
63907
64199
|
}
|
|
63908
64200
|
return {
|
|
@@ -63914,6 +64206,7 @@ function getDrcTolerancesFromAutoroutingPhaseProps(phaseProps) {
|
|
|
63914
64206
|
minPlatedHoleDrillEdgeToDrillEdgeClearance
|
|
63915
64207
|
),
|
|
63916
64208
|
minTraceToPadEdgeClearance: toParsedDistance(minTraceToPadEdgeClearance),
|
|
64209
|
+
minTraceToHoleEdgeClearance: toParsedDistance(minTraceToHoleEdgeClearance),
|
|
63917
64210
|
minPadEdgeToPadEdgeClearance: toParsedDistance(
|
|
63918
64211
|
minPadEdgeToPadEdgeClearance
|
|
63919
64212
|
),
|
|
@@ -64162,7 +64455,7 @@ function Group_getRoutingPhasePlans(group) {
|
|
|
64162
64455
|
var package_default = {
|
|
64163
64456
|
name: "@tscircuit/core",
|
|
64164
64457
|
type: "module",
|
|
64165
|
-
version: "0.0.
|
|
64458
|
+
version: "0.0.2006",
|
|
64166
64459
|
types: "dist/index.d.ts",
|
|
64167
64460
|
main: "dist/index.js",
|
|
64168
64461
|
module: "dist/index.js",
|
|
@@ -64201,7 +64494,7 @@ var package_default = {
|
|
|
64201
64494
|
"@tscircuit/checks": "^0.0.224",
|
|
64202
64495
|
"@tscircuit/circuit-json-util": "^0.0.116",
|
|
64203
64496
|
"@tscircuit/common": "^0.0.20",
|
|
64204
|
-
"@tscircuit/copper-pour-solver": "^0.0.
|
|
64497
|
+
"@tscircuit/copper-pour-solver": "^0.0.62",
|
|
64205
64498
|
"@tscircuit/create-fdm-enclosure": "0.0.4",
|
|
64206
64499
|
"@tscircuit/fanout-solver": "0.0.78",
|
|
64207
64500
|
"@tscircuit/flex-utils": "https://jscdn.tscircuit.com/@tscircuit/flex-utils/0.0.5.tgz",
|
|
@@ -64210,14 +64503,14 @@ var package_default = {
|
|
|
64210
64503
|
"@tscircuit/implicit-copper-pour-solver": "github:tscircuit/implicit-copper-pour-solver#a5cbbda0cd65fd4707c5c1af25779837c25aba92",
|
|
64211
64504
|
"@tscircuit/infer-cable-insertion-point": "^0.0.4",
|
|
64212
64505
|
"@tscircuit/infgrid-ijump-astar": "^0.0.35",
|
|
64213
|
-
"@tscircuit/jlcpcb-manufacturing-specs": "git+https://github.com/tscircuit/jlcpcb-manufacturing-specs#
|
|
64506
|
+
"@tscircuit/jlcpcb-manufacturing-specs": "git+https://github.com/tscircuit/jlcpcb-manufacturing-specs#23260504fceffff2d64bf11720f74e974d1d9321",
|
|
64214
64507
|
"@tscircuit/krt-wasm": "^0.1.1",
|
|
64215
64508
|
"@tscircuit/log-soup": "^1.0.2",
|
|
64216
64509
|
"@tscircuit/matchpack": "^0.0.97",
|
|
64217
64510
|
"@tscircuit/math-utils": "^0.0.36",
|
|
64218
64511
|
"@tscircuit/miniflex": "^0.0.4",
|
|
64219
64512
|
"@tscircuit/ngspice-spice-engine": "^0.0.20",
|
|
64220
|
-
"@tscircuit/props": "^0.0.
|
|
64513
|
+
"@tscircuit/props": "^0.0.667",
|
|
64221
64514
|
"@tscircuit/schematic-match-adapt": "^0.0.18",
|
|
64222
64515
|
"@tscircuit/schematic-trace-solver": "^0.0.212",
|
|
64223
64516
|
"@tscircuit/solver-utils": "^0.0.16",
|
|
@@ -64233,12 +64526,12 @@ var package_default = {
|
|
|
64233
64526
|
"bun-match-svg": "0.0.12",
|
|
64234
64527
|
"calculate-elbow": "^0.0.12",
|
|
64235
64528
|
"chokidar-cli": "^3.0.0",
|
|
64236
|
-
"circuit-json": "^0.0.
|
|
64529
|
+
"circuit-json": "^0.0.506",
|
|
64237
64530
|
"circuit-json-to-bpc": "^0.0.13",
|
|
64238
64531
|
"circuit-json-to-connectivity-map": "^0.0.30",
|
|
64239
64532
|
"circuit-json-to-gltf": "^0.0.133",
|
|
64240
64533
|
"circuit-json-to-spice": "^0.0.45",
|
|
64241
|
-
"circuit-to-svg": "^0.0.
|
|
64534
|
+
"circuit-to-svg": "^0.0.433",
|
|
64242
64535
|
concurrently: "^9.1.2",
|
|
64243
64536
|
"connectivity-map": "^1.0.0",
|
|
64244
64537
|
debug: "^4.3.6",
|
|
@@ -64296,8 +64589,8 @@ var package_default = {
|
|
|
64296
64589
|
},
|
|
64297
64590
|
overrides: {
|
|
64298
64591
|
"@tscircuit/circuit-json-util": "^0.0.116",
|
|
64299
|
-
"@tscircuit/props": "^0.0.
|
|
64300
|
-
"circuit-json": "^0.0.
|
|
64592
|
+
"@tscircuit/props": "^0.0.667",
|
|
64593
|
+
"circuit-json": "^0.0.506"
|
|
64301
64594
|
}
|
|
64302
64595
|
};
|
|
64303
64596
|
|
|
@@ -64496,6 +64789,7 @@ function Group_applyDrcTolerancesToSimpleRouteJson(simpleRouteJson, drcTolerance
|
|
|
64496
64789
|
const minTraceWidth = drcTolerances.minTraceWidth ?? simpleRouteJson.minTraceWidth;
|
|
64497
64790
|
const minViaHoleDiameter = drcTolerances.minViaHoleDiameter ?? simpleRouteJson.minViaHoleDiameter;
|
|
64498
64791
|
const minViaPadDiameter = drcTolerances.minViaPadDiameter ?? simpleRouteJson.minViaPadDiameter;
|
|
64792
|
+
const minTraceToHoleEdgeClearance = drcTolerances.minTraceToHoleEdgeClearance ?? simpleRouteJson.minTraceToHoleEdgeClearance;
|
|
64499
64793
|
const minTraceToPadEdgeClearance = drcTolerances.minTraceToPadEdgeClearance ?? simpleRouteJson.minTraceToPadEdgeClearance;
|
|
64500
64794
|
const minViaEdgeToPadEdgeClearance = drcTolerances.minViaEdgeToPadEdgeClearance ?? simpleRouteJson.minViaEdgeToPadEdgeClearance;
|
|
64501
64795
|
const minViaHoleEdgeToViaHoleEdgeClearance = drcTolerances.minViaHoleEdgeToViaHoleEdgeClearance ?? simpleRouteJson.minViaHoleEdgeToViaHoleEdgeClearance;
|
|
@@ -64515,6 +64809,7 @@ function Group_applyDrcTolerancesToSimpleRouteJson(simpleRouteJson, drcTolerance
|
|
|
64515
64809
|
min_via_hole_diameter: minViaHoleDiameter,
|
|
64516
64810
|
min_via_pad_diameter: minViaPadDiameter,
|
|
64517
64811
|
minTraceToPadEdgeClearance,
|
|
64812
|
+
minTraceToHoleEdgeClearance,
|
|
64518
64813
|
minViaEdgeToPadEdgeClearance,
|
|
64519
64814
|
minViaHoleEdgeToViaHoleEdgeClearance,
|
|
64520
64815
|
minPlatedHoleDrillEdgeToDrillEdgeClearance,
|
|
@@ -70119,6 +70414,7 @@ var Board = class extends Group5 {
|
|
|
70119
70414
|
min_via_pad_diameter: resolvedMinViaPadDiameter,
|
|
70120
70415
|
min_via_hole_edge_to_via_hole_edge_clearance: subcircuitProps2.minViaHoleEdgeToViaHoleEdgeClearance ?? jlcMinTolerances.min_via_hole_edge_to_via_hole_edge_clearance,
|
|
70121
70416
|
min_via_edge_to_pad_edge_clearance: subcircuitProps2.minViaEdgeToPadEdgeClearance ?? jlcMinTolerances.min_via_edge_to_pad_edge_clearance,
|
|
70417
|
+
min_trace_to_hole_edge_clearance: subcircuitProps2.minTraceToHoleEdgeClearance ?? jlcMinTolerances.min_trace_to_hole_edge_clearance,
|
|
70122
70418
|
min_trace_to_pad_edge_clearance: subcircuitProps2.minTraceToPadEdgeClearance ?? jlcMinTolerances.min_trace_to_pad_edge_clearance,
|
|
70123
70419
|
min_pad_edge_to_pad_edge_clearance: subcircuitProps2.minPadEdgeToPadEdgeClearance ?? jlcMinTolerances.min_pad_edge_to_pad_edge_clearance,
|
|
70124
70420
|
min_plated_hole_drill_edge_to_drill_edge_clearance: subcircuitProps2.minPlatedHoleDrillEdgeToDrillEdgeClearance ?? jlcMinTolerances.min_plated_hole_drill_edge_to_drill_edge_clearance,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tscircuit/core",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.2007",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.js",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"@tscircuit/checks": "^0.0.224",
|
|
41
41
|
"@tscircuit/circuit-json-util": "^0.0.116",
|
|
42
42
|
"@tscircuit/common": "^0.0.20",
|
|
43
|
-
"@tscircuit/copper-pour-solver": "^0.0.
|
|
43
|
+
"@tscircuit/copper-pour-solver": "^0.0.62",
|
|
44
44
|
"@tscircuit/create-fdm-enclosure": "0.0.4",
|
|
45
45
|
"@tscircuit/fanout-solver": "0.0.78",
|
|
46
46
|
"@tscircuit/flex-utils": "https://jscdn.tscircuit.com/@tscircuit/flex-utils/0.0.5.tgz",
|
|
@@ -49,14 +49,14 @@
|
|
|
49
49
|
"@tscircuit/implicit-copper-pour-solver": "github:tscircuit/implicit-copper-pour-solver#a5cbbda0cd65fd4707c5c1af25779837c25aba92",
|
|
50
50
|
"@tscircuit/infer-cable-insertion-point": "^0.0.4",
|
|
51
51
|
"@tscircuit/infgrid-ijump-astar": "^0.0.35",
|
|
52
|
-
"@tscircuit/jlcpcb-manufacturing-specs": "git+https://github.com/tscircuit/jlcpcb-manufacturing-specs#
|
|
52
|
+
"@tscircuit/jlcpcb-manufacturing-specs": "git+https://github.com/tscircuit/jlcpcb-manufacturing-specs#23260504fceffff2d64bf11720f74e974d1d9321",
|
|
53
53
|
"@tscircuit/krt-wasm": "^0.1.1",
|
|
54
54
|
"@tscircuit/log-soup": "^1.0.2",
|
|
55
55
|
"@tscircuit/matchpack": "^0.0.97",
|
|
56
56
|
"@tscircuit/math-utils": "^0.0.36",
|
|
57
57
|
"@tscircuit/miniflex": "^0.0.4",
|
|
58
58
|
"@tscircuit/ngspice-spice-engine": "^0.0.20",
|
|
59
|
-
"@tscircuit/props": "^0.0.
|
|
59
|
+
"@tscircuit/props": "^0.0.667",
|
|
60
60
|
"@tscircuit/schematic-match-adapt": "^0.0.18",
|
|
61
61
|
"@tscircuit/schematic-trace-solver": "^0.0.212",
|
|
62
62
|
"@tscircuit/solver-utils": "^0.0.16",
|
|
@@ -72,12 +72,12 @@
|
|
|
72
72
|
"bun-match-svg": "0.0.12",
|
|
73
73
|
"calculate-elbow": "^0.0.12",
|
|
74
74
|
"chokidar-cli": "^3.0.0",
|
|
75
|
-
"circuit-json": "^0.0.
|
|
75
|
+
"circuit-json": "^0.0.506",
|
|
76
76
|
"circuit-json-to-bpc": "^0.0.13",
|
|
77
77
|
"circuit-json-to-connectivity-map": "^0.0.30",
|
|
78
78
|
"circuit-json-to-gltf": "^0.0.133",
|
|
79
79
|
"circuit-json-to-spice": "^0.0.45",
|
|
80
|
-
"circuit-to-svg": "^0.0.
|
|
80
|
+
"circuit-to-svg": "^0.0.433",
|
|
81
81
|
"concurrently": "^9.1.2",
|
|
82
82
|
"connectivity-map": "^1.0.0",
|
|
83
83
|
"debug": "^4.3.6",
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
},
|
|
136
136
|
"overrides": {
|
|
137
137
|
"@tscircuit/circuit-json-util": "^0.0.116",
|
|
138
|
-
"@tscircuit/props": "^0.0.
|
|
139
|
-
"circuit-json": "^0.0.
|
|
138
|
+
"@tscircuit/props": "^0.0.667",
|
|
139
|
+
"circuit-json": "^0.0.506"
|
|
140
140
|
}
|
|
141
141
|
}
|