busbars: FDM test-print export (extruded STL + STEP)
Adds a way to print a busbar on a 3D printer to physically verify
sizing before laser-cutting nickel/copper. The existing "Extrude
solid + 0.2mm" path stays for thin-strip STEP — slicers can't print
0.2mm sheet — so the FDM path has its own thickness input (default
2mm, min 0.5mm).
Backend:
- busbar_export.py: new to_stl() writer. Forces extrude_flag = True
(STL is inherently 3D) and bumps thickness up to 2mm if the
incoming value is <0.5mm. Registers under WRITERS["stl"] so the
existing /api/export/<fmt> route serves it for free.
UI:
- index.html: new "FDM test print" block under the Params panel
with its own thickness input and two buttons (STL, STEP). The
existing 'Extrude solid' checkbox + 0.2mm thickness keep
driving plain "Export STEP".
- styles.css: .fdm-block / .fdm-row / .fdm-buttons styles
matching the existing panel typography.
- app.js: _exportFdm(fmt) reuses Exporter.exportFormat with a
shallow-merged params override ({extrude: true, thickness: fdmT}),
so the on-the-fly request gets the FDM settings without
mutating the live params state.
Verified: STL render of a 3-cell strip @ 2mm => 73KB binary STL
(opens cleanly in slicers); STEP @ 2mm => 160KB ISO-10303-21
solid; existing flat STEP path unchanged at 15KB.
This commit is contained in:
@@ -157,6 +157,16 @@
|
||||
$("btn-export-dxf" ).addEventListener("click", () => Exporter.exportFormat("dxf", state, params));
|
||||
$("btn-export-svg" ).addEventListener("click", () => Exporter.exportFormat("svg", state, params));
|
||||
|
||||
// ---- FDM test print -----------------------------------------------------
|
||||
// Forces extrusion at the FDM thickness, regardless of the 'Extrude solid'
|
||||
// checkbox above (which keeps owning the thin nickel-strip case).
|
||||
function _exportFdm(fmt) {
|
||||
const t = Math.max(0.5, +$("p-fdm-thickness").value || 2);
|
||||
Exporter.exportFormat(fmt, state, { ...params, extrude: true, thickness: t });
|
||||
}
|
||||
$("btn-export-fdm-stl") .addEventListener("click", () => _exportFdm("stl"));
|
||||
$("btn-export-fdm-step").addEventListener("click", () => _exportFdm("step"));
|
||||
|
||||
// ---- viewport init ------------------------------------------------------
|
||||
Viewport.init($("viewport"), state, params, {
|
||||
onCellClick: (cellId, mods) => {
|
||||
|
||||
Reference in New Issue
Block a user