@tscircuit/core 0.0.866 → 0.0.867
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 +228 -0
- package/dist/index.js +103 -4
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -20671,6 +20671,7 @@ declare class Footprint extends PrimitiveComponent<typeof footprintProps> {
|
|
|
20671
20671
|
get config(): {
|
|
20672
20672
|
componentName: string;
|
|
20673
20673
|
zodProps: zod.ZodObject<{
|
|
20674
|
+
children: zod.ZodOptional<zod.ZodAny>;
|
|
20674
20675
|
originalLayer: zod.ZodOptional<zod.ZodDefault<zod.ZodEffects<zod.ZodUnion<[zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, zod.ZodObject<{
|
|
20675
20676
|
name: zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
|
|
20676
20677
|
}, "strip", zod.ZodTypeAny, {
|
|
@@ -20680,9 +20681,14 @@ declare class Footprint extends PrimitiveComponent<typeof footprintProps> {
|
|
|
20680
20681
|
}>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
|
|
20681
20682
|
name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
|
|
20682
20683
|
}>>>;
|
|
20684
|
+
circuitJson: zod.ZodOptional<zod.ZodArray<zod.ZodAny, "many">>;
|
|
20683
20685
|
}, "strip", zod.ZodTypeAny, {
|
|
20686
|
+
children?: any;
|
|
20687
|
+
circuitJson?: any[] | undefined;
|
|
20684
20688
|
originalLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
|
|
20685
20689
|
}, {
|
|
20690
|
+
children?: any;
|
|
20691
|
+
circuitJson?: any[] | undefined;
|
|
20686
20692
|
originalLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
|
|
20687
20693
|
name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
|
|
20688
20694
|
} | undefined;
|
|
@@ -22387,6 +22393,154 @@ declare class PlatedHole extends PrimitiveComponent<typeof platedHoleProps> {
|
|
|
22387
22393
|
portHints?: (string | number)[] | undefined;
|
|
22388
22394
|
holeOffsetX?: string | number | undefined;
|
|
22389
22395
|
holeOffsetY?: string | number | undefined;
|
|
22396
|
+
}>, zod.ZodObject<Omit<{
|
|
22397
|
+
pcbX: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22398
|
+
pcbY: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22399
|
+
pcbOffsetX: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22400
|
+
pcbOffsetY: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22401
|
+
pcbRotation: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22402
|
+
pcbPositionAnchor: zod.ZodOptional<zod.ZodString>;
|
|
22403
|
+
pcbPositionMode: zod.ZodOptional<zod.ZodEnum<["relative_to_group_anchor", "auto", "relative_to_board_anchor", "relative_to_component_anchor"]>>;
|
|
22404
|
+
layer: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, zod.ZodObject<{
|
|
22405
|
+
name: zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
|
|
22406
|
+
}, "strip", zod.ZodTypeAny, {
|
|
22407
|
+
name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
|
|
22408
|
+
}, {
|
|
22409
|
+
name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
|
|
22410
|
+
}>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
|
|
22411
|
+
name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
|
|
22412
|
+
}>>;
|
|
22413
|
+
pcbMarginTop: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22414
|
+
pcbMarginRight: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22415
|
+
pcbMarginBottom: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22416
|
+
pcbMarginLeft: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22417
|
+
pcbMarginX: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22418
|
+
pcbMarginY: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22419
|
+
pcbStyle: zod.ZodOptional<zod.ZodObject<{
|
|
22420
|
+
silkscreenFontSize: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22421
|
+
silkscreenTextPosition: zod.ZodOptional<zod.ZodUnion<[zod.ZodEnum<["centered", "outside", "none"]>, zod.ZodObject<{
|
|
22422
|
+
offsetX: zod.ZodNumber;
|
|
22423
|
+
offsetY: zod.ZodNumber;
|
|
22424
|
+
}, "strip", zod.ZodTypeAny, {
|
|
22425
|
+
offsetX: number;
|
|
22426
|
+
offsetY: number;
|
|
22427
|
+
}, {
|
|
22428
|
+
offsetX: number;
|
|
22429
|
+
offsetY: number;
|
|
22430
|
+
}>]>>;
|
|
22431
|
+
silkscreenTextVisibility: zod.ZodOptional<zod.ZodEnum<["hidden", "visible", "inherit"]>>;
|
|
22432
|
+
}, "strip", zod.ZodTypeAny, {
|
|
22433
|
+
silkscreenFontSize?: number | undefined;
|
|
22434
|
+
silkscreenTextPosition?: "centered" | "outside" | "none" | {
|
|
22435
|
+
offsetX: number;
|
|
22436
|
+
offsetY: number;
|
|
22437
|
+
} | undefined;
|
|
22438
|
+
silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
|
|
22439
|
+
}, {
|
|
22440
|
+
silkscreenFontSize?: string | number | undefined;
|
|
22441
|
+
silkscreenTextPosition?: "centered" | "outside" | "none" | {
|
|
22442
|
+
offsetX: number;
|
|
22443
|
+
offsetY: number;
|
|
22444
|
+
} | undefined;
|
|
22445
|
+
silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
|
|
22446
|
+
}>>;
|
|
22447
|
+
pcbRelative: zod.ZodOptional<zod.ZodBoolean>;
|
|
22448
|
+
relative: zod.ZodOptional<zod.ZodBoolean>;
|
|
22449
|
+
}, "pcbRotation" | "layer"> & {
|
|
22450
|
+
name: zod.ZodOptional<zod.ZodString>;
|
|
22451
|
+
connectsTo: zod.ZodOptional<zod.ZodUnion<[zod.ZodString, zod.ZodArray<zod.ZodString, "many">]>>;
|
|
22452
|
+
shape: zod.ZodLiteral<"hole_with_polygon_pad">;
|
|
22453
|
+
holeShape: zod.ZodEnum<["circle", "oval", "pill", "rotated_pill"]>;
|
|
22454
|
+
holeDiameter: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22455
|
+
holeWidth: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22456
|
+
holeHeight: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
|
|
22457
|
+
padOutline: zod.ZodArray<zod.ZodObject<{
|
|
22458
|
+
x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
22459
|
+
y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
22460
|
+
}, "strip", zod.ZodTypeAny, {
|
|
22461
|
+
x: number;
|
|
22462
|
+
y: number;
|
|
22463
|
+
}, {
|
|
22464
|
+
x: string | number;
|
|
22465
|
+
y: string | number;
|
|
22466
|
+
}>, "many">;
|
|
22467
|
+
holeOffsetX: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
22468
|
+
holeOffsetY: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
22469
|
+
portHints: zod.ZodOptional<zod.ZodArray<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, "many">>;
|
|
22470
|
+
}, "strip", zod.ZodTypeAny, {
|
|
22471
|
+
shape: "hole_with_polygon_pad";
|
|
22472
|
+
holeOffsetX: number;
|
|
22473
|
+
holeOffsetY: number;
|
|
22474
|
+
holeShape: "circle" | "oval" | "pill" | "rotated_pill";
|
|
22475
|
+
padOutline: {
|
|
22476
|
+
x: number;
|
|
22477
|
+
y: number;
|
|
22478
|
+
}[];
|
|
22479
|
+
pcbX?: number | undefined;
|
|
22480
|
+
pcbY?: number | undefined;
|
|
22481
|
+
pcbOffsetX?: number | undefined;
|
|
22482
|
+
pcbOffsetY?: number | undefined;
|
|
22483
|
+
pcbPositionAnchor?: string | undefined;
|
|
22484
|
+
pcbPositionMode?: "relative_to_group_anchor" | "auto" | "relative_to_board_anchor" | "relative_to_component_anchor" | undefined;
|
|
22485
|
+
pcbMarginTop?: number | undefined;
|
|
22486
|
+
pcbMarginRight?: number | undefined;
|
|
22487
|
+
pcbMarginBottom?: number | undefined;
|
|
22488
|
+
pcbMarginLeft?: number | undefined;
|
|
22489
|
+
pcbMarginX?: number | undefined;
|
|
22490
|
+
pcbMarginY?: number | undefined;
|
|
22491
|
+
pcbStyle?: {
|
|
22492
|
+
silkscreenFontSize?: number | undefined;
|
|
22493
|
+
silkscreenTextPosition?: "centered" | "outside" | "none" | {
|
|
22494
|
+
offsetX: number;
|
|
22495
|
+
offsetY: number;
|
|
22496
|
+
} | undefined;
|
|
22497
|
+
silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
|
|
22498
|
+
} | undefined;
|
|
22499
|
+
pcbRelative?: boolean | undefined;
|
|
22500
|
+
relative?: boolean | undefined;
|
|
22501
|
+
name?: string | undefined;
|
|
22502
|
+
connectsTo?: string | string[] | undefined;
|
|
22503
|
+
holeDiameter?: number | undefined;
|
|
22504
|
+
portHints?: (string | number)[] | undefined;
|
|
22505
|
+
holeWidth?: number | undefined;
|
|
22506
|
+
holeHeight?: number | undefined;
|
|
22507
|
+
}, {
|
|
22508
|
+
shape: "hole_with_polygon_pad";
|
|
22509
|
+
holeOffsetX: string | number;
|
|
22510
|
+
holeOffsetY: string | number;
|
|
22511
|
+
holeShape: "circle" | "oval" | "pill" | "rotated_pill";
|
|
22512
|
+
padOutline: {
|
|
22513
|
+
x: string | number;
|
|
22514
|
+
y: string | number;
|
|
22515
|
+
}[];
|
|
22516
|
+
pcbX?: string | number | undefined;
|
|
22517
|
+
pcbY?: string | number | undefined;
|
|
22518
|
+
pcbOffsetX?: string | number | undefined;
|
|
22519
|
+
pcbOffsetY?: string | number | undefined;
|
|
22520
|
+
pcbPositionAnchor?: string | undefined;
|
|
22521
|
+
pcbPositionMode?: "relative_to_group_anchor" | "auto" | "relative_to_board_anchor" | "relative_to_component_anchor" | undefined;
|
|
22522
|
+
pcbMarginTop?: string | number | undefined;
|
|
22523
|
+
pcbMarginRight?: string | number | undefined;
|
|
22524
|
+
pcbMarginBottom?: string | number | undefined;
|
|
22525
|
+
pcbMarginLeft?: string | number | undefined;
|
|
22526
|
+
pcbMarginX?: string | number | undefined;
|
|
22527
|
+
pcbMarginY?: string | number | undefined;
|
|
22528
|
+
pcbStyle?: {
|
|
22529
|
+
silkscreenFontSize?: string | number | undefined;
|
|
22530
|
+
silkscreenTextPosition?: "centered" | "outside" | "none" | {
|
|
22531
|
+
offsetX: number;
|
|
22532
|
+
offsetY: number;
|
|
22533
|
+
} | undefined;
|
|
22534
|
+
silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
|
|
22535
|
+
} | undefined;
|
|
22536
|
+
pcbRelative?: boolean | undefined;
|
|
22537
|
+
relative?: boolean | undefined;
|
|
22538
|
+
name?: string | undefined;
|
|
22539
|
+
connectsTo?: string | string[] | undefined;
|
|
22540
|
+
holeDiameter?: string | number | undefined;
|
|
22541
|
+
portHints?: (string | number)[] | undefined;
|
|
22542
|
+
holeWidth?: string | number | undefined;
|
|
22543
|
+
holeHeight?: string | number | undefined;
|
|
22390
22544
|
}>]>, {
|
|
22391
22545
|
shape: "circle";
|
|
22392
22546
|
holeDiameter: number;
|
|
@@ -22557,6 +22711,43 @@ declare class PlatedHole extends PrimitiveComponent<typeof platedHoleProps> {
|
|
|
22557
22711
|
portHints?: (string | number)[] | undefined;
|
|
22558
22712
|
holeOffsetX?: number | undefined;
|
|
22559
22713
|
holeOffsetY?: number | undefined;
|
|
22714
|
+
} | {
|
|
22715
|
+
shape: "hole_with_polygon_pad";
|
|
22716
|
+
holeOffsetX: number;
|
|
22717
|
+
holeOffsetY: number;
|
|
22718
|
+
holeShape: "circle" | "oval" | "pill" | "rotated_pill";
|
|
22719
|
+
padOutline: {
|
|
22720
|
+
x: number;
|
|
22721
|
+
y: number;
|
|
22722
|
+
}[];
|
|
22723
|
+
pcbX?: number | undefined;
|
|
22724
|
+
pcbY?: number | undefined;
|
|
22725
|
+
pcbOffsetX?: number | undefined;
|
|
22726
|
+
pcbOffsetY?: number | undefined;
|
|
22727
|
+
pcbPositionAnchor?: string | undefined;
|
|
22728
|
+
pcbPositionMode?: "relative_to_group_anchor" | "auto" | "relative_to_board_anchor" | "relative_to_component_anchor" | undefined;
|
|
22729
|
+
pcbMarginTop?: number | undefined;
|
|
22730
|
+
pcbMarginRight?: number | undefined;
|
|
22731
|
+
pcbMarginBottom?: number | undefined;
|
|
22732
|
+
pcbMarginLeft?: number | undefined;
|
|
22733
|
+
pcbMarginX?: number | undefined;
|
|
22734
|
+
pcbMarginY?: number | undefined;
|
|
22735
|
+
pcbStyle?: {
|
|
22736
|
+
silkscreenFontSize?: number | undefined;
|
|
22737
|
+
silkscreenTextPosition?: "centered" | "outside" | "none" | {
|
|
22738
|
+
offsetX: number;
|
|
22739
|
+
offsetY: number;
|
|
22740
|
+
} | undefined;
|
|
22741
|
+
silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
|
|
22742
|
+
} | undefined;
|
|
22743
|
+
pcbRelative?: boolean | undefined;
|
|
22744
|
+
relative?: boolean | undefined;
|
|
22745
|
+
name?: string | undefined;
|
|
22746
|
+
connectsTo?: string | string[] | undefined;
|
|
22747
|
+
holeDiameter?: number | undefined;
|
|
22748
|
+
portHints?: (string | number)[] | undefined;
|
|
22749
|
+
holeWidth?: number | undefined;
|
|
22750
|
+
holeHeight?: number | undefined;
|
|
22560
22751
|
}, {
|
|
22561
22752
|
shape: "circle";
|
|
22562
22753
|
holeDiameter: string | number;
|
|
@@ -22727,6 +22918,43 @@ declare class PlatedHole extends PrimitiveComponent<typeof platedHoleProps> {
|
|
|
22727
22918
|
portHints?: (string | number)[] | undefined;
|
|
22728
22919
|
holeOffsetX?: string | number | undefined;
|
|
22729
22920
|
holeOffsetY?: string | number | undefined;
|
|
22921
|
+
} | {
|
|
22922
|
+
shape: "hole_with_polygon_pad";
|
|
22923
|
+
holeOffsetX: string | number;
|
|
22924
|
+
holeOffsetY: string | number;
|
|
22925
|
+
holeShape: "circle" | "oval" | "pill" | "rotated_pill";
|
|
22926
|
+
padOutline: {
|
|
22927
|
+
x: string | number;
|
|
22928
|
+
y: string | number;
|
|
22929
|
+
}[];
|
|
22930
|
+
pcbX?: string | number | undefined;
|
|
22931
|
+
pcbY?: string | number | undefined;
|
|
22932
|
+
pcbOffsetX?: string | number | undefined;
|
|
22933
|
+
pcbOffsetY?: string | number | undefined;
|
|
22934
|
+
pcbPositionAnchor?: string | undefined;
|
|
22935
|
+
pcbPositionMode?: "relative_to_group_anchor" | "auto" | "relative_to_board_anchor" | "relative_to_component_anchor" | undefined;
|
|
22936
|
+
pcbMarginTop?: string | number | undefined;
|
|
22937
|
+
pcbMarginRight?: string | number | undefined;
|
|
22938
|
+
pcbMarginBottom?: string | number | undefined;
|
|
22939
|
+
pcbMarginLeft?: string | number | undefined;
|
|
22940
|
+
pcbMarginX?: string | number | undefined;
|
|
22941
|
+
pcbMarginY?: string | number | undefined;
|
|
22942
|
+
pcbStyle?: {
|
|
22943
|
+
silkscreenFontSize?: string | number | undefined;
|
|
22944
|
+
silkscreenTextPosition?: "centered" | "outside" | "none" | {
|
|
22945
|
+
offsetX: number;
|
|
22946
|
+
offsetY: number;
|
|
22947
|
+
} | undefined;
|
|
22948
|
+
silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
|
|
22949
|
+
} | undefined;
|
|
22950
|
+
pcbRelative?: boolean | undefined;
|
|
22951
|
+
relative?: boolean | undefined;
|
|
22952
|
+
name?: string | undefined;
|
|
22953
|
+
connectsTo?: string | string[] | undefined;
|
|
22954
|
+
holeDiameter?: string | number | undefined;
|
|
22955
|
+
portHints?: (string | number)[] | undefined;
|
|
22956
|
+
holeWidth?: string | number | undefined;
|
|
22957
|
+
holeHeight?: string | number | undefined;
|
|
22730
22958
|
}>;
|
|
22731
22959
|
};
|
|
22732
22960
|
getAvailablePcbLayers(): string[];
|
package/dist/index.js
CHANGED
|
@@ -2434,6 +2434,24 @@ var PlatedHole = class extends PrimitiveComponent2 {
|
|
|
2434
2434
|
if (props.shape === "pill_hole_with_rect_pad") {
|
|
2435
2435
|
return { width: props.rectPadWidth, height: props.rectPadHeight };
|
|
2436
2436
|
}
|
|
2437
|
+
if (props.shape === "hole_with_polygon_pad") {
|
|
2438
|
+
if (!props.padOutline || props.padOutline.length === 0) {
|
|
2439
|
+
throw new Error(
|
|
2440
|
+
"padOutline is required for hole_with_polygon_pad shape"
|
|
2441
|
+
);
|
|
2442
|
+
}
|
|
2443
|
+
const xs = props.padOutline.map(
|
|
2444
|
+
(p) => typeof p.x === "number" ? p.x : parseFloat(String(p.x))
|
|
2445
|
+
);
|
|
2446
|
+
const ys = props.padOutline.map(
|
|
2447
|
+
(p) => typeof p.y === "number" ? p.y : parseFloat(String(p.y))
|
|
2448
|
+
);
|
|
2449
|
+
const minX = Math.min(...xs);
|
|
2450
|
+
const maxX = Math.max(...xs);
|
|
2451
|
+
const minY = Math.min(...ys);
|
|
2452
|
+
const maxY = Math.max(...ys);
|
|
2453
|
+
return { width: maxX - minX, height: maxY - minY };
|
|
2454
|
+
}
|
|
2437
2455
|
throw new Error(
|
|
2438
2456
|
`getPcbSize for shape "${props.shape}" not implemented for ${this.componentName}`
|
|
2439
2457
|
);
|
|
@@ -2626,6 +2644,34 @@ var PlatedHole = class extends PrimitiveComponent2 {
|
|
|
2626
2644
|
pcb_group_id: this.getGroup()?.pcb_group_id ?? void 0
|
|
2627
2645
|
});
|
|
2628
2646
|
this.pcb_plated_hole_id = pcb_plated_hole.pcb_plated_hole_id;
|
|
2647
|
+
} else if (props.shape === "hole_with_polygon_pad") {
|
|
2648
|
+
const padOutline = (props.padOutline || []).map((point) => {
|
|
2649
|
+
const x = typeof point.x === "number" ? point.x : parseFloat(String(point.x));
|
|
2650
|
+
const y = typeof point.y === "number" ? point.y : parseFloat(String(point.y));
|
|
2651
|
+
return {
|
|
2652
|
+
x,
|
|
2653
|
+
y
|
|
2654
|
+
};
|
|
2655
|
+
});
|
|
2656
|
+
const pcb_plated_hole = db.pcb_plated_hole.insert({
|
|
2657
|
+
pcb_component_id,
|
|
2658
|
+
pcb_port_id: this.matchedPort?.pcb_port_id,
|
|
2659
|
+
shape: "hole_with_polygon_pad",
|
|
2660
|
+
hole_shape: props.holeShape || "circle",
|
|
2661
|
+
hole_diameter: props.holeDiameter,
|
|
2662
|
+
hole_width: props.holeWidth,
|
|
2663
|
+
hole_height: props.holeHeight,
|
|
2664
|
+
pad_outline: padOutline,
|
|
2665
|
+
hole_offset_x: typeof props.holeOffsetX === "number" ? props.holeOffsetX : parseFloat(String(props.holeOffsetX || 0)),
|
|
2666
|
+
hole_offset_y: typeof props.holeOffsetY === "number" ? props.holeOffsetY : parseFloat(String(props.holeOffsetY || 0)),
|
|
2667
|
+
port_hints: this.getNameAndAliases(),
|
|
2668
|
+
x: position.x,
|
|
2669
|
+
y: position.y,
|
|
2670
|
+
layers: ["top", "bottom"],
|
|
2671
|
+
subcircuit_id: subcircuit?.subcircuit_id ?? void 0,
|
|
2672
|
+
pcb_group_id: this.getGroup()?.pcb_group_id ?? void 0
|
|
2673
|
+
});
|
|
2674
|
+
this.pcb_plated_hole_id = pcb_plated_hole.pcb_plated_hole_id;
|
|
2629
2675
|
}
|
|
2630
2676
|
}
|
|
2631
2677
|
doInitialPcbPortAttachment() {
|
|
@@ -3175,6 +3221,22 @@ var createComponentsFromCircuitJson = ({
|
|
|
3175
3221
|
holeOffsetY: elm.hole_offset_y
|
|
3176
3222
|
})
|
|
3177
3223
|
);
|
|
3224
|
+
} else if (elm.shape === "hole_with_polygon_pad") {
|
|
3225
|
+
components.push(
|
|
3226
|
+
new PlatedHole({
|
|
3227
|
+
pcbX: elm.x,
|
|
3228
|
+
pcbY: elm.y,
|
|
3229
|
+
shape: "hole_with_polygon_pad",
|
|
3230
|
+
holeShape: elm.hole_shape || "circle",
|
|
3231
|
+
holeDiameter: elm.hole_diameter,
|
|
3232
|
+
holeWidth: elm.hole_width,
|
|
3233
|
+
holeHeight: elm.hole_height,
|
|
3234
|
+
padOutline: elm.pad_outline || [],
|
|
3235
|
+
holeOffsetX: elm.hole_offset_x,
|
|
3236
|
+
holeOffsetY: elm.hole_offset_y,
|
|
3237
|
+
portHints: elm.port_hints
|
|
3238
|
+
})
|
|
3239
|
+
);
|
|
3178
3240
|
}
|
|
3179
3241
|
} else if (elm.type === "pcb_keepout" && elm.shape === "circle") {
|
|
3180
3242
|
components.push(
|
|
@@ -5505,6 +5567,29 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
5505
5567
|
height: element.outer_height,
|
|
5506
5568
|
connectedTo: withNetId([element.pcb_plated_hole_id])
|
|
5507
5569
|
});
|
|
5570
|
+
} else if (element.shape === "hole_with_polygon_pad") {
|
|
5571
|
+
if ("pad_outline" in element && element.pad_outline && element.pad_outline.length > 0) {
|
|
5572
|
+
const xs = element.pad_outline.map((p) => element.x + p.x);
|
|
5573
|
+
const ys = element.pad_outline.map((p) => element.y + p.y);
|
|
5574
|
+
const minX = Math.min(...xs);
|
|
5575
|
+
const maxX = Math.max(...xs);
|
|
5576
|
+
const minY = Math.min(...ys);
|
|
5577
|
+
const maxY = Math.max(...ys);
|
|
5578
|
+
const centerX = (minX + maxX) / 2;
|
|
5579
|
+
const centerY = (minY + maxY) / 2;
|
|
5580
|
+
obstacles.push({
|
|
5581
|
+
// @ts-ignore
|
|
5582
|
+
type: "rect",
|
|
5583
|
+
layers: EVERY_LAYER,
|
|
5584
|
+
center: {
|
|
5585
|
+
x: centerX,
|
|
5586
|
+
y: centerY
|
|
5587
|
+
},
|
|
5588
|
+
width: maxX - minX,
|
|
5589
|
+
height: maxY - minY,
|
|
5590
|
+
connectedTo: withNetId([element.pcb_plated_hole_id])
|
|
5591
|
+
});
|
|
5592
|
+
}
|
|
5508
5593
|
}
|
|
5509
5594
|
} else if (element.type === "pcb_trace") {
|
|
5510
5595
|
const traceObstacles = getObstaclesFromRoute(
|
|
@@ -11641,6 +11726,20 @@ function getObstacleDimensionsFromPlatedHole(hole) {
|
|
|
11641
11726
|
width: hole.outer_width,
|
|
11642
11727
|
height: hole.outer_height
|
|
11643
11728
|
};
|
|
11729
|
+
case "hole_with_polygon_pad":
|
|
11730
|
+
if (!("pad_outline" in hole) || !hole.pad_outline || hole.pad_outline.length === 0) {
|
|
11731
|
+
return null;
|
|
11732
|
+
}
|
|
11733
|
+
const xs = hole.pad_outline.map((p) => p.x);
|
|
11734
|
+
const ys = hole.pad_outline.map((p) => p.y);
|
|
11735
|
+
const minX = Math.min(...xs);
|
|
11736
|
+
const maxX = Math.max(...xs);
|
|
11737
|
+
const minY = Math.min(...ys);
|
|
11738
|
+
const maxY = Math.max(...ys);
|
|
11739
|
+
return {
|
|
11740
|
+
width: maxX - minX,
|
|
11741
|
+
height: maxY - minY
|
|
11742
|
+
};
|
|
11644
11743
|
default:
|
|
11645
11744
|
return null;
|
|
11646
11745
|
}
|
|
@@ -17903,7 +18002,7 @@ import { identity as identity6 } from "transformation-matrix";
|
|
|
17903
18002
|
var package_default = {
|
|
17904
18003
|
name: "@tscircuit/core",
|
|
17905
18004
|
type: "module",
|
|
17906
|
-
version: "0.0.
|
|
18005
|
+
version: "0.0.866",
|
|
17907
18006
|
types: "dist/index.d.ts",
|
|
17908
18007
|
main: "dist/index.js",
|
|
17909
18008
|
module: "dist/index.js",
|
|
@@ -17947,7 +18046,7 @@ var package_default = {
|
|
|
17947
18046
|
"@tscircuit/math-utils": "^0.0.29",
|
|
17948
18047
|
"@tscircuit/miniflex": "^0.0.4",
|
|
17949
18048
|
"@tscircuit/ngspice-spice-engine": "^0.0.2",
|
|
17950
|
-
"@tscircuit/props": "^0.0.
|
|
18049
|
+
"@tscircuit/props": "^0.0.403",
|
|
17951
18050
|
"@tscircuit/schematic-autolayout": "^0.0.6",
|
|
17952
18051
|
"@tscircuit/schematic-match-adapt": "^0.0.16",
|
|
17953
18052
|
"@tscircuit/schematic-trace-solver": "^v0.0.45",
|
|
@@ -17961,13 +18060,13 @@ var package_default = {
|
|
|
17961
18060
|
"bun-match-svg": "0.0.12",
|
|
17962
18061
|
"calculate-elbow": "^0.0.12",
|
|
17963
18062
|
"chokidar-cli": "^3.0.0",
|
|
17964
|
-
"circuit-json": "^0.0.
|
|
18063
|
+
"circuit-json": "^0.0.308",
|
|
17965
18064
|
"circuit-json-to-bpc": "^0.0.13",
|
|
17966
18065
|
"circuit-json-to-connectivity-map": "^0.0.22",
|
|
17967
18066
|
"circuit-json-to-gltf": "^0.0.31",
|
|
17968
18067
|
"circuit-json-to-simple-3d": "^0.0.9",
|
|
17969
18068
|
"circuit-json-to-spice": "^0.0.16",
|
|
17970
|
-
"circuit-to-svg": "^0.0.
|
|
18069
|
+
"circuit-to-svg": "^0.0.269",
|
|
17971
18070
|
concurrently: "^9.1.2",
|
|
17972
18071
|
"connectivity-map": "^1.0.0",
|
|
17973
18072
|
debug: "^4.3.6",
|
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.867",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.js",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"@tscircuit/math-utils": "^0.0.29",
|
|
46
46
|
"@tscircuit/miniflex": "^0.0.4",
|
|
47
47
|
"@tscircuit/ngspice-spice-engine": "^0.0.2",
|
|
48
|
-
"@tscircuit/props": "^0.0.
|
|
48
|
+
"@tscircuit/props": "^0.0.403",
|
|
49
49
|
"@tscircuit/schematic-autolayout": "^0.0.6",
|
|
50
50
|
"@tscircuit/schematic-match-adapt": "^0.0.16",
|
|
51
51
|
"@tscircuit/schematic-trace-solver": "^v0.0.45",
|
|
@@ -59,13 +59,13 @@
|
|
|
59
59
|
"bun-match-svg": "0.0.12",
|
|
60
60
|
"calculate-elbow": "^0.0.12",
|
|
61
61
|
"chokidar-cli": "^3.0.0",
|
|
62
|
-
"circuit-json": "^0.0.
|
|
62
|
+
"circuit-json": "^0.0.308",
|
|
63
63
|
"circuit-json-to-bpc": "^0.0.13",
|
|
64
64
|
"circuit-json-to-connectivity-map": "^0.0.22",
|
|
65
65
|
"circuit-json-to-gltf": "^0.0.31",
|
|
66
66
|
"circuit-json-to-simple-3d": "^0.0.9",
|
|
67
67
|
"circuit-json-to-spice": "^0.0.16",
|
|
68
|
-
"circuit-to-svg": "^0.0.
|
|
68
|
+
"circuit-to-svg": "^0.0.269",
|
|
69
69
|
"concurrently": "^9.1.2",
|
|
70
70
|
"connectivity-map": "^1.0.0",
|
|
71
71
|
"debug": "^4.3.6",
|