@tscircuit/copper-pour-solver 0.0.25 → 0.0.26
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.js +169 -323
- package/lib/solvers/CopperPourPipelineSolver.ts +22 -35
- package/lib/solvers/copper-pour/circle-to-polygon.ts +15 -0
- package/lib/solvers/copper-pour/generate-brep.ts +52 -45
- package/lib/solvers/copper-pour/get-board-polygon.ts +19 -11
- package/lib/solvers/copper-pour/process-obstacles.ts +87 -65
- package/package.json +1 -4
- package/tests/__snapshots__/2-layers-bottom.snap.svg +1 -1
- package/tests/__snapshots__/2-layers-top.snap.svg +1 -1
- package/tests/__snapshots__/board-edge-margin-2.snap.svg +1 -1
- package/tests/__snapshots__/board-edge-margin.snap.svg +1 -1
- package/tests/__snapshots__/hole-and-cutouts.snap.svg +1 -1
- package/tests/__snapshots__/larger-trace-margin.snap.svg +1 -1
- package/tests/__snapshots__/multiple-pours.snap.svg +1 -1
- package/tests/__snapshots__/pad-margin.snap.svg +1 -1
- package/tests/__snapshots__/polygon-board-2.snap.svg +1 -1
- package/tests/__snapshots__/polygon-board.snap.svg +1 -1
- package/tests/__snapshots__/smaller-trace-margin.snap.svg +1 -1
- package/tests/__snapshots__/via.snap.svg +1 -1
- package/tests/stm32f746g-disco.test.ts +16 -16
- package/lib/solvers/copper-pour/manifold-geometry-adapter.ts +0 -306
- package/tests/__snapshots__/stm32f746g-disco.test.tsbottom.snap.svg +0 -1
- package/tests/__snapshots__/stm32f746g-disco.test.tstop.snap.svg +0 -1
- package/tests/manifold-copper-pour-geometry.test.ts +0 -194
|
@@ -1,52 +1,59 @@
|
|
|
1
|
+
import Flatten from "@flatten-js/core"
|
|
1
2
|
import type { BRepShape } from "circuit-json"
|
|
2
|
-
import type { CopperPourIsland, PolygonRing } from "./manifold-geometry-adapter"
|
|
3
|
-
|
|
4
|
-
const signedArea = (ring: PolygonRing) => {
|
|
5
|
-
let area = 0
|
|
6
|
-
for (let i = 0; i < ring.length; i++) {
|
|
7
|
-
const current = ring[i]!
|
|
8
|
-
const next = ring[(i + 1) % ring.length]!
|
|
9
|
-
area += current.x * next.y - next.x * current.y
|
|
10
|
-
}
|
|
11
|
-
return area / 2
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const ensureAreaSign = (
|
|
15
|
-
ring: PolygonRing,
|
|
16
|
-
desiredSign: "positive" | "negative",
|
|
17
|
-
) => {
|
|
18
|
-
const area = signedArea(ring)
|
|
19
|
-
const shouldReverse =
|
|
20
|
-
(desiredSign === "positive" && area < 0) ||
|
|
21
|
-
(desiredSign === "negative" && area > 0)
|
|
22
|
-
return shouldReverse ? [...ring].reverse() : ring
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const ringToVertices = (ring: PolygonRing) =>
|
|
26
|
-
ring.map((point) => ({
|
|
27
|
-
x: point.x,
|
|
28
|
-
y: point.y,
|
|
29
|
-
}))
|
|
30
3
|
|
|
31
|
-
|
|
4
|
+
const faceToVertices = (face: Flatten.Face) =>
|
|
5
|
+
face.edges.map((e) => {
|
|
6
|
+
const pt: { x: number; y: number; bulge?: number } = {
|
|
7
|
+
x: e.start.x,
|
|
8
|
+
y: e.start.y,
|
|
9
|
+
}
|
|
10
|
+
if (e.isArc) {
|
|
11
|
+
const bulge = Math.tan((e.shape as Flatten.Arc).sweep / 4)
|
|
12
|
+
if (Math.abs(bulge) > 1e-9) {
|
|
13
|
+
pt.bulge = bulge
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return pt
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
export const generateBRep = (
|
|
20
|
+
pourPolygons: Flatten.Polygon | Flatten.Polygon[],
|
|
21
|
+
): BRepShape[] => {
|
|
32
22
|
const brep_shapes: BRepShape[] = []
|
|
33
23
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
24
|
+
const polygons = Array.isArray(pourPolygons) ? pourPolygons : [pourPolygons]
|
|
25
|
+
|
|
26
|
+
for (const p of polygons) {
|
|
27
|
+
const islands = p.splitToIslands()
|
|
28
|
+
|
|
29
|
+
for (const island of islands) {
|
|
30
|
+
if (island.isEmpty()) continue
|
|
31
|
+
|
|
32
|
+
const faces = [...island.faces] as Flatten.Face[]
|
|
33
|
+
const outer_face_ccw = faces.find(
|
|
34
|
+
(f) => f.orientation() === Flatten.ORIENTATION.CCW,
|
|
35
|
+
)
|
|
36
|
+
const inner_faces_cw = faces.filter(
|
|
37
|
+
(f) => f.orientation() === Flatten.ORIENTATION.CW,
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
if (!outer_face_ccw) continue
|
|
41
|
+
|
|
42
|
+
// BRep requires outer ring to be CW and inner rings to be CCW.
|
|
43
|
+
// Flatten-js provides outer face as CCW and inner faces as CW.
|
|
44
|
+
// We need to reverse them.
|
|
45
|
+
outer_face_ccw.reverse()
|
|
46
|
+
const outer_ring_vertices = faceToVertices(outer_face_ccw)
|
|
47
|
+
const inner_rings = inner_faces_cw.map((f) => {
|
|
48
|
+
f.reverse()
|
|
49
|
+
return { vertices: faceToVertices(f) }
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
brep_shapes.push({
|
|
53
|
+
outer_ring: { vertices: outer_ring_vertices },
|
|
54
|
+
inner_rings,
|
|
55
|
+
})
|
|
56
|
+
}
|
|
50
57
|
}
|
|
51
58
|
|
|
52
59
|
return brep_shapes
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import type { InputPourRegion } from "lib/types"
|
|
2
|
-
import
|
|
3
|
-
import { normalizeRing } from "./manifold-geometry-adapter"
|
|
2
|
+
import Flatten from "@flatten-js/core"
|
|
4
3
|
|
|
5
|
-
export const getBoardPolygon = (region: InputPourRegion):
|
|
4
|
+
export const getBoardPolygon = (region: InputPourRegion): Flatten.Polygon => {
|
|
6
5
|
const board_edge_margin = region.board_edge_margin ?? 0
|
|
7
6
|
|
|
8
7
|
if (region.outline && region.outline.length > 0) {
|
|
9
|
-
|
|
8
|
+
const polygon = new Flatten.Polygon(
|
|
9
|
+
region.outline.map((p) => Flatten.point(p.x, p.y)),
|
|
10
|
+
)
|
|
11
|
+
// Ensure polygon is CCW for consistent boolean operations
|
|
12
|
+
if (polygon.orientation() === Flatten.ORIENTATION.CW) {
|
|
13
|
+
polygon.reverse()
|
|
14
|
+
}
|
|
15
|
+
return polygon
|
|
10
16
|
}
|
|
11
17
|
|
|
12
18
|
const { bounds } = region
|
|
@@ -18,13 +24,15 @@ export const getBoardPolygon = (region: InputPourRegion): PolygonRing => {
|
|
|
18
24
|
}
|
|
19
25
|
|
|
20
26
|
if (newBounds.minX >= newBounds.maxX || newBounds.minY >= newBounds.maxY) {
|
|
21
|
-
return
|
|
27
|
+
return new Flatten.Polygon()
|
|
22
28
|
}
|
|
23
29
|
|
|
24
|
-
return
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
return new Flatten.Polygon(
|
|
31
|
+
new Flatten.Box(
|
|
32
|
+
newBounds.minX,
|
|
33
|
+
newBounds.minY,
|
|
34
|
+
newBounds.maxX,
|
|
35
|
+
newBounds.maxY,
|
|
36
|
+
).toPoints(),
|
|
37
|
+
)
|
|
30
38
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import Flatten from "@flatten-js/core"
|
|
1
2
|
import type { Point } from "@tscircuit/math-utils"
|
|
2
3
|
import type {
|
|
3
4
|
InputCircularPad,
|
|
@@ -6,14 +7,10 @@ import type {
|
|
|
6
7
|
InputRectPad,
|
|
7
8
|
InputTracePad,
|
|
8
9
|
} from "lib/types"
|
|
9
|
-
import {
|
|
10
|
-
normalizeRing,
|
|
11
|
-
offsetPolygon,
|
|
12
|
-
type PolygonRing,
|
|
13
|
-
} from "./manifold-geometry-adapter"
|
|
10
|
+
import { circleToPolygon } from "./circle-to-polygon"
|
|
14
11
|
|
|
15
12
|
interface ProcessedObstacles {
|
|
16
|
-
polygonsToSubtract:
|
|
13
|
+
polygonsToSubtract: Flatten.Polygon[]
|
|
17
14
|
}
|
|
18
15
|
|
|
19
16
|
const isRectPad = (pad: InputPad): pad is InputRectPad => pad.shape === "rect"
|
|
@@ -24,34 +21,6 @@ const isCircularPad = (pad: InputPad): pad is InputCircularPad =>
|
|
|
24
21
|
const isPolygonPad = (pad: InputPad): pad is InputPolygonPad =>
|
|
25
22
|
pad.shape === "polygon"
|
|
26
23
|
|
|
27
|
-
const circleToPolygon = (
|
|
28
|
-
center: Point,
|
|
29
|
-
radius: number,
|
|
30
|
-
numSegments = 32,
|
|
31
|
-
): PolygonRing => {
|
|
32
|
-
const points: PolygonRing = []
|
|
33
|
-
for (let i = 0; i < numSegments; i++) {
|
|
34
|
-
const angle = (i / numSegments) * 2 * Math.PI
|
|
35
|
-
points.push({
|
|
36
|
-
x: center.x + radius * Math.cos(angle),
|
|
37
|
-
y: center.y + radius * Math.sin(angle),
|
|
38
|
-
})
|
|
39
|
-
}
|
|
40
|
-
return points
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const boxToPolygon = (
|
|
44
|
-
minX: number,
|
|
45
|
-
minY: number,
|
|
46
|
-
maxX: number,
|
|
47
|
-
maxY: number,
|
|
48
|
-
): PolygonRing => [
|
|
49
|
-
{ x: minX, y: minY },
|
|
50
|
-
{ x: maxX, y: minY },
|
|
51
|
-
{ x: maxX, y: maxY },
|
|
52
|
-
{ x: minX, y: maxY },
|
|
53
|
-
]
|
|
54
|
-
|
|
55
24
|
export const processObstaclesForPour = (
|
|
56
25
|
pads: InputPad[],
|
|
57
26
|
pourConnectivityKey: string,
|
|
@@ -63,7 +32,7 @@ export const processObstaclesForPour = (
|
|
|
63
32
|
},
|
|
64
33
|
boardOutline?: Point[],
|
|
65
34
|
): ProcessedObstacles => {
|
|
66
|
-
const polygonsToSubtract:
|
|
35
|
+
const polygonsToSubtract: Flatten.Polygon[] = []
|
|
67
36
|
|
|
68
37
|
const { padMargin, traceMargin, board_edge_margin, cutoutMargin } = margins
|
|
69
38
|
|
|
@@ -73,10 +42,13 @@ export const processObstaclesForPour = (
|
|
|
73
42
|
board_edge_margin &&
|
|
74
43
|
board_edge_margin > 0
|
|
75
44
|
) {
|
|
76
|
-
const
|
|
77
|
-
boardOutline,
|
|
78
|
-
"processObstacles.boardOutline",
|
|
45
|
+
const boardPoly = new Flatten.Polygon(
|
|
46
|
+
boardOutline.map((p) => Flatten.point(p.x, p.y)),
|
|
79
47
|
)
|
|
48
|
+
if (boardPoly.area() < 0) {
|
|
49
|
+
boardPoly.reverse()
|
|
50
|
+
}
|
|
51
|
+
const vertices = boardPoly.vertices
|
|
80
52
|
|
|
81
53
|
// Add clearance shapes at vertices
|
|
82
54
|
for (let i = 0; i < vertices.length; i++) {
|
|
@@ -86,21 +58,21 @@ export const processObstaclesForPour = (
|
|
|
86
58
|
|
|
87
59
|
if (!p1 || !p2 || !p3) continue
|
|
88
60
|
|
|
89
|
-
const v1 =
|
|
90
|
-
const v2 =
|
|
91
|
-
const crossProduct = v1.
|
|
61
|
+
const v1 = new Flatten.Vector(p1, p2)
|
|
62
|
+
const v2 = new Flatten.Vector(p2, p3)
|
|
63
|
+
const crossProduct = v1.cross(v2)
|
|
92
64
|
|
|
93
|
-
|
|
65
|
+
const circle = new Flatten.Circle(p2, board_edge_margin)
|
|
66
|
+
polygonsToSubtract.push(circleToPolygon(circle))
|
|
94
67
|
|
|
95
68
|
if (crossProduct < 0) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
p2.y + board_edge_margin,
|
|
102
|
-
),
|
|
69
|
+
const box = new Flatten.Box(
|
|
70
|
+
p2.x - board_edge_margin,
|
|
71
|
+
p2.y - board_edge_margin,
|
|
72
|
+
p2.x + board_edge_margin,
|
|
73
|
+
p2.y + board_edge_margin,
|
|
103
74
|
)
|
|
75
|
+
polygonsToSubtract.push(new Flatten.Polygon(box.toPoints()))
|
|
104
76
|
}
|
|
105
77
|
}
|
|
106
78
|
|
|
@@ -139,7 +111,9 @@ export const processObstaclesForPour = (
|
|
|
139
111
|
y: centerY + p.x * sinAngle + p.y * cosAngle,
|
|
140
112
|
}))
|
|
141
113
|
|
|
142
|
-
polygonsToSubtract.push(
|
|
114
|
+
polygonsToSubtract.push(
|
|
115
|
+
new Flatten.Polygon(rotatedCorners.map((p) => Flatten.point(p.x, p.y))),
|
|
116
|
+
)
|
|
143
117
|
}
|
|
144
118
|
}
|
|
145
119
|
|
|
@@ -156,23 +130,24 @@ export const processObstaclesForPour = (
|
|
|
156
130
|
|
|
157
131
|
if (isCircularPad(pad)) {
|
|
158
132
|
const margin = isHoleOrCutout ? (cutoutMargin ?? 0) : padMargin
|
|
159
|
-
|
|
160
|
-
|
|
133
|
+
const circle = new Flatten.Circle(
|
|
134
|
+
new Flatten.Point(pad.x, pad.y),
|
|
135
|
+
pad.radius + margin,
|
|
161
136
|
)
|
|
137
|
+
polygonsToSubtract.push(circleToPolygon(circle))
|
|
162
138
|
continue
|
|
163
139
|
}
|
|
164
140
|
|
|
165
141
|
if (isRectPad(pad)) {
|
|
166
142
|
const margin = isHoleOrCutout ? (cutoutMargin ?? 0) : padMargin
|
|
167
143
|
const { bounds } = pad
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
bounds.maxY + margin,
|
|
174
|
-
),
|
|
144
|
+
const b = new Flatten.Box(
|
|
145
|
+
bounds.minX - margin,
|
|
146
|
+
bounds.minY - margin,
|
|
147
|
+
bounds.maxX + margin,
|
|
148
|
+
bounds.maxY + margin,
|
|
175
149
|
)
|
|
150
|
+
polygonsToSubtract.push(new Flatten.Polygon(b.toPoints()))
|
|
176
151
|
continue
|
|
177
152
|
}
|
|
178
153
|
|
|
@@ -191,24 +166,67 @@ export const processObstaclesForPour = (
|
|
|
191
166
|
|
|
192
167
|
if (uniquePoints.length < 3) continue
|
|
193
168
|
|
|
194
|
-
const polygon =
|
|
195
|
-
|
|
169
|
+
const polygon = new Flatten.Polygon(
|
|
170
|
+
uniquePoints.map((p) => Flatten.point(p.x, p.y)),
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
if (Math.abs(polygon.area()) < 1e-9) continue
|
|
196
174
|
|
|
197
175
|
if (margin <= 0) {
|
|
198
176
|
polygonsToSubtract.push(polygon)
|
|
199
177
|
continue
|
|
200
178
|
}
|
|
201
179
|
|
|
202
|
-
|
|
180
|
+
// Ensure polygon is CCW for consistent normal direction.
|
|
181
|
+
// In flatten-js, CCW corresponds to a negative area.
|
|
182
|
+
if (polygon.area() > 0) {
|
|
183
|
+
polygon.reverse()
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
const offsetLines: Flatten.Line[] = []
|
|
187
|
+
const polygonVertices = polygon.vertices
|
|
188
|
+
for (let i = 0; i < polygonVertices.length; i++) {
|
|
189
|
+
const p1 = polygonVertices[i]!
|
|
190
|
+
const p2 = polygonVertices[(i + 1) % polygonVertices.length]!
|
|
191
|
+
|
|
192
|
+
const segment = Flatten.segment(p1, p2)
|
|
193
|
+
|
|
194
|
+
if (segment.length === 0) continue
|
|
195
|
+
|
|
196
|
+
const line = Flatten.line(segment.start, segment.end)
|
|
197
|
+
|
|
198
|
+
// For a CCW polygon, the normal (rotated +90deg, i.e. "left") points inward.
|
|
199
|
+
// We must translate outward, so we use a negative margin.
|
|
200
|
+
const norm = line.norm
|
|
201
|
+
const offsetLine = line.translate(norm.multiply(-margin))
|
|
202
|
+
offsetLines.push(offsetLine)
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
const newPolygonPoints: Flatten.Point[] = []
|
|
206
|
+
for (let i = 0; i < offsetLines.length; i++) {
|
|
207
|
+
const line1 = offsetLines[i]!
|
|
208
|
+
const line2 = offsetLines[(i + 1) % offsetLines.length]!
|
|
209
|
+
|
|
210
|
+
const ip = line1.intersect(line2)
|
|
211
|
+
if (ip.length > 0) {
|
|
212
|
+
newPolygonPoints.push(ip[0]!)
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
if (newPolygonPoints.length >= 3) {
|
|
217
|
+
polygonsToSubtract.push(new Flatten.Polygon(newPolygonPoints))
|
|
218
|
+
}
|
|
203
219
|
continue
|
|
204
220
|
}
|
|
205
221
|
|
|
206
222
|
if (isTracePad(pad)) {
|
|
207
223
|
// Add circles for each vertex
|
|
208
224
|
for (const segment of pad.segments) {
|
|
209
|
-
|
|
210
|
-
|
|
225
|
+
const circle = new Flatten.Circle(
|
|
226
|
+
new Flatten.Point(segment.x, segment.y),
|
|
227
|
+
pad.width / 2 + traceMargin,
|
|
211
228
|
)
|
|
229
|
+
polygonsToSubtract.push(circleToPolygon(circle))
|
|
212
230
|
}
|
|
213
231
|
|
|
214
232
|
// Add rectangles for each segment
|
|
@@ -247,7 +265,11 @@ export const processObstaclesForPour = (
|
|
|
247
265
|
y: centerY + p.x * sinAngle + p.y * cosAngle,
|
|
248
266
|
}))
|
|
249
267
|
|
|
250
|
-
polygonsToSubtract.push(
|
|
268
|
+
polygonsToSubtract.push(
|
|
269
|
+
new Flatten.Polygon(
|
|
270
|
+
rotatedCorners.map((p) => Flatten.point(p.x, p.y)),
|
|
271
|
+
),
|
|
272
|
+
)
|
|
251
273
|
}
|
|
252
274
|
}
|
|
253
275
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tscircuit/copper-pour-solver",
|
|
3
3
|
"main": "dist/index.js",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.26",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"format": "biome format . --write",
|
|
7
7
|
"format:check": "biome format .",
|
|
@@ -26,8 +26,5 @@
|
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
28
|
"typescript": "^5"
|
|
29
|
-
},
|
|
30
|
-
"dependencies": {
|
|
31
|
-
"manifold-3d": "^3.4.1"
|
|
32
29
|
}
|
|
33
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.844"><style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><rect class="pcb-pad" fill="rgb(77, 127, 196)" x="547.2727272727273" y="280.90909090909093" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="bottom"/><rect class="pcb-pad" fill="rgb(77, 127, 196)" x="497.5" y="280.90909090909093" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="bottom"/><path class="pcb-copper-pour pcb-copper-pour-brep" d="M
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.844"><style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><rect class="pcb-pad" fill="rgb(77, 127, 196)" x="547.2727272727273" y="280.90909090909093" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="bottom"/><rect class="pcb-pad" fill="rgb(77, 127, 196)" x="497.5" y="280.90909090909093" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="bottom"/><path class="pcb-copper-pour pcb-copper-pour-brep" d="M 127.27272727272725 572.7272727272727 L 127.27272727272725 27.272727272727252 L 672.7272727272727 27.272727272727252 L 672.7272727272727 572.7272727272727 L 127.27272727272725 572.7272727272727 Z M 443.6363636363636 300 L 442.79790314486826 291.48696776656897 L 440.31474323685615 283.3010865877052 L 436.2823103550202 275.7569352864174 L 430.8555686335948 269.1444313664052 L 424.24306471358267 263.7176896449798 L 416.6989134122948 259.68525676314385 L 408.51303223343103 257.20209685513174 L 400 256.3636363636364 L 391.48696776656897 257.20209685513174 L 383.3010865877052 259.68525676314385 L 375.7569352864174 263.7176896449798 L 369.1444313664052 269.1444313664052 L 363.7176896449798 275.7569352864174 L 359.68525676314385 283.3010865877052 L 357.20209685513174 291.4869677665689 L 356.3636363636364 300 L 357.20209685513174 308.51303223343103 L 359.68525676314385 316.6989134122948 L 363.7176896449798 324.2430647135826 L 369.1444313664052 330.8555686335948 L 375.7569352864174 336.2823103550202 L 383.30108658770513 340.31474323685615 L 391.4869677665689 342.79790314486826 L 400 343.6363636363636 L 408.51303223343103 342.79790314486826 L 416.6989134122948 340.31474323685615 L 424.2430647135826 336.2823103550202 L 430.85556863359477 330.8555686335948 L 436.2823103550202 324.2430647135826 L 440.31474323685615 316.69891341229487 L 442.79790314486826 308.5130322334311 L 443.6363636363636 300 Z M 536.3636363636364 330 L 586.1363636363636 330 L 586.1363636363636 270 L 536.3636363636364 270 L 536.3636363636364 330 Z M 427.27272727272725 409.0909090909091 L 426.74868946554267 403.7702639450147 L 425.1967145230351 398.65408820822483 L 422.6764439718876 393.93899364491995 L 419.28473039599675 389.8061786949123 L 415.1519154459892 386.4144651190215 L 410.4368208826843 383.894194567874 L 405.3206451458944 382.34221962536645 L 400 381.8181818181818 L 394.6793548541056 382.34221962536645 L 389.5631791173157 383.894194567874 L 384.8480845540109 386.4144651190215 L 380.71526960400325 389.8061786949123 L 377.3235560281124 393.93899364491995 L 374.8032854769649 398.65408820822483 L 373.25131053445733 403.7702639450147 L 372.72727272727275 409.0909090909091 L 373.25131053445733 414.4115542368035 L 374.8032854769649 419.52772997359335 L 377.3235560281124 424.24282453689824 L 380.71526960400325 428.37563948690587 L 384.8480845540108 431.7673530627967 L 389.5631791173157 434.28762361394416 L 394.67935485410555 435.83959855645173 L 400 436.3636363636364 L 405.3206451458944 435.83959855645173 L 410.4368208826843 434.2876236139442 L 415.1519154459891 431.7673530627967 L 419.28473039599675 428.37563948690587 L 422.6764439718876 424.24282453689824 L 425.1967145230351 419.5277299735934 L 426.74868946554267 414.4115542368035 L 427.27272727272725 409.0909090909091 Z" fill="rgb(77, 127, 196)" fill-rule="evenodd" fill-opacity="0.5" data-type="pcb_copper_pour" data-pcb-layer="bottom"/><path class="pcb-silkscreen pcb-silkscreen-bottom" d="M 511.47727272727275 270 L 580.6818181818182 270 L 580.6818181818182 330 L 511.47727272727275 330" fill="none" stroke="#5da9e9" stroke-width="2.7272727272727275" stroke-linecap="round" stroke-linejoin="round" data-pcb-component-id="pcb_component_1" data-pcb-silkscreen-path-id="pcb_silkscreen_path_1" data-type="pcb_silkscreen_path" data-pcb-layer="bottom"/><text x="0" y="0" dx="0" dy="0" fill="#5da9e9" font-family="Arial, sans-serif" font-size="10.90909090909091" text-anchor="middle" dominant-baseline="central" transform="matrix(-1,0,0,1,536.3636363636364,256.3636363636364)" class="pcb-silkscreen-text pcb-silkscreen-bottom" data-pcb-silkscreen-text-id="pcb_component_1" stroke="none" data-type="pcb_silkscreen_text" data-pcb-layer="bottom">R2</text><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="224.77272727272728" y="280.90909090909093" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="274.5454545454545" y="280.90909090909093" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="top"/><path class="pcb-silkscreen pcb-silkscreen-top" d="M 288.52272727272725 270 L 219.3181818181818 270 L 219.3181818181818 330 L 288.52272727272725 330" fill="none" stroke="#f2eda1" stroke-width="2.7272727272727275" stroke-linecap="round" stroke-linejoin="round" data-pcb-component-id="pcb_component_0" data-pcb-silkscreen-path-id="pcb_silkscreen_path_0" data-type="pcb_silkscreen_path" data-pcb-layer="top"/><text x="0" y="0" dx="0" dy="0" fill="#f2eda1" font-family="Arial, sans-serif" font-size="10.90909090909091" text-anchor="middle" dominant-baseline="central" transform="matrix(1,0,0,1,263.6363636363636,256.3636363636364)" class="pcb-silkscreen-text pcb-silkscreen-top" data-pcb-silkscreen-text-id="pcb_component_0" stroke="none" data-type="pcb_silkscreen_text" data-pcb-layer="top">R1</text><g data-type="pcb_plated_hole" data-pcb-layer="through"><circle class="pcb-hole-outer" fill="rgb(200, 52, 52)" cx="400" cy="300" r="32.72727272727273" data-type="pcb_plated_hole" data-pcb-layer="top"/><circle class="pcb-hole-inner" fill="#FF26E2" cx="400" cy="300" r="16.363636363636363" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><circle class="pcb-hole" cx="400" cy="409.0909090909091" r="27.272727272727273" fill="#FF26E2" data-type="pcb_hole" data-pcb-layer="drill"/></svg>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.844"><style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><rect class="pcb-pad" fill="rgb(77, 127, 196)" x="547.2727272727273" y="280.90909090909093" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="bottom"/><rect class="pcb-pad" fill="rgb(77, 127, 196)" x="497.5" y="280.90909090909093" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="bottom"/><path class="pcb-silkscreen pcb-silkscreen-bottom" d="M 511.47727272727275 270 L 580.6818181818182 270 L 580.6818181818182 330 L 511.47727272727275 330" fill="none" stroke="#5da9e9" stroke-width="2.7272727272727275" stroke-linecap="round" stroke-linejoin="round" data-pcb-component-id="pcb_component_1" data-pcb-silkscreen-path-id="pcb_silkscreen_path_1" data-type="pcb_silkscreen_path" data-pcb-layer="bottom"/><text x="0" y="0" dx="0" dy="0" fill="#5da9e9" font-family="Arial, sans-serif" font-size="10.90909090909091" text-anchor="middle" dominant-baseline="central" transform="matrix(-1,0,0,1,536.3636363636364,256.3636363636364)" class="pcb-silkscreen-text pcb-silkscreen-bottom" data-pcb-silkscreen-text-id="pcb_component_1" stroke="none" data-type="pcb_silkscreen_text" data-pcb-layer="bottom">R2</text><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="224.77272727272728" y="280.90909090909093" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="274.5454545454545" y="280.90909090909093" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="top"/><path class="pcb-copper-pour pcb-copper-pour-brep" d="M
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.844"><style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><rect class="pcb-pad" fill="rgb(77, 127, 196)" x="547.2727272727273" y="280.90909090909093" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="bottom"/><rect class="pcb-pad" fill="rgb(77, 127, 196)" x="497.5" y="280.90909090909093" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="bottom"/><path class="pcb-silkscreen pcb-silkscreen-bottom" d="M 511.47727272727275 270 L 580.6818181818182 270 L 580.6818181818182 330 L 511.47727272727275 330" fill="none" stroke="#5da9e9" stroke-width="2.7272727272727275" stroke-linecap="round" stroke-linejoin="round" data-pcb-component-id="pcb_component_1" data-pcb-silkscreen-path-id="pcb_silkscreen_path_1" data-type="pcb_silkscreen_path" data-pcb-layer="bottom"/><text x="0" y="0" dx="0" dy="0" fill="#5da9e9" font-family="Arial, sans-serif" font-size="10.90909090909091" text-anchor="middle" dominant-baseline="central" transform="matrix(-1,0,0,1,536.3636363636364,256.3636363636364)" class="pcb-silkscreen-text pcb-silkscreen-bottom" data-pcb-silkscreen-text-id="pcb_component_1" stroke="none" data-type="pcb_silkscreen_text" data-pcb-layer="bottom">R2</text><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 127.27272727272725 27.272727272727252 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="224.77272727272728" y="280.90909090909093" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="274.5454545454545" y="280.90909090909093" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="top"/><path class="pcb-copper-pour pcb-copper-pour-brep" d="M 127.27272727272725 572.7272727272727 L 127.27272727272725 27.272727272727252 L 672.7272727272727 27.272727272727252 L 672.7272727272727 572.7272727272727 L 127.27272727272725 572.7272727272727 Z M 438.1818181818182 300 L 437.4481652517597 292.5510967957478 L 435.27540033224915 285.388450764242 L 431.7470215606426 278.7873183756152 L 426.99862255439547 273.00137744560453 L 421.2126816243848 268.2529784393574 L 414.611549235758 264.72459966775085 L 407.4489032042522 262.5518347482403 L 400 261.8181818181818 L 392.5510967957478 262.5518347482403 L 385.388450764242 264.72459966775085 L 378.7873183756152 268.2529784393574 L 373.00137744560453 273.00137744560453 L 368.2529784393574 278.7873183756152 L 364.72459966775085 285.388450764242 L 362.5518347482403 292.5510967957478 L 361.8181818181818 300 L 362.5518347482403 307.4489032042522 L 364.72459966775085 314.611549235758 L 368.2529784393574 321.2126816243848 L 373.00137744560453 326.99862255439547 L 378.7873183756152 331.7470215606426 L 385.388450764242 335.2754003322491 L 392.5510967957478 337.4481652517597 L 400 338.1818181818182 L 407.4489032042522 337.4481652517597 L 414.611549235758 335.27540033224915 L 421.2126816243848 331.7470215606426 L 426.99862255439547 326.99862255439547 L 431.7470215606426 321.2126816243848 L 435.2754003322491 314.611549235758 L 437.4481652517597 307.4489032042522 L 438.1818181818182 300 Z M 427.27272727272725 409.0909090909091 L 426.74868946554267 403.7702639450147 L 425.1967145230351 398.65408820822483 L 422.6764439718876 393.93899364491995 L 419.28473039599675 389.8061786949123 L 415.1519154459892 386.4144651190215 L 410.4368208826843 383.894194567874 L 405.3206451458944 382.34221962536645 L 400 381.8181818181818 L 394.6793548541056 382.34221962536645 L 389.5631791173157 383.894194567874 L 384.8480845540109 386.4144651190215 L 380.71526960400325 389.8061786949123 L 377.3235560281124 393.93899364491995 L 374.8032854769649 398.65408820822483 L 373.25131053445733 403.7702639450147 L 372.72727272727275 409.0909090909091 L 373.25131053445733 414.4115542368035 L 374.8032854769649 419.52772997359335 L 377.3235560281124 424.24282453689824 L 380.71526960400325 428.37563948690587 L 384.8480845540108 431.7673530627967 L 389.5631791173157 434.28762361394416 L 394.67935485410555 435.83959855645173 L 400 436.3636363636364 L 405.3206451458944 435.83959855645173 L 410.4368208826843 434.2876236139442 L 415.1519154459891 431.7673530627967 L 419.28473039599675 428.37563948690587 L 422.6764439718876 424.24282453689824 L 425.1967145230351 419.5277299735934 L 426.74868946554267 414.4115542368035 L 427.27272727272725 409.0909090909091 Z M 219.3181818181818 324.54545454545456 L 258.1818181818182 324.54545454545456 L 258.1818181818182 275.45454545454544 L 219.3181818181818 275.45454545454544 L 219.3181818181818 324.54545454545456 Z" fill="rgb(200, 52, 52)" fill-rule="evenodd" fill-opacity="0.5" data-type="pcb_copper_pour" data-pcb-layer="top"/><path class="pcb-silkscreen pcb-silkscreen-top" d="M 288.52272727272725 270 L 219.3181818181818 270 L 219.3181818181818 330 L 288.52272727272725 330" fill="none" stroke="#f2eda1" stroke-width="2.7272727272727275" stroke-linecap="round" stroke-linejoin="round" data-pcb-component-id="pcb_component_0" data-pcb-silkscreen-path-id="pcb_silkscreen_path_0" data-type="pcb_silkscreen_path" data-pcb-layer="top"/><text x="0" y="0" dx="0" dy="0" fill="#f2eda1" font-family="Arial, sans-serif" font-size="10.90909090909091" text-anchor="middle" dominant-baseline="central" transform="matrix(1,0,0,1,263.6363636363636,256.3636363636364)" class="pcb-silkscreen-text pcb-silkscreen-top" data-pcb-silkscreen-text-id="pcb_component_0" stroke="none" data-type="pcb_silkscreen_text" data-pcb-layer="top">R1</text><g data-type="pcb_plated_hole" data-pcb-layer="through"><circle class="pcb-hole-outer" fill="rgb(200, 52, 52)" cx="400" cy="300" r="32.72727272727273" data-type="pcb_plated_hole" data-pcb-layer="top"/><circle class="pcb-hole-inner" fill="#FF26E2" cx="400" cy="300" r="16.363636363636363" data-type="pcb_plated_hole_drill" data-pcb-layer="drill"/></g><circle class="pcb-hole" cx="400" cy="409.0909090909091" r="27.272727272727273" fill="#FF26E2" data-type="pcb_hole" data-pcb-layer="drill"/></svg>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.844"><style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="33.33333333333337" y="22.22222222222223" width="733.3333333333334" height="555.5555555555557" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 144.4444444444445 577.7777777777778 L 700 577.7777777777778 L 744.4444444444445 466.6666666666667 L 766.6666666666667 244.44444444444446 L 744.4444444444445 22.22222222222223 L 700 22.22222222222223 L 588.8888888888889 22.22222222222223 L 588.8888888888889 133.33333333333334 L 477.7777777777778 133.33333333333334 L 477.7777777777778 22.22222222222223 L 144.4444444444445 22.22222222222223 L 33.33333333333337 133.33333333333334 L 144.4444444444445 244.44444444444446 L 255.5555555555556 244.44444444444446 L 255.5555555555556 466.6666666666667 L 144.4444444444445 466.6666666666667 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.2222222222222223" data-type="pcb_board" data-pcb-layer="board"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="335" y="273.33333333333337" width="22.777777777777775" height="31.111111111111107" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="375.55555555555554" y="273.33333333333337" width="22.777777777777775" height="31.111111111111107" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="557.2222222222223" y="273.33333333333337" width="22.777777777777775" height="31.111111111111107" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="597.7777777777778" y="273.33333333333337" width="22.777777777777775" height="31.111111111111107" data-type="pcb_smtpad" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 568.6111111111112 288.8888888888889 L 609.1666666666667 288.8888888888889" stroke-width="3.333333333333333" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 609.1666666666667 288.8888888888889 L 609.1666666666667 288.8888888888889" stroke-width="3.333333333333333" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 568.6111111111112 288.8888888888889 L 386.94444444444446 288.8888888888889" stroke-width="3.333333333333333" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 386.94444444444446 288.8888888888889 L 386.94444444444446 288.8888888888889" stroke-width="3.333333333333333" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-copper-pour pcb-copper-pour-brep" d="M
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.844"><style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="33.33333333333337" y="22.22222222222223" width="733.3333333333334" height="555.5555555555557" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 144.4444444444445 577.7777777777778 L 700 577.7777777777778 L 744.4444444444445 466.6666666666667 L 766.6666666666667 244.44444444444446 L 744.4444444444445 22.22222222222223 L 700 22.22222222222223 L 588.8888888888889 22.22222222222223 L 588.8888888888889 133.33333333333334 L 477.7777777777778 133.33333333333334 L 477.7777777777778 22.22222222222223 L 144.4444444444445 22.22222222222223 L 33.33333333333337 133.33333333333334 L 144.4444444444445 244.44444444444446 L 255.5555555555556 244.44444444444446 L 255.5555555555556 466.6666666666667 L 144.4444444444445 466.6666666666667 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.2222222222222223" data-type="pcb_board" data-pcb-layer="board"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="335" y="273.33333333333337" width="22.777777777777775" height="31.111111111111107" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="375.55555555555554" y="273.33333333333337" width="22.777777777777775" height="31.111111111111107" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="557.2222222222223" y="273.33333333333337" width="22.777777777777775" height="31.111111111111107" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="597.7777777777778" y="273.33333333333337" width="22.777777777777775" height="31.111111111111107" data-type="pcb_smtpad" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 568.6111111111112 288.8888888888889 L 609.1666666666667 288.8888888888889" stroke-width="3.333333333333333" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 609.1666666666667 288.8888888888889 L 609.1666666666667 288.8888888888889" stroke-width="3.333333333333333" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 568.6111111111112 288.8888888888889 L 386.94444444444446 288.8888888888889" stroke-width="3.333333333333333" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 386.94444444444446 288.8888888888889 L 386.94444444444446 288.8888888888889" stroke-width="3.333333333333333" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-copper-pour pcb-copper-pour-brep" d="M 166.66666666666674 488.8888888888889 L 233.3333333333334 488.8888888888889 L 255.55555555555597 488.8888888888889 L 277.7777777777778 488.8888888888889 L 277.7777777777778 466.6666666666667 L 277.7777777777778 444.44444444444446 L 277.7777777777778 266.6666666666667 L 277.7777777777778 244.44444444444446 L 277.7777777777778 222.22222222222223 L 255.5555555555556 222.22222222222223 L 233.3333333333334 222.22222222222223 L 153.64919027495773 222.22222222222223 L 64.76030138606876 133.33333333333343 L 153.6491902749578 44.44444444444443 L 455.5555555555556 44.444444444444514 L 455.5555555555556 111.11111111111114 L 455.5555555555556 133.33333333333337 L 455.5555555555556 155.55555555555557 L 477.7777777777778 155.55555555555557 L 500.00000000000006 155.55555555555557 L 566.6666666666667 155.55555555555557 L 588.8888888888889 155.55555555555557 L 611.1111111111111 155.55555555555557 L 611.1111111111111 133.33333333333334 L 611.1111111111111 111.11111111111114 L 611.1111111111111 44.44444444444446 L 700 44.44444444444446 L 724.3336097308425 44.44444444444446 L 744.3336097308425 244.44444444444466 L 722.6450571331745 461.32997042112515 L 684.9548230794022 555.5555555555555 L 166.66666666666674 555.5555555555555 L 166.66666666666674 488.8888888888889 Z M 407.2222222222223 295 L 548.3333333333334 295 L 548.3333333333334 313.33333333333337 L 588.8888888888889 313.33333333333337 L 629.4444444444445 313.33333333333337 L 629.4444444444445 264.44444444444446 L 588.8888888888889 264.44444444444446 L 548.3333333333334 264.44444444444446 L 548.3333333333334 282.7777777777778 L 407.2222222222223 282.77777777777777 L 407.2222222222223 264.44444444444446 L 366.6666666666667 264.44444444444446 L 366.6666666666667 313.33333333333337 L 407.2222222222223 313.33333333333337 L 407.2222222222223 295 Z" fill="rgb(200, 52, 52)" fill-rule="evenodd" fill-opacity="0.5" data-type="pcb_copper_pour" data-pcb-layer="top"/><path class="pcb-silkscreen pcb-silkscreen-top" d="M 386.94444444444446 264.44444444444446 L 330.5555555555556 264.44444444444446 L 330.5555555555556 313.33333333333337 L 386.94444444444446 313.33333333333337" fill="none" stroke="#f2eda1" stroke-width="2.2222222222222223" stroke-linecap="round" stroke-linejoin="round" data-pcb-component-id="pcb_component_0" data-pcb-silkscreen-path-id="pcb_silkscreen_path_0" data-type="pcb_silkscreen_path" data-pcb-layer="top"/><text x="0" y="0" dx="0" dy="0" fill="#f2eda1" font-family="Arial, sans-serif" font-size="8.88888888888889" text-anchor="middle" dominant-baseline="central" transform="matrix(1,0,0,1,366.66666666666674,253.33333333333334)" class="pcb-silkscreen-text pcb-silkscreen-top" data-pcb-silkscreen-text-id="pcb_component_0" stroke="none" data-type="pcb_silkscreen_text" data-pcb-layer="top">R1</text><path class="pcb-silkscreen pcb-silkscreen-top" d="M 609.1666666666667 264.44444444444446 L 552.7777777777778 264.44444444444446 L 552.7777777777778 313.33333333333337 L 609.1666666666667 313.33333333333337" fill="none" stroke="#f2eda1" stroke-width="2.2222222222222223" stroke-linecap="round" stroke-linejoin="round" data-pcb-component-id="pcb_component_1" data-pcb-silkscreen-path-id="pcb_silkscreen_path_1" data-type="pcb_silkscreen_path" data-pcb-layer="top"/><text x="0" y="0" dx="0" dy="0" fill="#f2eda1" font-family="Arial, sans-serif" font-size="8.88888888888889" text-anchor="middle" dominant-baseline="central" transform="matrix(1,0,0,1,588.8888888888889,253.33333333333334)" class="pcb-silkscreen-text pcb-silkscreen-top" data-pcb-silkscreen-text-id="pcb_component_1" stroke="none" data-type="pcb_silkscreen_text" data-pcb-layer="top">R2</text></svg>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.844"><style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 400 27.272727272727252 L 400 300 L 127.27272727272725 300 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="224.77272727272728" y="335.4545454545455" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="274.5454545454545" y="335.4545454545455" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="497.5" y="335.4545454545455" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="547.2727272727273" y="335.4545454545455" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 511.47727272727275 354.54545454545456 L 561.25 354.54545454545456" stroke-width="4.090909090909091" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 561.25 354.54545454545456 L 561.25 354.54545454545456" stroke-width="4.090909090909091" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 511.47727272727275 354.54545454545456 L 288.52272727272725 354.54545454545456" stroke-width="4.090909090909091" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 288.52272727272725 354.54545454545456 L 288.52272727272725 354.54545454545456" stroke-width="4.090909090909091" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-copper-pour pcb-copper-pour-brep" d="M
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" data-software-used-string="@tscircuit/core@0.0.844"><style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="127.27272727272725" y="27.272727272727252" width="545.4545454545455" height="545.4545454545455" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 127.27272727272725 572.7272727272727 L 672.7272727272727 572.7272727272727 L 672.7272727272727 27.272727272727252 L 400 27.272727272727252 L 400 300 L 127.27272727272725 300 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="2.7272727272727275" data-type="pcb_board" data-pcb-layer="board"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="224.77272727272728" y="335.4545454545455" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="274.5454545454545" y="335.4545454545455" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="497.5" y="335.4545454545455" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="top"/><rect class="pcb-pad" fill="rgb(200, 52, 52)" x="547.2727272727273" y="335.4545454545455" width="27.954545454545453" height="38.18181818181818" data-type="pcb_smtpad" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 511.47727272727275 354.54545454545456 L 561.25 354.54545454545456" stroke-width="4.090909090909091" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 561.25 354.54545454545456 L 561.25 354.54545454545456" stroke-width="4.090909090909091" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 511.47727272727275 354.54545454545456 L 288.52272727272725 354.54545454545456" stroke-width="4.090909090909091" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-trace" stroke="rgb(200, 52, 52)" fill="none" d="M 288.52272727272725 354.54545454545456 L 288.52272727272725 354.54545454545456" stroke-width="4.090909090909091" stroke-linecap="round" stroke-linejoin="round" shape-rendering="crispEdges" data-type="pcb_trace" data-pcb-layer="top"/><path class="pcb-copper-pour pcb-copper-pour-brep" d="M 313.4090909090909 362.0454545454545 L 486.5909090909091 362.04545454545456 L 486.5909090909091 384.54545454545456 L 536.3636363636364 384.54545454545456 L 586.1363636363636 384.54545454545456 L 586.1363636363636 324.54545454545456 L 536.3636363636364 324.54545454545456 L 486.5909090909091 324.54545454545456 L 486.5909090909091 347.04545454545456 L 313.4090909090909 347.04545454545456 L 313.4090909090909 327.27272727272725 L 372.72727272727275 327.27272727272725 L 400 327.27272727272725 L 427.27272727272725 327.27272727272725 L 427.27272727272725 300 L 427.27272727272725 272.72727272727275 L 427.27272727272725 54.54545454545453 L 645.4545454545455 54.54545454545453 L 645.4545454545455 545.4545454545455 L 154.54545454545453 545.4545454545455 L 154.54545454545453 327.27272727272725 L 263.6363636363636 327.27272727272725 L 263.6363636363636 384.54545454545456 L 313.4090909090909 384.54545454545456 L 313.4090909090909 362.0454545454545 Z" fill="rgb(200, 52, 52)" fill-rule="evenodd" fill-opacity="0.5" data-type="pcb_copper_pour" data-pcb-layer="top"/><path class="pcb-silkscreen pcb-silkscreen-top" d="M 288.52272727272725 324.54545454545456 L 219.3181818181818 324.54545454545456 L 219.3181818181818 384.54545454545456 L 288.52272727272725 384.54545454545456" fill="none" stroke="#f2eda1" stroke-width="2.7272727272727275" stroke-linecap="round" stroke-linejoin="round" data-pcb-component-id="pcb_component_0" data-pcb-silkscreen-path-id="pcb_silkscreen_path_0" data-type="pcb_silkscreen_path" data-pcb-layer="top"/><text x="0" y="0" dx="0" dy="0" fill="#f2eda1" font-family="Arial, sans-serif" font-size="10.90909090909091" text-anchor="middle" dominant-baseline="central" transform="matrix(1,0,0,1,263.6363636363636,310.9090909090909)" class="pcb-silkscreen-text pcb-silkscreen-top" data-pcb-silkscreen-text-id="pcb_component_0" stroke="none" data-type="pcb_silkscreen_text" data-pcb-layer="top">R1</text><path class="pcb-silkscreen pcb-silkscreen-top" d="M 561.25 324.54545454545456 L 492.04545454545456 324.54545454545456 L 492.04545454545456 384.54545454545456 L 561.25 384.54545454545456" fill="none" stroke="#f2eda1" stroke-width="2.7272727272727275" stroke-linecap="round" stroke-linejoin="round" data-pcb-component-id="pcb_component_1" data-pcb-silkscreen-path-id="pcb_silkscreen_path_1" data-type="pcb_silkscreen_path" data-pcb-layer="top"/><text x="0" y="0" dx="0" dy="0" fill="#f2eda1" font-family="Arial, sans-serif" font-size="10.90909090909091" text-anchor="middle" dominant-baseline="central" transform="matrix(1,0,0,1,536.3636363636364,310.9090909090909)" class="pcb-silkscreen-text pcb-silkscreen-top" data-pcb-silkscreen-text-id="pcb_component_1" stroke="none" data-type="pcb_silkscreen_text" data-pcb-layer="top">R2</text></svg>
|