schematic-symbols 0.0.99 → 0.0.100
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 -9
- package/dist/index.js +2031 -1671
- package/dist/index.js.map +1 -1
- package/drawing/arc.ts +3 -1
- package/drawing/getSvg.ts +32 -19
- package/drawing/pathToSvgD.ts +15 -2
- package/drawing/rotateSymbol.ts +35 -19
- package/drawing/svgPathToPoints.ts +1 -0
- package/drawing/utils/makeYUpPositive.ts +46 -0
- package/package.json +1 -1
- package/symbols/ac_voltmeter_horz.ts +2 -2
- package/symbols/ac_voltmeter_vert.ts +5 -23
- package/symbols/avalanche_diode_vert.ts +4 -11
- package/symbols/battery_vert.ts +4 -2
- package/symbols/crystal_horz.ts +2 -2
- package/symbols/diode_right.ts +7 -17
- package/symbols/fuse_horz.ts +1 -1
- package/symbols/ground_horz.ts +4 -4
- package/symbols/ground_vert.ts +3 -30
- package/symbols/schottky_diode_horz.ts +7 -16
package/drawing/arc.ts
CHANGED
@@ -6,6 +6,7 @@ export function approximateArc(
|
|
6
6
|
rx: number,
|
7
7
|
ry: number,
|
8
8
|
largeArcFlag: number,
|
9
|
+
sweepFlag: number,
|
9
10
|
x2: number,
|
10
11
|
y2: number,
|
11
12
|
): Point[] {
|
@@ -22,7 +23,8 @@ export function approximateArc(
|
|
22
23
|
0.03 *
|
23
24
|
Math.abs(Math.sin(t * Math.PI)) *
|
24
25
|
Math.min(rx, ry) *
|
25
|
-
(largeArcFlag ? 1 : -1)
|
26
|
+
(largeArcFlag ? 1 : -1) *
|
27
|
+
(sweepFlag ? -1 : 1)
|
26
28
|
points.push({ x, y: y + curveY })
|
27
29
|
}
|
28
30
|
return points
|
package/drawing/getSvg.ts
CHANGED
@@ -1,16 +1,24 @@
|
|
1
|
+
import { makeAnchorYUpPositive, makeYUpPositive } from "./utils/makeYUpPositive"
|
1
2
|
import { mapColor } from "./mapColor"
|
2
3
|
import { pathToSvgD } from "./pathToSvgD"
|
3
4
|
import type { Point, Port, SchSymbol, TextPrimitive } from "./types"
|
4
5
|
|
5
|
-
function createDiamondElement(
|
6
|
+
function createDiamondElement(
|
7
|
+
center: Point,
|
8
|
+
size = 0.05,
|
9
|
+
yUpPositive: boolean = true,
|
10
|
+
): string {
|
6
11
|
const { x, y } = center
|
7
12
|
const halfSize = size / 2
|
8
|
-
return `<path d="M ${x} ${y - halfSize} L ${x + halfSize} ${y} L ${x} ${
|
9
|
-
y + halfSize
|
10
|
-
} L ${x - halfSize} ${y} Z" fill="green" />`
|
13
|
+
return `<path d="M ${x} ${makeYUpPositive(y, yUpPositive) - halfSize} L ${x + halfSize} ${makeYUpPositive(y, yUpPositive)} L ${x} ${
|
14
|
+
makeYUpPositive(y, yUpPositive) + halfSize
|
15
|
+
} L ${x - halfSize} ${makeYUpPositive(y, yUpPositive)} Z" fill="green" />`
|
11
16
|
}
|
12
17
|
|
13
|
-
function createTextElement(
|
18
|
+
function createTextElement(
|
19
|
+
primitive: TextPrimitive,
|
20
|
+
{ yUpPositive }: { yUpPositive?: boolean },
|
21
|
+
): {
|
14
22
|
text: string
|
15
23
|
anchor: string
|
16
24
|
} {
|
@@ -58,16 +66,19 @@ function createTextElement(primitive: TextPrimitive): {
|
|
58
66
|
}
|
59
67
|
|
60
68
|
return {
|
61
|
-
text: `<text x="${x}" y="${y}" dx="${dx}" dy="${dy}" text-anchor="${textAnchor}" style="font: ${
|
69
|
+
text: `<text x="${x}" y="${makeYUpPositive(y, yUpPositive)}" dx="${dx}" dy="${dy}" text-anchor="${textAnchor}" style="font: ${
|
62
70
|
fontSize ?? 0.1
|
63
71
|
}px monospace; fill: ${mapColor("primary")}">${text}</text>`,
|
64
72
|
anchor: `<rect x="${x - 0.025 / 2}" y="${
|
65
|
-
y - 0.025 / 2
|
73
|
+
makeYUpPositive(y, yUpPositive) - 0.025 / 2
|
66
74
|
}" width="0.025" height="0.025" fill="blue" />`,
|
67
75
|
}
|
68
76
|
}
|
69
77
|
|
70
|
-
function createPortElement(
|
78
|
+
function createPortElement(
|
79
|
+
port: Port,
|
80
|
+
{ yUpPositive }: { yUpPositive?: boolean },
|
81
|
+
): string {
|
71
82
|
const { x, y, labels } = port
|
72
83
|
const rectSize = 0.05
|
73
84
|
const labelFontSize = 0.08
|
@@ -75,10 +86,10 @@ function createPortElement(port: Port): string {
|
|
75
86
|
|
76
87
|
return `
|
77
88
|
<rect x="${x - rectSize / 2}" y="${
|
78
|
-
y - rectSize / 2
|
89
|
+
makeYUpPositive(y, yUpPositive) - rectSize / 2
|
79
90
|
}" width="${rectSize}" height="${rectSize}" fill="red" />
|
80
91
|
<text x="${x - labelFontSize / 2}" y="${
|
81
|
-
y + rectSize + labelFontSize / 2
|
92
|
+
makeYUpPositive(y, yUpPositive) + rectSize + labelFontSize / 2
|
82
93
|
}" text-anchor="middle" style="font: ${labelFontSize}px monospace; fill: #833;">${label}</text>
|
83
94
|
`
|
84
95
|
}
|
@@ -92,19 +103,19 @@ export function getInnerSvg(
|
|
92
103
|
const svgElements = primitives.map((primitive) => {
|
93
104
|
switch (primitive.type) {
|
94
105
|
case "path":
|
95
|
-
return `<path d="${pathToSvgD(
|
96
|
-
primitive.
|
97
|
-
|
98
|
-
)}" fill="${
|
106
|
+
return `<path d="${pathToSvgD(primitive.points, {
|
107
|
+
closed: primitive.closed,
|
108
|
+
yUpPositive: true,
|
109
|
+
})}" fill="${
|
99
110
|
primitive.fill ? mapColor(primitive.color) : "none"
|
100
111
|
}" stroke="${mapColor(
|
101
112
|
primitive.color,
|
102
113
|
)}" stroke-width="0.02" stroke-linecap="round" stroke-linejoin="round" />`
|
103
114
|
case "text":
|
104
|
-
const textElements = createTextElement(primitive)
|
115
|
+
const textElements = createTextElement(primitive, { yUpPositive: true })
|
105
116
|
return textElements.text + (debug ? textElements.anchor : "")
|
106
117
|
case "circle":
|
107
|
-
return `<circle cx="${primitive.x}" cy="${primitive.y}" r="${
|
118
|
+
return `<circle cx="${primitive.x}" cy="${makeYUpPositive(primitive.y, true)}" r="${
|
108
119
|
primitive.radius
|
109
120
|
}" fill="${primitive.fill ? mapColor(primitive.color) : "none"}" ${
|
110
121
|
!primitive.fill
|
@@ -112,7 +123,7 @@ export function getInnerSvg(
|
|
112
123
|
: ""
|
113
124
|
} />`
|
114
125
|
case "box":
|
115
|
-
return `<rect x="${primitive.x}" y="${primitive.y}" width="${
|
126
|
+
return `<rect x="${primitive.x}" y="${makeYUpPositive(primitive.y)}" width="${
|
116
127
|
primitive.width
|
117
128
|
}" height="${primitive.height}" fill="${mapColor("primary")}" />`
|
118
129
|
default:
|
@@ -120,7 +131,9 @@ export function getInnerSvg(
|
|
120
131
|
}
|
121
132
|
})
|
122
133
|
|
123
|
-
const portElements = ports
|
134
|
+
const portElements = ports
|
135
|
+
.map((p) => createPortElement(p, { yUpPositive: true }))
|
136
|
+
.join("\n ")
|
124
137
|
|
125
138
|
const centerDiamond = createDiamondElement(symbol.center)
|
126
139
|
|
@@ -140,7 +153,7 @@ export function getSvg(
|
|
140
153
|
const h = size.height * bufferMultiple
|
141
154
|
const viewBox = {
|
142
155
|
x: symbol.center.x - w / 2,
|
143
|
-
y: symbol.center.y - h / 2,
|
156
|
+
y: makeYUpPositive(symbol.center.y, true) - h / 2,
|
144
157
|
width: w,
|
145
158
|
height: h,
|
146
159
|
}
|
package/drawing/pathToSvgD.ts
CHANGED
@@ -1,8 +1,21 @@
|
|
1
1
|
import type { Point } from "drawing"
|
2
|
+
import { makeYUpPositive } from "./utils/makeYUpPositive"
|
2
3
|
|
3
|
-
export function pathToSvgD(
|
4
|
+
export function pathToSvgD(
|
5
|
+
points: Point[],
|
6
|
+
{
|
7
|
+
closed = false,
|
8
|
+
yUpPositive = true,
|
9
|
+
}: {
|
10
|
+
closed?: boolean
|
11
|
+
yUpPositive?: boolean
|
12
|
+
},
|
13
|
+
): string {
|
4
14
|
const pathCommands = points
|
5
|
-
.map(
|
15
|
+
.map(
|
16
|
+
(point, index) =>
|
17
|
+
`${index === 0 ? "M" : "L"}${point.x},${makeYUpPositive(point.y, yUpPositive)}`,
|
18
|
+
)
|
6
19
|
.join(" ")
|
7
20
|
|
8
21
|
return closed ? `${pathCommands} Z` : pathCommands
|
package/drawing/rotateSymbol.ts
CHANGED
@@ -8,29 +8,29 @@ import type {
|
|
8
8
|
} from "./types"
|
9
9
|
|
10
10
|
// Update rotateAnchor to handle all anchor rotations based on orientation
|
11
|
-
const
|
11
|
+
const rotateRightFacingAnchor = (
|
12
12
|
anchor: NinePointAnchor,
|
13
|
-
|
13
|
+
newOrientation: "up" | "down" | "left" | "right" = "right",
|
14
14
|
): NinePointAnchor => {
|
15
|
-
switch (
|
16
|
-
case "
|
15
|
+
switch (newOrientation) {
|
16
|
+
case "down":
|
17
17
|
switch (anchor) {
|
18
18
|
case "middle_top":
|
19
|
-
return "middle_left"
|
20
|
-
case "middle_bottom":
|
21
19
|
return "middle_right"
|
20
|
+
case "middle_bottom":
|
21
|
+
return "middle_left"
|
22
22
|
case "middle_left":
|
23
23
|
return "middle_bottom"
|
24
24
|
case "middle_right":
|
25
25
|
return "middle_top"
|
26
26
|
}
|
27
27
|
break
|
28
|
-
case "
|
28
|
+
case "up":
|
29
29
|
switch (anchor) {
|
30
30
|
case "middle_top":
|
31
|
-
return "middle_right"
|
32
|
-
case "middle_bottom":
|
33
31
|
return "middle_left"
|
32
|
+
case "middle_bottom":
|
33
|
+
return "middle_right"
|
34
34
|
case "middle_left":
|
35
35
|
return "middle_top"
|
36
36
|
case "middle_right":
|
@@ -213,21 +213,24 @@ export const flipSymbolOverYAxis = (
|
|
213
213
|
}
|
214
214
|
}
|
215
215
|
|
216
|
-
export const
|
216
|
+
export const rotateRightFacingSymbol = (
|
217
217
|
symbol: SchSymbol,
|
218
|
-
|
219
|
-
|
218
|
+
opts: {
|
219
|
+
newOrientation?: "up" | "down" | "left" | "right"
|
220
|
+
overrides?: Partial<SchSymbol>
|
221
|
+
},
|
220
222
|
): SchSymbol => {
|
223
|
+
const { newOrientation, overrides } = opts
|
221
224
|
// Assuming the default orientation is "right"
|
222
225
|
const angleMap = {
|
223
|
-
up:
|
226
|
+
up: Math.PI / 2,
|
224
227
|
right: 0,
|
225
|
-
down: Math.PI / 2,
|
228
|
+
down: -Math.PI / 2,
|
226
229
|
left: -Math.PI,
|
227
230
|
}
|
228
231
|
|
229
232
|
const transform = rotate(
|
230
|
-
|
233
|
+
newOrientation ? angleMap[newOrientation] : Math.PI / 2,
|
231
234
|
symbol.center.x,
|
232
235
|
symbol.center.y,
|
233
236
|
)
|
@@ -250,9 +253,9 @@ export const rotateSymbol = (
|
|
250
253
|
y: primitive.y,
|
251
254
|
}) as Point
|
252
255
|
|
253
|
-
primitive.anchor =
|
256
|
+
primitive.anchor = rotateRightFacingAnchor(
|
254
257
|
primitive.anchor,
|
255
|
-
|
258
|
+
newOrientation ?? "right",
|
256
259
|
)
|
257
260
|
|
258
261
|
return {
|
@@ -298,14 +301,27 @@ export const rotateSymbol = (
|
|
298
301
|
ports: rotatedPorts,
|
299
302
|
size: {
|
300
303
|
width:
|
301
|
-
|
304
|
+
newOrientation === "up" || newOrientation === "down"
|
302
305
|
? size.width
|
303
306
|
: size.height,
|
304
307
|
height:
|
305
|
-
|
308
|
+
newOrientation === "up" || newOrientation === "down"
|
306
309
|
? size.height
|
307
310
|
: size.width,
|
308
311
|
},
|
309
312
|
...overrides,
|
310
313
|
}
|
311
314
|
}
|
315
|
+
|
316
|
+
/**
|
317
|
+
* @deprecated use rotateRightFacingSymbol instead
|
318
|
+
*/
|
319
|
+
export const rotateSymbol = (
|
320
|
+
symbol: SchSymbol,
|
321
|
+
orientation: "up" | "down" | "left" | "right" = "down",
|
322
|
+
overrides: Partial<SchSymbol> = {},
|
323
|
+
): SchSymbol =>
|
324
|
+
rotateRightFacingSymbol(symbol, {
|
325
|
+
newOrientation: orientation,
|
326
|
+
overrides,
|
327
|
+
})
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import { NinePointAnchor } from "drawing/types"
|
2
|
+
|
3
|
+
/**
|
4
|
+
* In Inkscape and Websites, Y-up is NEGATIVE- meaning e.g. y=10 is BELOW y=0.
|
5
|
+
*
|
6
|
+
* Our symbols are defined with Y-up POSITIVE, meaning e.g. y=10 is ABOVE y=0.
|
7
|
+
*
|
8
|
+
* This function helps flip y positions so that you can convert from schematic
|
9
|
+
* symbol coordinates to SVG coordinates.
|
10
|
+
*/
|
11
|
+
export const makeYUpPositive = (y: number, yUpPositive: boolean = true) => {
|
12
|
+
return yUpPositive ? -y : y
|
13
|
+
}
|
14
|
+
|
15
|
+
/**
|
16
|
+
* This function gives an intermediate anchor flip that can be used to determine
|
17
|
+
* how anchors should be interpreted when flipping in the Y-axis.
|
18
|
+
*
|
19
|
+
* It converts top_left -> bottom_left etc.
|
20
|
+
*
|
21
|
+
* y=1 top_left -------
|
22
|
+
* y=0 | |
|
23
|
+
* y=-1 -------------
|
24
|
+
*
|
25
|
+
* Y-up Negative
|
26
|
+
*
|
27
|
+
* y=-1 -------------
|
28
|
+
* y=0 | |
|
29
|
+
* y=1 bottom_left --
|
30
|
+
*/
|
31
|
+
export const flipAnchorOverYAxis = (anchor: NinePointAnchor) => {
|
32
|
+
if (anchor === "top_left") return "bottom_left"
|
33
|
+
if (anchor === "top_right") return "bottom_right"
|
34
|
+
if (anchor === "bottom_left") return "top_left"
|
35
|
+
if (anchor === "bottom_right") return "top_right"
|
36
|
+
if (anchor === "middle_top") return "middle_bottom"
|
37
|
+
if (anchor === "middle_bottom") return "middle_top"
|
38
|
+
return anchor
|
39
|
+
}
|
40
|
+
|
41
|
+
export const makeAnchorYUpPositive = (
|
42
|
+
anchor: NinePointAnchor,
|
43
|
+
yUpPositive: boolean = true,
|
44
|
+
) => {
|
45
|
+
return yUpPositive ? flipAnchorOverYAxis(anchor) : anchor
|
46
|
+
}
|
package/package.json
CHANGED
@@ -12,14 +12,14 @@ export default defineSymbol({
|
|
12
12
|
text: "{REF}",
|
13
13
|
x: 0,
|
14
14
|
y: -0.3594553499999995,
|
15
|
-
anchor: "
|
15
|
+
anchor: "middle_top",
|
16
16
|
},
|
17
17
|
{
|
18
18
|
type: "text",
|
19
19
|
text: "{VAL}",
|
20
20
|
x: 0,
|
21
21
|
y: 0.35,
|
22
|
-
anchor: "
|
22
|
+
anchor: "middle_bottom",
|
23
23
|
},
|
24
24
|
] as any,
|
25
25
|
ports: [
|
@@ -1,26 +1,8 @@
|
|
1
|
-
import {
|
2
|
-
import
|
3
|
-
import { Primitive } from "drawing/types"
|
1
|
+
import { rotateRightFacingSymbol } from "drawing/rotateSymbol"
|
2
|
+
import ac_voltmeter_horz from "./ac_voltmeter_horz"
|
4
3
|
|
5
|
-
const {
|
6
|
-
|
7
|
-
3: path1,
|
8
|
-
4: path2,
|
9
|
-
5: path3,
|
10
|
-
6: path4,
|
11
|
-
...rest
|
12
|
-
} = dc_voltmeter_horz.primitives
|
13
|
-
|
14
|
-
function isPrimitive(value: any): value is Primitive {
|
15
|
-
return typeof value === "object"
|
16
|
-
}
|
17
|
-
|
18
|
-
const rotatedSymbol = rotateSymbol({
|
19
|
-
...dc_voltmeter_horz,
|
20
|
-
primitives: Object.values(rest).filter(isPrimitive),
|
4
|
+
const rotatedSymbol = rotateRightFacingSymbol(ac_voltmeter_horz, {
|
5
|
+
newOrientation: "up",
|
21
6
|
})
|
22
7
|
|
23
|
-
export default
|
24
|
-
...rotatedSymbol,
|
25
|
-
primitives: [...rotatedSymbol.primitives, letter, path1, path2, path3, path4],
|
26
|
-
}
|
8
|
+
export default rotatedSymbol
|
@@ -1,17 +1,10 @@
|
|
1
|
-
import { rotateSymbol } from "drawing/rotateSymbol"
|
1
|
+
import { rotateRightFacingSymbol, rotateSymbol } from "drawing/rotateSymbol"
|
2
2
|
import avalanche_diode_horz from "./avalanche_diode_horz"
|
3
3
|
|
4
4
|
import type { TextPrimitive } from "drawing"
|
5
5
|
|
6
|
-
const rotated =
|
7
|
-
|
8
|
-
|
9
|
-
)! as TextPrimitive
|
10
|
-
const val = rotated.primitives.find(
|
11
|
-
(p) => p.type === "text" && p.text === "{VAL}",
|
12
|
-
)! as TextPrimitive
|
13
|
-
|
14
|
-
ref.anchor = "middle_left"
|
15
|
-
val.anchor = "middle_right"
|
6
|
+
const rotated = rotateRightFacingSymbol(avalanche_diode_horz, {
|
7
|
+
newOrientation: "down",
|
8
|
+
})
|
16
9
|
|
17
10
|
export default rotated
|
package/symbols/battery_vert.ts
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
import {
|
1
|
+
import { rotateRightFacingSymbol } from "drawing/rotateSymbol"
|
2
2
|
import battery_horz from "./battery_horz"
|
3
3
|
|
4
|
-
export default
|
4
|
+
export default rotateRightFacingSymbol(battery_horz, {
|
5
|
+
newOrientation: "up",
|
6
|
+
})
|
package/symbols/crystal_horz.ts
CHANGED
@@ -14,14 +14,14 @@ export default defineSymbol({
|
|
14
14
|
text: "{REF}",
|
15
15
|
x: -0.012864500000000056,
|
16
16
|
y: -0.4150086999999978,
|
17
|
-
anchor: "
|
17
|
+
anchor: "middle_top",
|
18
18
|
},
|
19
19
|
{
|
20
20
|
type: "text",
|
21
21
|
text: "{VAL}",
|
22
22
|
x: -0.003850500000000423,
|
23
23
|
y: 0.4250087000000011,
|
24
|
-
anchor: "
|
24
|
+
anchor: "middle_bottom",
|
25
25
|
},
|
26
26
|
] as any,
|
27
27
|
ports: [
|
package/symbols/diode_right.ts
CHANGED
@@ -1,20 +1,10 @@
|
|
1
1
|
import { defineSymbol } from "drawing/defineSymbol"
|
2
2
|
import svgJson from "assets/generated/diode.json"
|
3
|
-
import {
|
3
|
+
import { modifySymbol } from "scripts/lib/modify-symbol/modify-symbol"
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
{ ...texts.top1, anchor: "middle_bottom" },
|
12
|
-
{ ...texts.bottom1, anchor: "middle_top" },
|
13
|
-
] as Primitive[],
|
14
|
-
ports: [
|
15
|
-
{ ...refblocks.left1, labels: ["1"] }, // TODO add more "standard" labels
|
16
|
-
{ ...refblocks.right1, labels: ["2"] }, // TODO add more "standard" labels
|
17
|
-
],
|
18
|
-
size: { width: bounds.width, height: bounds.height },
|
19
|
-
center: { x: bounds.centerX, y: bounds.centerY },
|
20
|
-
})
|
5
|
+
export default modifySymbol(svgJson)
|
6
|
+
.labelPort("left1", ["1", "pos"])
|
7
|
+
.labelPort("right1", ["2", "neg"])
|
8
|
+
.changeTextAnchor("{REF}", "middle_bottom")
|
9
|
+
.changeTextAnchor("{VAL}", "middle_top")
|
10
|
+
.build()
|
package/symbols/fuse_horz.ts
CHANGED
package/symbols/ground_horz.ts
CHANGED
@@ -15,20 +15,20 @@ export const horizontalSymbol = defineSymbol({
|
|
15
15
|
type: "text",
|
16
16
|
text: "{REF}", // REF label for horizontal
|
17
17
|
x: -0.1, // Adjust this for the horizontal positioning of REF
|
18
|
-
y:
|
18
|
+
y: 0.8, // Adjust this for the vertical positioning of REF
|
19
19
|
anchor: "middle_bottom", // Horizontal anchor for REF
|
20
20
|
},
|
21
21
|
{
|
22
22
|
type: "text",
|
23
23
|
text: "{VAL}", // VAL label for horizontal
|
24
24
|
x: -0.1, // Adjust for horizontal positioning of VAL
|
25
|
-
y:
|
25
|
+
y: 0.1, // Adjust for vertical positioning of VAL
|
26
26
|
anchor: "middle_top", // Horizontal anchor for VAL
|
27
27
|
},
|
28
28
|
] as Primitive[],
|
29
29
|
ports: [{ ...refblocks.top1, labels: ["1"] }],
|
30
|
-
size: { width:
|
31
|
-
center: { x:
|
30
|
+
size: { width: 1, height: 1 },
|
31
|
+
center: { x: 0, y: 0.4 },
|
32
32
|
})
|
33
33
|
|
34
34
|
// Vertical orientation symbol
|
package/symbols/ground_vert.ts
CHANGED
@@ -1,34 +1,7 @@
|
|
1
1
|
import { defineSymbol } from "drawing/defineSymbol"
|
2
2
|
import svgJson from "assets/generated/ground.json"
|
3
3
|
import { Primitive } from "drawing/types"
|
4
|
-
import
|
4
|
+
import groundHorz from "./ground_horz"
|
5
|
+
import { modifySymbol } from "scripts/lib/modify-symbol/modify-symbol"
|
5
6
|
|
6
|
-
|
7
|
-
const { paths, circles, bounds, refblocks } = svgJson
|
8
|
-
|
9
|
-
export const verticalSymbol = defineSymbol({
|
10
|
-
primitives: [
|
11
|
-
...Object.values(paths),
|
12
|
-
...Object.values(circles),
|
13
|
-
{
|
14
|
-
type: "text",
|
15
|
-
text: "{REF}", // REF label for vertical
|
16
|
-
x: -0.015, // Adjust this for the horizontal positioning of REF
|
17
|
-
y: -0.75, // Adjust this for the vertical positioning of REF
|
18
|
-
anchor: "middle_bottom", // Vertical anchor for REF
|
19
|
-
},
|
20
|
-
{
|
21
|
-
type: "text",
|
22
|
-
text: "{VAL}", // VAL label for vertical
|
23
|
-
x: -0.015, // Adjust for horizontal positioning of VAL
|
24
|
-
y: -0.12, // Adjust for vertical positioning of VAL
|
25
|
-
anchor: "middle_top", // Vertical anchor for VAL
|
26
|
-
},
|
27
|
-
] as Primitive[],
|
28
|
-
ports: [{ ...refblocks.top1, labels: ["1"] }],
|
29
|
-
size: { width: bounds.width, height: bounds.height },
|
30
|
-
center: { x: bounds.centerX, y: bounds.centerY - 0.45 },
|
31
|
-
})
|
32
|
-
|
33
|
-
// Export vertical symbol (rotated 90 degrees from original)
|
34
|
-
export default rotateSymbol(verticalSymbol)
|
7
|
+
export default modifySymbol(groundHorz).rotateRightFacingSymbol("down").build()
|
@@ -1,19 +1,10 @@
|
|
1
1
|
import { defineSymbol } from "drawing/defineSymbol"
|
2
2
|
import svgJson from "assets/generated/schottky_diode.json"
|
3
|
+
import { modifySymbol } from "scripts/lib/modify-symbol/modify-symbol"
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
{ ...texts.top1, anchor: "middle_bottom" },
|
11
|
-
{ ...texts.bottom1, anchor: "middle_top" },
|
12
|
-
] as any,
|
13
|
-
ports: [
|
14
|
-
{ ...refblocks.left1, labels: ["1"] }, // TODO add more "standard" labels
|
15
|
-
{ ...refblocks.right1, labels: ["2"] }, // TODO add more "standard" labels
|
16
|
-
],
|
17
|
-
size: { width: bounds.width, height: bounds.height },
|
18
|
-
center: { x: bounds.centerX, y: bounds.centerY },
|
19
|
-
})
|
5
|
+
export default modifySymbol(svgJson)
|
6
|
+
.labelPort("left1", ["1", "pos"])
|
7
|
+
.labelPort("right1", ["2", "neg"])
|
8
|
+
.changeTextAnchor("{VAL}", "middle_bottom")
|
9
|
+
.changeTextAnchor("{REF}", "middle_top")
|
10
|
+
.build()
|