From 4c9b382115f52898aeb1bc897620971aea74b9dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Dante=20Ursini?= Date: Wed, 12 Feb 2025 17:47:59 -0300 Subject: [PATCH] Index --- .gitignore | 1 + .openscad_docsgen_rc | 7 ++ Readme.md | 2 + docs/Topics.md | 11 ++ docs/images/metalib/miter_profile.png | Bin 23128 -> 23122 bytes docs/images/metalib/miter_tubes_2.png | Bin 0 -> 32659 bytes docs/metalib.scad.md | 29 ++++++ gen_doc.sh | 1 + metalib.json | 7 ++ metalib.scad | 140 +++++++++++++++++++++++--- 10 files changed, 185 insertions(+), 13 deletions(-) create mode 100644 docs/Topics.md create mode 100644 docs/images/metalib/miter_tubes_2.png create mode 100755 gen_doc.sh create mode 100644 metalib.json diff --git a/.gitignore b/.gitignore index 0361774..c757d93 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .DS_Store docgen +docs/.source_hashes diff --git a/.openscad_docsgen_rc b/.openscad_docsgen_rc index 71c0ba8..74e2448 100644 --- a/.openscad_docsgen_rc +++ b/.openscad_docsgen_rc @@ -1,3 +1,10 @@ TargetProfile: githubwiki ProjectName: Metal Library GenerateDocs: Files, TOC, Index, Topics, CheatSheet, Sidebar +SidebarHeader: + ## Indices + . +SidebarMiddle: + [Tutorials](Tutorials) +DefineHeader(BulletList): Side Effects +DefineHeader(Table;Headers=Anchor Name|Position): Extra Anchors diff --git a/Readme.md b/Readme.md index 1517a7e..e872758 100644 --- a/Readme.md +++ b/Readme.md @@ -2,6 +2,8 @@ Libraries for Metal makers +- [Documentation](./docs/metalib.scad.md) + ## Miter tubes module diff --git a/docs/Topics.md b/docs/Topics.md new file mode 100644 index 0000000..c45549b --- /dev/null +++ b/docs/Topics.md @@ -0,0 +1,11 @@ +# Topic Index + +An index of topics, with related functions, modules, and constants. + +**M**: [Metal](#metal) + +### Metal + +- [`miter_profile()`](metalib.scad#module-miter_profile) Mod – Creates a miter profile +- [`miter_tubes()`](metalib.scad#module-miter_tubes) Mod – Generates a sequence of mitered tubes + diff --git a/docs/images/metalib/miter_profile.png b/docs/images/metalib/miter_profile.png index 0f4c282edc2a19b96a5677b5f46c195bf2b33d66..97e9986cc8f70763fc4bdbe8954eb0ba83e94fa7 100644 GIT binary patch delta 18619 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 diff --git a/docs/images/metalib/miter_tubes_2.png b/docs/images/metalib/miter_tubes_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d71a3f7a10da6b198899c40bb5dec9442ac368cf GIT binary patch literal 32659 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 Position | What it does @@ -46,6 +55,8 @@ Generates a flexible battery holder for 'n' cylindrical batteries with complex f **Synopsis:** Generates a sequence of mitered tubes +**Topics:** [Metal](Topics#metal) + **Description:** This module generates a sequence of mitered tubes based on the provided section lengths, @@ -58,6 +69,9 @@ This module generates a sequence of mitered tubes based on the provided section `section` | An array of section lengths, each specifying the length of an individual tube. Example: `[10, 20, 30]` will create three tubes of lengths 10, 20, and 30 units respectively. `heights` | The height of each tube. This value defines the dimension perpendicular to the tube's length and depth. `depth` | The depth of each tube. This value defines the dimension perpendicular to the tube's length and height. + +By Name | What it does +-------------------- | ------------ `unfold` | Determines whether the sequence of tubes should be unfolded for easier visualization or fabrication. When `true`, the tubes are laid out in a flat arrangement. Defaults to `false`. **Example 1:** Simple Case @@ -77,5 +91,20 @@ This module generates a sequence of mitered tubes based on the provided section

+**Example 2:** Unfolded + +miter\_tubes() Example 2 + + include ; + miter_tubes( + sections = [800,750], + height = 50, + depth = 50, + unfold = false, + quote=true + ); + +

+ --- diff --git a/gen_doc.sh b/gen_doc.sh new file mode 100755 index 0000000..3d0f8d6 --- /dev/null +++ b/gen_doc.sh @@ -0,0 +1 @@ +openscad-docsgen -m -I -P "Metalib" --force diff --git a/metalib.json b/metalib.json new file mode 100644 index 0000000..214bbfc --- /dev/null +++ b/metalib.json @@ -0,0 +1,7 @@ +{ + "fileFormatVersion": "1", + "parameterSets": { + "New set 1": "", + "New set 2": "" + } +} diff --git a/metalib.scad b/metalib.scad index 8aca2fe..e052dbc 100644 --- a/metalib.scad +++ b/metalib.scad @@ -1,19 +1,45 @@ +////////////////////////////////////////////////////////////////////// +// LibFile: metalib.scad +// Includes: +// include ; +// FileGroup: Metal +// FileSummary: Metal, metalon, profile, and geometry. +////////////////////////////////////////////////////////////////////// include ; -/* -section=20; -height=800; -depth=560; -width=563; + +debugging = false; -side_length = 20; // Length of each side of the square -thickness = 3; // Thickness of the material -*/ +/* [Hidden] */ + $fn=32; -module miter_profile(length=200,height=30,depth=20) { + +// Module: miter_profile() +// Synopsis: Creates a miter profile +// Topics: Metal +// Description: +// Generates a flexible battery holder for 'n' cylindrical batteries with complex features like wire channels, screw holes, and contact points. +// +// Continues: +// This is the continues content +// Side Effects: +// No side effects registered +// Usage: As Module +// miter_profile(length,height,depth); +// Arguments: +// length = Length +// height = Height +// depth = Depth +// +// Example: Simple Case +// miter_profile(length=200, height=30, depth=20); + +module miter_profile( length=200, height=30, depth=20 ) { + //cube([50,50,50]); + delta=1; difference() { cuboid([length,depth,height],anchor=CENTER,rounding=1); @@ -24,10 +50,12 @@ module miter_profile(length=200,height=30,depth=20) { translate([length/2, 0, -height/2]) yrot(-45) color([0.5,0.5,0,0.5]) - cube([height, depth+2*delta, height*sqrt(2)+2],anchor=CENTER+LEFT+BOT); + cube([height, depth+2*delta, height*sqrt(2)+2],anchor = CENTER+LEFT+BOT); } } +//miter_profile(length=200, height=30, depth=20); + /** @@ -50,6 +78,8 @@ module miter_profile(length=200,height=30,depth=20) { * for easier visualization or fabrication. When `true`, the tubes are laid out in a flat arrangement. * Defaults to `false`. * + * @param quote - Display quote + * * Internal Variables and Process: * - `moves` (array): Computed positions and rotations for each tube, determined by the `rotSlide` * function applied to the `sections` and `unfold` parameters. @@ -70,13 +100,64 @@ module miter_profile(length=200,height=30,depth=20) { * miter_tubes([10, 20, 30], height=5, depth=3, unfold=true); * ``` */ -module miter_tubes( sections, height, depth, start=true,end=true,unfold=false){ + +// Module: miter_tubes() +// Synopsis: Generates a sequence of mitered tubes +// Topics: Metal +// Description: +// This module generates a sequence of mitered tubes based on the provided section lengths, +// with options for customizing their dimensions and unfolding their arrangement. +// Arguments: +// section = An array of section lengths, each specifying the length of an individual tube. Example: `[10, 20, 30]` will create three tubes of lengths 10, 20, and 30 units respectively. +// heights = The height of each tube. This value defines the dimension perpendicular to the tube's length and depth. +// depth = The depth of each tube. This value defines the dimension perpendicular to the tube's length and height. +// --- +// unfold = Determines whether the sequence of tubes should be unfolded for easier visualization or fabrication. When `true`, the tubes are laid out in a flat arrangement. Defaults to `false`. +// Example: Simple Case +// miter_tubes( +// sections = [800,750,800], +// height = 50, +// depth = 50, +// start=false, +// end=false, +// unfold = false, +// quote=true +// ); +// Example: Unfolded +// miter_tubes( +// sections = [800,750], +// height = 50, +// depth = 50, +// unfold = false, +// quote=true +// ); + +module miter_tubes( sections, height, depth, start=true,end=true,unfold=false,quote=false){ for (index = [0:len(sections)-1]) { length = sections[index]; m = computeSectionPositions( sections, unfold )[index]; translate([m[0],m[1], m[2]]) - yrot(-m[3]) - miter_tube( length, height, depth, start = index==0 ? start : true,end = index==len(sections)-1 ? end : true ); + yrot(-m[3]) { + miter_tube( + length, + height, + depth, + start = index==0 ? start : true, + end = index==len(sections)-1 ? end : true + ); + if (quote) { + dimension(length); + //path = [[0,length], [length,length]]; + path = [[0,-140], [length-5,-140]]; + stroke(path, width=3,endcaps="arrow2",endcap_width=15); + //ext1 = [[0,-140], [length-5,-140]]; + ext1 = [[0,0], [0,-140-40]]; + stroke(ext1, width=3); + ext2 = [[length,0], [length,-140-40]]; + stroke(ext2, width=3); + + } + } } } @@ -111,6 +192,17 @@ module miter_tube(length=200,height=30,depth=20,rounding=2,wall=1.5,start=true,e } +/** + * Dimension + * + */ +module dimension(value) { + fwd(120) + right(value/2) + text(str(value),size=60,font="Saira Stencil One",halign="center"); + +} + /** @@ -152,3 +244,25 @@ function computeSectionPositions(sections, unfold=false) = //miter_tubes([400,500,600,700,800],30,20); //echo ("rotSlide",rotSlide([400,500,600,500])); +if (debugging) { zrot(90) yrot(-90*0) { + miter_tubes( + sections = [800,750,800], + height = 50, + depth = 50, + start=false, + end=false, + unfold = true, + quote=true + ); + back(200) miter_tubes( + sections = [800,750,800], + height = 50, + depth = 50, + start=false, + end=false, + unfold = false, + quote=false + ); + + } +}