@tscircuit/core 0.0.1245 → 0.0.1247
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 +1 -0
- package/dist/index.js +38 -7
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -2729,15 +2729,17 @@ var getAxisAlignedRectFromRotatedRect = (rotatedRect) => {
|
|
|
2729
2729
|
}
|
|
2730
2730
|
return null;
|
|
2731
2731
|
};
|
|
2732
|
-
var getObstaclesFromCircuitJson = (
|
|
2732
|
+
var getObstaclesFromCircuitJson = (circuitJson, connMap) => {
|
|
2733
2733
|
const withNetId = (idList) => connMap ? idList.concat(
|
|
2734
2734
|
idList.map((id) => connMap?.getNetConnectedToId(id)).filter(Boolean)
|
|
2735
2735
|
) : idList;
|
|
2736
2736
|
const obstacles = [];
|
|
2737
|
-
for (const element of
|
|
2737
|
+
for (const element of circuitJson) {
|
|
2738
|
+
const pcbComponentId = element.pcb_component_id ?? void 0;
|
|
2738
2739
|
if (element.type === "pcb_smtpad") {
|
|
2739
2740
|
if (element.shape === "circle") {
|
|
2740
2741
|
obstacles.push({
|
|
2742
|
+
componentId: pcbComponentId,
|
|
2741
2743
|
// @ts-ignore
|
|
2742
2744
|
type: "oval",
|
|
2743
2745
|
layers: [element.layer],
|
|
@@ -2751,6 +2753,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2751
2753
|
});
|
|
2752
2754
|
} else if (element.shape === "rect") {
|
|
2753
2755
|
obstacles.push({
|
|
2756
|
+
componentId: pcbComponentId,
|
|
2754
2757
|
type: "rect",
|
|
2755
2758
|
layers: [element.layer],
|
|
2756
2759
|
center: {
|
|
@@ -2771,6 +2774,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2771
2774
|
const axisAlignedRect = getAxisAlignedRectFromRotatedRect(rotatedRect);
|
|
2772
2775
|
const rect = axisAlignedRect ?? rotatedRect;
|
|
2773
2776
|
obstacles.push({
|
|
2777
|
+
componentId: pcbComponentId,
|
|
2774
2778
|
type: "rect",
|
|
2775
2779
|
layers: [element.layer],
|
|
2776
2780
|
center: rect.center,
|
|
@@ -2781,6 +2785,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2781
2785
|
});
|
|
2782
2786
|
} else if (element.shape === "pill" || element.shape === "rotated_pill") {
|
|
2783
2787
|
obstacles.push({
|
|
2788
|
+
componentId: pcbComponentId,
|
|
2784
2789
|
type: "rect",
|
|
2785
2790
|
layers: [element.layer],
|
|
2786
2791
|
center: {
|
|
@@ -2800,6 +2805,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2800
2805
|
const minY = Math.min(...ys);
|
|
2801
2806
|
const maxY = Math.max(...ys);
|
|
2802
2807
|
obstacles.push({
|
|
2808
|
+
componentId: pcbComponentId,
|
|
2803
2809
|
type: "rect",
|
|
2804
2810
|
layers: [element.layer],
|
|
2805
2811
|
center: {
|
|
@@ -2814,6 +2820,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2814
2820
|
} else if (element.type === "pcb_keepout") {
|
|
2815
2821
|
if (element.shape === "circle") {
|
|
2816
2822
|
obstacles.push({
|
|
2823
|
+
componentId: pcbComponentId,
|
|
2817
2824
|
// @ts-ignore
|
|
2818
2825
|
type: "oval",
|
|
2819
2826
|
layers: element.layers,
|
|
@@ -2827,6 +2834,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2827
2834
|
});
|
|
2828
2835
|
} else if (element.shape === "rect") {
|
|
2829
2836
|
obstacles.push({
|
|
2837
|
+
componentId: pcbComponentId,
|
|
2830
2838
|
type: "rect",
|
|
2831
2839
|
layers: element.layers,
|
|
2832
2840
|
center: {
|
|
@@ -2841,6 +2849,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2841
2849
|
} else if (element.type === "pcb_cutout") {
|
|
2842
2850
|
if (element.shape === "rect") {
|
|
2843
2851
|
obstacles.push({
|
|
2852
|
+
componentId: pcbComponentId,
|
|
2844
2853
|
type: "rect",
|
|
2845
2854
|
layers: EVERY_LAYER,
|
|
2846
2855
|
center: {
|
|
@@ -2861,6 +2870,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2861
2870
|
);
|
|
2862
2871
|
for (const rect of approximatingRects) {
|
|
2863
2872
|
obstacles.push({
|
|
2873
|
+
componentId: pcbComponentId,
|
|
2864
2874
|
type: "rect",
|
|
2865
2875
|
layers: EVERY_LAYER,
|
|
2866
2876
|
center: rect.center,
|
|
@@ -2875,6 +2885,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2875
2885
|
});
|
|
2876
2886
|
for (const rect of approximatingRects) {
|
|
2877
2887
|
obstacles.push({
|
|
2888
|
+
componentId: pcbComponentId,
|
|
2878
2889
|
type: "rect",
|
|
2879
2890
|
layers: EVERY_LAYER,
|
|
2880
2891
|
center: rect.center,
|
|
@@ -2887,6 +2898,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2887
2898
|
} else if (element.type === "pcb_hole") {
|
|
2888
2899
|
if (element.hole_shape === "oval") {
|
|
2889
2900
|
obstacles.push({
|
|
2901
|
+
componentId: pcbComponentId,
|
|
2890
2902
|
// @ts-ignore
|
|
2891
2903
|
type: "oval",
|
|
2892
2904
|
center: {
|
|
@@ -2899,6 +2911,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2899
2911
|
});
|
|
2900
2912
|
} else if (element.hole_shape === "pill" || element.hole_shape === "rotated_pill") {
|
|
2901
2913
|
obstacles.push({
|
|
2914
|
+
componentId: pcbComponentId,
|
|
2902
2915
|
type: "rect",
|
|
2903
2916
|
layers: EVERY_LAYER,
|
|
2904
2917
|
center: {
|
|
@@ -2912,6 +2925,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2912
2925
|
});
|
|
2913
2926
|
} else if (element.hole_shape === "rect") {
|
|
2914
2927
|
obstacles.push({
|
|
2928
|
+
componentId: pcbComponentId,
|
|
2915
2929
|
type: "rect",
|
|
2916
2930
|
layers: EVERY_LAYER,
|
|
2917
2931
|
center: {
|
|
@@ -2924,6 +2938,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2924
2938
|
});
|
|
2925
2939
|
} else if (element.hole_shape === "square") {
|
|
2926
2940
|
obstacles.push({
|
|
2941
|
+
componentId: pcbComponentId,
|
|
2927
2942
|
type: "rect",
|
|
2928
2943
|
layers: EVERY_LAYER,
|
|
2929
2944
|
center: {
|
|
@@ -2939,6 +2954,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2939
2954
|
element.hole_shape === "round" || element.hole_shape === "circle"
|
|
2940
2955
|
) {
|
|
2941
2956
|
obstacles.push({
|
|
2957
|
+
componentId: pcbComponentId,
|
|
2942
2958
|
type: "rect",
|
|
2943
2959
|
layers: EVERY_LAYER,
|
|
2944
2960
|
center: {
|
|
@@ -2953,6 +2969,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2953
2969
|
} else if (element.type === "pcb_plated_hole") {
|
|
2954
2970
|
if (element.shape === "circle") {
|
|
2955
2971
|
obstacles.push({
|
|
2972
|
+
componentId: pcbComponentId,
|
|
2956
2973
|
// @ts-ignore
|
|
2957
2974
|
type: "oval",
|
|
2958
2975
|
layers: EVERY_LAYER,
|
|
@@ -2966,6 +2983,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2966
2983
|
});
|
|
2967
2984
|
} else if (element.shape === "circular_hole_with_rect_pad") {
|
|
2968
2985
|
obstacles.push({
|
|
2986
|
+
componentId: pcbComponentId,
|
|
2969
2987
|
// @ts-ignore
|
|
2970
2988
|
type: "rect",
|
|
2971
2989
|
layers: EVERY_LAYER,
|
|
@@ -2979,6 +2997,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2979
2997
|
});
|
|
2980
2998
|
} else if (element.shape === "oval") {
|
|
2981
2999
|
obstacles.push({
|
|
3000
|
+
componentId: pcbComponentId,
|
|
2982
3001
|
// @ts-ignore
|
|
2983
3002
|
type: "oval",
|
|
2984
3003
|
layers: EVERY_LAYER,
|
|
@@ -2992,6 +3011,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
2992
3011
|
});
|
|
2993
3012
|
} else if (element.shape === "pill") {
|
|
2994
3013
|
obstacles.push({
|
|
3014
|
+
componentId: pcbComponentId,
|
|
2995
3015
|
type: "rect",
|
|
2996
3016
|
layers: EVERY_LAYER,
|
|
2997
3017
|
center: {
|
|
@@ -3014,6 +3034,7 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
3014
3034
|
const centerX = (minX + maxX) / 2;
|
|
3015
3035
|
const centerY = (minY + maxY) / 2;
|
|
3016
3036
|
obstacles.push({
|
|
3037
|
+
componentId: pcbComponentId,
|
|
3017
3038
|
// @ts-ignore
|
|
3018
3039
|
type: "rect",
|
|
3019
3040
|
layers: EVERY_LAYER,
|
|
@@ -3054,12 +3075,18 @@ var getObstaclesFromCircuitJson = (soup, connMap) => {
|
|
|
3054
3075
|
}),
|
|
3055
3076
|
element.source_trace_id
|
|
3056
3077
|
);
|
|
3057
|
-
obstacles.push(
|
|
3078
|
+
obstacles.push(
|
|
3079
|
+
...traceObstacles.map((obstacle) => ({
|
|
3080
|
+
...obstacle,
|
|
3081
|
+
componentId: pcbComponentId
|
|
3082
|
+
}))
|
|
3083
|
+
);
|
|
3058
3084
|
} else if (element.type === "pcb_via") {
|
|
3059
3085
|
const netIsAssignable = Boolean(
|
|
3060
3086
|
element.net_is_assignable ?? element.netIsAssignable
|
|
3061
3087
|
);
|
|
3062
3088
|
obstacles.push({
|
|
3089
|
+
componentId: pcbComponentId,
|
|
3063
3090
|
type: "rect",
|
|
3064
3091
|
layers: element.layers,
|
|
3065
3092
|
center: {
|
|
@@ -19175,9 +19202,13 @@ function getExistingPcbTracesForReroute(group) {
|
|
|
19175
19202
|
function addPossibleReplacementSourceTraceId(sourceTraceIds, value) {
|
|
19176
19203
|
if (typeof value !== "string" || value.length === 0) return;
|
|
19177
19204
|
sourceTraceIds.add(value);
|
|
19178
|
-
const
|
|
19179
|
-
|
|
19180
|
-
sourceTraceIds.add(
|
|
19205
|
+
for (const connectionNamePart of value.split("__")) {
|
|
19206
|
+
if (connectionNamePart.length === 0) continue;
|
|
19207
|
+
sourceTraceIds.add(connectionNamePart);
|
|
19208
|
+
const rerouteSuffixIndex = connectionNamePart.indexOf("_reroute_");
|
|
19209
|
+
if (rerouteSuffixIndex > 0) {
|
|
19210
|
+
sourceTraceIds.add(connectionNamePart.slice(0, rerouteSuffixIndex));
|
|
19211
|
+
}
|
|
19181
19212
|
}
|
|
19182
19213
|
}
|
|
19183
19214
|
function deleteExistingPcbTracesReplacedBy({
|
|
@@ -21216,7 +21247,7 @@ import { identity as identity5 } from "transformation-matrix";
|
|
|
21216
21247
|
var package_default = {
|
|
21217
21248
|
name: "@tscircuit/core",
|
|
21218
21249
|
type: "module",
|
|
21219
|
-
version: "0.0.
|
|
21250
|
+
version: "0.0.1246",
|
|
21220
21251
|
types: "dist/index.d.ts",
|
|
21221
21252
|
main: "dist/index.js",
|
|
21222
21253
|
module: "dist/index.js",
|