Index
This commit is contained in:
parent
2f3c573c19
commit
4c9b382115
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,4 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
docgen
|
docgen
|
||||||
|
docs/.source_hashes
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
TargetProfile: githubwiki
|
TargetProfile: githubwiki
|
||||||
ProjectName: Metal Library
|
ProjectName: Metal Library
|
||||||
GenerateDocs: Files, TOC, Index, Topics, CheatSheet, Sidebar
|
GenerateDocs: Files, TOC, Index, Topics, CheatSheet, Sidebar
|
||||||
|
SidebarHeader:
|
||||||
|
## Indices
|
||||||
|
.
|
||||||
|
SidebarMiddle:
|
||||||
|
[Tutorials](Tutorials)
|
||||||
|
DefineHeader(BulletList): Side Effects
|
||||||
|
DefineHeader(Table;Headers=Anchor Name|Position): Extra Anchors
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
Libraries for Metal makers
|
Libraries for Metal makers
|
||||||
|
|
||||||
|
- [Documentation](./docs/metalib.scad.md)
|
||||||
|
|
||||||
|
|
||||||
## Miter tubes module
|
## Miter tubes module
|
||||||
|
|
||||||
|
11
docs/Topics.md
Normal file
11
docs/Topics.md
Normal file
@ -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
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
BIN
docs/images/metalib/miter_tubes_2.png
Normal file
BIN
docs/images/metalib/miter_tubes_2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
@ -15,6 +15,8 @@ To use, add the following lines to the beginning of your file:
|
|||||||
|
|
||||||
**Synopsis:** Creates a miter profile
|
**Synopsis:** Creates a miter profile
|
||||||
|
|
||||||
|
**Topics:** [Metal](Topics#metal)
|
||||||
|
|
||||||
**Usage:** As Module
|
**Usage:** As Module
|
||||||
|
|
||||||
- miter_profile(length,height,depth);
|
- miter_profile(length,height,depth);
|
||||||
@ -23,6 +25,13 @@ To use, add the following lines to the beginning of your file:
|
|||||||
|
|
||||||
Generates a flexible battery holder for 'n' cylindrical batteries with complex features like wire channels, screw holes, and contact points.
|
Generates a flexible battery holder for 'n' cylindrical batteries with complex features like wire channels, screw holes, and contact points.
|
||||||
|
|
||||||
|
|
||||||
|
This is the continues content
|
||||||
|
|
||||||
|
**Side Effects:**
|
||||||
|
|
||||||
|
- No side effects registered
|
||||||
|
|
||||||
**Arguments:**
|
**Arguments:**
|
||||||
|
|
||||||
<abbr title="These args can be used by position or by name.">By Position</abbr> | What it does
|
<abbr title="These args can be used by position or by name.">By Position</abbr> | 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
|
**Synopsis:** Generates a sequence of mitered tubes
|
||||||
|
|
||||||
|
**Topics:** [Metal](Topics#metal)
|
||||||
|
|
||||||
**Description:**
|
**Description:**
|
||||||
|
|
||||||
This module generates a sequence of mitered tubes based on the provided section lengths,
|
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.
|
`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.
|
`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.
|
`depth` | The depth of each tube. This value defines the dimension perpendicular to the tube's length and height.
|
||||||
|
|
||||||
|
<abbr title="These args must be used by name, ie: name=value">By Name</abbr> | 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`.
|
`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
|
**Example 1:** Simple Case
|
||||||
@ -77,5 +91,20 @@ This module generates a sequence of mitered tubes based on the provided section
|
|||||||
|
|
||||||
<br clear="all" /><br/>
|
<br clear="all" /><br/>
|
||||||
|
|
||||||
|
**Example 2:** Unfolded
|
||||||
|
|
||||||
|
<img align="left" alt="miter\_tubes() Example 2" src="images/metalib/miter_tubes_2.png" width="320" height="240">
|
||||||
|
|
||||||
|
include <metalib.scad>;
|
||||||
|
miter_tubes(
|
||||||
|
sections = [800,750],
|
||||||
|
height = 50,
|
||||||
|
depth = 50,
|
||||||
|
unfold = false,
|
||||||
|
quote=true
|
||||||
|
);
|
||||||
|
|
||||||
|
<br clear="all" /><br/>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
1
gen_doc.sh
Executable file
1
gen_doc.sh
Executable file
@ -0,0 +1 @@
|
|||||||
|
openscad-docsgen -m -I -P "Metalib" --force
|
7
metalib.json
Normal file
7
metalib.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"fileFormatVersion": "1",
|
||||||
|
"parameterSets": {
|
||||||
|
"New set 1": "",
|
||||||
|
"New set 2": ""
|
||||||
|
}
|
||||||
|
}
|
136
metalib.scad
136
metalib.scad
@ -1,19 +1,45 @@
|
|||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
// LibFile: metalib.scad
|
||||||
|
// Includes:
|
||||||
|
// include <metalib.scad>;
|
||||||
|
// FileGroup: Metal
|
||||||
|
// FileSummary: Metal, metalon, profile, and geometry.
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
include <BOSL2/std.scad>;
|
include <BOSL2/std.scad>;
|
||||||
|
|
||||||
/*
|
|
||||||
section=20;
|
debugging = false;
|
||||||
height=800;
|
|
||||||
depth=560;
|
|
||||||
width=563;
|
|
||||||
|
|
||||||
|
|
||||||
side_length = 20; // Length of each side of the square
|
/* [Hidden] */
|
||||||
thickness = 3; // Thickness of the material
|
|
||||||
*/
|
|
||||||
$fn=32;
|
$fn=32;
|
||||||
|
|
||||||
|
|
||||||
|
// 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 ) {
|
module miter_profile( length=200, height=30, depth=20 ) {
|
||||||
|
//cube([50,50,50]);
|
||||||
|
|
||||||
delta=1;
|
delta=1;
|
||||||
difference() {
|
difference() {
|
||||||
cuboid([length,depth,height],anchor=CENTER,rounding=1);
|
cuboid([length,depth,height],anchor=CENTER,rounding=1);
|
||||||
@ -28,6 +54,8 @@ module miter_profile(length=200,height=30,depth=20) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//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.
|
* for easier visualization or fabrication. When `true`, the tubes are laid out in a flat arrangement.
|
||||||
* Defaults to `false`.
|
* Defaults to `false`.
|
||||||
*
|
*
|
||||||
|
* @param quote - Display quote
|
||||||
|
*
|
||||||
* Internal Variables and Process:
|
* Internal Variables and Process:
|
||||||
* - `moves` (array): Computed positions and rotations for each tube, determined by the `rotSlide`
|
* - `moves` (array): Computed positions and rotations for each tube, determined by the `rotSlide`
|
||||||
* function applied to the `sections` and `unfold` parameters.
|
* 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);
|
* 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]) {
|
for (index = [0:len(sections)-1]) {
|
||||||
length = sections[index];
|
length = sections[index];
|
||||||
m = computeSectionPositions( sections, unfold )[index];
|
m = computeSectionPositions( sections, unfold )[index];
|
||||||
translate([m[0],m[1], m[2]])
|
translate([m[0],m[1], m[2]])
|
||||||
yrot(-m[3])
|
yrot(-m[3]) {
|
||||||
miter_tube( length, height, depth, start = index==0 ? start : true,end = index==len(sections)-1 ? end : true );
|
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);
|
//miter_tubes([400,500,600,700,800],30,20);
|
||||||
//echo ("rotSlide",rotSlide([400,500,600,500]));
|
//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
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user