circuit-json-to-lbrn 0.0.53 → 0.0.54
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/README.md +1 -1
- package/dist/index.js +5 -5
- package/lib/index.ts +5 -5
- package/package.json +2 -2
- package/site/main.tsx +2 -7
- package/tests/basics/laser-profile.test.ts +7 -7
package/README.md
CHANGED
|
@@ -38,7 +38,7 @@ const defaultLbrn = convertCircuitJsonToLbrn(circuitJson)
|
|
|
38
38
|
- `margin?: number` - Set the margin around the PCB
|
|
39
39
|
- `traceMargin?: number` - Clearance margin around traces in mm (requires `includeCopper: true`)
|
|
40
40
|
- `laserSpotSize?: number` - Laser spot size in mm for crosshatch spacing (default: `0.005`)
|
|
41
|
-
- `laserProfile?: { copper?: { speed?: number; numPasses?: number; frequency?: number; pulseWidth?: number }; board?: { speed?: number; numPasses?: number; frequency?: number; pulseWidth?: number } }` - Custom laser cut settings for copper and board operations. Defaults from GitHub issue: copper (speed: 300 mm/s, numPasses: 100, frequency: 20 kHz, pulseWidth: 1 ns), board (speed: 20 mm/s, numPasses: 100, frequency: 20 kHz, pulseWidth: 1 ns). Allows per-user customization for different lasers/lenses.
|
|
41
|
+
- `laserProfile?: { copper?: { speed?: number; numPasses?: number; frequency?: number; pulseWidth?: number }; board?: { speed?: number; numPasses?: number; frequency?: number; pulseWidth?: number } }` - Custom laser cut settings for copper and board operations. Defaults from GitHub issue: copper (speed: 300 mm/s, numPasses: 100, frequency: 20 kHz, pulseWidth: 1 ns), board (speed: 20 mm/s, numPasses: 100, frequency: 20 kHz, pulseWidth: 1 ns). Pulse width is specified in ns. Allows per-user customization for different lasers/lenses.
|
|
42
42
|
- `includeLayers?: Array<"top" | "bottom">` - Specify which layers to include (default: `["top", "bottom"]`)
|
|
43
43
|
|
|
44
44
|
## Soldermask Support
|
package/dist/index.js
CHANGED
|
@@ -2774,13 +2774,13 @@ var convertCircuitJsonToLbrn = async (circuitJson, options = {}) => {
|
|
|
2774
2774
|
speed: 300,
|
|
2775
2775
|
numPasses: 100,
|
|
2776
2776
|
frequency: 2e4,
|
|
2777
|
-
pulseWidth:
|
|
2777
|
+
pulseWidth: 1
|
|
2778
2778
|
};
|
|
2779
2779
|
const defaultBoardSettings = {
|
|
2780
2780
|
speed: 20,
|
|
2781
2781
|
numPasses: 100,
|
|
2782
2782
|
frequency: 2e4,
|
|
2783
|
-
pulseWidth:
|
|
2783
|
+
pulseWidth: 1
|
|
2784
2784
|
};
|
|
2785
2785
|
const copperSettings = { ...defaultCopperSettings, ...laserProfile?.copper };
|
|
2786
2786
|
const boardSettings = { ...defaultBoardSettings, ...laserProfile?.board };
|
|
@@ -2794,7 +2794,7 @@ var convertCircuitJsonToLbrn = async (circuitJson, options = {}) => {
|
|
|
2794
2794
|
numPasses: copperSettings.numPasses,
|
|
2795
2795
|
speed: copperSettings.speed,
|
|
2796
2796
|
frequency: copperSettings.frequency,
|
|
2797
|
-
|
|
2797
|
+
qPulseWidth: copperSettings.pulseWidth
|
|
2798
2798
|
});
|
|
2799
2799
|
project.children.push(topCopperCutSetting);
|
|
2800
2800
|
const bottomCopperCutSetting = new CutSetting({
|
|
@@ -2803,7 +2803,7 @@ var convertCircuitJsonToLbrn = async (circuitJson, options = {}) => {
|
|
|
2803
2803
|
numPasses: copperSettings.numPasses,
|
|
2804
2804
|
speed: copperSettings.speed,
|
|
2805
2805
|
frequency: copperSettings.frequency,
|
|
2806
|
-
|
|
2806
|
+
qPulseWidth: copperSettings.pulseWidth
|
|
2807
2807
|
});
|
|
2808
2808
|
project.children.push(bottomCopperCutSetting);
|
|
2809
2809
|
const throughBoardCutSetting = new CutSetting({
|
|
@@ -2812,7 +2812,7 @@ var convertCircuitJsonToLbrn = async (circuitJson, options = {}) => {
|
|
|
2812
2812
|
numPasses: boardSettings.numPasses,
|
|
2813
2813
|
speed: boardSettings.speed,
|
|
2814
2814
|
frequency: boardSettings.frequency,
|
|
2815
|
-
|
|
2815
|
+
qPulseWidth: boardSettings.pulseWidth
|
|
2816
2816
|
});
|
|
2817
2817
|
project.children.push(throughBoardCutSetting);
|
|
2818
2818
|
const soldermaskCutSetting = new CutSetting({
|
package/lib/index.ts
CHANGED
|
@@ -93,13 +93,13 @@ export const convertCircuitJsonToLbrn = async (
|
|
|
93
93
|
speed: 300,
|
|
94
94
|
numPasses: 100,
|
|
95
95
|
frequency: 20000,
|
|
96
|
-
pulseWidth:
|
|
96
|
+
pulseWidth: 1,
|
|
97
97
|
}
|
|
98
98
|
const defaultBoardSettings = {
|
|
99
99
|
speed: 20,
|
|
100
100
|
numPasses: 100,
|
|
101
101
|
frequency: 20000,
|
|
102
|
-
pulseWidth:
|
|
102
|
+
pulseWidth: 1,
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
// Merge user settings with defaults
|
|
@@ -121,7 +121,7 @@ export const convertCircuitJsonToLbrn = async (
|
|
|
121
121
|
numPasses: copperSettings.numPasses,
|
|
122
122
|
speed: copperSettings.speed,
|
|
123
123
|
frequency: copperSettings.frequency,
|
|
124
|
-
|
|
124
|
+
qPulseWidth: copperSettings.pulseWidth,
|
|
125
125
|
})
|
|
126
126
|
project.children.push(topCopperCutSetting)
|
|
127
127
|
|
|
@@ -131,7 +131,7 @@ export const convertCircuitJsonToLbrn = async (
|
|
|
131
131
|
numPasses: copperSettings.numPasses,
|
|
132
132
|
speed: copperSettings.speed,
|
|
133
133
|
frequency: copperSettings.frequency,
|
|
134
|
-
|
|
134
|
+
qPulseWidth: copperSettings.pulseWidth,
|
|
135
135
|
})
|
|
136
136
|
project.children.push(bottomCopperCutSetting)
|
|
137
137
|
|
|
@@ -141,7 +141,7 @@ export const convertCircuitJsonToLbrn = async (
|
|
|
141
141
|
numPasses: boardSettings.numPasses,
|
|
142
142
|
speed: boardSettings.speed,
|
|
143
143
|
frequency: boardSettings.frequency,
|
|
144
|
-
|
|
144
|
+
qPulseWidth: boardSettings.pulseWidth,
|
|
145
145
|
})
|
|
146
146
|
project.children.push(throughBoardCutSetting)
|
|
147
147
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "circuit-json-to-lbrn",
|
|
3
3
|
"main": "dist/index.js",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.54",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"start": "bun run site/index.html",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"typescript": "^5"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"lbrnts": "^0.0.
|
|
31
|
+
"lbrnts": "^0.0.17",
|
|
32
32
|
"manifold-3d": "^3.3.2"
|
|
33
33
|
}
|
|
34
34
|
}
|
package/site/main.tsx
CHANGED
|
@@ -102,11 +102,6 @@ function kHzToHz(khz: number): number {
|
|
|
102
102
|
return khz * 1000
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
// Convert pulse width from ns to seconds
|
|
106
|
-
function nsToSeconds(ns: number): number {
|
|
107
|
-
return ns * 1e-9
|
|
108
|
-
}
|
|
109
|
-
|
|
110
105
|
// Load Omni X 6W 150x150 preset
|
|
111
106
|
function loadOmniX6W150x150Preset() {
|
|
112
107
|
copperSpeedInput.value = "300"
|
|
@@ -188,13 +183,13 @@ function getConversionOptions() {
|
|
|
188
183
|
speed: parseFloat(copperSpeedInput.value) || 300,
|
|
189
184
|
numPasses: parseInt(copperNumPassesInput.value) || 100,
|
|
190
185
|
frequency: kHzToHz(parseFloat(copperFrequencyInput.value) || 20),
|
|
191
|
-
pulseWidth:
|
|
186
|
+
pulseWidth: parseFloat(copperPulseWidthInput.value) || 1,
|
|
192
187
|
},
|
|
193
188
|
board: {
|
|
194
189
|
speed: parseFloat(boardSpeedInput.value) || 20,
|
|
195
190
|
numPasses: parseInt(boardNumPassesInput.value) || 100,
|
|
196
191
|
frequency: kHzToHz(parseFloat(boardFrequencyInput.value) || 20),
|
|
197
|
-
pulseWidth:
|
|
192
|
+
pulseWidth: parseFloat(boardPulseWidthInput.value) || 1,
|
|
198
193
|
},
|
|
199
194
|
},
|
|
200
195
|
}
|
|
@@ -27,13 +27,13 @@ test("applies custom laserProfile settings", async () => {
|
|
|
27
27
|
speed: 350,
|
|
28
28
|
numPasses: 150,
|
|
29
29
|
frequency: 25000,
|
|
30
|
-
pulseWidth:
|
|
30
|
+
pulseWidth: 2,
|
|
31
31
|
},
|
|
32
32
|
board: {
|
|
33
33
|
speed: 25,
|
|
34
34
|
numPasses: 120,
|
|
35
35
|
frequency: 21000,
|
|
36
|
-
pulseWidth: 1.
|
|
36
|
+
pulseWidth: 1.5,
|
|
37
37
|
},
|
|
38
38
|
},
|
|
39
39
|
})
|
|
@@ -49,21 +49,21 @@ test("applies custom laserProfile settings", async () => {
|
|
|
49
49
|
expect(topCopper.speed).toBe(350)
|
|
50
50
|
expect(topCopper.numPasses).toBe(150)
|
|
51
51
|
expect(topCopper.frequency).toBe(25000)
|
|
52
|
-
expect(topCopper.
|
|
52
|
+
expect(topCopper.qPulseWidth).toBe(2)
|
|
53
53
|
|
|
54
54
|
// Verify bottom copper settings (same as top)
|
|
55
55
|
const bottomCopper = cutSettings[1]!
|
|
56
56
|
expect(bottomCopper.speed).toBe(350)
|
|
57
57
|
expect(bottomCopper.numPasses).toBe(150)
|
|
58
58
|
expect(bottomCopper.frequency).toBe(25000)
|
|
59
|
-
expect(bottomCopper.
|
|
59
|
+
expect(bottomCopper.qPulseWidth).toBe(2)
|
|
60
60
|
|
|
61
61
|
// Verify through board settings
|
|
62
62
|
const throughBoard = cutSettings[2]!
|
|
63
63
|
expect(throughBoard.speed).toBe(25)
|
|
64
64
|
expect(throughBoard.numPasses).toBe(120)
|
|
65
65
|
expect(throughBoard.frequency).toBe(21000)
|
|
66
|
-
expect(throughBoard.
|
|
66
|
+
expect(throughBoard.qPulseWidth).toBe(1.5)
|
|
67
67
|
})
|
|
68
68
|
|
|
69
69
|
test("uses default laserProfile settings when not provided", async () => {
|
|
@@ -80,12 +80,12 @@ test("uses default laserProfile settings when not provided", async () => {
|
|
|
80
80
|
expect(topCopper.speed).toBe(300)
|
|
81
81
|
expect(topCopper.numPasses).toBe(100)
|
|
82
82
|
expect(topCopper.frequency).toBe(20000)
|
|
83
|
-
expect(topCopper.
|
|
83
|
+
expect(topCopper.qPulseWidth).toBe(1)
|
|
84
84
|
|
|
85
85
|
// Verify through board defaults
|
|
86
86
|
const throughBoard = cutSettings[2]!
|
|
87
87
|
expect(throughBoard.speed).toBe(20)
|
|
88
88
|
expect(throughBoard.numPasses).toBe(100)
|
|
89
89
|
expect(throughBoard.frequency).toBe(20000)
|
|
90
|
-
expect(throughBoard.
|
|
90
|
+
expect(throughBoard.qPulseWidth).toBe(1)
|
|
91
91
|
})
|