Enclosure: internal components placeholders

This commit is contained in:
2026-01-02 15:19:26 +01:00
parent d9ad1ae3c5
commit 2cf6772feb
4 changed files with 339 additions and 1 deletions

View File

@@ -37,6 +37,30 @@ module switch() {
translate([0, 0, 6]) rotate([0, 15, 0]) cube([12, 10, 5], true);
}
// Mainboard. The highest component is the capacitor with a total height of 18mm, but we round to 20 for good measure.
module pcb() {
translate([0, 0, -10]) {
linear_extrude(height = 20) {
hull() {
/*
Center svg
Bounding box:
Min: 19.20, 49.71
Max: 97.09, 198.06
Size: 77.89, 148.35
*/
translate([-77.89 / 2 - 19.20, -148.35 / 2 - 49.71, 0]) import("pcb.svg");
}
}
}
}
module battery_18650() {
cylinder(d = 18, h = 65, center = true);
}
//speaker();
//li_ion_4056_charger_module();
switch();
//switch();
//pcb();
battery_18650();

140
enclosure/pcb.svg Normal file
View File

@@ -0,0 +1,140 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
width="297.0022mm"
height="210.0072mm"
viewBox="0.0000 0.0000 297.0022 210.0072"
id="svg118"
sodipodi:docname="pcb.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs118" />
<sodipodi:namedview
id="namedview118"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="1.4142136"
inkscape:cx="117.73328"
inkscape:cy="453.609"
inkscape:window-width="1536"
inkscape:window-height="786"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="g3" />
<title
id="title1">SVG Image created as Fabula-Edge_Cuts.svg date 2025/12/31 07:00:32 </title>
<desc
id="desc1">Image generated by PCBNEW </desc>
<g
style="fill:none; stroke:#000000; stroke-width:0.0500; stroke-opacity:1; stroke-linecap:round; stroke-linejoin:round;"
id="g3">
<path
d="M19.7000 159.8000 L19.7000 11.9700 "
id="path1" />
<path
d="M96.5900 11.9700 L96.4000 159.8000 "
id="path2" />
<path
d="M96.4000 159.8000 L19.7000 159.8000 "
id="path3" />
<path
d="M 96.586539,11.971108 H 19.701658"
id="path4"
style="stroke-width:0.0500602" />
</g>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g5">
<circle
cx="34.7200"
cy="130.7500"
r="2.0000"
id="circle4" />
</g>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g26">
<circle
cx="44.7200"
cy="106.2500"
r="2.0000"
id="circle25" />
</g>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g30">
<circle
cx="28.0000"
cy="20.0000"
r="1.6000"
id="circle29" />
</g>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g32">
<circle
cx="60.1800"
cy="147.1700"
r="2.0000"
id="circle31" />
</g>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g44">
<circle
cx="70.7200"
cy="121.7500"
r="2.0000"
id="circle43" />
</g>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g64">
<circle
cx="34.0000"
cy="150.2000"
r="1.6000"
id="circle63" />
</g>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g69">
<circle
cx="86.0000"
cy="20.0000"
r="1.6000"
id="circle68" />
</g>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g72">
<circle
cx="84.9000"
cy="150.2000"
r="1.6000"
id="circle71" />
</g>
<metadata
id="metadata118">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:title>SVG Image created as Fabula-Edge_Cuts.svg date 2025/12/31 07:00:32 </dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
width="297.0022mm"
height="210.0072mm"
viewBox="0.0000 0.0000 297.0022 210.0072"
id="svg118"
sodipodi:docname="pcb_keys_stems.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs118" />
<sodipodi:namedview
id="namedview118"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="1.4142136"
inkscape:cx="117.73328"
inkscape:cy="498.86383"
inkscape:window-width="1536"
inkscape:window-height="786"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg118" />
<title
id="title1">SVG Image created as Fabula-Edge_Cuts.svg date 2025/12/31 07:00:32 </title>
<desc
id="desc1">Image generated by PCBNEW </desc>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g5">
<circle
cx="34.7200"
cy="130.7500"
r="2.0000"
id="circle4" />
</g>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g26">
<circle
cx="44.7200"
cy="106.2500"
r="2.0000"
id="circle25" />
</g>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g32">
<circle
cx="60.1800"
cy="147.1700"
r="2.0000"
id="circle31" />
</g>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g44">
<circle
cx="70.7200"
cy="121.7500"
r="2.0000"
id="circle43" />
</g>
<metadata
id="metadata118">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:title>SVG Image created as Fabula-Edge_Cuts.svg date 2025/12/31 07:00:32 </dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
width="297.0022mm"
height="210.0072mm"
viewBox="0.0000 0.0000 297.0022 210.0072"
id="svg118"
sodipodi:docname="pcb_mounting_holes.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs118" />
<sodipodi:namedview
id="namedview118"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="1.4142136"
inkscape:cx="117.73328"
inkscape:cy="97.227182"
inkscape:window-width="1536"
inkscape:window-height="786"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg118" />
<title
id="title1">SVG Image created as Fabula-Edge_Cuts.svg date 2025/12/31 07:00:32 </title>
<desc
id="desc1">Image generated by PCBNEW </desc>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g30">
<circle
cx="28.0000"
cy="20.0000"
r="1.6000"
id="circle29" />
</g>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g64">
<circle
cx="34.0000"
cy="150.2000"
r="1.6000"
id="circle63" />
</g>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g69">
<circle
cx="86.0000"
cy="20.0000"
r="1.6000"
id="circle68" />
</g>
<g
style="fill:#000000; fill-opacity:1.0000; stroke:none;"
id="g72">
<circle
cx="84.9000"
cy="150.2000"
r="1.6000"
id="circle71" />
</g>
<metadata
id="metadata118">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:title>SVG Image created as Fabula-Edge_Cuts.svg date 2025/12/31 07:00:32 </dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB