mirror of
https://github.com/DJSundog/NopSCADlib.git
synced 2024-11-30 10:40:03 -05:00
6260 lines
243 KiB
Markdown
6260 lines
243 KiB
Markdown
# NopSCADlib
|
|
An ever expanding library of parts modelled in OpenSCAD useful for 3D printers and enclosures for electronics, etc.
|
|
|
|
It contains lots of vitamins (the RepRap term for non-printed parts), some general purpose printed parts and some utilities.
|
|
There are also Python scripts to generate Bills of Materials (BOMs),
|
|
STL files for all the printed parts, DXF files for CNC routed parts in a project and a manual containing assembly
|
|
instructions and exploded views by scraping markdown embedded in OpenSCAD comments, [see scripts](scripts/readme.md).
|
|
|
|
A simple example project can be found [here](examples/MainsBreakOutBox/readme.md).
|
|
|
|
For more examples of what it can make see the [gallery](gallery/readme.md).
|
|
|
|
The license is GNU General Public License v3.0, see [COPYING](COPYING).
|
|
|
|
See [usage](docs/usage.md) for requirements, installation instructions and a usage guide.
|
|
|
|
<img src="libtest.png" width="100%"/>
|
|
|
|
|
|
## Table of Contents<a name="top"/>
|
|
<table><tr>
|
|
<th align="left"> Vitamins A-I </th><th align="left"> Vitamins J-Q </th><th align="left"> Vitamins R-Z </th><th align="left"> Printed </th><th align="left"> Utilities </th><th align="left"> Core Utilities </th></tr>
|
|
<tr><td> <a href = "#Axials">Axials</a> </td><td> <a href = "#Jack">Jack</a> </td><td> <a href = "#Rails">Rails</a> </td><td> <a href = "#Box">Box</a> </td><td> <a href = "#Annotation">Annotation</a> </td><td> <a href = "#BOM">BOM</a> </td></tr>
|
|
<tr><td> <a href = "#Ball_bearings">Ball_bearings</a> </td><td> <a href = "#KP_pillow_blocks">KP_pillow_blocks</a> </td><td> <a href = "#Ring_terminals">Ring_terminals</a> </td><td> <a href = "#Butt_box">Butt_box</a> </td><td> <a href = "#Bezier">Bezier</a> </td><td> <a href = "#Clip">Clip</a> </td></tr>
|
|
<tr><td> <a href = "#Batteries">Batteries</a> </td><td> <a href = "#LDRs">LDRs</a> </td><td> <a href = "#Rockers">Rockers</a> </td><td> <a href = "#Cable_grommets">Cable_grommets</a> </td><td> <a href = "#Catenary">Catenary</a> </td><td> <a href = "#Global">Global</a> </td></tr>
|
|
<tr><td> <a href = "#Belts">Belts</a> </td><td> <a href = "#LED_meters">LED_meters</a> </td><td> <a href = "#Rod">Rod</a> </td><td> <a href = "#Camera_housing">Camera_housing</a> </td><td> <a href = "#Dogbones">Dogbones</a> </td><td> <a href = "#Polyholes">Polyholes</a> </td></tr>
|
|
<tr><td> <a href = "#Blowers">Blowers</a> </td><td> <a href = "#LEDs">LEDs</a> </td><td> <a href = "#SCS_bearing_blocks">SCS_bearing_blocks</a> </td><td> <a href = "#Carriers">Carriers</a> </td><td> <a href = "#Fillet">Fillet</a> </td><td> <a href = "#Rounded_rectangle">Rounded_rectangle</a> </td></tr>
|
|
<tr><td> <a href = "#Bulldogs">Bulldogs</a> </td><td> <a href = "#Leadnuts">Leadnuts</a> </td><td> <a href = "#SK_brackets">SK_brackets</a> </td><td> <a href = "#Corner_block">Corner_block</a> </td><td> <a href = "#Gears">Gears</a> </td><td> <a href = "#Sphere">Sphere</a> </td></tr>
|
|
<tr><td> <a href = "#Buttons">Buttons</a> </td><td> <a href = "#Light_strips">Light_strips</a> </td><td> <a href = "#SMDs">SMDs</a> </td><td> <a href = "#Door_hinge">Door_hinge</a> </td><td> <a href = "#Hanging_hole">Hanging_hole</a> </td><td> <a href = "#Teardrops">Teardrops</a> </td></tr>
|
|
<tr><td> <a href = "#Cable_strips">Cable_strips</a> </td><td> <a href = "#Linear_bearings">Linear_bearings</a> </td><td> <a href = "#SSRs">SSRs</a> </td><td> <a href = "#Door_latch">Door_latch</a> </td><td> <a href = "#Horiholes">Horiholes</a> </td><td></td></tr>
|
|
<tr><td> <a href = "#Cameras">Cameras</a> </td><td> <a href = "#Magnets">Magnets</a> </td><td> <a href = "#Screws">Screws</a> </td><td> <a href = "#Drag_chain">Drag_chain</a> </td><td> <a href = "#Layout">Layout</a> </td><td></td></tr>
|
|
<tr><td> <a href = "#Circlips">Circlips</a> </td><td> <a href = "#Mains_sockets">Mains_sockets</a> </td><td> <a href = "#Sealing_strip">Sealing_strip</a> </td><td> <a href = "#Fan_guard">Fan_guard</a> </td><td> <a href = "#Maths">Maths</a> </td><td></td></tr>
|
|
<tr><td> <a href = "#Components">Components</a> </td><td> <a href = "#Microswitches">Microswitches</a> </td><td> <a href = "#Shaft_couplings">Shaft_couplings</a> </td><td> <a href = "#Fixing_block">Fixing_block</a> </td><td> <a href = "#Offset">Offset</a> </td><td></td></tr>
|
|
<tr><td> <a href = "#DIP">DIP</a> </td><td> <a href = "#Microview">Microview</a> </td><td> <a href = "#Sheets">Sheets</a> </td><td> <a href = "#Flat_hinge">Flat_hinge</a> </td><td> <a href = "#Quadrant">Quadrant</a> </td><td></td></tr>
|
|
<tr><td> <a href = "#D_connectors">D_connectors</a> </td><td> <a href = "#Modules">Modules</a> </td><td> <a href = "#Spades">Spades</a> </td><td> <a href = "#Foot">Foot</a> </td><td> <a href = "#Round">Round</a> </td><td></td></tr>
|
|
<tr><td> <a href = "#Displays">Displays</a> </td><td> <a href = "#Nuts">Nuts</a> </td><td> <a href = "#Spools">Spools</a> </td><td> <a href = "#Handle">Handle</a> </td><td> <a href = "#Rounded_cylinder">Rounded_cylinder</a> </td><td></td></tr>
|
|
<tr><td> <a href = "#Extrusion_brackets">Extrusion_brackets</a> </td><td> <a href = "#O_ring">O_ring</a> </td><td> <a href = "#Springs">Springs</a> </td><td> <a href = "#PCB_mount">PCB_mount</a> </td><td> <a href = "#Rounded_polygon">Rounded_polygon</a> </td><td></td></tr>
|
|
<tr><td> <a href = "#Extrusions">Extrusions</a> </td><td> <a href = "#Opengrab">Opengrab</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td> <a href = "#PSU_shroud">PSU_shroud</a> </td><td> <a href = "#Sector">Sector</a> </td><td></td></tr>
|
|
<tr><td> <a href = "#Fans">Fans</a> </td><td> <a href = "#PCB">PCB</a> </td><td> <a href = "#Swiss_clips">Swiss_clips</a> </td><td> <a href = "#Press_fit">Press_fit</a> </td><td> <a href = "#Sweep">Sweep</a> </td><td></td></tr>
|
|
<tr><td> <a href = "#Fuseholder">Fuseholder</a> </td><td> <a href = "#PCBs">PCBs</a> </td><td> <a href = "#Toggles">Toggles</a> </td><td> <a href = "#Printed_box">Printed_box</a> </td><td> <a href = "#Thread">Thread</a> </td><td></td></tr>
|
|
<tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#PSUs">PSUs</a> </td><td> <a href = "#Transformers">Transformers</a> </td><td> <a href = "#Ribbon_clamp">Ribbon_clamp</a> </td><td> <a href = "#Tube">Tube</a> </td><td></td></tr>
|
|
<tr><td> <a href = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#Panel_meters">Panel_meters</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td> <a href = "#SSR_shroud">SSR_shroud</a> </td><td></td><td></td></tr>
|
|
<tr><td> <a href = "#Hot_ends">Hot_ends</a> </td><td> <a href = "#Pillars">Pillars</a> </td><td> <a href = "#Variacs">Variacs</a> </td><td> <a href = "#Screw_knob">Screw_knob</a> </td><td></td><td></td></tr>
|
|
<tr><td> <a href = "#Hygrometer">Hygrometer</a> </td><td> <a href = "#Pin_headers">Pin_headers</a> </td><td> <a href = "#Veroboard">Veroboard</a> </td><td> <a href = "#Socket_box">Socket_box</a> </td><td></td><td></td></tr>
|
|
<tr><td> <a href = "#IECs">IECs</a> </td><td> <a href = "#Pulleys">Pulleys</a> </td><td> <a href = "#Washers">Washers</a> </td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
|
|
<tr><td> <a href = "#Inserts">Inserts</a> </td><td></td><td> <a href = "#Wire">Wire</a> </td><td></td><td></td><td></td></tr>
|
|
<tr><td></td><td></td><td> <a href = "#Zipties">Zipties</a> </td><td></td><td></td><td></td></tr>
|
|
</table>
|
|
|
|
---
|
|
<a name="Axials"></a>
|
|
## Axials
|
|
Axial components for PCBs.
|
|
|
|
|
|
[vitamins/axials.scad](vitamins/axials.scad) Object definitions.
|
|
|
|
[vitamins/axial.scad](vitamins/axial.scad) Implementation.
|
|
|
|
[tests/axials.scad](tests/axials.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```ax_res_colour(type)``` | Body colour |
|
|
| ```ax_res_diameter(type)``` | Body diameter |
|
|
| ```ax_res_end_d(type)``` | End cap diameter |
|
|
| ```ax_res_end_l(type)``` | End cap length |
|
|
| ```ax_res_length(type)``` | Body length |
|
|
| ```ax_res_wattage(type)``` | Power rating |
|
|
| ```ax_res_wire(type)``` | Wire diameter |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```ax_res(type, value, tol = 5, pitch = 0)``` | Through hole axial resistor. If ```pitch``` is zero the minimum is used. If below the minimum the resistor is placed vertical. |
|
|
| ```wire_link(d, l, h = 1, tail = 3)``` | Draw a wire jumper link. |
|
|
|
|
![axials](tests/png/axials.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```pcb(PERF60x40)``` | Perfboard 60 x 40mm |
|
|
| 1 | ```ax_res(res1_8, 1000)``` | Resistor 1000 Ohms 5% 0.125W |
|
|
| 1 | ```ax_res(res1_8, 2200, tol = 1)``` | Resistor 2200 Ohms 1% 0.125W |
|
|
| 1 | ```ax_res(res1_4, 39000, tol = 1)``` | Resistor 39000 Ohms 1% 0.25W |
|
|
| 1 | ```ax_res(res1_4, 47000)``` | Resistor 47000 Ohms 5% 0.25W |
|
|
| 1 | ```ax_res(res1_2, 8200)``` | Resistor 8200 Ohms 5% 0.5W |
|
|
| 1 | ```ax_res(res1_2, 8250, tol = 1)``` | Resistor 8250 Ohms 1% 0.5W |
|
|
| 1 | ```wire_link(0.8, 10.16)``` | Wire link 0.8mm x 0.4" |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Ball_bearings"></a>
|
|
## Ball_bearings
|
|
Simple model of ball bearings with seals, the colour of which can be specified. If silver they are assumed to be metal and the
|
|
part number gets a ZZ suffix. Any other colour is assumed to be rubber and the suffix is -2RS.
|
|
|
|
If a ball bearing has a child it is placed on its top surface, the same as nuts and washers, etc.
|
|
|
|
Also single bearing balls are modelled as just a silver sphere and a BOM entry.
|
|
|
|
|
|
[vitamins/ball_bearings.scad](vitamins/ball_bearings.scad) Object definitions.
|
|
|
|
[vitamins/ball_bearing.scad](vitamins/ball_bearing.scad) Implementation.
|
|
|
|
[tests/ball_bearings.scad](tests/ball_bearings.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```bb_bore(type)``` | Internal diameter |
|
|
| ```bb_colour(type)``` | Shield colour, "silver" for metal |
|
|
| ```bb_diameter(type)``` | External diameter |
|
|
| ```bb_hub(type)``` | Inner rim thickness guesstimate |
|
|
| ```bb_name(type)``` | Part code without shield type suffix |
|
|
| ```bb_rim(type)``` | Outer rim thickness guesstimate |
|
|
| ```bb_width(type)``` | Width |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```ball_bearing(type)``` | Draw a ball bearing |
|
|
| ```bearing_ball(dia)``` | Draw a steel bearing ball |
|
|
|
|
![ball_bearings](tests/png/ball_bearings.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```ball_bearing(BB608)``` | Ball bearing 608-2RS 8mm x 22mm x 7mm |
|
|
| 1 | ```ball_bearing(BB6200)``` | Ball bearing 6200-2RS 10mm x 30mm x 9mm |
|
|
| 1 | ```ball_bearing(BB6201)``` | Ball bearing 6201-2RS 12mm x 32mm x 10mm |
|
|
| 1 | ```ball_bearing(BB624)``` | Ball bearing 624-2RS 4mm x 13mm x 5mm |
|
|
| 1 | ```ball_bearing(BB6808)``` | Ball bearing 6808-2RS 40mm x 52mm x 7mm |
|
|
| 1 | ```ball_bearing(BBSMR95)``` | Ball bearing SMR95ZZ 5mm x 9mm x 2.5mm |
|
|
| 6 | ``` bearing_ball(3)``` | Steel ball 3mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Batteries"></a>
|
|
## Batteries
|
|
Actually just single cells at the moment, shown here with mating contacts in place.
|
|
|
|
Note that the [Lumintop LM34](http://www.lumintop.com/lm34c-usb-rechargeable-18650-li-ion-battery.html) has a built in charger with a USB socket and two LEDs.
|
|
|
|
The battery length includes its contacts and the origin is the centre of that length. As well as drawing the battery and contacts there are functions
|
|
exposing enough information to make a battery box.
|
|
|
|
|
|
[vitamins/batteries.scad](vitamins/batteries.scad) Object definitions.
|
|
|
|
[vitamins/battery.scad](vitamins/battery.scad) Implementation.
|
|
|
|
[tests/batteries.scad](tests/batteries.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```battery_colour(type)``` | Casing colour |
|
|
| ```battery_contact(type)``` | Contact type |
|
|
| ```battery_diameter(type)``` | Casing diameter |
|
|
| ```battery_led_positions(type)``` | LED positions for Lumintop |
|
|
| ```battery_length(type)``` | Total length including terminals |
|
|
| ```battery_neg_dia(type)``` | Negative terminal diameter |
|
|
| ```battery_pos_dia(type)``` | Positive terminal diameter |
|
|
| ```battery_pos_height(type)``` | Positive terminal height above the casing |
|
|
| ```battery_usb_offset(type)``` | USB connector offset from the top |
|
|
| ```contact_height(type)``` | Height of the flat part |
|
|
| ```contact_neg(type)``` | Negative spring height above the plate when compressed and the spring type |
|
|
| ```contact_pos(type)``` | Positive contact dimple height and top and bottom internal diameter |
|
|
| ```contact_tab_length(type)``` | Length of the tab |
|
|
| ```contact_tab_width(type)``` | Width of the tab |
|
|
| ```contact_thickness(type)``` | Thickness of the metal |
|
|
| ```contact_width(type)``` | Width of the flat part |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```battery(type)``` | Draw a battery |
|
|
| ```battery_contact(type, pos = true)``` | Draw a positive or negative battery contact for specified battery |
|
|
| ```battery_led_positions(type)``` | Position of the LEDs on a Lumintop |
|
|
|
|
![batteries](tests/png/batteries.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 6 | ```battery_contact(bcontact, false)``` | Battery negative contact |
|
|
| 6 | ```battery_contact(bcontact, true)``` | Battery positive contact |
|
|
| 1 | ```battery(AACELL)``` | Cell AA |
|
|
| 1 | ```battery(AAACELL)``` | Cell AAA |
|
|
| 1 | ```battery(CCELL)``` | Cell C |
|
|
| 1 | ```battery(DCELL)``` | Cell D |
|
|
| 1 | ```battery(LUMINTOP)``` | Cell LUMINTOP 18650 LION with charger |
|
|
| 1 | ```battery(S25R18650)``` | Cell Samsung 25R 18650 LION |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Belts"></a>
|
|
## Belts
|
|
Models timing belt running over toothed or smooth pulleys and calculates an accurate length.
|
|
Only models 2D paths, so not crossed belt core XY!
|
|
|
|
To make the back of the belt run against a smooth pulley on the outside of the loop specify a negative pitch radius.
|
|
|
|
By default the path is a closed loop but a gap length and position can be specified to make open loops.
|
|
To draw the gap its XY position is specified by ```gap_pos```. ```gap_pos.z``` can be used to specify a rotation if the gap is not at the bottom of the loop.
|
|
|
|
Individual teeth are not drawn, instead they are represented by a lighter colour.
|
|
|
|
|
|
[vitamins/belts.scad](vitamins/belts.scad) Object definitions.
|
|
|
|
[vitamins/belt.scad](vitamins/belt.scad) Implementation.
|
|
|
|
[tests/belts.scad](tests/belts.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```belt_pitch(type)``` | Pitch in mm |
|
|
| ```belt_pitch_height(type)``` | Offset of the pitch radius from the tips of the teeth |
|
|
| ```belt_thickness(type)``` | Total thickness including teeth |
|
|
| ```belt_tooth_height(type)``` | Tooth height |
|
|
| ```belt_width(type)``` | Width in mm |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```belt_length(points, gap = 0)``` | Compute belt length given path and optional gap |
|
|
| ```belt_pitch_to_back(type)``` | Offset of the back from the pitch radius |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```belt(type, points, gap = 0, gap_pos = undef, belt_colour = grey(20)``` | Draw a belt path given a set of points and pitch radii where the pulleys are. Closed loop unless a gap is specified |
|
|
|
|
![belts](tests/png/belts.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```belt(GT2x6, [ ... ])``` | Belt GT2 x 6mm x 128mm |
|
|
| 2 | ```belt(GT2x6, [ ... ], 80, [0, 0])``` | Belt GT2 x 6mm x 572mm |
|
|
| 1 | ```belt(T2p5x6, [ ... ])``` | Belt T2.5 x 6mm x 130mm |
|
|
| 1 | ```belt(T5x10, [ ... ])``` | Belt T5 x 10mm x 130mm |
|
|
| 1 | ```belt(T5x6, [ ... ])``` | Belt T5 x 6mm x 130mm |
|
|
| 2 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
|
| 2 | ```pulley(GT2x16_toothed_idler)``` | Pulley GT2 idler 16 teeth |
|
|
| 4 | ```pulley(GT2x20_toothed_idler)``` | Pulley GT2 idler 20 teeth |
|
|
| 2 | ```pulley(GT2x16_plain_idler)``` | Pulley GT2 idler smooth 9.63mm |
|
|
| 2 | ```pulley(GT2x20ob_pulley)``` | Pulley GT2OB 20 teeth |
|
|
| 2 | ```screw(M3_cs_cap_screw, 20)``` | Screw M3 cs cap x 20mm |
|
|
| 4 | ```screw(M3_grub_screw, 6)``` | Screw M3 grub x 6mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Blowers"></a>
|
|
## Blowers
|
|
Models of radial blowers.
|
|
|
|
|
|
[vitamins/blowers.scad](vitamins/blowers.scad) Object definitions.
|
|
|
|
[vitamins/blower.scad](vitamins/blower.scad) Implementation.
|
|
|
|
[tests/blowers.scad](tests/blowers.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```blower_axis(type)``` | XY coordinates of the axle |
|
|
| ```blower_base(type)``` | Thickness of the base |
|
|
| ```blower_bore(type)``` | The air intake hole diameter |
|
|
| ```blower_depth(type)``` | Height |
|
|
| ```blower_exit(type)``` | The width of the exit port |
|
|
| ```blower_hub(type)``` | Rotor hub diameter |
|
|
| ```blower_hub_height(type)``` | Height of the rotor |
|
|
| ```blower_length(type)``` | Length of enclosing rectangle |
|
|
| ```blower_lug(type)``` | Height of the lugs |
|
|
| ```blower_screw(type)``` | The type of screws needed |
|
|
| ```blower_screw_hole(type)``` | Screw hole diameter |
|
|
| ```blower_screw_holes(type)``` | List of XY coordinates of the screw holes |
|
|
| ```blower_top(type)``` | Thickness of the top |
|
|
| ```blower_wall(type)``` | Side wall thickness |
|
|
| ```blower_width(type)``` | Width of enclosing rectangle |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```blower_casing_is_square(type)``` | True for square radial fans, false for spiral shape radial blowers |
|
|
| ```blower_exit_offset(type)``` | Offset of exit's centre from the edge |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```blower(type)``` | Draw specified blower |
|
|
| ```blower_hole_positions(type)``` | Translate children to screw hole positions |
|
|
| ```blower_square(type)``` | Draw a square blower |
|
|
|
|
![blowers](tests/png/blowers.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```blower(PE4020)``` | Blower Pengda Technology 4020 |
|
|
| 1 | ```blower(RB5015)``` | Blower Runda RB5015 |
|
|
| 4 | ```screw(M2_cap_screw, 8)``` | Screw M2 cap x 8mm |
|
|
| 3 | ```screw(M3_cap_screw, 20)``` | Screw M3 cap x 20mm |
|
|
| 2 | ```screw(M4_cap_screw, 25)``` | Screw M4 cap x 25mm |
|
|
| 1 | ```blower(BL40x10)``` | Square radial 4010 |
|
|
| 4 | ```washer(M2_washer)``` | Washer M2 x 5mm x 0.3mm |
|
|
| 3 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 2 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Bulldogs"></a>
|
|
## Bulldogs
|
|
Crude representation of a bulldog clip. The handle is not currently drawn but its length can be
|
|
accessed to allow clearance. Used for holding glass on 3D printer beds but Swiss picture clips can be
|
|
better.
|
|
|
|
|
|
[vitamins/bulldogs.scad](vitamins/bulldogs.scad) Object definitions.
|
|
|
|
[vitamins/bulldog.scad](vitamins/bulldog.scad) Implementation.
|
|
|
|
[tests/bulldogs.scad](tests/bulldogs.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```bulldog_depth(type)``` | Depth from the back to the front of the tubes |
|
|
| ```bulldog_handle_length(type)``` | Length that the handle protrudes from the back |
|
|
| ```bulldog_height(type)``` | Height at the back |
|
|
| ```bulldog_length(type)``` | Length along the profile |
|
|
| ```bulldog_radius(type)``` | Outside radius of the back corners |
|
|
| ```bulldog_thickness(type)``` | Thickness of the metal |
|
|
| ```bulldog_tube(type)``` | Outside diameter of the tubes |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```bulldog(type, open = 4)``` | Draw bulldog clip open by specified amount |
|
|
|
|
![bulldogs](tests/png/bulldogs.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```bulldog(small_bulldog)``` | Bulldog clip 19mm |
|
|
| 1 | ```bulldog(large_bulldog)``` | Bulldog clip 25mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Buttons"></a>
|
|
## Buttons
|
|
PCB mounted buttons. Can optionally have a coloured cap
|
|
|
|
|
|
[vitamins/buttons.scad](vitamins/buttons.scad) Object definitions.
|
|
|
|
[vitamins/button.scad](vitamins/button.scad) Implementation.
|
|
|
|
[tests/buttons.scad](tests/buttons.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```square_button_cap_d(type)``` | Diameter of the body of the cap |
|
|
| ```square_button_cap_flange_d(type)``` | Diameter of the flange of the cap |
|
|
| ```square_button_cap_flange_h(type)``` | Height of the cap flange |
|
|
| ```square_button_cap_h(type)``` | Height of the cap including the stem |
|
|
| ```square_button_cap_stem(type)``` | Length of the cap stem |
|
|
| ```square_button_d(type)``` | Button diameter |
|
|
| ```square_button_h(type)``` | Height of the button above the PCB |
|
|
| ```square_button_height(type)``` | Height of the base |
|
|
| ```square_button_rivit(type)``` | Size of the corner rivets |
|
|
| ```square_button_wall(type)``` | Offset of the metal part |
|
|
| ```square_button_width(type)``` | Width and depth of the base |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```square_button(type, colour = "yellow")``` | Draw square button with specified cap colour if it has a cap |
|
|
|
|
![buttons](tests/png/buttons.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```square_button(button_12mm, "yellow")``` | Square button 12mm with yellow cap |
|
|
| 1 | ```square_button(button_4p5mm)``` | Square button 4.5mm |
|
|
| 1 | ```square_button(button_6mm)``` | Square button 6mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Cable_strips"></a>
|
|
## Cable_strips
|
|
A strip of polypropylene used with ribbon cable to make a cable flexible in one direction only.
|
|
|
|
Modelled with a Bezier spline, which is not quite the same as a minimum energy curve but very close, epecially
|
|
near the extreme positions, where the model needs to be accurate.
|
|
|
|
When the sides are constrained then a circular model is more accurate.
|
|
|
|
|
|
[vitamins/cable_strip.scad](vitamins/cable_strip.scad) Implementation.
|
|
|
|
[tests/cable_strips.scad](tests/cable_strips.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```bezier_cable_length(depth, min_z, pos)``` | Calculate a length that will achieve the desired minimum z |
|
|
| ```cable_strip_length(depth, travel, extra = 15)``` | Calculate circular cable strip length |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```bezier_cable_strip(ways, depth, length, below, extra, pos = 0)``` | Draw a cable strip using a Bezier curve |
|
|
| ```cable_strip(ways, depth, travel, extra = 15, pos = 0)``` | Draw a cable stripe with a semi circular fold |
|
|
|
|
![cable_strips](tests/png/cable_strips.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 3 | ```bezier_cable_strip(20, 50, 150, 100, 10)``` | Polypropylene strip 170mm x 26mm x 0.8mm |
|
|
| 3 | ```cable_strip(20, 25, 100, 30)``` | Polypropylene strip 189mm x 24mm x 0.8mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Cameras"></a>
|
|
## Cameras
|
|
PCB cameras.
|
|
|
|
|
|
[vitamins/cameras.scad](vitamins/cameras.scad) Object definitions.
|
|
|
|
[vitamins/camera.scad](vitamins/camera.scad) Implementation.
|
|
|
|
[tests/cameras.scad](tests/cameras.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```camera_connector_pos(type)``` | The flex connector block for the camera itself's position |
|
|
| ```camera_connector_size(type)``` | The flex connector block for the camera itself's size |
|
|
| ```camera_lens(type)``` | Stack of lens parts, can be round, rectanular or rounded rectangular, with optional tapered aperture |
|
|
| ```camera_lens_offset(type)``` | Offset of the lens center from the PCB centre |
|
|
| ```camera_pcb(type)``` | The PCB part of the camera |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```camera(type, show_lens = true)``` | Draw specified PCB camera |
|
|
| ```camera_lens(type, offset = 0, show_lens = true)``` | Draw the lens stack, with optional offset for making a clearance hole |
|
|
|
|
![cameras](tests/png/cameras.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```camera(rpi_camera_v1)``` | Raspberry Pi camera V1 |
|
|
| 1 | ```camera(rpi_camera_v2)``` | Raspberry Pi camera V2 |
|
|
| 1 | ```camera(rpi_camera)``` | Raspberry Pi focusable camera |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Circlips"></a>
|
|
## Circlips
|
|
Circlips aka tapered retaining rings.
|
|
|
|
|
|
[vitamins/circlips.scad](vitamins/circlips.scad) Object definitions.
|
|
|
|
[vitamins/circlip.scad](vitamins/circlip.scad) Implementation.
|
|
|
|
[tests/circlips.scad](tests/circlips.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```circlip_a(type)``` | Size of the lugs |
|
|
| ```circlip_b(type)``` | Widest part of the taper |
|
|
| ```circlip_d1(type)``` | Nominal OD, i.e. diameter of tube |
|
|
| ```circlip_d2(type)``` | Groove diameter, i.e. OD when installed |
|
|
| ```circlip_d3(type)``` | Relaxed OD when not installed |
|
|
| ```circlip_d5(type)``` | Plier hole diameter |
|
|
| ```circlip_thickness(type)``` | Thickness |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```internal_circlip(type, open = 0)``` | Draw specified internal circlip, open = 0, for nominal size installed, 1 for relaxed uninstalled, -1 for squeezed to install |
|
|
|
|
![circlips](tests/png/circlips.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 3 | ```circlip(circlip_12i)``` | Circlip internal 12mm |
|
|
| 3 | ```circlip(circlip_15i)``` | Circlip internal 15mm |
|
|
| 3 | ```circlip(circlip_19i)``` | Circlip internal 19mm |
|
|
| 3 | ```circlip(circlip_21i)``` | Circlip internal 21mm |
|
|
| 3 | ```circlip(circlip_28i)``` | Circlip internal 28mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Components"></a>
|
|
## Components
|
|
Various electronic components used in hot ends and heated beds.
|
|
|
|
|
|
[vitamins/components.scad](vitamins/components.scad) Object definitions.
|
|
|
|
[vitamins/component.scad](vitamins/component.scad) Implementation.
|
|
|
|
[tests/components.scad](tests/components.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```al_clad_clearance(type)``` | Clearance from screw hole centre to the body |
|
|
| ```al_clad_height(type)``` | Body height |
|
|
| ```al_clad_hole(type)``` | Hole diameter |
|
|
| ```al_clad_hpitch(type)``` | Lengthways pitch between screw holes |
|
|
| ```al_clad_length(type)``` | Body length |
|
|
| ```al_clad_tab(type)``` | Tab width |
|
|
| ```al_clad_thickness(type)``` | Tab thickness |
|
|
| ```al_clad_vpitch(type)``` | Widthways pitch between screw holes |
|
|
| ```al_clad_width(type)``` | Width including tabs |
|
|
| ```al_clad_wire_length(type)``` | Total length including wires |
|
|
| ```resistor_colour(type)``` | Body colour |
|
|
| ```resistor_diameter(type)``` | Body diameter |
|
|
| ```resistor_hole(type)``` | Hole big enough to glue it into |
|
|
| ```resistor_length(type)``` | Body length |
|
|
| ```resistor_radial(type)``` | Radial gives bead thermistor style body |
|
|
| ```resistor_sleeved(type)``` | Are the leads sleeved |
|
|
| ```resistor_wire_diameter(type)``` | Wire diameter |
|
|
| ```resistor_wire_length(type)``` | Wire length from body |
|
|
| ```tc_body_height(type)``` | Plastic body height |
|
|
| ```tc_body_inset(type)``` | How far metal is inset into the plastic body |
|
|
| ```tc_body_length(type)``` | Plastic body length |
|
|
| ```tc_body_width(type)``` | Plastic body width |
|
|
| ```tc_hole_dia(type)``` | Screw hole diameter |
|
|
| ```tc_hole_pitch(type)``` | Screw hole pitch |
|
|
| ```tc_length(type)``` | Across the lugs |
|
|
| ```tc_spade_height(type)``` | Terminal spade height measured from base |
|
|
| ```tc_spade_pitch(type)``` | Terminal spade pitch |
|
|
| ```tc_thickness(type)``` | Metal thickness |
|
|
| ```tc_width(type)``` | Width of lugs |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```TO220_thickness()``` | Thickness of the tab of a TO220 |
|
|
| ```fack2spm_bezel_size()``` | FACK2SPM Bezel dimensions |
|
|
| ```fack2spm_screw()``` | Screw type for FACK2SPM |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ``` TO220(description, leads = 3, lead_length = 16)``` | Draw a TO220 package, use ```description``` to describe what it is |
|
|
| ```al_clad_resistor(type, value, leads = true)``` | Draw an aluminium clad resistor |
|
|
| ```al_clad_resistor_hole_positions(type)``` | Position children at the screw holes of an aluminium clad resistor |
|
|
| ```al_clad_resistor_holes(type, h = 100)``` | Drill screw holes for an aluminium clad resistor |
|
|
| ```fack2spm()``` | Draw a FACK2SPM Cat5E RJ45 shielded panel mount coupler |
|
|
| ```fack2spm_hole_positions()``` | Place children at the FACK2SPM mounting hole positions |
|
|
| ```fack2spm_holes(h = 0)``` | Cut the holes for a FACK2SPM |
|
|
| ```panel_USBA()``` | Draw a panel mount USBA connector |
|
|
| ```panel_USBA_hole_positions()``` | Place children at hole positions |
|
|
| ```panel_USBA_holes(h = 100)``` | Make holes for USBA connector |
|
|
| ```resistor(type)``` | Draw specified type of resitor |
|
|
| ```sleeved_resistor(type, sleeving, bare = 5, heatshrink = false)``` | Draw a resistor with sleeved leads and option heatshrink |
|
|
| ```thermal_cutout(type)``` | Draw specified thermal cutout |
|
|
| ```thermal_cutout_hole_positions(type)``` | Place children at hole positions |
|
|
|
|
![components](tests/png/components.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```TO220("Generic TO220 package")``` | Generic TO220 package |
|
|
| 8 | ```tubing(HSHRNK32)``` | Heatshrink sleeving ID 3.2mm x 15mm |
|
|
| 1 | ```resistor(RWM04106R80J)``` | Resistor RWM04106R80J 6R8 3W vitreous enamel |
|
|
| 1 | ```resistor(RIE1212UB5C5R6)``` | Resistor UB5C 5R6F 5R6 3W vitreous enamel |
|
|
| 1 | ```al_clad_resistor(THS10, 4.7)``` | Resistor aluminium clad THS10 4.7 |
|
|
| 1 | ```al_clad_resistor(THS15, 4.7)``` | Resistor aluminium clad THS15 4.7 |
|
|
| 1 | ```al_clad_resistor(THS25, 4.7)``` | Resistor aluminium clad THS25 4.7 |
|
|
| 1 | ```al_clad_resistor(THS50, 4.7)``` | Resistor aluminium clad THS50 4.7 |
|
|
| 4 | ```screw(M2p5_pan_screw, 16)``` | Screw M2.5 pan x 16mm |
|
|
| 4 | ```screw(M3_pan_screw, 16)``` | Screw M3 pan x 16mm |
|
|
| 1 | ```panel_USBA()``` | Socket USB A panel mount |
|
|
| 1 | ```tuk_fack2spm()``` | TUK FACK2SPM Cat5E RJ45 shielded panel mount coupler |
|
|
| 1 | ```thermal_cutout(TC)``` | Thermal cutout TC |
|
|
| 1 | ```resistor(Epcos)``` | Thermistor Epcos B57560G104F 100K 1% |
|
|
| 1 | ```resistor(EpcosBlue)``` | Thermistor Epcos B57861S104F40 100K 1% |
|
|
| 1 | ```resistor(Honewell)``` | Thermistor Honeywell 135-104LAC-J01 100K 1% |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="D_connectors"></a>
|
|
## D_connectors
|
|
D-connectors. Can be any number of ways, male or female, solder buckets, PCB mount or IDC, with or without pillars.
|
|
|
|
|
|
[vitamins/d_connectors.scad](vitamins/d_connectors.scad) Object definitions.
|
|
|
|
[vitamins/d_connector.scad](vitamins/d_connector.scad) Implementation.
|
|
|
|
[tests/d_connectors.scad](tests/d_connectors.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ``` d_flange_length(type)``` | Length of the flange |
|
|
| ``` d_flange_thickness(type)``` | Thickness of the flange |
|
|
| ``` d_flange_width(type)``` | Width of the flange |
|
|
| ``` d_front_height(type)``` | From the back of the flange to the front |
|
|
| ``` d_height(type)``` | From the front to the back of the metal part |
|
|
| ``` d_hole_pitch(type)``` | Mounting hole pitch |
|
|
| ``` d_lengths(type)``` | Lengths of the D for plug and socket |
|
|
| ``` d_ways(type)``` | Number of ways |
|
|
| ``` d_widths(type)``` | Widths of the D for plug and socket |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ``` d_mate_distance(type)``` | Spacing when mated |
|
|
| ``` d_pcb_offset(type)``` | Height of the back of the flange above the PCB |
|
|
| ``` d_slot_length(type)``` | Slot to clear the back |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```d_connector_holes(type)``` | Place children at the screw hole positions |
|
|
| ```d_pillar()``` | Draw a pillar for a D-connector |
|
|
| ```d_plug(type, socket = false, pcb = false, idc = false)``` | Draw specified D plug, which can be IDC, PCB or plain solder bucket |
|
|
| ```d_socket(connector, pcb = false, idc = false)``` | Draw specified D socket, which can be IDC, PCB or plain solder bucket |
|
|
|
|
![d_connectors](tests/png/d_connectors.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```d_plug(DCONN15, idc = true)``` | D-type 15 way IDC plug |
|
|
| 1 | ```d_socket(DCONN15, idc = true)``` | D-type 15 way IDC socket |
|
|
| 1 | ```d_plug(DCONN25, pcb = true)``` | D-type 25 way PCB mount plug |
|
|
| 1 | ```d_socket(DCONN25, pcb = true)``` | D-type 25 way PCB mount socket |
|
|
| 1 | ```d_plug(DCONN9)``` | D-type 9 way plug |
|
|
| 1 | ```d_socket(DCONN9)``` | D-type 9 way socket |
|
|
| 6 | ```d_pillar()``` | D-type connector pillar |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="DIP"></a>
|
|
## DIP
|
|
Dual inline IC packages and sockets
|
|
|
|
|
|
[vitamins/dip.scad](vitamins/dip.scad) Implementation.
|
|
|
|
[tests/DIP.scad](tests/DIP.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```pdip_pin_W(type)``` | Pin shoulder width |
|
|
| ```pdip_pin_h(type)``` | Pin height |
|
|
| ```pdip_pin_n(type)``` | Pin neck |
|
|
| ```pdip_pin_s(type)``` | Height above seating plane |
|
|
| ```pdip_pin_t(type)``` | Pin thickness |
|
|
| ```pdip_pin_w(type)``` | Pin width |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```dip(n, part, size, w, pitch, pin)``` | Draw DIP package |
|
|
| ```pdip(pins, part, socketed, w = inch(0.3)``` | Draw standard 0.1" PDIP IC package |
|
|
| ```pdip_pin(type, l, end)``` | Draw a pin |
|
|
|
|
![dip](tests/png/dip.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```dil_socket(14, 7.62)``` | DIL socket 28 x 0.3" |
|
|
| 1 | ```pdip(14, 74HC00)``` | IC 74HC00 PDIP14 |
|
|
| 1 | ```pdip(20, 74HC245)``` | IC 74HC245 PDIP20 |
|
|
| 1 | ```pdip(28, ATMEGA328)``` | IC ATMEGA328 PDIP28 |
|
|
| 1 | ```pdip(8, NE555)``` | IC NE555 PDIP8 |
|
|
| 1 | ```pdip(6, OPTO)``` | IC OPTO PDIP6 |
|
|
| 1 | ```pdip(16, ULN2003)``` | IC ULN2003 PDIP16 |
|
|
| 1 | ```pdip(18, ULN2803)``` | IC ULN2803 PDIP18 |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Displays"></a>
|
|
## Displays
|
|
LCD dispays.
|
|
|
|
|
|
[vitamins/displays.scad](vitamins/displays.scad) Object definitions.
|
|
|
|
[vitamins/display.scad](vitamins/display.scad) Implementation.
|
|
|
|
[tests/displays.scad](tests/displays.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```display_aperture(type)``` | Size of the aperture including its depth |
|
|
| ```display_height(type)``` | Depth of the metal part |
|
|
| ```display_pcb(type)``` | PCB mounted on the back |
|
|
| ```display_pcb_offset(type)``` | 3D offset of the PCB centre |
|
|
| ```display_ribbon(type)``` | Keep out region for ribbon cable |
|
|
| ```display_thickness(type)``` | Height of the metal part |
|
|
| ```display_threads(type)``` | Length that studs protrude from the PCB holes |
|
|
| ```display_touch_screen(type)``` | Touch screen position and size |
|
|
| ```display_width(type)``` | Width of the metal part |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```display_depth(type)``` | Total thickness including touch screen and PCB |
|
|
| ```display_ts_thickness(type)``` | Touch screen thickness or 0 |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```display(type)``` | Draw specified display |
|
|
| ```display_aperture(type, clearance, clear_pcb = false)``` | Make aperture cutout |
|
|
|
|
![displays](tests/png/displays.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```display(BigTreeTech_TFT35v3_0)``` | BigTreeTech TFT35 v3.0 |
|
|
| 1 | ```display(HDMI5)``` | HDMI display 5" |
|
|
| 1 | ```display(LCD1602A)``` | LCD display 1602A |
|
|
| 1 | ```display(LCDS7282B)``` | LCD display S-7282B |
|
|
| 1 | ```display(SSD1963_4p3)``` | LCD display SSD1963 4.3" |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Extrusion_brackets"></a>
|
|
## Extrusion_brackets
|
|
Brackets for joining extrusions at a corner.
|
|
|
|
|
|
[vitamins/extrusion_brackets.scad](vitamins/extrusion_brackets.scad) Object definitions.
|
|
|
|
[vitamins/extrusion_bracket.scad](vitamins/extrusion_bracket.scad) Implementation.
|
|
|
|
[tests/extrusion_brackets.scad](tests/extrusion_brackets.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```extrusion_corner_bracket_base_thickness(type)``` | Thickness of base of bracket |
|
|
| ```extrusion_corner_bracket_hole_offset(type)``` | Hole offset from corner |
|
|
| ```extrusion_corner_bracket_side_thickness(type)``` | Thickness of side of bracket |
|
|
| ```extrusion_corner_bracket_size(type)``` | Size of bracket |
|
|
| ```extrusion_inner_corner_bracket_size(type)``` | Size of inner bracket |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```extrusion_corner_bracket(type)``` | Corner bracket for extrusion |
|
|
| ```extrusion_corner_bracket_assembly(type, part_thickness = 2, screw_type = M4_cap_screw, nut_type = M4_sliding_t_nut, max_screw_depth = 6)``` | Assembly with fasteners in place |
|
|
| ```extrusion_corner_bracket_hole_positions(type)``` | Place children at hole positions |
|
|
| ```extrusion_inner_corner_bracket(type, grub_screws = true)``` | Inner corner bracket for extrusion |
|
|
|
|
![extrusion_brackets](tests/png/extrusion_brackets.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```extrusion(E2020, 20)``` | Extrusion E2020 x 20mm |
|
|
| 1 | ```extrusion(E2020, 30)``` | Extrusion E2020 x 30mm |
|
|
| 1 | ```extrusion(E2020, 40)``` | Extrusion E2020 x 40mm |
|
|
| 1 | ```extrusion(E2020, 50)``` | Extrusion E2020 x 50mm |
|
|
| 2 | ```extrusion_corner_bracket(E20_corner_bracket)``` | Extrusion corner bracket 20 |
|
|
| 2 | ```extrusion_inner_corner_bracket(E20_inner_corner_bracket, true)``` | Extrusion inner corner bracket 4.5 |
|
|
| 1 | ```extrusion_inner_corner_bracket(E20_inner_corner_bracket, false)``` | Extrusion inner corner bracket 4.5 |
|
|
| 4 | ```sliding_t_nut(M4_sliding_t_nut)``` | Nut M4 sliding T |
|
|
| 4 | ```screw(M4_cap_screw, 8)``` | Screw M4 cap x 8mm |
|
|
| 4 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Extrusions"></a>
|
|
## Extrusions
|
|
Aluminium extrusion.
|
|
|
|
|
|
[vitamins/extrusions.scad](vitamins/extrusions.scad) Object definitions.
|
|
|
|
[vitamins/extrusion.scad](vitamins/extrusion.scad) Implementation.
|
|
|
|
[tests/extrusions.scad](tests/extrusions.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```extrusion_center_hole(type)``` | Diameter of center hole |
|
|
| ```extrusion_center_square(type)``` | Size of center square |
|
|
| ```extrusion_channel_width(type)``` | Channel width |
|
|
| ```extrusion_channel_width_internal(type)``` | Internal channel width |
|
|
| ```extrusion_corner_hole(type)``` | Diameter of corner hole |
|
|
| ```extrusion_fillet(type)``` | Radius of corner fillet |
|
|
| ```extrusion_height(type)``` | Height of extrusion |
|
|
| ```extrusion_spar_thickness(type)``` | Spar thickness |
|
|
| ```extrusion_tab_thickness(type)``` | Tab thickness |
|
|
| ```extrusion_width(type)``` | Width of extrusion |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```extrusion(type, length, center = true, cornerHole = false)``` | Draw the specified extrusion |
|
|
|
|
![extrusions](tests/png/extrusions.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```extrusion(E1515, 80)``` | Extrusion E1515 x 80mm |
|
|
| 1 | ```extrusion(E2020, 80)``` | Extrusion E2020 x 80mm |
|
|
| 1 | ```extrusion(E2040, 80)``` | Extrusion E2040 x 80mm |
|
|
| 1 | ```extrusion(E2060, 80)``` | Extrusion E2060 x 80mm |
|
|
| 1 | ```extrusion(E2080, 80)``` | Extrusion E2080 x 80mm |
|
|
| 1 | ```extrusion(E3030, 80, cornerHole = true)``` | Extrusion E3030 x 80mm |
|
|
| 1 | ```extrusion(E3060, 80, cornerHole = true)``` | Extrusion E3060 x 80mm |
|
|
| 1 | ```extrusion(E4040, 80, cornerHole = true)``` | Extrusion E4040 x 80mm |
|
|
| 1 | ```extrusion(E4080, 80, cornerHole = true)``` | Extrusion E4080 x 80mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Fans"></a>
|
|
## Fans
|
|
Axial fans.
|
|
|
|
Can draw three styles: solid, open frame and open frame with screw bosses.
|
|
|
|
|
|
[vitamins/fans.scad](vitamins/fans.scad) Object definitions.
|
|
|
|
[vitamins/fan.scad](vitamins/fan.scad) Implementation.
|
|
|
|
[tests/fans.scad](tests/fans.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```fan_aperture(type)``` | Optional diameter for the aperture, which can be bigger than the bore it has flared corners. |
|
|
| ```fan_blades(type)``` | The number of blades |
|
|
| ```fan_bore(type)``` | Diameter of the hole for the blades |
|
|
| ```fan_boss_d(type)``` | Diameter of the screw bosses |
|
|
| ```fan_depth(type)``` | Depth of fan |
|
|
| ```fan_hole_pitch(type)``` | Screw hole pitch |
|
|
| ```fan_hub(type)``` | Diameter of the hub |
|
|
| ```fan_outer_diameter(type)``` | Outside diameter of the frame |
|
|
| ```fan_screw(type)``` | Screw type |
|
|
| ```fan_thickness(type)``` | Thickness of the frame |
|
|
| ```fan_width(type)``` | Width of square |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```fan(type)``` | Draw specified fan, origin in the centre |
|
|
| ```fan_assembly(type, thickness, include_fan = true, screw = false, full_depth = false)``` | Fan with its fasteners |
|
|
| ```fan_hole_positions(type, z = undef)``` | Position children at the screw hole positions |
|
|
| ```fan_holes(type, poly = false, screws = true, h = 100)``` | Make all the holes for the fan, or just the aperture if ```screws``` is false. Set ```poly``` true for poly_holes. |
|
|
|
|
![fans](tests/png/fans.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```fan(fan120x25)``` | Fan 120mm x 25mm |
|
|
| 1 | ```fan(fan17x8)``` | Fan 17mm x 8mm |
|
|
| 1 | ```fan(fan25.4x10)``` | Fan 25.4mm x 10mm |
|
|
| 1 | ```fan(fan30x10)``` | Fan 30mm x 10mm |
|
|
| 1 | ```fan(fan40x11)``` | Fan 40mm x 11mm |
|
|
| 1 | ```fan(fan50x15)``` | Fan 50mm x 15mm |
|
|
| 1 | ```fan(fan60x15)``` | Fan 60mm x 15mm |
|
|
| 1 | ```fan(fan60x25)``` | Fan 60mm x 25mm |
|
|
| 1 | ```fan(fan70x15)``` | Fan 70mm x 15mm |
|
|
| 1 | ```fan(fan80x25)``` | Fan 80mm x 25mm |
|
|
| 1 | ```fan(fan80x38)``` | Fan 80mm x 38mm |
|
|
| 4 | ```nut(M2_nut, nyloc = true)``` | Nut M2 x 1.6mm nyloc |
|
|
| 4 | ```nut(M2p5_nut, nyloc = true)``` | Nut M2.5 x 2.2mm nyloc |
|
|
| 8 | ```nut(M3_nut, nyloc = true)``` | Nut M3 x 2.4mm nyloc |
|
|
| 28 | ```nut(M4_nut, nyloc = true)``` | Nut M4 x 3.2mm nyloc |
|
|
| 4 | ```screw(M2_cap_screw, 16)``` | Screw M2 cap x 16mm |
|
|
| 4 | ```screw(M2p5_pan_screw, 20)``` | Screw M2.5 pan x 20mm |
|
|
| 8 | ```screw(M3_dome_screw, 20)``` | Screw M3 dome x 20mm |
|
|
| 20 | ```screw(M4_dome_screw, 16)``` | Screw M4 dome x 16mm |
|
|
| 4 | ```screw(M4_dome_screw, 25)``` | Screw M4 dome x 25mm |
|
|
| 4 | ```screw(M4_dome_screw, 30)``` | Screw M4 dome x 30mm |
|
|
| 8 | ```washer(M2_washer)``` | Washer M2 x 5mm x 0.3mm |
|
|
| 8 | ```washer(M2p5_washer)``` | Washer M2.5 x 5.9mm x 0.5mm |
|
|
| 12 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 32 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Fuseholder"></a>
|
|
## Fuseholder
|
|
20mm panel mount fuse holder.
|
|
|
|
|
|
[vitamins/fuseholder.scad](vitamins/fuseholder.scad) Implementation.
|
|
|
|
[tests/fuseholder.scad](tests/fuseholder.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```fuseholder_diameter()``` | Outside diameter of flange |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```fuseholder(thickness)``` | Fuseholder with nut in place for specified panel thickness |
|
|
| ```fuseholder_hole(h = 100)``` | Hole with flats for fuseholder |
|
|
|
|
![fuseholder](tests/png/fuseholder.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```fuseholder(6)``` | Fuse holder 20mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Geared_steppers"></a>
|
|
## Geared_steppers
|
|
Geared tin can steppers
|
|
|
|
|
|
[vitamins/geared_steppers.scad](vitamins/geared_steppers.scad) Object definitions.
|
|
|
|
[vitamins/geared_stepper.scad](vitamins/geared_stepper.scad) Implementation.
|
|
|
|
[tests/geared_steppers.scad](tests/geared_steppers.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```gs_boss_d(type)``` | Boss around the shaft diameter |
|
|
| ```gs_boss_h(type)``` | Boss around the shaft height |
|
|
| ```gs_bulge2_d(type)``` | Plastic rear bulge depth from centre |
|
|
| ```gs_bulge2_h(type)``` | Plastic rear bulge height |
|
|
| ```gs_bulge2_w(type)``` | Plastic rear bulge width |
|
|
| ```gs_bulge_d(type)``` | Plastic bulge depth from centre |
|
|
| ```gs_bulge_h(type)``` | Plastic bulge height |
|
|
| ```gs_bulge_w(type)``` | Plastic bulge width |
|
|
| ```gs_diameter(type)``` | Can diameter |
|
|
| ```gs_flat_length(type)``` | Shaft flat length |
|
|
| ```gs_height(type)``` | Can height |
|
|
| ```gs_hole_d(type)``` | Screw hole diameter |
|
|
| ```gs_lug_t(type)``` | Screw lug thickness |
|
|
| ```gs_lug_w(type)``` | Screw lug width |
|
|
| ```gs_offset(type)``` | Offset of the shaft from the centre of the can |
|
|
| ```gs_pitch(type)``` | Screw pitch |
|
|
| ```gs_shaft_d(type)``` | Shaft diameter |
|
|
| ```gs_shaft_flat(type)``` | Shaft width across the flats |
|
|
| ```gs_shaft_length(type)``` | Shaft length |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```geared_stepper(type)``` | Draw the specified geared stepper |
|
|
| ```geared_stepper_screw_positions(type)``` | Place children at the screw positions |
|
|
|
|
![geared_steppers](tests/png/geared_steppers.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```geared_stepper(28BYJ_48)``` | Geared stepper - 28BYJ-48 5V |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Green_terminals"></a>
|
|
## Green_terminals
|
|
Parametric green terminal blocks
|
|
|
|
|
|
[vitamins/green_terminals.scad](vitamins/green_terminals.scad) Object definitions.
|
|
|
|
[vitamins/green_terminal.scad](vitamins/green_terminal.scad) Implementation.
|
|
|
|
[tests/green_terminals.scad](tests/green_terminals.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```gt_back_depth(type)``` | Back ledge depth |
|
|
| ```gt_back_height(type)``` | Height at the back |
|
|
| ```gt_box_h(type)``` | Height of the cable entry box |
|
|
| ```gt_box_setback(type)``` | How far the contact box is set back from the front |
|
|
| ```gt_box_w(type)``` | Width inside the cable entry box |
|
|
| ```gt_depth(type)``` | Total front to back depth |
|
|
| ```gt_front_depth(type)``` | Front ledge depth |
|
|
| ```gt_front_height(type)``` | Height at the front |
|
|
| ```gt_front_t(type)``` | Thickness of frame around the front aperture |
|
|
| ```gt_height(type)``` | Height of the flat top |
|
|
| ```gt_pitch(type)``` | Pitch between terminals |
|
|
| ```gt_screw_r(type)``` | Screw head radius |
|
|
| ```gt_top(type)``` | Depth at the top |
|
|
| ```gt_tube_h(type)``` | Height of optional tubes around the screws |
|
|
| ```gt_y_offset(type)``` | Offset of the pins from centre of the depth |
|
|
| ```gt_y_offset2(type)``` | Offset of the pins from the screws |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```green_terminal(type, ways, skip = [], colour = "lime")``` | Draw green terminal blocks, skip can be used to remove pins. |
|
|
|
|
![green_terminals](tests/png/green_terminals.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```green_terminal(gt_6p35, 2)``` | Terminal block 2 way 0.25" |
|
|
| 1 | ```green_terminal(gt_5p08, 3)``` | Terminal block 3 way 0.2" |
|
|
| 1 | ```green_terminal(gt_3p5, 4)``` | Terminal block 4 way 3.5mm |
|
|
| 1 | ```green_terminal(gt_2p54, 5)``` | Terminal block 5 way 0.1" |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Hot_ends"></a>
|
|
## Hot_ends
|
|
Hot end models. The E3D models were originally contributed to Mendel90 by Philippe LUC @philfifi
|
|
|
|
Needs updating as mostly obsolete versions.
|
|
|
|
|
|
[vitamins/hot_ends.scad](vitamins/hot_ends.scad) Object definitions.
|
|
|
|
[vitamins/hot_end.scad](vitamins/hot_end.scad) Implementation.
|
|
|
|
[tests/hot_ends.scad](tests/hot_ends.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```hot_end_duct_height_fan(type)``` | Duct height at fan end |
|
|
| ```hot_end_duct_height_nozzle(type)``` | Duct height at nozzle end |
|
|
| ```hot_end_duct_offset(type)``` | Offset of circular duct centre from the nozzle |
|
|
| ```hot_end_duct_radius(type)``` | Require radius to clear the heater block |
|
|
| ```hot_end_groove(type)``` | Groove length |
|
|
| ```hot_end_groove_dia(type)``` | Groove internal diameter |
|
|
| ```hot_end_inset(type)``` | The length that goes into the mounting |
|
|
| ```hot_end_insulator_colour(type)``` | Colour of the insulator |
|
|
| ```hot_end_insulator_diameter(type)``` | Outside diameter |
|
|
| ```hot_end_insulator_length(type)``` | Length of the insulator |
|
|
| ```hot_end_part(type)``` | Description |
|
|
| ```hot_end_style(type)``` | Basic type, jhead or e3d |
|
|
| ```hot_end_total_length(type)``` | Length from nozzle tip to the top |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```hot_end_length(type)``` | The amount the hot end extends below its mounting |
|
|
| ```hot_end_need_cooling(type)``` | Has own fan so don't need cooling hole in the duct |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```hot_end(type, filament, naked = false, resistor_wire_rotate = [0,0,0], bowden = false)``` | Draw specified hot end |
|
|
|
|
![hot_ends](tests/png/hot_ends.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 2 | ```tubing(HSHRNK16)``` | Heatshrink sleeving ID 1.6mm x 15mm |
|
|
| 4 | ```tubing(HSHRNK64, 60)``` | Heatshrink sleeving ID 6.4mm x 60mm |
|
|
| 1 | ```e3d_hot_end(E3Dv5, 3)``` | Hot end E3D V5 direct 3mm |
|
|
| 1 | ```e3d_hot_end(E3Dv6, 3)``` | Hot end E3D V6 direct 3mm |
|
|
| 1 | ```e3d_hot_end(E3D_clone, 3)``` | Hot end E3D clone aliexpress 3mm |
|
|
| 1 | ```jhead_hot_end(JHeadMk5, 3)``` | Hot end JHead MK5 3mm |
|
|
| 2 | ```tubing(PTFE07, 62)``` | PTFE sleeving OD 1.2mm ID 0.71mm x 62mm |
|
|
| 2 | ```tubing(PTFE20, 45)``` | PTFE sleeving OD 2.6mm ID 2mm x 45mm |
|
|
| 1 | ```resistor(RIE1212UB5C5R6)``` | Resistor UB5C 5R6F 5R6 3W vitreous enamel |
|
|
| 1 | | Tape self amalgamating silicone 110mm x 25mm |
|
|
| 1 | ```resistor(Epcos)``` | Thermistor Epcos B57560G104F 100K 1% |
|
|
| 2 | | Wire Red PTFE 16/0.2mm strands, length 170mm |
|
|
| 4 | ```ziptie(small_ziptie, 8)``` | Ziptie 2.5mm x 100mm min length |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Hygrometer"></a>
|
|
## Hygrometer
|
|
Mini LCD Celsius Digital Thermometer Hygrometer Temperature Humidity Meter Gauge on eBay
|
|
|
|
|
|
[vitamins/hygrometer.scad](vitamins/hygrometer.scad) Implementation.
|
|
|
|
[tests/hygrometer.scad](tests/hygrometer.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```hygrometer_or()``` | The outside radius of a hygrometer |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```hygrometer()``` | Draw a hygrometer |
|
|
| ```hygrometer_hole(h = 0)``` | Drill the hole for a hygrometer |
|
|
|
|
![hygrometer](tests/png/hygrometer.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```hygrometer()``` | Mini LCD Digital Thermometer / Hygrometer |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="IECs"></a>
|
|
## IECs
|
|
IEC mains inlets and outlet.
|
|
|
|
|
|
[vitamins/iecs.scad](vitamins/iecs.scad) Object definitions.
|
|
|
|
[vitamins/iec.scad](vitamins/iec.scad) Implementation.
|
|
|
|
[tests/IECs.scad](tests/IECs.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```iec_bezel_h(type)``` | Bezel height |
|
|
| ```iec_bezel_r(type)``` | Bezel corner radius |
|
|
| ```iec_bezel_t(type)``` | Bezel thickness |
|
|
| ```iec_bezel_w(type)``` | Bezel width |
|
|
| ```iec_body_h(type)``` | Body height |
|
|
| ```iec_body_r(type)``` | Body corner radius |
|
|
| ```iec_body_w(type)``` | Body width |
|
|
| ```iec_body_w2(type)``` | Body width at the narrow part |
|
|
| ```iec_depth(type)``` | Depth of the body below the flange |
|
|
| ```iec_flange_h(type)``` | Flange height |
|
|
| ```iec_flange_r(type)``` | Flange corner radius |
|
|
| ```iec_flange_t(type)``` | Flange thickness |
|
|
| ```iec_flange_w(type)``` | Flange width not including the lugs |
|
|
| ```iec_male(type)``` | True for an outlet |
|
|
| ```iec_part(type)``` | Description |
|
|
| ```iec_pitch(type)``` | Screw hole pitch |
|
|
| ```iec_screw(type)``` | Screw type |
|
|
| ```iec_spades(type)``` | Spade type |
|
|
| ```iec_width(type)``` | Widest part including the lugs |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```iec_insert_screw_length()``` | Screw length used for inserts |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```iec(type)``` | Draw specified IEC connector |
|
|
| ```iec_assembly(type, thickness)``` | Assembly with fasteners given panel thickness |
|
|
| ```iec_holes(type, h = 100, poly = false, horizontal = false, insert = false)``` | Drill the required panel holes |
|
|
| ```iec_inserts(type)``` | Place the inserts |
|
|
| ```iec_screw_positions(type)``` | Position children at the screw holes |
|
|
|
|
![iecs](tests/png/iecs.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```iec(IEC_fused_inlet)``` | IEC fused inlet JR-101-1F |
|
|
| 1 | ```iec(IEC_fused_inlet2)``` | IEC fused inlet old |
|
|
| 1 | ```iec(IEC_inlet)``` | IEC inlet |
|
|
| 1 | ```iec(IEC_inlet_atx)``` | IEC inlet for ATX |
|
|
| 1 | ```iec(IEC_outlet)``` | IEC outlet RS 811-7193 |
|
|
| 1 | ```iec(IEC_switched_fused_inlet)``` | IEC320 C14 switched fused inlet module |
|
|
| 12 | ```nut(M3_nut, nyloc = true)``` | Nut M3 x 2.4mm nyloc |
|
|
| 4 | ```screw(M3_cs_cap_screw, 10)``` | Screw M3 cs cap x 10mm |
|
|
| 8 | ```screw(M3_cs_cap_screw, 12)``` | Screw M3 cs cap x 12mm |
|
|
| 12 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Inserts"></a>
|
|
## Inserts
|
|
Heatfit threaded inserts. Can be pushed into thermoplastics using a soldering iron with a conical bit set to 200°C.
|
|
|
|
|
|
[vitamins/inserts.scad](vitamins/inserts.scad) Object definitions.
|
|
|
|
[vitamins/insert.scad](vitamins/insert.scad) Implementation.
|
|
|
|
[tests/inserts.scad](tests/inserts.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```insert_barrel_d(type)``` | Diameter of the main barrel |
|
|
| ```insert_hole_radius(type)``` | Radius of the required hole in the plastic |
|
|
| ```insert_length(type)``` | Length |
|
|
| ```insert_outer_d(type)``` | Outer diameter at the top |
|
|
| ```insert_ring1_h(type)``` | Height of the top and middle rings |
|
|
| ```insert_ring2_d(type)``` | Diameter of the middle ring |
|
|
| ```insert_ring3_d(type)``` | Diameter of the bottom ring |
|
|
| ```insert_screw_diameter(type)``` | Screw size |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```insert_boss_radius(type, wall)``` | Compute the outer radius of an insert boss |
|
|
| ```insert_nose_length(type, d)``` | The length before the second ring. |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```insert(type)``` | Draw specified insert |
|
|
| ```insert_boss(type, z, wall = 2 * extrusion_width)``` | Make a boss to take an insert |
|
|
| ```insert_hole(type, counterbore = 0, horizontal = false)``` | Make a hole to take an insert, ```counterbore``` is the extra length for the screw |
|
|
| ```insert_lug(insert, wall, counter_bore = 0, extension = 0, corner_r = 0, flying = true)``` | Make a flying insert lug, see [ssr_shroud](#Ssr_shroud) |
|
|
|
|
![inserts](tests/png/inserts.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```insert(F1BM2)``` | Heatfit insert M2 |
|
|
| 1 | ```insert(F1BM2p5)``` | Heatfit insert M2.5 |
|
|
| 1 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
|
| 1 | ```insert(F1BM4)``` | Heatfit insert M4 |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Jack"></a>
|
|
## Jack
|
|
4mm jack sockets and binding posts. Each has a colour for the BOM entry and an optional alternative colour for display.
|
|
E.g. a "brown" socket for mains live needs to be displayed as "sienna" to look realistic.
|
|
|
|
|
|
[vitamins/jack.scad](vitamins/jack.scad) Implementation.
|
|
|
|
[tests/jack.scad](tests/jack.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```jack_4mm_hole_radius()``` | Panel hole radius for 4mm jack |
|
|
| ```jack_4mm_shielded_hole_radius()``` | Panel hole radius for 4mm shielded jack |
|
|
| ```post_4mm_diameter()``` | Outer diameter of 4mm binding post |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```jack_4mm(colour, thickness, display_colour = false)``` | Draw a 4mm jack socket with nut positioned for specified panel thickness |
|
|
| ```jack_4mm_shielded(colour, thickness, display_colour = false)``` | Draw a 4mm shielded jack |
|
|
| ```post_4mm(colour, thickness, display_colour = false)``` | Draw a 4mm binding post |
|
|
| ```post_4mm_hole(h = 100, poly = false)``` | Drill hole for 4mm binding post |
|
|
|
|
![jack](tests/png/jack.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```post_4mm("red", 3)``` | 4mm jack binding post red |
|
|
| 1 | ```jack_4mm("blue", 3, "royalblue")``` | 4mm jack socket blue |
|
|
| 1 | ```jack_4mm_shielded("brown", 3, "sienna")``` | 4mm shielded jack socket brown |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="KP_pillow_blocks"></a>
|
|
## KP_pillow_blocks
|
|
KP pillow block bearings
|
|
|
|
|
|
[vitamins/kp_pillow_blocks.scad](vitamins/kp_pillow_blocks.scad) Object definitions.
|
|
|
|
[vitamins/kp_pillow_block.scad](vitamins/kp_pillow_block.scad) Implementation.
|
|
|
|
[tests/KP_pillow_blocks.scad](tests/KP_pillow_blocks.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```kp_base_height(type)``` | Height of base containing the bolts |
|
|
| ```kp_diameter(type)``` | Rod hole diameter |
|
|
| ```kp_hole_offset(type)``` | Rod hole offset |
|
|
| ```kp_screw_separation(type)``` | Separation of bolts in the base |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```kp_size(type)``` | Size of bracket |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```kp_pillow_block(type)``` | Draw the KP pillow block |
|
|
| ```kp_pillow_block_assembly(type, part_thickness = 2, screw_type = M5_cap_screw, nut_type = undef)``` | Assembly with fasteners in place |
|
|
| ```kp_pillow_block_hole_positions(type)``` | Place children at hole positions |
|
|
|
|
![kp_pillow_blocks](tests/png/kp_pillow_blocks.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```kp_pillow_block(KP000)``` | KP000 pillow block |
|
|
| 1 | ```kp_pillow_block(KP001)``` | KP001 pillow block |
|
|
| 1 | ```kp_pillow_block(KP08_15)``` | KP08_15 pillow block |
|
|
| 1 | ```kp_pillow_block(KP08_18)``` | KP08_18 pillow block |
|
|
| 2 | ```sliding_t_nut(M4_hammer_nut)``` | Nut M4 hammer |
|
|
| 2 | ```sliding_t_nut(M4_sliding_t_nut)``` | Nut M4 sliding T |
|
|
| 2 | ```sliding_t_nut(M5_sliding_t_nut)``` | Nut M5 sliding T |
|
|
| 2 | ```nut(M5_nut, nyloc = undef)``` | Nut M5 x 4mm |
|
|
| 4 | ```screw(M4_cap_screw, 10)``` | Screw M4 cap x 10mm |
|
|
| 4 | ```screw(M5_cap_screw, 12)``` | Screw M5 cap x 12mm |
|
|
| 4 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
| 6 | ```washer(M5_washer)``` | Washer M5 x 10mm x 1mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="LDRs"></a>
|
|
## LDRs
|
|
Light dependent resistors.
|
|
|
|
Larger ones seem to have both a higher dark resistance and a lower bright light resistance.
|
|
|
|
|
|
[vitamins/ldrs.scad](vitamins/ldrs.scad) Object definitions.
|
|
|
|
[vitamins/ldr.scad](vitamins/ldr.scad) Implementation.
|
|
|
|
[tests/LDRs.scad](tests/LDRs.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```ldr_active(type)``` | The active width |
|
|
| ```ldr_description(type)``` | Description |
|
|
| ```ldr_diameter(type)``` | The diameter of the round bit |
|
|
| ```ldr_lead_d(type)``` | The lead diameter |
|
|
| ```ldr_pitch(type)``` | Pitch between the leads |
|
|
| ```ldr_thickness(type)``` | Thickness |
|
|
| ```ldr_width(type)``` | Across the flats |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```LDR(type, lead_length = 3)``` | Draw an LDR, can specify the lead length |
|
|
|
|
![ldrs](tests/png/ldrs.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```ldr(large_ldr)``` | Light dependent resistor - large |
|
|
| 1 | ```ldr(small_ldr)``` | Light dependent resistor - small |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Leadnuts"></a>
|
|
## Leadnuts
|
|
Nuts for leadscrews.
|
|
|
|
|
|
[vitamins/leadnuts.scad](vitamins/leadnuts.scad) Object definitions.
|
|
|
|
[vitamins/leadnut.scad](vitamins/leadnut.scad) Implementation.
|
|
|
|
[tests/leadnuts.scad](tests/leadnuts.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```leadnut_bore(type)``` | Thread size |
|
|
| ```leadnut_flange_dia(type)``` | Flange diameter |
|
|
| ```leadnut_flange_offset(type)``` | Offset of the flange from the top |
|
|
| ```leadnut_flange_t(type)``` | Flange thickness |
|
|
| ```leadnut_height(type)``` | Total height |
|
|
| ```leadnut_hole_dia(type)``` | The diameter of the screw holes |
|
|
| ```leadnut_hole_pitch(type)``` | The radia pitch of the screw holes |
|
|
| ```leadnut_holes(type)``` | The number of screw holes |
|
|
| ```leadnut_lead(type)``` | Screw lead |
|
|
| ```leadnut_od(type)``` | Outer diameter of the shank |
|
|
| ```leadnut_pitch(type)``` | Screw pitch |
|
|
| ```leadnut_screw(type)``` | The type of the fixing screws |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```leadnut_shank(type)``` | The length of the shank below the flange |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```leadnut(type)``` | Draw specified leadnut |
|
|
| ```leadnut_screw_positions(type)``` | Position children at the screw holes |
|
|
|
|
![leadnuts](tests/png/leadnuts.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```leadnut(LSN8x2)``` | Leadscrew nut 8 x 2 |
|
|
| 1 | ```leadnut(LSN8x8)``` | Leadscrew nut 8 x 8 RobotDigg |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="LED_meters"></a>
|
|
## LED_meters
|
|
LED voltmeter and ammeter modules available from China and a printed bezel that allows the voltmeter to be mounted into a
|
|
CNC cut panel. The meter is held in the bezel by melting the stakes with a soldering iron set to 200°C. The
|
|
bezel is fixed in the panel with hot glue.
|
|
|
|
The 7 SEGMENT.TTF font from the [docs](docs) directory needs to be installed to get realistic digits.
|
|
|
|
|
|
[vitamins/led_meters.scad](vitamins/led_meters.scad) Object definitions.
|
|
|
|
[vitamins/led_meter.scad](vitamins/led_meter.scad) Implementation.
|
|
|
|
[tests/LED_meters.scad](tests/LED_meters.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```meter_hole_pitch(type)``` | Lug hole pitch |
|
|
| ```meter_hole_radius(type)``` | Lug hole radius |
|
|
| ```meter_lug_offset(type)``` | Lug position, 0 = center, +1 = top |
|
|
| ```meter_lug_size(type)``` | Lug length and width |
|
|
| ```meter_offset(type)``` | Display position, 0 = center, +1 = top |
|
|
| ```meter_pcb_size(type)``` | PCB size excluding lugs |
|
|
| ```meter_shunt(type)``` | Ammeter shunt wire |
|
|
| ```meter_size(type)``` | Size of display |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```meter_bezel_length(type)``` | Printed bezel length |
|
|
| ```meter_bezel_rad(type)``` | Printed bezel corner radius |
|
|
| ```meter_bezel_wall(type)``` | Printed bezel wall thickness |
|
|
| ```meter_bezel_width(type)``` | Printed bezel width |
|
|
| ```meter_shunt_y(type)``` | Shunt y coordinate |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```meter(type, colour = "red", value = "888", display_colour = false)``` | Draw a meter with optional colour and display value |
|
|
| ```meter_assembly(type, colour = "red", value = "888", display_colour = false)``` | Meter assembled into the bezel |
|
|
| ```meter_bezel(type)``` | Generate the STL for the meter bezel |
|
|
| ```meter_bezel_hole(type, h = 100)``` | Make a hole to fit the meter Bezel |
|
|
| ```meter_hole_positions(type)``` | Position children over the holes |
|
|
|
|
![led_meters](tests/png/led_meters.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```meter(led_ameter, colour = "blue")``` | LED ammeter blue |
|
|
| 1 | ```meter(led_meter, colour = "blue")``` | LED voltmeter blue |
|
|
| 1 | ```meter(led_meter)``` | LED voltmeter red |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | meter_bezel.stl |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="LEDs"></a>
|
|
## LEDs
|
|
Standard domed through hole LEDs. Can specify colour and lead length.
|
|
|
|
|
|
[vitamins/leds.scad](vitamins/leds.scad) Object definitions.
|
|
|
|
[vitamins/led.scad](vitamins/led.scad) Implementation.
|
|
|
|
[tests/LEDs.scad](tests/LEDs.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```led_diameter(type)``` | Body diameter |
|
|
| ```led_height(type)``` | Body height |
|
|
| ```led_lead_t(type)``` | Lead thickness |
|
|
| ```led_pitch(type)``` | Lead pitch |
|
|
| ```led_rim_dia(type)``` | Rim diameter |
|
|
| ```led_rim_t(type)``` | Rim height |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```led_hole_radius(type)``` | Radius of panel hole to accept LED |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```led(type, colour = "red", lead = 5)``` | Draw specified LED with desired colour and led length |
|
|
|
|
![leds](tests/png/leds.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```led(LED10mm)``` | LED 10 mm red |
|
|
| 1 | ```led(LED3mm, "green")``` | LED 3 mm green |
|
|
| 1 | ```led(LED5mm, "blue")``` | LED 5 mm blue |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Light_strips"></a>
|
|
## Light_strips
|
|
LED strip lights that can be cut to size.
|
|
|
|
The definitions are for the full length but they can be cut to size by specifying how many segments,
|
|
which can by calcuated using ```light_strip_segments(type, max_length)```.
|
|
|
|
The `light_strip_clip()` module makes a clip to go around the light that can be incorporated into a printed bracket to hold it.
|
|
|
|
|
|
[vitamins/light_strips.scad](vitamins/light_strips.scad) Object definitions.
|
|
|
|
[vitamins/light_strip.scad](vitamins/light_strip.scad) Implementation.
|
|
|
|
[tests/light_strips.scad](tests/light_strips.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```light_strip_aperture(type)``` | Inside width |
|
|
| ```light_strip_depth(type)``` | Outside depth |
|
|
| ```light_strip_grouped(type)``` | Number of LEDs in each group |
|
|
| ```light_strip_leds(type)``` | Total number of LEDs |
|
|
| ```light_strip_length(type)``` | Un-cut length |
|
|
| ```light_strip_pcb_thickness(type)``` | PCB thickness |
|
|
| ```light_strip_thickness(type)``` | Metal thickness |
|
|
| ```light_strip_width(type)``` | Outside width |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```light_strip_clip_depth(light)``` | Depth of the clip |
|
|
| ```light_strip_clip_length(light)``` | Outside length of clip |
|
|
| ```light_strip_clip_slot(light)``` | Clip slot size |
|
|
| ```light_strip_clip_wall()``` | Clip wall thickness |
|
|
| ```light_strip_clip_width(light)``` | Outside width of clip |
|
|
| ```light_strip_cut_length(type, segs)``` | Calculate cut length given segments |
|
|
| ```light_strip_segments(type, max_length)``` | Calculate the maximum number of segments that fit in max_length |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```light_strip(type, segs = undef)``` | Draw specified light strip, segs can be used to limit the length |
|
|
| ```light_strip_clip(light)``` | Make a clip to go over the strip to be incorporated into a bracket |
|
|
|
|
![light_strips](tests/png/light_strips.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```light_strip(Rigid5050, 6)``` | Light strip rigid SMD5050 low profile x 250mm (6 segments) |
|
|
| 1 | ```light_strip(RIGID5050, 6)``` | Light strip rigid SMD5050 x 250mm (6 segments) |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Linear_bearings"></a>
|
|
## Linear_bearings
|
|
LMnUU linear bearings.
|
|
|
|
|
|
[vitamins/linear_bearings.scad](vitamins/linear_bearings.scad) Object definitions.
|
|
|
|
[vitamins/linear_bearing.scad](vitamins/linear_bearing.scad) Implementation.
|
|
|
|
[tests/linear_bearings.scad](tests/linear_bearings.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```bearing_dia(type)``` | Outside diameter |
|
|
| ```bearing_groove_dia(type)``` | Groove diameter |
|
|
| ```bearing_groove_length(type)``` | Groove length |
|
|
| ```bearing_groove_spacing(type)``` | Spacing between grooves, outer to outer, ie includes the grooves themselves |
|
|
| ```bearing_length(type)``` | Total length |
|
|
| ```bearing_rod_dia(type)``` | Internal diameter |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```bearing_radius(type)``` | Outside radius |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```linear_bearing(type)``` | Draw specified linear bearing |
|
|
|
|
![linear_bearings](tests/png/linear_bearings.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```linear_bearing(LM10LUU)``` | Linear bearing LM10LUU |
|
|
| 1 | ```linear_bearing(LM10UU)``` | Linear bearing LM10UU |
|
|
| 1 | ```linear_bearing(LM12LUU)``` | Linear bearing LM12LUU |
|
|
| 1 | ```linear_bearing(LM12UU)``` | Linear bearing LM12UU |
|
|
| 1 | ```linear_bearing(LM16LUU)``` | Linear bearing LM16LUU |
|
|
| 1 | ```linear_bearing(LM16UU)``` | Linear bearing LM16UU |
|
|
| 1 | ```linear_bearing(LM3LUU)``` | Linear bearing LM3LUU |
|
|
| 1 | ```linear_bearing(LM3UU)``` | Linear bearing LM3UU |
|
|
| 1 | ```linear_bearing(LM4LUU)``` | Linear bearing LM4LUU |
|
|
| 1 | ```linear_bearing(LM4UU)``` | Linear bearing LM4UU |
|
|
| 1 | ```linear_bearing(LM5LUU)``` | Linear bearing LM5LUU |
|
|
| 1 | ```linear_bearing(LM5UU)``` | Linear bearing LM5UU |
|
|
| 1 | ```linear_bearing(LM6LUU)``` | Linear bearing LM6LUU |
|
|
| 1 | ```linear_bearing(LM6UU)``` | Linear bearing LM6UU |
|
|
| 1 | ```linear_bearing(LM8LUU)``` | Linear bearing LM8LUU |
|
|
| 1 | ```linear_bearing(LM8UU)``` | Linear bearing LM8UU |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Magnets"></a>
|
|
## Magnets
|
|
Cylindrical and ring magnets.
|
|
|
|
|
|
[vitamins/magnets.scad](vitamins/magnets.scad) Object definitions.
|
|
|
|
[vitamins/magnet.scad](vitamins/magnet.scad) Implementation.
|
|
|
|
[tests/magnets.scad](tests/magnets.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```magnet_h(type)``` | Height |
|
|
| ```magnet_id(type)``` | Inside diameter if a ring |
|
|
| ```magnet_od(type)``` | Outer diameter |
|
|
| ```magnet_r(type)``` | Corner radius |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```magnet(type)``` | Draw specified magnet |
|
|
|
|
![magnets](tests/png/magnets.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Mains_sockets"></a>
|
|
## Mains_sockets
|
|
UK 13A sockets at the moment.
|
|
|
|
|
|
[vitamins/mains_sockets.scad](vitamins/mains_sockets.scad) Object definitions.
|
|
|
|
[vitamins/mains_socket.scad](vitamins/mains_socket.scad) Implementation.
|
|
|
|
[tests/mains_sockets.scad](tests/mains_sockets.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```mains_socket_corner(type)``` | Corner radius |
|
|
| ```mains_socket_depth(type)``` | Depth at the base |
|
|
| ```mains_socket_height(type)``` | Height |
|
|
| ```mains_socket_offset(type)``` | Offset of the socket from the centre |
|
|
| ```mains_socket_pitch(type)``` | Screw hole pitch |
|
|
| ```mains_socket_t(type)``` | Plastic thickness |
|
|
| ```mains_socket_top_d(type)``` | Depth at the top, might be tapered |
|
|
| ```mains_socket_top_w(type)``` | Width at the top, might be tapered |
|
|
| ```mains_socket_width(type)``` | Width at the base |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```mains_socket_screw(type)``` | Screw type |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```mains_socket(type)``` | Draw specified 13A socket |
|
|
| ```mains_socket_earth_position(type)``` | Position of earth terminal for DiBond panel |
|
|
| ```mains_socket_hole_positions(type)``` | Position children at the screw holes |
|
|
| ```mains_socket_holes(type, h = 0)``` | Panel cutout |
|
|
|
|
![mains_sockets](tests/png/mains_sockets.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```mains_socket(Contactum)``` | Mains socket 13A |
|
|
| 1 | ```mains_socket(MKLOGIC)``` | Mains socket 13A, switched |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Microswitches"></a>
|
|
## Microswitches
|
|
Used for limit switches.
|
|
|
|
|
|
[vitamins/microswitches.scad](vitamins/microswitches.scad) Object definitions.
|
|
|
|
[vitamins/microswitch.scad](vitamins/microswitch.scad) Implementation.
|
|
|
|
[tests/microswitches.scad](tests/microswitches.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```microswitch_body_clr(type)``` | Body colour |
|
|
| ```microswitch_button_clr(type)``` | Button colour |
|
|
| ```microswitch_button_pos(type)``` | Button position |
|
|
| ```microswitch_button_t(type)``` | Button thickness |
|
|
| ```microswitch_button_w(type)``` | Button width |
|
|
| ```microswitch_hole_d(type)``` | Screw hole diameter |
|
|
| ```microswitch_holes(type)``` | Hole positions |
|
|
| ```microswitch_leg(type)``` | Leg types |
|
|
| ```microswitch_legs(type)``` | Leg positions |
|
|
| ```microswitch_length(type)``` | Body length |
|
|
| ```microswitch_radius(type)``` | Body corner radius |
|
|
| ```microswitch_thickness(type)``` | Body thickness |
|
|
| ```microswitch_width(type)``` | Body width |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```microswitch_lower_extent(type)``` | How far legs extend downwards |
|
|
| ```microswitch_right_extent(type)``` | How far legs extend right |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```microswitch(type)``` | Draw specified microswitch |
|
|
| ```microswitch_hole_positions(type)``` | Place children at the hole positions |
|
|
| ```microswitch_wire_positions(type, skip = undef)``` | Place children at the leg hole positions |
|
|
|
|
![microswitches](tests/png/microswitches.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```microswitch(small_microswitch)``` | Microswitch DM1-00P-110-3 |
|
|
| 1 | ```microswitch(medium_microswitch)``` | Microswitch SS-01 or SS-5GL |
|
|
| 1 | ```microswitch(large_microswitch)``` | Microswitch Saia G3 low force |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Microview"></a>
|
|
## Microview
|
|
Microview OLED display with on board AVR by geekammo / Sparkfun.
|
|
|
|
```microview()``` generates the model. ```microview(true)``` makes an object to cut out a panel aperture for it.
|
|
|
|
Uses STL files copyright geekammo and licenced with MIT license, see [microview/LICENSE.txt](vitamins/microview/LICENSE.txt).
|
|
|
|
|
|
[vitamins/microview.scad](vitamins/microview.scad) Implementation.
|
|
|
|
[tests/microview.scad](tests/microview.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```microview(cutout = false)``` | Draw microview or generate a panel cutout for it |
|
|
|
|
![microview](tests/png/microview.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```microview()``` | Microview OLED display |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Modules"></a>
|
|
## Modules
|
|
Random screw down modules. Currently just DROK buck converters.
|
|
|
|
|
|
[vitamins/modules.scad](vitamins/modules.scad) Object definitions.
|
|
|
|
[vitamins/module.scad](vitamins/module.scad) Implementation.
|
|
|
|
[tests/modules.scad](tests/modules.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```mod_height(type)``` | Body height |
|
|
| ```mod_hole_r(type)``` | Screw hole radius |
|
|
| ```mod_holes(type)``` | Screw hole positions |
|
|
| ```mod_length(type)``` | Body length |
|
|
| ```mod_part(type)``` | Description |
|
|
| ```mod_screw(type)``` | Screw type |
|
|
| ```mod_screw_z(type)``` | Thickness of screw lug |
|
|
| ```mod_width(type)``` | Body width |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```mod(type)``` | Draw specified module |
|
|
| ```mod_screw_positions(type)``` | Position children at the screw positions |
|
|
| ```module_assembly(type, thickness)``` | Module with its fasteners in place |
|
|
|
|
![modules](tests/png/modules.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```mod(drok_buck)``` | Drok buck converter |
|
|
| 2 | ```nut(M4_nut, nyloc = true)``` | Nut M4 x 3.2mm nyloc |
|
|
| 2 | ```screw(M4_dome_screw, 12)``` | Screw M4 dome x 12mm |
|
|
| 4 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Nuts"></a>
|
|
## Nuts
|
|
Default is steel but can be drawn as brass or nylon. A utility for making nut traps included.
|
|
|
|
If a nut is given a child then it gets placed on its top surface.
|
|
|
|
|
|
[vitamins/nuts.scad](vitamins/nuts.scad) Object definitions.
|
|
|
|
[vitamins/nut.scad](vitamins/nut.scad) Implementation.
|
|
|
|
[tests/nuts.scad](tests/nuts.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```nut_pitch(type)``` | Pitch if not standard metric course thread |
|
|
| ```nut_radius(type)``` | Radius across the corners |
|
|
| ```nut_size(type)``` | Diameter of the corresponding screw |
|
|
| ```nut_square_size(type)``` | Diameter of the corresponding screw |
|
|
| ```nut_square_thickness(type)``` | Thickness of the square nut |
|
|
| ```nut_square_width(type)``` | Width of the square nut |
|
|
| ```nut_trap_depth(type)``` | Depth of nut trap |
|
|
| ```nut_washer(type)``` | Corresponding washer |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```nut_flat_radius(type)``` | Radius across the flats |
|
|
| ```nut_thickness(type, nyloc = false)``` | Thickness of plain or nyloc version |
|
|
| ```nut_trap_flat_radius(nut, horizontal = false)``` | Radius across the flats of a nut trap |
|
|
| ```nut_trap_radius(nut, horizontal = false)``` | Radius across the corners of a nut trap |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```nut(type, nyloc = false, brass = false, nylon = false)``` | Draw specified nut |
|
|
| ```nut_and_washer(type, nyloc)``` | Draw nut with corresponding washer |
|
|
| ```nut_square(type, brass = false, nylon = false)``` | Draw specified square nut |
|
|
| ```nut_trap(screw, nut, depth = 0, horizontal = false, supported = false, h = 200)``` | Make a nut trap |
|
|
| ```wingnut(type)``` | Draw a wingnut |
|
|
|
|
![nuts](tests/png/nuts.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```nut(M2_nut)``` | Nut M2 x 1.6mm |
|
|
| 1 | ```nut(M2_nut, nyloc = true)``` | Nut M2 x 1.6mm nyloc |
|
|
| 1 | ```nut(M2p5_nut)``` | Nut M2.5 x 2.2mm |
|
|
| 1 | ```nut(M2p5_nut, nyloc = true)``` | Nut M2.5 x 2.2mm nyloc |
|
|
| 1 | ```nut(M2p5_nut, nylon = true)``` | Nut M2.5 x 2.2mm nylon |
|
|
| 1 | ```sliding_t_nut(M3_hammer_nut)``` | Nut M3 hammer |
|
|
| 1 | ```sliding_t_nut(M3_sliding_t_nut)``` | Nut M3 sliding T |
|
|
| 1 | ```nut(M3_nut)``` | Nut M3 x 2.4mm |
|
|
| 1 | ```nut(M3_nut, brass = true)``` | Nut M3 x 2.4mm brass |
|
|
| 1 | ```nut(M3_nut, nyloc = true)``` | Nut M3 x 2.4mm nyloc |
|
|
| 1 | ```nut(M3nS_thin_nut)``` | Nut M3nS 5.5 x 1.8mm |
|
|
| 1 | ```sliding_t_nut(M4_hammer_nut)``` | Nut M4 hammer |
|
|
| 1 | ```sliding_t_nut(M4_sliding_t_nut)``` | Nut M4 sliding T |
|
|
| 1 | ```nut(M4_nut)``` | Nut M4 x 3.2mm |
|
|
| 1 | ```nut(M4_nut, nyloc = true)``` | Nut M4 x 3.2mm nyloc |
|
|
| 1 | ```nut(M4nS_thin_nut)``` | Nut M4nS 7 x 2.2mm |
|
|
| 1 | ```sliding_t_nut(M5_sliding_t_nut)``` | Nut M5 sliding T |
|
|
| 1 | ```nut(M5_nut)``` | Nut M5 x 4mm |
|
|
| 1 | ```nut(M5_nut, nyloc = true)``` | Nut M5 x 4mm nyloc |
|
|
| 1 | ```nut(M5nS_thin_nut)``` | Nut M5nS 8 x 2.7mm |
|
|
| 1 | ```nut(M6_half_nut)``` | Nut M6 x 3mm |
|
|
| 1 | ```nut(M6_nut)``` | Nut M6 x 5mm |
|
|
| 1 | ```nut(M6_nut, nyloc = true)``` | Nut M6 x 5mm nyloc |
|
|
| 1 | ```nut(M6nS_thin_nut)``` | Nut M6nS 10 x 3.2mm |
|
|
| 1 | ```nut(M8_nut)``` | Nut M8 x 6.5mm |
|
|
| 1 | ```nut(M8_nut, nyloc = true)``` | Nut M8 x 6.5mm nyloc |
|
|
| 1 | ```nut(M8nS_thin_nut)``` | Nut M8nS 13 x 4mm |
|
|
| 1 | ```washer(M6_washer)``` | Washer M6 x 12.5mm x 1.5mm |
|
|
| 1 | ```wingnut(M4_wingnut)``` | Wingnut M4 |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="O_ring"></a>
|
|
## O_ring
|
|
Nitrile rubber O-rings.
|
|
|
|
Just a black torus specified by internal diameter, ```id``` and ```minor_d``` plus a BOM entry.
|
|
Can be shown stretched by specifying the ```actual_id```.
|
|
|
|
|
|
[vitamins/o_ring.scad](vitamins/o_ring.scad) Implementation.
|
|
|
|
[tests/o_ring.scad](tests/o_ring.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```O_ring(id, minor_d, actual_id = 0)``` | Draw O-ring with specified internal diameter and minor diameter. ```actual_id``` can be used to stretch it around something. |
|
|
|
|
![o_ring](tests/png/o_ring.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```O_ring(2.5, 1.6)``` | O-ring nitrile 2.5mm x 1.6mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Opengrab"></a>
|
|
## Opengrab
|
|
Nicodrone OpenGrab V3 electro-permananet magnet, see <https://nicadrone.com/products/epm-v3>.
|
|
|
|
A permanent magnet that can be magnatized and de-magnatized electronically.
|
|
|
|
|
|
[vitamins/opengrab.scad](vitamins/opengrab.scad) Implementation.
|
|
|
|
[tests/opengrab.scad](tests/opengrab.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```opengrab_depth()``` | Module height |
|
|
| ```opengrab_pcb()``` | The PCB |
|
|
| ```opengrab_pcb_z()``` | PCB offset from the front |
|
|
| ```opengrab_target_thickness()``` | Target sheet thickness |
|
|
| ```opengrab_width()``` | Module width |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```opengrab()``` | Draw OpenGrab module |
|
|
| ```opengrab_hole_positions()``` | Position children at the screw positions |
|
|
| ```opengrab_side_hole_positions()``` | Position children at the two 4mm hole |
|
|
| ```opengrab_target()``` | Draw OpenGrab target |
|
|
|
|
![opengrab](tests/png/opengrab.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```opengrab()``` | OpenGrab V3 electro permanent magnet |
|
|
| 1 | ```opengrab_target()``` | OpenGrab silicon steel target plate |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Panel_meters"></a>
|
|
## Panel_meters
|
|
Panel mounted digital meter modules
|
|
|
|
Notes on the DSN_VC288:
|
|
|
|
* The tabs aren't modelled because they can be fully retracted if the PCB is removed.
|
|
* The current connector isn't moddelled as it is awkwardly tall. I remove it and solder wires instead.
|
|
|
|
|
|
[vitamins/panel_meters.scad](vitamins/panel_meters.scad) Object definitions.
|
|
|
|
[vitamins/panel_meter.scad](vitamins/panel_meter.scad) Implementation.
|
|
|
|
[tests/panel_meters.scad](tests/panel_meters.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```pmeter_aperture(type)``` | Aperture length, width and bevel |
|
|
| ```pmeter_bevel(type)``` | Bezel bevel inset and start height or a radius |
|
|
| ```pmeter_bezel(type)``` | Bezel size |
|
|
| ```pmeter_bezel_r(type)``` | Bezel radius |
|
|
| ```pmeter_button_colour(type)``` | Button colour |
|
|
| ```pmeter_button_pos(type)``` | Button position |
|
|
| ```pmeter_button_r(type)``` | Button radius |
|
|
| ```pmeter_button_size(type)``` | Button size |
|
|
| ```pmeter_buttons(type)``` | List of buttons |
|
|
| ```pmeter_inner_ap(type)``` | Inner aperture |
|
|
| ```pmeter_inner_ap_o(type)``` | Inner aperture offset |
|
|
| ```pmeter_pcb(type)``` | Optional PCB for open types |
|
|
| ```pmeter_pcb_h(type)``` | Component height from the front |
|
|
| ```pmeter_pcb_z(type)``` | Distance of PCB from the back |
|
|
| ```pmeter_size(type)``` | Body size including bezel height |
|
|
| ```pmeter_tab(type)``` | Tab size |
|
|
| ```pmeter_tab_z(type)``` | Tab vertical position |
|
|
| ```pmeter_thickness(type)``` | Wall thickness if not closed |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```pmeter_depth(type)``` | Depth below bezel |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```panel_meter(type)``` | Draw panel mounted LCD meter module |
|
|
| ```panel_meter_button(type)``` | Draw panel meter button |
|
|
| ```panel_meter_cutout(type, h = 0)``` | Make panel cutout |
|
|
|
|
![panel_meters](tests/png/panel_meters.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```panel_meter(DSN_VC288)``` | DSN-VC288 DC 100V 10A Voltmeter ammeter |
|
|
| 1 | ```panel_meter(PZEM001)``` | Peacefair PZEM-001 AC digital multi-function meter |
|
|
| 1 | ```panel_meter(PZEM021)``` | Peacefair PZEM-021 AC digital multi-function meter |
|
|
| 1 | ```panel_meter(DSP5005)``` | Ruideng DSP5005 Power supply module |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="PCB"></a>
|
|
## PCB
|
|
PCBs and perfboard with optional components. The shape can be a rectangle with optionally rounded corners or a polygon for odd shapes like Arduino.
|
|
|
|
|
|
[vitamins/pcb.scad](vitamins/pcb.scad) Implementation.
|
|
|
|
[tests/PCB.scad](tests/PCB.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```ff_back(type)``` | Flat flex back section size |
|
|
| ```ff_latch(type)``` | Flat flex latch size |
|
|
| ```ff_mid(type)``` | Flat flex middle section size |
|
|
| ```ff_slot(type)``` | Flat flex slot size |
|
|
| ```hdmi_depth(type)``` | Front to back depth |
|
|
| ```hdmi_height(type)``` | Outside height above the PCB |
|
|
| ```hdmi_height1(type)``` | Inside height at the sides |
|
|
| ```hdmi_height2(type)``` | Inside height in the middle |
|
|
| ```hdmi_thickness(type)``` | Wall thickness of the metal |
|
|
| ```hdmi_width1(type)``` | Inside width at the top |
|
|
| ```hdmi_width2(type)``` | Inside width at the bottom |
|
|
| ```pcb_accessories(type)``` | List of accessories to go on the BOM, SD cards, USB cables, etc. |
|
|
| ```pcb_colour(type)``` | Colour of the subtrate |
|
|
| ```pcb_components(type)``` | List of components |
|
|
| ```pcb_grid(type)``` | Grid if a perfboard |
|
|
| ```pcb_hole_d(type)``` | Mounting hole diameter |
|
|
| ```pcb_holes(type)``` | List of hole positions |
|
|
| ```pcb_land_d(type)``` | Pad around mounting hole |
|
|
| ```pcb_length(type)``` | Length |
|
|
| ```pcb_name(type)``` | Description |
|
|
| ```pcb_parts_on_bom(type)``` | True if the parts should be separate BOM items |
|
|
| ```pcb_polygon(type)``` | Optional outline polygon for odd shaped boards |
|
|
| ```pcb_radius(type)``` | Corner radius |
|
|
| ```pcb_thickness(type)``` | Thickness |
|
|
| ```pcb_width(type)``` | Width |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```pcb_component_position(type, name, index = 0)``` | Return x y position of specified component |
|
|
| ```pcb_coord(type, p)``` | Convert offsets from the edge to coordinates relative to the centre |
|
|
| ```pcb_grid_pos(type, x, y, z = 0)``` | Returns a pcb grid position |
|
|
| ```pcb_screw(type, cap = hs_cap)``` | Mounting screw type |
|
|
| ```pcb_size(type)``` | Length, width and thickness in a vector |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```barrel_jack(cutout = false)``` | Draw barrel power jack |
|
|
| ```block(size, colour, makes_cutout, cutouts)``` | Draw a coloured cube to represent a random PCB component |
|
|
| ```buzzer(height, diameter, colour)``` | Draw PCB buzzer with specified height, diameter and colour |
|
|
| ```chip(length, width, thickness, colour, cutout = false)``` | Draw a coloured cube to represent a chip, or other rectangular component |
|
|
| ```flat_flex(type, cutout = false)``` | Draw flat flexistrip connector as used on RPI0 |
|
|
| ```flex(cutout = false)``` | Draw flexistrip connector |
|
|
| ```hdmi(type, cutout = false)``` | Draw HDMI socket |
|
|
| ```jack(cutout = false)``` | Draw 3.5mm jack |
|
|
| ```molex_254(ways)``` | Draw molex header |
|
|
| ```molex_usb_Ax2(cutout)``` | Draw Molex USB connector suitable for perf board |
|
|
| ```pcb(type)``` | Draw specified PCB |
|
|
| ```pcb_assembly(type, height, thickness)``` | Draw PCB assembly with spaces and fasteners in place |
|
|
| ```pcb_base(type, height, thickness, wall = 2)``` | Generate STL for a base with PCB spacers |
|
|
| ```pcb_component(comp, cutouts = false, angle = undef)``` | Draw pcb component from description |
|
|
| ```pcb_component_position(type, name)``` | Position child at the specified component position |
|
|
| ```pcb_components(type, cutouts = false, angle = undef)``` | Draw list of PCB components on the PCB |
|
|
| ```pcb_cutouts(type, angle = undef)``` | Make cut outs to clear components on a PCB |
|
|
| ```pcb_grid(type, x, y, z = 0)``` | Positions children at specified grid position |
|
|
| ```pcb_screw_positions(type)``` | Positions children at the mounting hole positions |
|
|
| ```pcb_spacer(screw, height, wall = 1.8, taper = 0)``` | Generate STL for PCB spacer |
|
|
| ```rj45(cutout = false)``` | Draw RJ45 Ethernet connector |
|
|
| ```standoff(h, d, h2, d2)``` | Draw a standoff |
|
|
| ```terminal_35(ways, colour = "blue")``` | Draw 3.5mm terminal block |
|
|
| ```trimpot10(vertical, cutout = false)``` | Draw a ten turn trimpot |
|
|
| ```uSD(size, cutout = false)``` | Draw uSD socket |
|
|
| ```usb_Ax1(cutout = false)``` | Draw USB type A single socket |
|
|
| ```usb_Ax2(cutout = false)``` | Draw USB type A dual socket |
|
|
| ```usb_B(cutout = false)``` | Draw USB B connector |
|
|
| ```usb_C(cutout = false)``` | Draw USB C connector |
|
|
| ```usb_uA(cutout = false)``` | Draw USB micro A connector |
|
|
|
|
![pcb](tests/png/pcb.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```box_header(2p54header, 4, 2)``` | Box header 4 x 2 |
|
|
| 1 | ```d_plug(DCONN9, pcb = true)``` | D-type 9 way PCB mount plug |
|
|
| 1 | ```dil_socket(12, 15.24)``` | DIL socket 24 x 0.6" |
|
|
| 1 | ```hdmi(hdmi_full)``` | HDMI socket |
|
|
| 1 | ```pdip(24, 27C32, w = 15.24)``` | IC 27C32 PDIP24 |
|
|
| 1 | ```pdip(8, NE555)``` | IC NE555 PDIP8 |
|
|
| 1 | ```idc_transition(2p54header, 5)``` | IDC transition header 5 x 2 |
|
|
| 1 | ```led(LED10mm, "yellow")``` | LED 10 mm yellow |
|
|
| 1 | ```led(LED3mm)``` | LED 3 mm red |
|
|
| 1 | ```led(LED5mm, "orange")``` | LED 5 mm orange |
|
|
| 1 | ```microswitch(small_microswitch)``` | Microswitch DM1-00P-110-3 |
|
|
| 1 | ```hdmi(hdmi_mini)``` | Mini HDMI socket |
|
|
| 1 | ```molex_254(2)``` | Molex KK header 2 way |
|
|
| 1 | ```pin_header(2p54header, 4, 1)``` | Pin header 4 x 1 |
|
|
| 1 | ```pin_header(2p54header, 5, 1)``` | Pin header 5 x 1 |
|
|
| 1 | ```pin_socket(2p54header, 4, 1)``` | Pin socket 4 x 1 |
|
|
| 1 | ```pin_socket(2p54header, 6, 1)``` | Pin socket 6 x 1 |
|
|
| 2 | ```pin_socket(2p54header, 8, 1)``` | Pin socket 8 x 1 |
|
|
| 1 | ```ax_res(res1_2, 10, tol = 10)``` | Resistor 10 Ohms 10% 0.5W |
|
|
| 1 | ```ax_res(res1_4, 100, tol = 2)``` | Resistor 100 Ohms 2% 0.25W |
|
|
| 1 | ```ax_res(res1_8, 1000)``` | Resistor 1000 Ohms 5% 0.125W |
|
|
| 1 | ```ax_res(res1_4, 10000)``` | Resistor 10000 Ohms 5% 0.25W |
|
|
| 1 | ```ax_res(res1_2, 100000)``` | Resistor 100000 Ohms 5% 0.5W |
|
|
| 1 | ```ax_res(res1_8, 1e+6, tol = 1)``` | Resistor 1e+6 Ohms 1% 0.125W |
|
|
| 1 | ```smd_led(LED0603, orange)``` | SMD LED 0603 orange |
|
|
| 1 | ```smd_led(LED0805, red)``` | SMD LED 0805 red |
|
|
| 1 | ```smd_resistor(RES0603, 1K)``` | SMD resistor 0603 1K 0.1W |
|
|
| 1 | ```smd_resistor(RES0805, 1K)``` | SMD resistor 0805 1K 0.125W |
|
|
| 1 | ```smd_resistor(RES1206, 1K)``` | SMD resistor 1206 1K 0.25W |
|
|
| 1 | ```square_button(button_4p5mm)``` | Square button 4.5mm |
|
|
| 1 | ```square_button(button_6mm)``` | Square button 6mm |
|
|
| 1 | ```pcb(TMC2130)``` | TMC2130 |
|
|
| 1 | ```green_terminal(gt_5p08, 2)``` | Terminal block 2 way 0.2" |
|
|
| 2 | ```green_terminal(gt_6p35, 2)``` | Terminal block 2 way 0.25" |
|
|
| 1 | ```green_terminal(gt_5x17, 2)``` | Terminal block 2 way 5mm |
|
|
| 2 | ```green_terminal(gt_2p54, 3)``` | Terminal block 3 way 0.1" |
|
|
| 1 | ```terminal_35(3)``` | Terminal block 3 way 3.5mm |
|
|
| 1 | ```green_terminal(gt_5x11, 3)``` | Terminal block 3 way 5mm |
|
|
| 1 | ```green_terminal(gt_5x17, 3)``` | Terminal block 3 way 5mm |
|
|
| 2 | ```green_terminal(gt_3p5, 4)``` | Terminal block 4 way 3.5mm |
|
|
| 1 | ```terminal_35(4)``` | Terminal block 4 way 3.5mm |
|
|
| 1 | ```pcb(TestPCB)``` | Test PCB |
|
|
| 1 | ```wire_link(0.8, 5.08, h = 10.16)``` | Wire link 0.8mm x 0.2" |
|
|
| 1 | ```wire_link(0.8, 10.16)``` | Wire link 0.8mm x 0.4" |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="PCBs"></a>
|
|
## PCBs
|
|
PCBs and perfboard with optional components. The shape can be a rectangle with optionally rounded corners or a polygon for odd shapes like Arduino.
|
|
|
|
|
|
[vitamins/pcbs.scad](vitamins/pcbs.scad) Object definitions.
|
|
|
|
[vitamins/pcb.scad](vitamins/pcb.scad) Implementation.
|
|
|
|
[tests/PCBs.scad](tests/PCBs.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```ff_back(type)``` | Flat flex back section size |
|
|
| ```ff_latch(type)``` | Flat flex latch size |
|
|
| ```ff_mid(type)``` | Flat flex middle section size |
|
|
| ```ff_slot(type)``` | Flat flex slot size |
|
|
| ```hdmi_depth(type)``` | Front to back depth |
|
|
| ```hdmi_height(type)``` | Outside height above the PCB |
|
|
| ```hdmi_height1(type)``` | Inside height at the sides |
|
|
| ```hdmi_height2(type)``` | Inside height in the middle |
|
|
| ```hdmi_thickness(type)``` | Wall thickness of the metal |
|
|
| ```hdmi_width1(type)``` | Inside width at the top |
|
|
| ```hdmi_width2(type)``` | Inside width at the bottom |
|
|
| ```pcb_accessories(type)``` | List of accessories to go on the BOM, SD cards, USB cables, etc. |
|
|
| ```pcb_colour(type)``` | Colour of the subtrate |
|
|
| ```pcb_components(type)``` | List of components |
|
|
| ```pcb_grid(type)``` | Grid if a perfboard |
|
|
| ```pcb_hole_d(type)``` | Mounting hole diameter |
|
|
| ```pcb_holes(type)``` | List of hole positions |
|
|
| ```pcb_land_d(type)``` | Pad around mounting hole |
|
|
| ```pcb_length(type)``` | Length |
|
|
| ```pcb_name(type)``` | Description |
|
|
| ```pcb_parts_on_bom(type)``` | True if the parts should be separate BOM items |
|
|
| ```pcb_polygon(type)``` | Optional outline polygon for odd shaped boards |
|
|
| ```pcb_radius(type)``` | Corner radius |
|
|
| ```pcb_thickness(type)``` | Thickness |
|
|
| ```pcb_width(type)``` | Width |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```pcb_component_position(type, name, index = 0)``` | Return x y position of specified component |
|
|
| ```pcb_coord(type, p)``` | Convert offsets from the edge to coordinates relative to the centre |
|
|
| ```pcb_grid_pos(type, x, y, z = 0)``` | Returns a pcb grid position |
|
|
| ```pcb_screw(type, cap = hs_cap)``` | Mounting screw type |
|
|
| ```pcb_size(type)``` | Length, width and thickness in a vector |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```barrel_jack(cutout = false)``` | Draw barrel power jack |
|
|
| ```block(size, colour, makes_cutout, cutouts)``` | Draw a coloured cube to represent a random PCB component |
|
|
| ```buzzer(height, diameter, colour)``` | Draw PCB buzzer with specified height, diameter and colour |
|
|
| ```chip(length, width, thickness, colour, cutout = false)``` | Draw a coloured cube to represent a chip, or other rectangular component |
|
|
| ```flat_flex(type, cutout = false)``` | Draw flat flexistrip connector as used on RPI0 |
|
|
| ```flex(cutout = false)``` | Draw flexistrip connector |
|
|
| ```hdmi(type, cutout = false)``` | Draw HDMI socket |
|
|
| ```jack(cutout = false)``` | Draw 3.5mm jack |
|
|
| ```molex_254(ways)``` | Draw molex header |
|
|
| ```molex_usb_Ax2(cutout)``` | Draw Molex USB connector suitable for perf board |
|
|
| ```pcb(type)``` | Draw specified PCB |
|
|
| ```pcb_assembly(type, height, thickness)``` | Draw PCB assembly with spaces and fasteners in place |
|
|
| ```pcb_base(type, height, thickness, wall = 2)``` | Generate STL for a base with PCB spacers |
|
|
| ```pcb_component(comp, cutouts = false, angle = undef)``` | Draw pcb component from description |
|
|
| ```pcb_component_position(type, name)``` | Position child at the specified component position |
|
|
| ```pcb_components(type, cutouts = false, angle = undef)``` | Draw list of PCB components on the PCB |
|
|
| ```pcb_cutouts(type, angle = undef)``` | Make cut outs to clear components on a PCB |
|
|
| ```pcb_grid(type, x, y, z = 0)``` | Positions children at specified grid position |
|
|
| ```pcb_screw_positions(type)``` | Positions children at the mounting hole positions |
|
|
| ```pcb_spacer(screw, height, wall = 1.8, taper = 0)``` | Generate STL for PCB spacer |
|
|
| ```rj45(cutout = false)``` | Draw RJ45 Ethernet connector |
|
|
| ```standoff(h, d, h2, d2)``` | Draw a standoff |
|
|
| ```terminal_35(ways, colour = "blue")``` | Draw 3.5mm terminal block |
|
|
| ```trimpot10(vertical, cutout = false)``` | Draw a ten turn trimpot |
|
|
| ```uSD(size, cutout = false)``` | Draw uSD socket |
|
|
| ```usb_Ax1(cutout = false)``` | Draw USB type A single socket |
|
|
| ```usb_Ax2(cutout = false)``` | Draw USB type A dual socket |
|
|
| ```usb_B(cutout = false)``` | Draw USB B connector |
|
|
| ```usb_C(cutout = false)``` | Draw USB C connector |
|
|
| ```usb_uA(cutout = false)``` | Draw USB micro A connector |
|
|
|
|
![pcbs](tests/png/pcbs.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```pcb(ArduinoLeonardo)``` | Arduino Leonardo |
|
|
| 1 | ```pcb(ArduinoUno3)``` | Arduino Uno R3 |
|
|
| 1 | | Cat 5 patch cable 300mm |
|
|
| 1 | ```d_plug(DCONN15, pcb = true)``` | D-type 15 way PCB mount plug |
|
|
| 1 | ```pcb(DuetE)``` | Duet 2 Ethernet electronics |
|
|
| 1 | ```pcb(Duex2)``` | Duex2 expansion board |
|
|
| 1 | ```pcb(Duex5)``` | Duex5 expansion board |
|
|
| 1 | ```pcb(EnviroPlus)``` | Enviro+ |
|
|
| 1 | ```pcb(ExtruderPCB)``` | Extruder connection PCB |
|
|
| 1 | ```pcb(Keyes5p1)``` | Keyes5.1 Arduino Uno expansion board |
|
|
| 1 | ```pcb(MP1584EN)``` | MP1584EN 3A buck converter |
|
|
| 1 | ```pcb(MT3608)``` | MT3608 boost converter module |
|
|
| 4 | | Micro SD card |
|
|
| 1 | ```molex_254(2)``` | Molex KK header 2 way |
|
|
| 1 | ```molex_254(3)``` | Molex KK header 3 way |
|
|
| 16 | ```nut(M2_nut, nyloc = true)``` | Nut M2 x 1.6mm nyloc |
|
|
| 34 | ```nut(M2p5_nut, nyloc = true)``` | Nut M2.5 x 2.2mm nyloc |
|
|
| 12 | ```nut(M3_nut, nyloc = true)``` | Nut M3 x 2.4mm nyloc |
|
|
| 12 | ```nut(M4_nut, nyloc = true)``` | Nut M4 x 3.2mm nyloc |
|
|
| 1 | ```pcb(PI_IO)``` | PI_IO V2 |
|
|
| 1 | ```pcb(PSU12V1A)``` | PSU 12V 1A |
|
|
| 1 | ```pcb(PERF60x40)``` | Perfboard 60 x 40mm |
|
|
| 1 | ```pcb(PERF70x30)``` | Perfboard 70 x 30mm |
|
|
| 1 | ```pcb(PERF70x50)``` | Perfboard 70 x 50mm |
|
|
| 1 | ```pcb(PERF74x51)``` | Perfboard 74 x 51mm |
|
|
| 1 | ```pcb(PERF80x20)``` | Perfboard 80 x 20mm |
|
|
| 1 | ```pin_socket(2p54header, 13, 2, right_angle = true)``` | Pin socket 13 x 2 right_angle |
|
|
| 1 | ```pcb(RAMPSEndstop)``` | RAMPS Endstop Switch |
|
|
| 1 | ```pcb(RPI3)``` | Raspberry Pi 3 |
|
|
| 1 | ```pcb(RPI4)``` | Raspberry Pi 4 |
|
|
| 1 | ```pcb(RPI0)``` | Raspberry Pi Zero |
|
|
| 12 | ```screw(M2_cap_screw, 16)``` | Screw M2 cap x 16mm |
|
|
| 4 | ```screw(M2_cap_screw, 20)``` | Screw M2 cap x 20mm |
|
|
| 2 | ```screw(M2p5_cap_screw, 20)``` | Screw M2.5 cap x 20mm |
|
|
| 8 | ```screw(M2p5_cap_screw, 25)``` | Screw M2.5 cap x 25mm |
|
|
| 8 | ```screw(M2p5_cap_screw, 30)``` | Screw M2.5 cap x 30mm |
|
|
| 4 | ```screw(M2p5_pan_screw, 20)``` | Screw M2.5 pan x 20mm |
|
|
| 12 | ```screw(M2p5_pan_screw, 25)``` | Screw M2.5 pan x 25mm |
|
|
| 4 | ```screw(M3_cap_screw, 16)``` | Screw M3 cap x 16mm |
|
|
| 8 | ```screw(M3_cap_screw, 30)``` | Screw M3 cap x 30mm |
|
|
| 12 | ```screw(M4_cap_screw, 35)``` | Screw M4 cap x 35mm |
|
|
| 1 | ```pcb(TP4056)``` | TP4056 Li-lon Battery charger module |
|
|
| 3 | ```terminal_35(2)``` | Terminal block 2 way 3.5mm |
|
|
| 2 | ```green_terminal(gt_2p54, 4)``` | Terminal block 4 way 0.1" |
|
|
| 1 | ```pcb(WD2002SJ)``` | WD2002SJ Buck Boost DC-DC converter |
|
|
| 16 | ```washer(M2_washer)``` | Washer M2 x 5mm x 0.3mm |
|
|
| 34 | ```washer(M2p5_washer)``` | Washer M2.5 x 5.9mm x 0.5mm |
|
|
| 12 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 12 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
| 1 | ```pcb(ZC_A0591)``` | ZC-A0591 ULN2003 driver PCB |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 4 | pcb_spacer2060.stl |
|
|
| 4 | pcb_spacer2070.stl |
|
|
| 4 | pcb_spacer2080.stl |
|
|
| 4 | pcb_spacer2090.stl |
|
|
| 4 | pcb_spacer25110.stl |
|
|
| 4 | pcb_spacer25120.stl |
|
|
| 4 | pcb_spacer25130.stl |
|
|
| 4 | pcb_spacer25140_2.stl |
|
|
| 4 | pcb_spacer25150_2.stl |
|
|
| 4 | pcb_spacer25160_2.stl |
|
|
| 4 | pcb_spacer25190.stl |
|
|
| 4 | pcb_spacer25200.stl |
|
|
| 2 | pcb_spacer2580.stl |
|
|
| 4 | pcb_spacer30170.stl |
|
|
| 4 | pcb_spacer30180.stl |
|
|
| 4 | pcb_spacer3050.stl |
|
|
| 4 | pcb_spacer40210.stl |
|
|
| 4 | pcb_spacer40220.stl |
|
|
| 4 | pcb_spacer40230.stl |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Pillars"></a>
|
|
## Pillars
|
|
Threaded pillars. Each end can be male or female.
|
|
|
|
|
|
[vitamins/pillars.scad](vitamins/pillars.scad) Object definitions.
|
|
|
|
[vitamins/pillar.scad](vitamins/pillar.scad) Implementation.
|
|
|
|
[tests/pillars.scad](tests/pillars.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```pillar_bot_thread(type)``` | Bottom thread length, + for male, - for female |
|
|
| ```pillar_height(type)``` | Body height |
|
|
| ```pillar_i_colour(type)``` | Colour of the inner part |
|
|
| ```pillar_id(type)``` | Inner diameter of metal part |
|
|
| ```pillar_ifn(type)``` | Inner number of sides, 6 for hex, 0 for smooth cylinder |
|
|
| ```pillar_name(type)``` | Name of part |
|
|
| ```pillar_o_colour(type)``` | Colour of the outer part |
|
|
| ```pillar_od(type)``` | Outer diameter of body |
|
|
| ```pillar_ofn(type)``` | Outer number of sides, 6 for hex, 0 for smooth cylinder |
|
|
| ```pillar_thread(type)``` | Thread diameter |
|
|
| ```pillar_top_thread(type)``` | Top thread length, + for male, - for female |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```pillar(type)``` | Draw specified pillar |
|
|
|
|
![pillars](tests/png/pillars.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```pillar(M3x13_hex_pillar)``` | Pillar hex M/F M3x13 |
|
|
| 1 | ```pillar(M3x20_hex_pillar)``` | Pillar hex M/F M3x20 |
|
|
| 1 | ```pillar(M3x10_nylon_hex_pillar)``` | Pillar hex nylon M/F M3x10 |
|
|
| 1 | ```pillar(M3x20_nylon_hex_pillar)``` | Pillar hex nylon M/F M3x20 |
|
|
| 1 | ```pillar(M2x16_brass_pillar)``` | Pillar nurled F/M M2x16 |
|
|
| 1 | ```pillar(M3x20_nylon_pillar)``` | Pillar nylon M/F M3x20 |
|
|
| 1 | ```pillar(M4x17_nylon_pillar)``` | Pillar nylon M/F M4x20 |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Pin_headers"></a>
|
|
## Pin_headers
|
|
Pin headers and sockets, etc.
|
|
|
|
|
|
[vitamins/pin_headers.scad](vitamins/pin_headers.scad) Object definitions.
|
|
|
|
[vitamins/pin_header.scad](vitamins/pin_header.scad) Implementation.
|
|
|
|
[tests/pin_headers.scad](tests/pin_headers.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```hdr_base_colour(type)``` | Header insulator colour |
|
|
| ```hdr_box_size(type)``` | Box header outside dimensions |
|
|
| ```hdr_box_wall(type)``` | Box header wall thickness |
|
|
| ```hdr_pin_below(type)``` | Header pin length underneath |
|
|
| ```hdr_pin_colour(type)``` | Header pin colour |
|
|
| ```hdr_pin_length(type)``` | Header pin length |
|
|
| ```hdr_pin_width(type)``` | Header pin size |
|
|
| ```hdr_pitch(type)``` | Header pitch |
|
|
| ```hdr_ra_box_offset(type)``` | Offset between back of the box and the pins |
|
|
| ```hdr_ra_height(type)``` | Height of right angle connector |
|
|
| ```hdr_socket_depth(type)``` | Socket depth for female housing |
|
|
| ```hdr_y_offset(type)``` | Y offset of pins from center of the box |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```box_header(type, cols = 1, rows = 1, smt = false, cutout = false)``` | Draw box header |
|
|
| ```idc_transition(type, cols = 5, skip = [], cutout = false)``` | Draw IDC transition header |
|
|
| ```jst_xh_header(type, pin_count, right_angle = false, colour = false, pin_colour = false)``` | Draw JST XH connector |
|
|
| ```pin(type, length = undef)``` | Draw a header pin |
|
|
| ```pin_header(type, cols = 1, rows = 1, smt = false, right_angle = false, cutout = false, colour)``` | Draw pin header |
|
|
| ```pin_socket(type, cols = 1, rows = 1, right_angle = false, height = 0, smt = false, cutout = false, colour)``` | Draw pin socket |
|
|
|
|
![pin_headers](tests/png/pin_headers.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```box_header(2p54header, 10, 2)``` | Box header 10 x 2 |
|
|
| 1 | ```box_header(2p54header, 8, 1)``` | Box header 8 x 1 |
|
|
| 1 | ```idc_transition(2p54header, 10)``` | IDC transition header 10 x 2 |
|
|
| 1 | ```pin_header(2p54header, 10, 2)``` | Pin header 10 x 2 |
|
|
| 1 | ```pin_header(2p54header, 3, 1, right_angle = true)``` | Pin header 3 x 1 right_angle |
|
|
| 1 | ```pin_header(2p54header, 3, 2, right_angle = true)``` | Pin header 3 x 2 right_angle |
|
|
| 1 | ```pin_header(2p54header, 3, 3, right_angle = true)``` | Pin header 3 x 3 right_angle |
|
|
| 1 | ```pin_header(2p54header, 8, 1)``` | Pin header 8 x 1 |
|
|
| 1 | ```pin_socket(2p54header, 10, 2)``` | Pin socket 10 x 2 |
|
|
| 1 | ```pin_socket(2p54header, 3, 1, right_angle = true)``` | Pin socket 3 x 1 right_angle |
|
|
| 1 | ```pin_socket(2p54header, 3, 2, right_angle = true)``` | Pin socket 3 x 2 right_angle |
|
|
| 1 | ```pin_socket(2p54header, 3, 3, right_angle = true)``` | Pin socket 3 x 3 right_angle |
|
|
| 1 | ```pin_socket(2p54header, 8, 1)``` | Pin socket 8 x 1 |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="PSUs"></a>
|
|
## PSUs
|
|
Powersupplies. Can be a simple cube or can be defined by a list of six faces, each with thickness, holes, cutouts, etc.
|
|
|
|
Face order is bottom, top, left, right, front, back.
|
|
|
|
|
|
[vitamins/psus.scad](vitamins/psus.scad) Object definitions.
|
|
|
|
[vitamins/psu.scad](vitamins/psu.scad) Implementation.
|
|
|
|
[tests/PSUs.scad](tests/PSUs.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```atx_psu(type)``` | True if an ATX style PSU |
|
|
| ```psu_accessories(type)``` | Accessories to add to BOM, e.g. mains lead |
|
|
| ```psu_face_cutouts(type)``` | List of polygons to remove |
|
|
| ```psu_face_fan(type)``` | Fan x,y position and type |
|
|
| ```psu_face_grill(type)``` | Is this face a grill |
|
|
| ```psu_face_holes(type)``` | List of screw hole positions |
|
|
| ```psu_face_iec(type)``` | IEC connector x,y, rotation and type |
|
|
| ```psu_face_switch(type)``` | Rocker switch x,y, rotation and type |
|
|
| ```psu_face_thickness(type)``` | The thickness |
|
|
| ```psu_face_vents(type)``` | Vents array position x,y, rotation, size and corner radius |
|
|
| ```psu_faces(type)``` | List of face descriptions |
|
|
| ```psu_height(type)``` | Height |
|
|
| ```psu_left_bay(type)``` | Bay for terminals |
|
|
| ```psu_length(type)``` | Length |
|
|
| ```psu_name(type)``` | The part name |
|
|
| ```psu_right_bay(type)``` | Bay for heatsink |
|
|
| ```psu_screw(type)``` | Screw type |
|
|
| ```psu_screw_hole_radius(type)``` | Clearance hole for screw, bigger than normal on ATX |
|
|
| ```psu_terminals(type)``` | How many terminals and the y offset from the back |
|
|
| ```psu_width(type)``` | Width |
|
|
| ```terminal_block_depth(type)``` | Total depth |
|
|
| ```terminal_block_depth2(type)``` | Depth of contact well |
|
|
| ```terminal_block_divider(type)``` | Width of the dividers |
|
|
| ```terminal_block_height(type)``` | Height of the dividers |
|
|
| ```terminal_block_height2(type)``` | Height under the contacts |
|
|
| ```terminal_block_pitch(type)``` | Pitch between screws |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```psu_face_transform(type, face)``` | Returns a transformation matrix to get to the specified face |
|
|
| ```terminal_block_length(type, ways)``` | Total length of terminal block |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```atx_psu_cutout(type)``` | Cut out for the rear of an ATX |
|
|
| ```psu(type)``` | Draw a power supply |
|
|
| ```psu_screw_positions(type, face = undef)``` | Position children at the screw positions on the preferred mounting face, which can be overridden. |
|
|
| ```terminal_block(type, ways)``` | Draw a power supply terminal block |
|
|
|
|
![psus](tests/png/psus.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | | IEC mains lead |
|
|
| 1 | ```psu(ATX500)``` | PSU ATX500 |
|
|
| 1 | ```psu(KY240W)``` | PSU KY-240W-12-L |
|
|
| 1 | ```psu(PD_150_12)``` | PSU PD-150-12 |
|
|
| 1 | ```psu(S_250_48)``` | PSU S-250-48 |
|
|
| 1 | ```psu(S_300_12)``` | PSU S-300-12 |
|
|
| 4 | ```screw(No632_pan_screw, 8)``` | Screw 6-32 pan x 8mm |
|
|
| 4 | ```screw(M3_cap_screw, 8)``` | Screw M3 cap x 8mm |
|
|
| 8 | ```screw(M3_pan_screw, 8)``` | Screw M3 pan x 8mm |
|
|
| 4 | ```screw(M4_cap_screw, 8)``` | Screw M4 cap x 8mm |
|
|
| 12 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 8 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Pulleys"></a>
|
|
## Pulleys
|
|
Timing belt pulleys, both toothed and plain with internal bearings for idlers.
|
|
|
|
|
|
[vitamins/pulleys.scad](vitamins/pulleys.scad) Object definitions.
|
|
|
|
[vitamins/pulley.scad](vitamins/pulley.scad) Implementation.
|
|
|
|
[tests/pulleys.scad](tests/pulleys.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```pulley_belt(type)``` | Belt type |
|
|
| ```pulley_bore(type)``` | Bore diameter for shaft |
|
|
| ```pulley_flange_dia(type)``` | Flange diameter |
|
|
| ```pulley_flange_thickness(type)``` | Flange thickness |
|
|
| ```pulley_hub_dia(type)``` | Hub diameter |
|
|
| ```pulley_hub_length(type)``` | Hub length |
|
|
| ```pulley_od(type)``` | Outer diameter |
|
|
| ```pulley_screw(type)``` | Grub screw type |
|
|
| ```pulley_screw_length(type)``` | Grup screw length |
|
|
| ```pulley_screw_z(type)``` | Grub screw position |
|
|
| ```pulley_screws(type)``` | Number of grub screws |
|
|
| ```pulley_teeth(type)``` | Number of teeth |
|
|
| ```pulley_type(type)``` | Part description |
|
|
| ```pulley_width(type)``` | Width of teeth / belt channel |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```pulley_extent(type)``` | Largest diameter |
|
|
| ```pulley_height(type)``` | Total height of pulley |
|
|
| ```pulley_ir(type)``` | Inside radius of the teeth |
|
|
| ```pulley_offset(type)``` | Offset of the belt path centre |
|
|
| ```pulley_pr(type)``` | Pitch radius |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```pulley(type)``` | Draw a pulley |
|
|
| ```pulley_assembly(type)``` | Draw a pulley with its grub screws in place |
|
|
|
|
![pulleys](tests/png/pulleys.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```pulley(GT2x16_toothed_idler)``` | Pulley GT2 idler 16 teeth |
|
|
| 1 | ```pulley(GT2x20_toothed_idler)``` | Pulley GT2 idler 20 teeth |
|
|
| 1 | ```pulley(GT2x20_plain_idler)``` | Pulley GT2 idler smooth 12mm |
|
|
| 1 | ```pulley(GT2x16_plain_idler)``` | Pulley GT2 idler smooth 9.63mm |
|
|
| 1 | ```pulley(GT2x16x7_plain_idler)``` | Pulley GT2 idler smooth 9.63mm |
|
|
| 1 | ```pulley(GT2x20ob_pulley)``` | Pulley GT2OB 20 teeth |
|
|
| 1 | ```pulley(GT2x12_pulley)``` | Pulley GT2RD 12 teeth |
|
|
| 1 | ```pulley(GT2x20um_pulley)``` | Pulley GT2UM 20 teeth |
|
|
| 1 | ```pulley(T2p5x16_pulley)``` | Pulley T2.5 16 teeth |
|
|
| 1 | ```pulley(T5x10_pulley)``` | Pulley T5 10 teeth |
|
|
| 1 | ```screw(M3_grub_screw, 3)``` | Screw M3 grub x 3mm |
|
|
| 2 | ```screw(M3_grub_screw, 4)``` | Screw M3 grub x 4mm |
|
|
| 4 | ```screw(M3_grub_screw, 6)``` | Screw M3 grub x 6mm |
|
|
| 1 | ```screw(M4_grub_screw, 6)``` | Screw M4 grub x 6mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Rails"></a>
|
|
## Rails
|
|
Linear rails with carriages.
|
|
|
|
|
|
[vitamins/rails.scad](vitamins/rails.scad) Object definitions.
|
|
|
|
[vitamins/rail.scad](vitamins/rail.scad) Implementation.
|
|
|
|
[tests/rails.scad](tests/rails.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```carriage_block_length(type)``` | Length of the metal part |
|
|
| ```carriage_clearance(type)``` | Gap under the carriage |
|
|
| ```carriage_height(type)``` | Height of carriage |
|
|
| ```carriage_length(type)``` | Overall length |
|
|
| ```carriage_pitch_x(type)``` | Screw hole x pitch |
|
|
| ```carriage_pitch_y(type)``` | Screw hole y pitch |
|
|
| ```carriage_screw(type)``` | Carriage screw type |
|
|
| ```carriage_width(type)``` | Width of carriage |
|
|
| ```rail_bore(type)``` | Counter bore diameter for screw head |
|
|
| ```rail_bore_depth(type)``` | Counter bore depth |
|
|
| ```rail_carriage(type)``` | Carriage type |
|
|
| ```rail_end(type)``` | Minimum distance screw can be from the end |
|
|
| ```rail_end_screw(type)``` | Screw used for ends only (Countersink used for better location) |
|
|
| ```rail_height(type)``` | Height of rail section |
|
|
| ```rail_hole(type)``` | Screw hole diameter |
|
|
| ```rail_pitch(type)``` | Distance between screws |
|
|
| ```rail_screw(type)``` | Screw type |
|
|
| ```rail_width(type)``` | Width of rail section |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```carriage_screw_depth(type)``` | Carriage thread depth |
|
|
| ```rail_holes(type, length)``` | Number of holes in a rail given its ```length``` |
|
|
| ```rail_screw_height(type, screw)``` | Position screw taking into account countersink into counterbored hole |
|
|
| ```rail_travel(type, length)``` | How far the carriage can travel |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```carriage(type, rail, end_colour = grey(20)``` | Draw the specified carriage |
|
|
| ```carriage_hole_positions(type)``` | Position children over screw holes |
|
|
| ```rail(type, length)``` | Draw the specified rail |
|
|
| ```rail_assembly(type, length, pos, carriage_end_colour = grey(20)``` | Rail and carriage assembly |
|
|
| ```rail_hole_positions(type, length, first = 0, screws = 100, both_ends = true)``` | Position children over screw holes |
|
|
| ```rail_screws(type, length, thickness, screws = 100)``` | Place screws in the rail |
|
|
|
|
![rails](tests/png/rails.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```rail(MGN12, 200)``` | Linear rail MGN12 x 200mm |
|
|
| 1 | ```rail(MGN12H, 200)``` | Linear rail MGN12H x 200mm |
|
|
| 1 | ```rail(MGN15, 200)``` | Linear rail MGN15 x 200mm |
|
|
| 1 | ```rail(MGN5, 200)``` | Linear rail MGN5 x 200mm |
|
|
| 1 | ```rail(MGN7, 200)``` | Linear rail MGN7 x 200mm |
|
|
| 1 | ```rail(MGN9, 200)``` | Linear rail MGN9 x 200mm |
|
|
| 1 | ```rail(SSR15, 200)``` | Linear rail SSR15 x 200mm |
|
|
| 26 | ```nut(M2_nut, nyloc = true)``` | Nut M2 x 1.6mm nyloc |
|
|
| 31 | ```nut(M3_nut, nyloc = true)``` | Nut M3 x 2.4mm nyloc |
|
|
| 4 | ```nut(M4_nut, nyloc = true)``` | Nut M4 x 3.2mm nyloc |
|
|
| 11 | ```screw(M2_cap_screw, 10)``` | Screw M2 cap x 10mm |
|
|
| 15 | ```screw(M2_cs_cap_screw, 10)``` | Screw M2 cs cap x 10mm |
|
|
| 8 | ```screw(M3_cap_screw, 10)``` | Screw M3 cap x 10mm |
|
|
| 12 | ```screw(M3_cap_screw, 12)``` | Screw M3 cap x 12mm |
|
|
| 3 | ```screw(M3_cap_screw, 16)``` | Screw M3 cap x 16mm |
|
|
| 2 | ```screw(M3_cs_cap_screw, 12)``` | Screw M3 cs cap x 12mm |
|
|
| 6 | ```screw(M3_cs_cap_screw, 16)``` | Screw M3 cs cap x 16mm |
|
|
| 2 | ```screw(M4_cap_screw, 16)``` | Screw M4 cap x 16mm |
|
|
| 2 | ```screw(M4_cs_cap_screw, 20)``` | Screw M4 cs cap x 20mm |
|
|
| 26 | ```washer(M2_washer)``` | Washer M2 x 5mm x 0.3mm |
|
|
| 31 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 4 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Ring_terminals"></a>
|
|
## Ring_terminals
|
|
Ring terminals and earth assemblies for DiBond panels.
|
|
|
|
|
|
[vitamins/ring_terminals.scad](vitamins/ring_terminals.scad) Object definitions.
|
|
|
|
[vitamins/ring_terminal.scad](vitamins/ring_terminal.scad) Implementation.
|
|
|
|
[tests/ring_terminals.scad](tests/ring_terminals.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```ringterm_crimp_length(type)``` | If non-zero the length of the crimp tube |
|
|
| ```ringterm_hole(type)``` | Wire hole diameter |
|
|
| ```ringterm_id(type)``` | Inside diameter |
|
|
| ```ringterm_length(type)``` | Length of the tail including the ring |
|
|
| ```ringterm_od(type)``` | Outside diameter |
|
|
| ```ringterm_screw(type)``` | Screw type |
|
|
| ```ringterm_thickness(type)``` | Metal thickness |
|
|
| ```ringterm_width(type)``` | Width of the tail |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```ringterm_extent(type)``` | Space to leave |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```ring_terminal(type)``` | Draw specifeid ring terminal |
|
|
| ```ring_terminal_assembly(type, thickness, top = false)``` | Earthing assembly for DiBond twin skins |
|
|
| ```ring_terminal_hole(type, h = 0)``` | Drill hole for the screw |
|
|
|
|
![ring_terminals](tests/png/ring_terminals.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 3 | ```nut(M3_nut, nyloc = true)``` | Nut M3 x 2.4mm nyloc |
|
|
| 1 | ```ring_terminal(M3_ringterm)``` | Ring terminal 3mm |
|
|
| 1 | ```ring_terminal(M3_ringterm_cs)``` | Ring terminal 3mm |
|
|
| 1 | ```ring_terminal(M3_ringterm_crimp)``` | Ring terminal crimp 3mm |
|
|
| 1 | ```screw(M3_cap_screw, 10)``` | Screw M3 cap x 10mm |
|
|
| 2 | ```screw(M3_dome_screw, 10)``` | Screw M3 dome x 10mm |
|
|
| 6 | ```star_washer(M3_washer)``` | Washer star M3 x 0.5mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Rockers"></a>
|
|
## Rockers
|
|
Rocker switch. Also used for neon indicator in the same form factor.
|
|
|
|
|
|
[vitamins/rockers.scad](vitamins/rockers.scad) Object definitions.
|
|
|
|
[vitamins/rocker.scad](vitamins/rocker.scad) Implementation.
|
|
|
|
[tests/rockers.scad](tests/rockers.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```rocker_bezel(type)``` | Bezel width |
|
|
| ```rocker_button(type)``` | How far the button extends from the bezel |
|
|
| ```rocker_depth(type)``` | Body depth |
|
|
| ```rocker_flange_h(type)``` | Flange height |
|
|
| ```rocker_flange_t(type)``` | Flange thickness |
|
|
| ```rocker_flange_w(type)``` | Flange width |
|
|
| ```rocker_height(type)``` | Body height |
|
|
| ```rocker_part(type)``` | Part description |
|
|
| ```rocker_pivot(type)``` | Pivot distance from the back of the flange |
|
|
| ```rocker_slot_h(type)``` | Panel slot height |
|
|
| ```rocker_slot_w(type)``` | Panel slot width |
|
|
| ```rocker_spades(type)``` | Spade types and positions |
|
|
| ```rocker_width(type)``` | Body width |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```rocker(type, colour)``` | Draw the specified rocker switch |
|
|
| ```rocker_hole(type, h = 0)``` | Make a hole to accept a rocker switch, by default 2D, set h for 3D |
|
|
|
|
![rockers](tests/png/rockers.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 2 | ```rocker(neon_indicator)``` | Neon Indicator H8630FBNAL |
|
|
| 2 | ```rocker(small_rocker)``` | Rocker Switch PRASA1-16F-BB0BW |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Rod"></a>
|
|
## Rod
|
|
Steel rods and studding with chamfered ends.
|
|
|
|
These items are sysmtrical, so by default the origin is in the centre but it can be changed to the bottom.
|
|
|
|
|
|
[vitamins/rod.scad](vitamins/rod.scad) Implementation.
|
|
|
|
[tests/rod.scad](tests/rod.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```leadscrew(d , l, lead, starts, center = true)``` | Draw a leadscrew with specified diameter, length, lead and number of starts |
|
|
| ```rod(d , l, center = true)``` | Draw a smooth rod with specified diameter and length |
|
|
| ```studding(d , l, center = true)``` | Draw a threaded rod with specified diameter and length |
|
|
|
|
![rod](tests/png/rod.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```leadscrew(10, 80, 8, 4)``` | Leadscrew 10 x 80mm, 8mm lead, 4 starts |
|
|
| 1 | ```leadscrew(12, 80, 12, 4)``` | Leadscrew 12 x 80mm, 12mm lead, 4 starts |
|
|
| 1 | ```leadscrew(16, 80, 16, 4)``` | Leadscrew 16 x 80mm, 16mm lead, 4 starts |
|
|
| 1 | ```leadscrew(6, 80, 2, 1)``` | Leadscrew 6 x 80mm, 2mm lead, 1 starts |
|
|
| 1 | ```leadscrew(8, 80, 8, 4)``` | Leadscrew 8 x 80mm, 8mm lead, 4 starts |
|
|
| 1 | ```rod(10, 80)``` | Smooth rod 10mm x 80mm |
|
|
| 1 | ```rod(12, 80)``` | Smooth rod 12mm x 80mm |
|
|
| 1 | ```rod(16, 80)``` | Smooth rod 16mm x 80mm |
|
|
| 1 | ```rod(3, 80)``` | Smooth rod 3mm x 80mm |
|
|
| 1 | ```rod(4, 80)``` | Smooth rod 4mm x 80mm |
|
|
| 1 | ```rod(5, 80)``` | Smooth rod 5mm x 80mm |
|
|
| 1 | ```rod(6, 80)``` | Smooth rod 6mm x 80mm |
|
|
| 1 | ```rod(8, 80)``` | Smooth rod 8mm x 80mm |
|
|
| 1 | ```studding(10, 80)``` | Threaded rod M10 x 80mm |
|
|
| 1 | ```studding(12, 80)``` | Threaded rod M12 x 80mm |
|
|
| 1 | ```studding(16, 80)``` | Threaded rod M16 x 80mm |
|
|
| 1 | ```studding(3, 80)``` | Threaded rod M3 x 80mm |
|
|
| 1 | ```studding(4, 80)``` | Threaded rod M4 x 80mm |
|
|
| 1 | ```studding(5, 80)``` | Threaded rod M5 x 80mm |
|
|
| 1 | ```studding(6, 80)``` | Threaded rod M6 x 80mm |
|
|
| 1 | ```studding(8, 80)``` | Threaded rod M8 x 80mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Screws"></a>
|
|
## Screws
|
|
Machine screws and wood screws with various head styles.
|
|
|
|
For an explanation of ```screw_polysink()``` see <https://hydraraptor.blogspot.com/2020/12/sinkholes.html>.
|
|
|
|
|
|
[vitamins/screws.scad](vitamins/screws.scad) Object definitions.
|
|
|
|
[vitamins/screw.scad](vitamins/screw.scad) Implementation.
|
|
|
|
[tests/screws.scad](tests/screws.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```screw_clearance_radius(type)``` | Clearance hole radius |
|
|
| ```screw_head_height(type)``` | Head height |
|
|
| ```screw_head_radius(type)``` | Head radius |
|
|
| ```screw_head_type(type)``` | Head style hs_cap, hs_pan, hs_cs, hs_hex, hs_grub, hs_cs_cap, hs_dome |
|
|
| ```screw_max_thread(type)``` | Maximum thread length |
|
|
| ```screw_nut(type)``` | Default nut |
|
|
| ```screw_pilot_hole(type)``` | Pilot hole radius for wood screws, tap radius for machine screws |
|
|
| ```screw_radius(type)``` | Nominal radius |
|
|
| ```screw_socket_af(type)``` | Socket across flats |
|
|
| ```screw_socket_depth(type)``` | Socket or slot depth |
|
|
| ```screw_washer(type)``` | Default washer |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```screw_boss_diameter(type)``` | Boss big enough for nut trap and washer |
|
|
| ```screw_head_depth(type, d = 0)``` | How far a counter sink head will go into a straight hole diameter d |
|
|
| ```screw_longer_than(x)``` | Returns shortest screw length longer or equal to x |
|
|
| ```screw_nut_radius(type)``` | Radius of matching nut |
|
|
| ```screw_polysink_r(type, z)``` | Countersink hole profile corrected for rounded staircase extrusions. |
|
|
| ```screw_shorter_than(x)``` | Returns longest screw length shorter than or equal to x |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```screw(type, length, hob_point = 0, nylon = false)``` | Draw specified screw, optionally hobbed or nylon |
|
|
| ```screw_and_washer(type, length, star = false, penny = false)``` | Screw with a washer which can be standard or penny and an optional star washer on top |
|
|
| ```screw_countersink(type, drilled = true)``` | Countersink shape |
|
|
| ```screw_polysink(type, h = 100, alt = false)``` | A countersink hole made from stacked polyholes for printed parts |
|
|
|
|
![screws](tests/png/screws.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```screw(No632_pan_screw, 30)``` | Screw 6-32 pan x 30mm |
|
|
| 1 | ```screw(M2_cap_screw, 10)``` | Screw M2 cap x 10mm |
|
|
| 1 | ```screw(M2_cs_cap_screw, 10)``` | Screw M2 cs cap x 10mm |
|
|
| 1 | ```screw(M2_dome_screw, 10)``` | Screw M2 dome x 10mm |
|
|
| 1 | ```screw(M2p5_cap_screw, 10)``` | Screw M2.5 cap x 10mm |
|
|
| 1 | ```screw(M2p5_pan_screw, 10)``` | Screw M2.5 pan x 10mm |
|
|
| 1 | ```screw(M3_cap_screw, 10)``` | Screw M3 cap x 10mm |
|
|
| 1 | ```screw(M3_cs_cap_screw, 10)``` | Screw M3 cs cap x 10mm |
|
|
| 1 | ```screw(M3_dome_screw, 10)``` | Screw M3 dome x 10mm |
|
|
| 1 | ```screw(M3_grub_screw, 6)``` | Screw M3 grub x 6mm |
|
|
| 1 | ```screw(M3_hex_screw, 10)``` | Screw M3 hex x 10mm |
|
|
| 1 | ```screw(M3_low_cap_screw, 10)``` | Screw M3 low cap x 10mm |
|
|
| 1 | ```screw(M3_pan_screw, 10)``` | Screw M3 pan x 10mm |
|
|
| 1 | ```screw(M4_cap_screw, 25)``` | Screw M4 cap x 25mm |
|
|
| 1 | ```screw(M4_cs_cap_screw, 25)``` | Screw M4 cs cap x 25mm |
|
|
| 1 | ```screw(M4_dome_screw, 25)``` | Screw M4 dome x 25mm |
|
|
| 1 | ```screw(M4_grub_screw, 6)``` | Screw M4 grub x 6mm |
|
|
| 1 | ```screw(M4_hex_screw, 30)``` | Screw M4 hex x 30mm |
|
|
| 1 | ```screw(M4_pan_screw, 30)``` | Screw M4 pan x 30mm |
|
|
| 1 | ```screw(M5_cap_screw, 30)``` | Screw M5 cap x 30mm |
|
|
| 1 | ```screw(M5_hex_screw, 30)``` | Screw M5 hex x 30mm |
|
|
| 1 | ```screw(M5_pan_screw, 30)``` | Screw M5 pan x 30mm |
|
|
| 1 | ```screw(M6_cap_screw, 30)``` | Screw M6 cap x 30mm |
|
|
| 1 | ```screw(M6_hex_screw, 30)``` | Screw M6 hex x 30mm |
|
|
| 1 | ```screw(M6_pan_screw, 30)``` | Screw M6 pan x 30mm |
|
|
| 1 | ```screw(M8_cap_screw, 35)``` | Screw M8 cap x 35mm |
|
|
| 1 | ```screw(M8_hex_screw, 30)``` | Screw M8 hex x 30mm |
|
|
| 1 | ```screw(No2_screw, 10)``` | Screw No2 pan wood x 10mm |
|
|
| 1 | ```screw(No4_screw, 10)``` | Screw No4 pan wood x 10mm |
|
|
| 1 | ```screw(No6_cs_screw, 30)``` | Screw No6 cs wood x 30mm |
|
|
| 1 | ```screw(No6_screw, 30)``` | Screw No6 pan wood x 30mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | polysink.stl |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="SCS_bearing_blocks"></a>
|
|
## SCS_bearing_blocks
|
|
SCSnUU and SCSnLUU bearing blocks
|
|
|
|
|
|
[vitamins/scs_bearing_blocks.scad](vitamins/scs_bearing_blocks.scad) Object definitions.
|
|
|
|
[vitamins/scs_bearing_block.scad](vitamins/scs_bearing_block.scad) Implementation.
|
|
|
|
[tests/SCS_bearing_blocks.scad](tests/SCS_bearing_blocks.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```scs_bearing(type)``` | Linear bearing used |
|
|
| ```scs_block_center_height(type)``` | Height of the center of the block |
|
|
| ```scs_block_side_height(type)``` | Height of the side of the block, this determines the minimum screw length |
|
|
| ```scs_circlip(type)``` | Circlip used |
|
|
| ```scs_hole_offset(type)``` | Offset of bearing hole from base of block |
|
|
| ```scs_screw(type)``` | Screw type |
|
|
| ```scs_screw_separation_x(type)``` | Screw separation in X direction |
|
|
| ```scs_screw_separation_z(type)``` | Screw separation in Z direction |
|
|
| ```scs_spacer(type)``` | Spacer used in long bearings |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```scs_size(type)``` | Size of scs bracket bounding block |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```scs_bearing_block(type)``` | Draw the specified SCS bearing block |
|
|
| ```scs_bearing_block_assembly(type, part_thickness, screw_type, nut_type)``` | Assembly with screws and nuts in place |
|
|
| ```scs_bearing_block_hole_positions(type)``` | Place children at hole positions |
|
|
|
|
![scs_bearing_blocks](tests/png/scs_bearing_blocks.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 12 | ```nut(M4_nut)``` | Nut M4 x 3.2mm |
|
|
| 24 | ```nut(M5_nut)``` | Nut M5 x 4mm |
|
|
| 1 | ```scs_bearing_block(SCS10LUU)``` | SCS10LUU bearing block |
|
|
| 1 | ```scs_bearing_block(SCS10UU)``` | SCS10UU bearing block |
|
|
| 1 | ```scs_bearing_block(SCS12LUU)``` | SCS12LUU bearing block |
|
|
| 1 | ```scs_bearing_block(SCS12UU)``` | SCS12UU bearing block |
|
|
| 1 | ```scs_bearing_block(SCS16LUU)``` | SCS16LUU bearing block |
|
|
| 1 | ```scs_bearing_block(SCS16UU)``` | SCS16UU bearing block |
|
|
| 1 | ```scs_bearing_block(SCS6UU)``` | SCS6UU bearing block |
|
|
| 1 | ```scs_bearing_block(SCS8LUU)``` | SCS8LUU bearing block |
|
|
| 1 | ```scs_bearing_block(SCS8UU)``` | SCS8UU bearing block |
|
|
| 4 | ```screw(M4_cap_screw, 25)``` | Screw M4 cap x 25mm |
|
|
| 8 | ```screw(M4_cap_screw, 30)``` | Screw M4 cap x 30mm |
|
|
| 16 | ```screw(M5_cap_screw, 35)``` | Screw M5 cap x 35mm |
|
|
| 8 | ```screw(M5_cap_screw, 45)``` | Screw M5 cap x 45mm |
|
|
| 12 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
| 24 | ```washer(M5_washer)``` | Washer M5 x 10mm x 1mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Sealing_strip"></a>
|
|
## Sealing_strip
|
|
Sealing strip from B&Q used to seal around the door of 3D printers.
|
|
|
|
|
|
[vitamins/sealing_strip.scad](vitamins/sealing_strip.scad) Implementation.
|
|
|
|
[tests/sealing_strip.scad](tests/sealing_strip.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```sealing_strip(length)``` | Draw specified length of sealing strip |
|
|
|
|
![sealing_strip](tests/png/sealing_strip.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```sealing_strip(100)``` | Sealing strip 10mm x 4mm x 100mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Shaft_couplings"></a>
|
|
## Shaft_couplings
|
|
Shaft couplings
|
|
|
|
|
|
[vitamins/shaft_couplings.scad](vitamins/shaft_couplings.scad) Object definitions.
|
|
|
|
[vitamins/shaft_coupling.scad](vitamins/shaft_coupling.scad) Implementation.
|
|
|
|
[tests/shaft_couplings.scad](tests/shaft_couplings.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```sc_diameter(type)``` | Coupling outer diameter |
|
|
| ```sc_diameter1(type)``` | Diameter of smaller shaft |
|
|
| ```sc_diameter2(type)``` | Diameter of larger shaft |
|
|
| ```sc_length(type)``` | Coupling length |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```shaft_coupling(type, colour = "silver")``` | Draw the shaft coupling |
|
|
|
|
![shaft_couplings](tests/png/shaft_couplings.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```shaft_coupling(SC_5x8_rigid)``` | Shaft coupling SC_5x8_rigid |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Sheets"></a>
|
|
## Sheets
|
|
Sheet materials. Rectangular with optional rounded corners. Negative radii make a chamfer.
|
|
|
|
The "Soft" parameter can be used to determinesif the sheet material needs machine screws or wood screws, e.g.:
|
|
|
|
* If soft, wood screws will be used, with a pilot hole.
|
|
* If not soft, either tapped holes or a clearance hole and nuts will be used to retain screws.
|
|
|
|
The "Colour" parameter is a quad-array: [R, G, B, Alpha], or can be a named colour, see [OpenSCAD_User_Manual](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/The_OpenSCAD_Language#color).
|
|
|
|
For speed sheets should be modelled in 2D by subtracting holes from 2D templates made by ```sheet_2D()``` and then extruded to 3D with ```render_2D_sheet()```.
|
|
Note that modules that drill holes will return a 2D object if ```h``` is set to 0 to facilitate this.
|
|
|
|
|
|
[vitamins/sheets.scad](vitamins/sheets.scad) Object definitions.
|
|
|
|
[vitamins/sheet.scad](vitamins/sheet.scad) Implementation.
|
|
|
|
[tests/sheets.scad](tests/sheets.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```sheet_colour(type)``` | Colour |
|
|
| ```sheet_is_soft(type)``` | Is soft enough for wood screws |
|
|
| ```sheet_thickness(type)``` | Thickness |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```render_2D_sheet(type, colour = false)``` | Extrude a 2D sheet template and give it the correct colour |
|
|
| ```render_sheet(type, colour = false)``` | Render a sheet in the correct colour after holes have been subtracted |
|
|
| ```sheet(type, w, d, corners = [0, 0, 0, 0])``` | Draw specified sheet |
|
|
| ```sheet_2D(type, w, d, corners = [0, 0, 0, 0])``` | 2D sheet template with specified size and optionally rounded corners |
|
|
|
|
![sheets](tests/png/sheets.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```sheet(FoilTape, 30, 30, 2)``` | Aluminium foil tape 30mm x 30mm x 0.05mm |
|
|
| 1 | ```sheet(AL6, 30, 30, 2)``` | Aluminium tooling plate 30mm x 30mm x 6mm |
|
|
| 1 | ```sheet(AL8, 30, 30, 2)``` | Aluminium tooling plate 30mm x 30mm x 8mm |
|
|
| 1 | ```sheet(Cardboard, 30, 30, 2)``` | Corrugated cardboard 30mm x 30mm x 5mm |
|
|
| 1 | ```sheet(Foam20, 30, 30, 2)``` | Foam sponge 30mm x 30mm x 20mm |
|
|
| 1 | ```sheet(DiBond, 30, 30, 2)``` | Sheet DiBond 30mm x 30mm x 3mm |
|
|
| 1 | ```sheet(DiBond6, 30, 30, 2)``` | Sheet DiBond 30mm x 30mm x 6mm |
|
|
| 1 | ```sheet(MDF10, 30, 30, 2)``` | Sheet MDF 30mm x 30mm x 10mm |
|
|
| 1 | ```sheet(MDF12, 30, 30, 2)``` | Sheet MDF 30mm x 30mm x 12mm |
|
|
| 1 | ```sheet(MDF19, 30, 30, 2)``` | Sheet MDF 30mm x 30mm x 19mm |
|
|
| 1 | ```sheet(MDF6, 30, 30, 2)``` | Sheet MDF 30mm x 30mm x 6mm |
|
|
| 1 | ```sheet(PMMA10, 30, 30, 2)``` | Sheet acrylic 30mm x 30mm x 10mm |
|
|
| 1 | ```sheet(PMMA2, 30, 30, 2)``` | Sheet acrylic 30mm x 30mm x 2mm |
|
|
| 1 | ```sheet(PMMA3, 30, 30, 2)``` | Sheet acrylic 30mm x 30mm x 3mm |
|
|
| 1 | ```sheet(PMMA6, 30, 30, 2)``` | Sheet acrylic 30mm x 30mm x 6mm |
|
|
| 1 | ```sheet(PMMA8, 30, 30, 2)``` | Sheet acrylic 30mm x 30mm x 8mm |
|
|
| 1 | ```sheet(glass2, 30, 30, 2)``` | Sheet glass 30mm x 30mm x 2mm |
|
|
| 1 | ```sheet(Steel06, 30, 30, 2)``` | Sheet mild steel 30mm x 30mm x 0.6mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="SK_brackets"></a>
|
|
## SK_brackets
|
|
SK shaft support brackets
|
|
|
|
|
|
[vitamins/sk_brackets.scad](vitamins/sk_brackets.scad) Object definitions.
|
|
|
|
[vitamins/sk_bracket.scad](vitamins/sk_bracket.scad) Implementation.
|
|
|
|
[tests/SK_brackets.scad](tests/SK_brackets.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```sk_base_height(type)``` | Height of base containing the screws |
|
|
| ```sk_diameter(type)``` | Rod hole diameter |
|
|
| ```sk_hole_offset(type)``` | Rod hole offset |
|
|
| ```sk_screw_separation(type)``` | Separation of screws in the base |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```sk_size(type)``` | Size of bracket |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```sk_bracket(type)``` | SK shaft support bracket |
|
|
| ```sk_bracket_assembly(type, part_thickness = 2, screw_type = M5_cap_screw, nut_type = undef, max_screw_depth = 6)``` | Assembly with fasteners in place |
|
|
| ```sk_bracket_hole_positions(type)``` | Place children at hole positions |
|
|
|
|
![sk_brackets](tests/png/sk_brackets.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 2 | ```extrusion(E2020, 20)``` | Extrusion E2020 x 20mm |
|
|
| 2 | ```extrusion(E3030, 20)``` | Extrusion E3030 x 20mm |
|
|
| 2 | ```sliding_t_nut(M4_hammer_nut)``` | Nut M4 hammer |
|
|
| 2 | ```sliding_t_nut(M4_sliding_t_nut)``` | Nut M4 sliding T |
|
|
| 2 | ```sliding_t_nut(M5_sliding_t_nut)``` | Nut M5 sliding T |
|
|
| 2 | ```nut(M5_nut, nyloc = undef)``` | Nut M5 x 4mm |
|
|
| 1 | ```sk_bracket(SK10)``` | SK10 shaft support bracket |
|
|
| 1 | ```sk_bracket(SK12)``` | SK12 shaft support bracket |
|
|
| 1 | ```sk_bracket(SK16)``` | SK16 shaft support bracket |
|
|
| 1 | ```sk_bracket(SK8)``` | SK8 shaft support bracket |
|
|
| 2 | ```screw(M4_cap_screw, 12)``` | Screw M4 cap x 12mm |
|
|
| 2 | ```screw(M4_dome_screw, 12)``` | Screw M4 dome x 12mm |
|
|
| 4 | ```screw(M5_cap_screw, 16)``` | Screw M5 cap x 16mm |
|
|
| 4 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
| 6 | ```washer(M5_washer)``` | Washer M5 x 10mm x 1mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="SMDs"></a>
|
|
## SMDs
|
|
Surface mount components for PCBs.
|
|
|
|
|
|
[vitamins/smds.scad](vitamins/smds.scad) Object definitions.
|
|
|
|
[vitamins/smd.scad](vitamins/smd.scad) Implementation.
|
|
|
|
[tests/SMDs.scad](tests/SMDs.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```smd_led_lens(type)``` | Lens length width and height |
|
|
| ```smd_led_size(type)``` | Body length, width and height |
|
|
| ```smd_res_end_cap(type)``` | End cap width |
|
|
| ```smd_res_power(type)``` | Power rating in Watts |
|
|
| ```smd_res_size(type)``` | Body length, width and height |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```smd_100th(x)``` | Convert dimension to 1/100" notation |
|
|
| ```smd_led_height(type)``` | Total height |
|
|
| ```smd_size(size)``` | Convert size to 1/100" notation |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```smd_led(type, colour, cutout)``` | Draw an SMD LED with specified ```colour``` |
|
|
| ```smd_resistor(type, value)``` | Draw an SMD resistor with specified value |
|
|
|
|
![smds](tests/png/smds.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```smd_led(LED0603, green)``` | SMD LED 0603 green |
|
|
| 1 | ```smd_led(LED0805, blue)``` | SMD LED 0805 blue |
|
|
| 1 | ```smd_resistor(RES0603, 1R0)``` | SMD resistor 0603 1R0 0.1W |
|
|
| 1 | ```smd_resistor(RES0805, 10M)``` | SMD resistor 0805 10M 0.125W |
|
|
| 1 | ```smd_resistor(RES1206, 100K)``` | SMD resistor 1206 100K 0.25W |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Spades"></a>
|
|
## Spades
|
|
Spade terminals used as parts of electrical components.
|
|
|
|
|
|
[vitamins/spades.scad](vitamins/spades.scad) Object definitions.
|
|
|
|
[vitamins/spade.scad](vitamins/spade.scad) Implementation.
|
|
|
|
[tests/spades.scad](tests/spades.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```spade_hole(type)``` | Hole diameter |
|
|
| ```spade_l(type)``` | Length of the narrow part |
|
|
| ```spade_shank(type)``` | Shank width |
|
|
| ```spade_t(type)``` | Thickness |
|
|
| ```spade_w(type)``` | Width |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```spade(type, height = 14)``` | Draw a spade of the specified type and total length. The shank length is adjusted to make the length. |
|
|
|
|
![spades](tests/png/spades.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Spools"></a>
|
|
## Spools
|
|
Filament spool models
|
|
|
|
|
|
[vitamins/spools.scad](vitamins/spools.scad) Object definitions.
|
|
|
|
[vitamins/spool.scad](vitamins/spool.scad) Implementation.
|
|
|
|
[tests/spools.scad](tests/spools.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```spool_depth(type)``` | Internal depth |
|
|
| ```spool_diameter(type)``` | Outside diameter |
|
|
| ```spool_hub_bore(type)``` | Bore through the hub |
|
|
| ```spool_hub_diameter(type)``` | Diameter of the thicker hub |
|
|
| ```spool_hub_taper(type)``` | Diameter at which it tapers down to rim thickness |
|
|
| ```spool_hub_thickness(type)``` | Thickness at the hub |
|
|
| ```spool_rim_thickness(type)``` | Thickness at the outside rim |
|
|
| ```spool_width(type)``` | Internal width |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```spool_height(type)``` | Outside width |
|
|
| ```spool_pitch(type)``` | Spacing of the rims |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```spool(type, filament_depth = 0, filament_colour = "white", filament_d = 3)``` | Draw specified spool with optional filament |
|
|
|
|
![spools](tests/png/spools.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```spool(spool_200x55)``` | Filament spool 200 x 55 |
|
|
| 1 | ```spool(spool_200x60)``` | Filament spool 200 x 60 |
|
|
| 1 | ```spool(spool_300x85)``` | Filament spool 300 x 85 |
|
|
| 1 | ```spool(spool_300x88)``` | Filament spool 300 x 88 |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Springs"></a>
|
|
## Springs
|
|
Compression springs. Can be tapered, have open, closed or ground ends. Ground ends will render a lot slower.
|
|
|
|
By default springs have their origin at the bottom but can be centered.
|
|
|
|
|
|
[vitamins/springs.scad](vitamins/springs.scad) Object definitions.
|
|
|
|
[vitamins/spring.scad](vitamins/spring.scad) Implementation.
|
|
|
|
[tests/springs.scad](tests/springs.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```spring_closed(type)``` | Are the ends closed |
|
|
| ```spring_colour(type)``` | The colour |
|
|
| ```spring_gauge(type)``` | Wire gauge |
|
|
| ```spring_ground(type)``` | Are the ends ground flat |
|
|
| ```spring_length(type)``` | Uncompressed length |
|
|
| ```spring_mesh(type)``` | Optional pre-computed mesh |
|
|
| ```spring_od(type)``` | Outside diameter |
|
|
| ```spring_od2(type)``` | Second diameter for spiral springs |
|
|
| ```spring_turns(type)``` | Number of turns |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```comp_spring(type, l = 0)``` | Calculate the mesh for spring |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```comp_spring(type, l = 0, center = false)``` | Draw specified spring, l can be set to specify the compressed length. |
|
|
|
|
![springs](tests/png/springs.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```comp_spring(batt_spring)``` | Spring 5 - 6mm spiral OD, 0.5mm gauge x 8mm long, closed end |
|
|
| 1 | ```comp_spring(peg_spring)``` | Spring 6.4mm OD, 0.9mm gauge x 15.5mm long, closed end |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="SSRs"></a>
|
|
## SSRs
|
|
Solid state relays.
|
|
|
|
|
|
[vitamins/ssrs.scad](vitamins/ssrs.scad) Object definitions.
|
|
|
|
[vitamins/ssr.scad](vitamins/ssr.scad) Implementation.
|
|
|
|
[tests/SSRs.scad](tests/SSRs.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```ssr_base_t(type)``` | Thickness of metal base |
|
|
| ```ssr_height(type)``` | Height |
|
|
| ```ssr_hole_d(type)``` | Screw hole diameter |
|
|
| ```ssr_hole_pitch(type)``` | Difference between screw centres |
|
|
| ```ssr_length(type)``` | Length |
|
|
| ```ssr_part(type)``` | Description |
|
|
| ```ssr_slot_w(type)``` | Width of the screw slot in the body |
|
|
| ```ssr_width(type)``` | Width |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```ssr(type)``` | Draw specified SSR |
|
|
| ```ssr_assembly(type, screw, thickness)``` | Assembly with fasteners in place |
|
|
| ```ssr_hole_positions(type)``` | Place children at the screw positions |
|
|
|
|
![ssrs](tests/png/ssrs.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 4 | ```nut(M4_nut, nyloc = true)``` | Nut M4 x 3.2mm nyloc |
|
|
| 4 | ```screw(M4_cap_screw, 16)``` | Screw M4 cap x 16mm |
|
|
| 1 | ```ssr(SSR25DA)``` | Solid state relay Fotek 25A |
|
|
| 1 | ```ssr(SSR10DA)``` | Solid state relay Robodigg 10A |
|
|
| 8 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Stepper_motors"></a>
|
|
## Stepper_motors
|
|
NEMA stepper motor model.
|
|
|
|
|
|
[vitamins/stepper_motors.scad](vitamins/stepper_motors.scad) Object definitions.
|
|
|
|
[vitamins/stepper_motor.scad](vitamins/stepper_motor.scad) Implementation.
|
|
|
|
[tests/stepper_motors.scad](tests/stepper_motors.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```NEMA_body_radius(type)``` | Body radius |
|
|
| ```NEMA_boss_height(type)``` | Boss height |
|
|
| ```NEMA_boss_radius(type)``` | Boss around the spindle radius |
|
|
| ```NEMA_cap_heights(type)``` | Height of the end cap at the corner and the side |
|
|
| ```NEMA_hole_pitch(type)``` | Screw hole pitch |
|
|
| ```NEMA_length(type)``` | Body length |
|
|
| ```NEMA_radius(type)``` | End cap radius |
|
|
| ```NEMA_shaft_dia(type)``` | Shaft diameter |
|
|
| ```NEMA_shaft_length(type)``` | Shaft length above the face, if a list then a leadscrew: length, lead, starts |
|
|
| ```NEMA_width(type)``` | Width of the square face |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```NEMA_big_hole(type)``` | Clearance hole for the big boss |
|
|
| ```NEMA_holes(type)``` | Screw positions for for loop |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```NEMA(type, shaft_angle = 0, jst_connector = false)``` | Draw specified NEMA stepper motor |
|
|
| ```NEMA_outline(type)``` | 2D outline |
|
|
| ```NEMA_screw_positions(type, n = 4)``` | Positions children at the screw holes |
|
|
| ```NEMA_screws(type, screw, n = 4, screw_length = 8, earth = undef)``` | Place screws and optional earth tag |
|
|
|
|
![stepper_motors](tests/png/stepper_motors.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 4 | ```ring_terminal(M3_ringterm)``` | Ring terminal 3mm |
|
|
| 15 | ```screw(M3_pan_screw, 8)``` | Screw M3 pan x 8mm |
|
|
| 1 | ```NEMA(NEMA14)``` | Stepper motor NEMA14 x 36mm |
|
|
| 1 | ```NEMA(NEMA16)``` | Stepper motor NEMA16 x 19.2mm |
|
|
| 1 | ```NEMA(NEMA17S)``` | Stepper motor NEMA17 x 34mm |
|
|
| 1 | ```NEMA(NEMA17M)``` | Stepper motor NEMA17 x 40mm |
|
|
| 1 | ```NEMA(NEMA17)``` | Stepper motor NEMA17 x 47mm |
|
|
| 1 | ```NEMA(NEMA23)``` | Stepper motor NEMA22 x 51.2mm |
|
|
| 11 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 15 | ```star_washer(M3_washer)``` | Washer star M3 x 0.5mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Swiss_clips"></a>
|
|
## Swiss_clips
|
|
Swiss picture clip.
|
|
Used for holding glass on 3D printer beds.
|
|
|
|
The bending model is an approximation because in real life the arms bend.
|
|
Should be reasonably accurate if not close to fully open.
|
|
|
|
|
|
[vitamins/swiss_clips.scad](vitamins/swiss_clips.scad) Object definitions.
|
|
|
|
[vitamins/swiss_clip.scad](vitamins/swiss_clip.scad) Implementation.
|
|
|
|
[tests/Swiss_clips.scad](tests/Swiss_clips.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```sclip_arm_length(type)``` | Length of arms |
|
|
| ```sclip_arm_width(type)``` | Width of spring arms |
|
|
| ```sclip_height(type)``` | External height |
|
|
| ```sclip_hinge_offset(type)``` | Offset of hinge |
|
|
| ```sclip_hook(type)``` | hook, length, width |
|
|
| ```sclip_length(type)``` | Total external length |
|
|
| ```sclip_max_gap(type)``` | Maximum opening |
|
|
| ```sclip_radius(type)``` | Bend radius |
|
|
| ```sclip_spigot(type)``` | Spigot length, width, height |
|
|
| ```sclip_thickness(type)``` | Thickness of the metal |
|
|
| ```sclip_width(type)``` | Width |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```swiss_clip(type, open = 0.9)``` | Draw a Swiss clip open by specified amount |
|
|
| ```swiss_clip_hole(type, open, h = 0)``` | Drill hole for spigot |
|
|
|
|
![swiss_clips](tests/png/swiss_clips.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```sheet(AL6, 40, 20, 1)``` | Aluminium tooling plate 40mm x 20mm x 6mm |
|
|
| 1 | ```sheet(glass2, 40, 20, 1)``` | Sheet glass 40mm x 20mm x 2mm |
|
|
| 2 | ```swiss_clip(UKPFS1008_10)``` | Swiss picture clip UKPFS1008_10 11mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Toggles"></a>
|
|
## Toggles
|
|
Toggle switches
|
|
|
|
|
|
[vitamins/toggles.scad](vitamins/toggles.scad) Object definitions.
|
|
|
|
[vitamins/toggle.scad](vitamins/toggle.scad) Implementation.
|
|
|
|
[tests/toggles.scad](tests/toggles.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```toggle_angle(type)``` | Angle of the paddle |
|
|
| ```toggle_collar_d(type)``` | Collar diameter |
|
|
| ```toggle_collar_t(type)``` | Collar thickness |
|
|
| ```toggle_colour(type)``` | Body colour |
|
|
| ```toggle_depth(type)``` | Body depth |
|
|
| ```toggle_height(type)``` | Body height |
|
|
| ```toggle_id(type)``` | Barrel inside diameter |
|
|
| ```toggle_inset(type)``` | How far the metal is inset into the body |
|
|
| ```toggle_nut(type)``` | Nut type |
|
|
| ```toggle_od(type)``` | Barrel outside diameter |
|
|
| ```toggle_paddle_d1(type)``` | Diameter at the top of the paddle |
|
|
| ```toggle_paddle_l(type)``` | Length of the paddle |
|
|
| ```toggle_paddle_w(type)``` | Width at the top for non-spherical end |
|
|
| ```toggle_part(type)``` | Part description |
|
|
| ```toggle_pin_hp(type)``` | Pin x pitch |
|
|
| ```toggle_pin_l(type)``` | Pin length |
|
|
| ```toggle_pin_t(type)``` | Pin thickness |
|
|
| ```toggle_pin_vp(type)``` | Pin y pitch |
|
|
| ```toggle_pin_w(type)``` | Pin width |
|
|
| ```toggle_pins(type)``` | Number of pins |
|
|
| ```toggle_pivot(type)``` | Z offset of the pivot point above the top of the body |
|
|
| ```toggle_thickness(type)``` | Metal thickness |
|
|
| ```toggle_thread(type)``` | Length of threaded barrel |
|
|
| ```toggle_washer(type)``` | Washer type |
|
|
| ```toggle_width(type)``` | Body width |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```toggle_hole_radius(type)``` | Radius of the panel hole |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```toggle(type, thickness)``` | Draw specified toggle switch with the nuts and washers positioned for the specified panel thickness |
|
|
| ```toggle_hole(type, h = 100)``` | Drill the hole in a panel |
|
|
|
|
![toggles](tests/png/toggles.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```toggle(AP5236, 3)``` | Toggle switch AP5236 |
|
|
| 1 | ```toggle(CK7101, 3)``` | Toggle switch CK7101 |
|
|
| 1 | ```toggle(CK7105, 3)``` | Toggle switch CK7105 |
|
|
| 1 | ```toggle(MS332F, 3)``` | Toggle switch MS332F |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Transformers"></a>
|
|
## Transformers
|
|
Iron core transformers. The grey shaded area is the keep out region where the terminals are.
|
|
|
|
|
|
[vitamins/transformers.scad](vitamins/transformers.scad) Object definitions.
|
|
|
|
[vitamins/transformer.scad](vitamins/transformer.scad) Implementation.
|
|
|
|
[tests/transformers.scad](tests/transformers.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```tx_bobbin_height(type)``` | Bobbin height |
|
|
| ```tx_bobbin_offset(type)``` | Vertical offset of the bobbin from the centre of the laminations |
|
|
| ```tx_bobbin_radius(type)``` | Bobbin corner radius |
|
|
| ```tx_bobbin_width(type)``` | Bobbin width |
|
|
| ```tx_depth(type)``` | Bounding depth of the bobbin |
|
|
| ```tx_foot_depth(type)``` | Depth of the foot |
|
|
| ```tx_foot_thickness(type)``` | Thickness of the foot |
|
|
| ```tx_foot_width(type)``` | Width of the foot |
|
|
| ```tx_height(type)``` | Bounding height of the transformer |
|
|
| ```tx_lamination_depth(type)``` | Lamination depth |
|
|
| ```tx_lamination_height(type)``` | Lamination height |
|
|
| ```tx_part(type)``` | Part description |
|
|
| ```tx_screw(type)``` | Screw type |
|
|
| ```tx_width(type)``` | Bounding width of the core |
|
|
| ```tx_x_pitch(type)``` | Screw hole x pitch |
|
|
| ```tx_y_pitch(type)``` | Screw hole y pitch when four screws |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```transformer(type)``` | Draw specified transformer |
|
|
| ```transformer_hole_positions(type)``` | Position children at the mounting hole positions |
|
|
|
|
![transformers](tests/png/transformers.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```transformer(CCM300)``` | Transformer Carroll & Meynell CCM300/230 isolation |
|
|
| 1 | ```transformer(SMALLTX)``` | Transformer Small mains |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Tubings"></a>
|
|
## Tubings
|
|
Tubing and sleeving. The internal diameter can be forced to stretch it over something.
|
|
|
|
|
|
[vitamins/tubings.scad](vitamins/tubings.scad) Object definitions.
|
|
|
|
[vitamins/tubing.scad](vitamins/tubing.scad) Implementation.
|
|
|
|
[tests/tubings.scad](tests/tubings.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```tubing_colour(type)``` | Colour |
|
|
| ```tubing_id(type)``` | Inside diameter |
|
|
| ```tubing_material(type)``` | Material description |
|
|
| ```tubing_od(type)``` | Outside diameter |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```tubing_or(type)``` | Outside radius |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```tubing(type, length = 15, forced_id = 0, center = true)``` | Draw specified tubing with optional forced internal diameter |
|
|
|
|
![tubings](tests/png/tubings.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```tubing(CBNFIB10)``` | Carbon fiber OD 10mm ID 8mm x 15mm |
|
|
| 1 | ```tubing(HSHRNK16)``` | Heatshrink sleeving ID 1.6mm x 15mm |
|
|
| 1 | ```tubing(HSHRNK100)``` | Heatshrink sleeving ID 10mm x 15mm |
|
|
| 1 | ```tubing(HSHRNK24)``` | Heatshrink sleeving ID 2.4mm x 15mm |
|
|
| 1 | ```tubing(HSHRNK64)``` | Heatshrink sleeving ID 6.4mm x 15mm |
|
|
| 1 | ```tubing(NEOP85)``` | Neoprene tubing OD 8mm ID 5mm x 15mm |
|
|
| 1 | ```tubing(PTFE07)``` | PTFE sleeving OD 1.2mm ID 0.71mm x 15mm |
|
|
| 1 | ```tubing(PTFE20)``` | PTFE sleeving OD 2.6mm ID 2mm x 15mm |
|
|
| 1 | ```tubing(PTFE2_3)``` | PTFE tubing OD 3mm ID 2mm x 15mm |
|
|
| 1 | ```tubing(PF7)``` | PTFE tubing OD 4.6mm ID 3.84mm x 15mm |
|
|
| 1 | ```tubing(PTFE2_4)``` | PTFE tubing OD 4mm ID 2mm x 15mm |
|
|
| 1 | ```tubing(PTFE4_6)``` | PTFE tubing OD 6mm ID 4mm x 15mm |
|
|
| 1 | ```tubing(PVC64)``` | PVC aquarium tubing OD 6mm ID 4mm x 15mm |
|
|
| 1 | ```tubing(PVC85)``` | PVC aquarium tubing OD 8mm ID 5mm x 15mm |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Variacs"></a>
|
|
## Variacs
|
|
Variable auto transformers.
|
|
|
|
|
|
[vitamins/variacs.scad](vitamins/variacs.scad) Object definitions.
|
|
|
|
[vitamins/variac.scad](vitamins/variac.scad) Implementation.
|
|
|
|
[tests/variacs.scad](tests/variacs.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```variac_bulge_dia(type)``` | Bulge to opposite edge |
|
|
| ```variac_bulge_width(type)``` | Width of the bulge |
|
|
| ```variac_dial_big_hole(type)``` | Central dial hole diameter |
|
|
| ```variac_dial_dia(type)``` | Dial diameter |
|
|
| ```variac_dial_hole_pitch(type)``` | Screw pitch for the dial |
|
|
| ```variac_dial_hole_r(type)``` | Dial screw hole radius |
|
|
| ```variac_dial_thickness(type)``` | Dial thickness |
|
|
| ```variac_diameter(type)``` | Body diameter |
|
|
| ```variac_height(type)``` | Body height |
|
|
| ```variac_screw(type)``` | Screw type |
|
|
| ```variac_screw_pitch(type)``` | Pitch of screws |
|
|
| ```variac_screws(type)``` | Number of screws |
|
|
| ```variac_shaft_dia(type)``` | Shaft diameter |
|
|
| ```variac_shaft_length(type)``` | Shaft length |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```variac_radius(type)``` | Body radius |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```variac(type, thickness = 3, dial = true)``` | Draw the specified variac with screws and possibly the dial when it is fixed and not rotating |
|
|
| ```variac_dial(type)``` | Draw the dial for the specified variac |
|
|
| ```variac_hole_positions(type, pitch = undef)``` | Position children at the screw positions |
|
|
| ```variac_holes(type, h = 100)``` | Drill panel holes for specified variac |
|
|
|
|
![variacs](tests/png/variacs.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```variac(DURATRAKV5HM, 3)``` | Variac DURATRAK V5HM |
|
|
| 1 | ```variac(RAVISTAT1F1, 3)``` | Variac RAVISTAT 1F-1 |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Veroboard"></a>
|
|
## Veroboard
|
|
Veroboard with mounting holes, track breaks, removed tracks, solder points and components.
|
|
|
|
|
|
[vitamins/veroboard.scad](vitamins/veroboard.scad) Implementation.
|
|
|
|
[tests/veroboard.scad](tests/veroboard.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```vero_assembly(type)``` | Name of the assembly |
|
|
| ```vero_breaks(type)``` | Breaks in the tracks |
|
|
| ```vero_components(type)``` | List of named components and their positions |
|
|
| ```vero_fr4(type)``` | True if FR4 rather than SRBP |
|
|
| ```vero_holes(type)``` | Number of holes in each strip |
|
|
| ```vero_joints(type)``` | List of solder joints |
|
|
| ```vero_mounting_holes(type)``` | Positions of the mounting holes |
|
|
| ```vero_no_track(type)``` | Missing tracks |
|
|
| ```vero_pitch(type)``` | Hole pitch |
|
|
| ```vero_screw(type)``` | Mounting screw type |
|
|
| ```vero_strips(type)``` | Number of strips |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```vero_length(type)``` | Length of the board |
|
|
| ```vero_thickness(type)``` | Thickness of the substrate |
|
|
| ```vero_track_thickness(type)``` | Thickness of the tracks |
|
|
| ```vero_track_width(type)``` | The width of the tracks |
|
|
| ```vero_width(type)``` | Width of the board |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```vero_cutouts(type, angle = undef)``` | Make cutouts to clear components |
|
|
| ```vero_grid_pos(type, x, y)``` | Convert grid position to offset from the centre |
|
|
| ```vero_mounting_hole_positions(type)``` | Positions children at the mounting holes |
|
|
| ```vero_mounting_holes(type, h = 100)``` | Drill mounting holes in a panel |
|
|
| ```veroboard(type)``` | Draw specified veroboard with missing tracks and track breaks |
|
|
| ```veroboard_assembly(type, height, thickness, flip = false)``` | Draw the assembly with components and fasteners in place |
|
|
|
|
![veroboard](tests/png/veroboard.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 2 | ```idc_transition(2p54header, 10)``` | IDC transition header 10 x 2 |
|
|
| 4 | ```nut(M3_nut, nyloc = true)``` | Nut M3 x 2.4mm nyloc |
|
|
| 4 | ```screw(M3_dome_screw, 25)``` | Screw M3 dome x 25mm |
|
|
| 2 | ```green_terminal(gt_2p54, 10)``` | Terminal block 10 way 0.1" |
|
|
| 2 | ```veroboard(z_vb)``` | Veroboard 5 holes x 22strips |
|
|
| 8 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 4 | pcb_spacer30120.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 2 | z_bed_terminal_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Washers"></a>
|
|
## Washers
|
|
Washers, star washers, penny washers and printed washers.
|
|
|
|
If a washer is given a child, usually a screw or a nut, then it is placed on its top surface.
|
|
|
|
|
|
[vitamins/washers.scad](vitamins/washers.scad) Object definitions.
|
|
|
|
[vitamins/washer.scad](vitamins/washer.scad) Implementation.
|
|
|
|
[tests/washers.scad](tests/washers.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```penny_washer(type)``` | Corresponding penny washer |
|
|
| ```spring_washer_diameter(type)``` | Spring washer size |
|
|
| ```spring_washer_thickness(type)``` | Spring washer thickness |
|
|
| ```star_washer_diameter(type)``` | Star version size |
|
|
| ```washer_diameter(type)``` | External diameter |
|
|
| ```washer_size(type)``` | Noiminal size |
|
|
| ```washer_soft(type)``` | True if rubber |
|
|
| ```washer_thickness(type)``` | Thickness |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```washer_colour(type)``` | Washer colour |
|
|
| ```washer_id(type)``` | Inside diameter |
|
|
| ```washer_radius(type)``` | Outside radius |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```penny_washer(type)``` | Draw penny version of specified plain washer |
|
|
| ```printed_washer(type, name = false)``` | Create printed washer |
|
|
| ```spring_washer(type)``` | Draw spring version of washer |
|
|
| ```star_washer(type)``` | Draw star version of washer |
|
|
| ```washer(type)``` | Draw specified washer |
|
|
|
|
![washers](tests/png/washers.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```washer(M2_washer)``` | Washer M2 x 5mm x 0.3mm |
|
|
| 1 | ```washer(M2p5_washer)``` | Washer M2.5 x 5.9mm x 0.5mm |
|
|
| 1 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 1 | ```washer(M3p5_washer)``` | Washer M3.5 x 8mm x 0.5mm |
|
|
| 1 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
| 1 | ```washer(M5_washer)``` | Washer M5 x 10mm x 1mm |
|
|
| 1 | ```washer(M6_washer)``` | Washer M6 x 12.5mm x 1.5mm |
|
|
| 1 | ```washer(M8_washer)``` | Washer M8 x 17mm x 1.6mm |
|
|
| 1 | ```washer(M3_penny_washer)``` | Washer penny M3 x 12mm x 0.8mm |
|
|
| 1 | ```washer(M4_penny_washer)``` | Washer penny M4 x 14mm x 0.8mm |
|
|
| 1 | ```washer(M5_penny_washer)``` | Washer penny M5 x 20mm x 1.4mm |
|
|
| 1 | ```washer(M6_penny_washer)``` | Washer penny M6 x 26mm x 1.5mm |
|
|
| 1 | ```washer(M8_penny_washer)``` | Washer penny M8 x 30mm x 1.5mm |
|
|
| 1 | ```washer(M3_rubber_washer)``` | Washer rubber M3 x 10mm x 1.5mm |
|
|
| 1 | ```spring_washer(M2_washer)``` | Washer spring M2 x 0.5mm |
|
|
| 1 | ```spring_washer(M2p5_washer)``` | Washer spring M2.5 x 0.6mm |
|
|
| 1 | ```spring_washer(M3_washer)``` | Washer spring M3 x 1mm |
|
|
| 1 | ```spring_washer(M3p5_washer)``` | Washer spring M3.5 x 1mm |
|
|
| 1 | ```spring_washer(M4_washer)``` | Washer spring M4 x 1.2mm |
|
|
| 1 | ```spring_washer(M5_washer)``` | Washer spring M5 x 1.6mm |
|
|
| 1 | ```spring_washer(M6_washer)``` | Washer spring M6 x 1.6mm |
|
|
| 1 | ```spring_washer(M8_washer)``` | Washer spring M8 x 2mm |
|
|
| 1 | ```star_washer(M2_washer)``` | Washer star M2 x 0.3mm |
|
|
| 1 | ```star_washer(M2p5_washer)``` | Washer star M2.5 x 0.5mm |
|
|
| 1 | ```star_washer(M3_washer)``` | Washer star M3 x 0.5mm |
|
|
| 1 | ```star_washer(M3_rubber_washer)``` | Washer star M3 x 1.5mm |
|
|
| 1 | ```star_washer(M3p5_washer)``` | Washer star M3.5 x 0.5mm |
|
|
| 1 | ```star_washer(M4_washer)``` | Washer star M4 x 0.8mm |
|
|
| 1 | ```star_washer(M5_washer)``` | Washer star M5 x 1mm |
|
|
| 1 | ```star_washer(M6_washer)``` | Washer star M6 x 1.5mm |
|
|
| 1 | ```star_washer(M8_washer)``` | Washer star M8 x 1.6mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | M20_washer.stl |
|
|
| 1 | M25_washer.stl |
|
|
| 2 | M30_washer.stl |
|
|
| 1 | M35_washer.stl |
|
|
| 1 | M40_washer.stl |
|
|
| 1 | M50_washer.stl |
|
|
| 1 | M60_washer.stl |
|
|
| 1 | M80_washer.stl |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Wire"></a>
|
|
## Wire
|
|
Just a BOM entry at the moment and cable bundle size functions for holes, plus cable ties.
|
|
|
|
|
|
[vitamins/wire.scad](vitamins/wire.scad) Implementation.
|
|
|
|
[tests/wire.scad](tests/wire.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```cable_bundle(cable)``` | Arrangement of a bundle in a flat cable clip |
|
|
| ```cable_height(cable)``` | Height in flat clip |
|
|
| ```cable_radius(cable)``` | Radius of a bundle of wires, see <http://mathworld.wolfram.com/CirclePacking.html>. |
|
|
| ```cable_width(cable)``` | Width in flat clip |
|
|
| ```cable_wire_size(cable)``` | Size of each wire in a bundle |
|
|
| ```cable_wires(cable)``` | Number of wires in a bindle |
|
|
| ```wire_hole_radius(cable)``` | Radius of a hole to accept a bundle of wires |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```cable_tie(cable_r, thickness)``` | A ziptie threaded around cable radius ```cable_r``` and through a panel with specified ```thickness```. |
|
|
| ```cable_tie_holes(cable_r, h = 100)``` | Holes to thread a ziptie through a panel to make a cable tie. |
|
|
| ```mouse_hole(cable, h = 100, teardrop = false)``` | A mouse hole to allow a panel to go over a wire bundle. |
|
|
| ```ribbon_cable(ways, length)``` | Add ribbon cable to the BOM |
|
|
| ```wire(colour, strands, length, strand = 0.2)``` | Add stranded wire to the BOM |
|
|
|
|
![wire](tests/png/wire.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | | Wire black 7/0.2mm strands, length 90mm |
|
|
| 1 | | Wire blue 7/0.2mm strands, length 90mm |
|
|
| 1 | | Wire brown 7/0.2mm strands, length 90mm |
|
|
| 1 | | Wire green 7/0.2mm strands, length 90mm |
|
|
| 1 | | Wire orange 7/0.2mm strands, length 90mm |
|
|
| 1 | | Wire red 7/0.2mm strands, length 90mm |
|
|
| 1 | | Wire yellow 7/0.2mm strands, length 90mm |
|
|
| 1 | ```ziptie(small_ziptie, 2.1)``` | Ziptie 2.5mm x 100mm min length |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Zipties"></a>
|
|
## Zipties
|
|
Cable zipties.
|
|
|
|
|
|
[vitamins/zipties.scad](vitamins/zipties.scad) Object definitions.
|
|
|
|
[vitamins/ziptie.scad](vitamins/ziptie.scad) Implementation.
|
|
|
|
[tests/zipties.scad](tests/zipties.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```ziptie_colour(type)``` | Colour |
|
|
| ```ziptie_latch(type)``` | Latch dimensions |
|
|
| ```ziptie_tail(type)``` | The length without teeth |
|
|
| ```ziptie_thickness(type)``` | Thickness |
|
|
| ```ziptie_width(type)``` | Width |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```ziptie(type, r, t = 0)``` | Draw specified ziptie wrapped around radius ```r``` and optionally through panel thickness ```t``` |
|
|
|
|
![zipties](tests/png/zipties.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```ziptie(small_ziptie, 5)``` | Ziptie 2.5mm x 100mm min length |
|
|
| 1 | ```ziptie(ziptie_3p6mm, 5)``` | Ziptie 3.6mm x 100mm min length |
|
|
| 1 | ```ziptie(ziptie_3mm, 5)``` | Ziptie 3mm x 100mm min length |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Box"></a>
|
|
## Box
|
|
A box made from routed or laser cut sheet sheets and printed profiles and bezels. It can be arbitrarily large
|
|
compared to the 3D printed parts because they can be cut into interlocking sections and solvent welded
|
|
together. The box panels can be customised to have holes and parts mounted on them by overriding the
|
|
definitions of `box_base()`, `box_front()`, etc.
|
|
|
|
`box.scad` should be ```use```d and `box_assembly.scad` ```include```d.
|
|
|
|
A box is defined with a list that specifies the inside dimensions, top, bottom and side sheet materials, the
|
|
screw type and printed part wall thickness. This diagram shows how the various dimensions are labelled:
|
|
![](docs/box.png)
|
|
|
|
Normally the side sheets are the same type but they can be overridden individually as long as the substitute has the same thickness.
|
|
|
|
|
|
[printed/box.scad](printed/box.scad) Implementation.
|
|
|
|
[tests/box.scad](tests/box.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```box_base_sheet(type)``` | Sheet type for the bottom |
|
|
| ```box_depth(type)``` | Internal depth |
|
|
| ```box_feet(type)``` | True to enable feet on the bottom bezel |
|
|
| ```box_height(type)``` | Internal height |
|
|
| ```box_screw(type)``` | Screw type to be used at the corners |
|
|
| ```box_sheets(type)``` | Sheet type used for the sides |
|
|
| ```box_shelf_screw(type)``` | Screw type to hold a shelf |
|
|
| ```box_top_sheet(type)``` | Sheet type for the top |
|
|
| ```box_wall(type)``` | Wall thickness of 3D parts |
|
|
| ```box_width(type)``` | Internal width |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```box(screw, wall, sheets, top_sheet, base_sheet, size, feet = false, shelf_screw = M3_dome_screw)``` | Construct a property list for a box. |
|
|
| ```box_bezel_height(type, bottom)``` | Bezel height for top or bottom |
|
|
| ```box_corner_gap(type)``` | Gap between box_sheets at the corners to connect inside and outside profiles |
|
|
| ```box_inset(type)``` | How much the bezel intrudes on the specified width and length, away from the corners |
|
|
| ```box_intrusion(type)``` | Corner profile intrusion |
|
|
| ```box_margin(type)``` | How much the bezel intrudes on the specified height |
|
|
| ```box_outset(type)``` | How much the bezel expands the specified internal size |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```box_back(type)``` | Default back, can be overridden to customise |
|
|
| ```box_back_blank(type, sheet = false)``` | Generates a 2D template for the back sheet, ```sheet``` can be set to override the type |
|
|
| ```box_base(type)``` | Default base, can be overridden to customise |
|
|
| ```box_base_blank(type)``` | Generates a 2D template for the base sheet |
|
|
| ```box_bezel(type, bottom)``` | Generates top and bottom bezel STLs |
|
|
| ```box_bezel_section(type, bottom, rows, cols, x, y)``` | Generates interlocking sections of the bezel to allow it to be bigger than the printer |
|
|
| ```box_corner_profile(type)``` | Generates the corner profile STL for 3D printing. |
|
|
| ```box_corner_profile_2D(type)``` | The 2D shape of the corner profile. |
|
|
| ```box_corner_profile_section(type, section, sections)``` | Generates interlocking sections of the corner profile to allow it to be taller than the printer |
|
|
| ```box_corner_profile_sections(type, section, sections)``` | Generate four copies of a corner profile section |
|
|
| ```box_front(type)``` | Default front, can be overridden to customise |
|
|
| ```box_front_blank(type, sheet = false)``` | Generates a 2D template for the front sheet, ```sheet``` can be set to override the type |
|
|
| ```box_left(type)``` | Default left side, can be overridden to customise |
|
|
| ```box_left_blank(type, sheet = false)``` | Generates a 2D template for the left sheet, ```sheet``` can be set to override the type |
|
|
| ```box_right(type)``` | Default right side, can be overridden to customise |
|
|
| ```box_right_blank(type, sheet = false)``` | Generates a 2D template for the right sheet, ```sheet``` can be set to override the type |
|
|
| ```box_shelf_blank(type, sheet = false)``` | Generates a 2D template for a shelf sheet |
|
|
| ```box_shelf_bracket(type, screw_positions, wall = undef)``` | Generates a shelf bracket, the first optional child is a 2D cutout and the second 3D cutouts |
|
|
| ```box_shelf_bracket_section(type, rows, cols, x, y)``` | Generates sections of the shelf bracket to allow it to be bigger than the printer |
|
|
| ```box_shelf_screw_positions(type, screw_positions, thickness = 0, wall = undef)``` | Place children at the shelf screw positions |
|
|
| ```box_top(type)``` | Default top, can be overridden to customise |
|
|
| ```box_top_blank(type)``` | Generates a 2D template for the top sheet |
|
|
| ```grill(width, height, r = 1000, poly = false, h = 0)``` | A staggered array of 5mm holes to make grills in sheets. Can be constrained to be circular. Set ```poly``` ```true``` for printing, ```false``` for milling. |
|
|
|
|
![box](tests/png/box.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 8 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
|
| 4 | ```screw(M3_dome_screw, 16)``` | Screw M3 dome x 16mm |
|
|
| 4 | ```screw(M3_dome_screw, 20)``` | Screw M3 dome x 20mm |
|
|
| 2 | ```sheet(DiBond, 143, 63, 1)``` | Sheet DiBond 143mm x 63mm x 3mm |
|
|
| 1 | ```sheet(DiBond6, 150, 100, 2.9)``` | Sheet DiBond 150mm x 100mm x 6mm |
|
|
| 2 | ```sheet(DiBond, 93, 63, 1)``` | Sheet DiBond 93mm x 63mm x 3mm |
|
|
| 1 | ```sheet(PMMA3, 150, 100, 2.9)``` | Sheet acrylic 150mm x 100mm x 3mm |
|
|
| 8 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 8 | ```star_washer(M3_washer)``` | Washer star M3 x 0.5mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 10 | bottom_bezel.stl |
|
|
| 4 | box_corner_profile.stl |
|
|
| 1 | top_bezel.stl |
|
|
|
|
### Routed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | box_back.dxf |
|
|
| 1 | box_base.dxf |
|
|
| 1 | box_front.dxf |
|
|
| 1 | box_left.dxf |
|
|
| 1 | box_right.dxf |
|
|
| 1 | box_top.dxf |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | box_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Butt_box"></a>
|
|
## Butt_box
|
|
A box made from CNC cut panels butted together using printed fixing blocks. Useful for making large
|
|
boxes with minimal 3D printing. More blocks are added as the box gets bigger.
|
|
|
|
Needs to be ```include```d rather than ```use```d to allow the panel definitions to be overridden to add holes
|
|
and mounted components.
|
|
|
|
A list specifies the internal dimensions, screw type, top, bottom and side sheet types and the block
|
|
maximum spacing.
|
|
|
|
* An optional name can be specified to allow more then one box in a project.
|
|
* An optional list of fixing blocks to be omitted can be given.
|
|
* Star washers can be omitted by setting the 11th parameter to false.
|
|
|
|
Uses [fixing blocks](#fixing_block) and [corner blocks](#corner_block).
|
|
|
|
|
|
[printed/butt_box.scad](printed/butt_box.scad) Implementation.
|
|
|
|
[tests/butt_box.scad](tests/butt_box.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```bbox_base_sheet(type)``` | Sheet type for the base |
|
|
| ```bbox_depth(type)``` | Internal depth |
|
|
| ```bbox_height(type)``` | Internal height |
|
|
| ```bbox_name(type)``` | Optional name if there is more than one box in a project |
|
|
| ```bbox_screw(type)``` | Screw type for corner blocks |
|
|
| ```bbox_sheets(type)``` | Sheet type for the sides |
|
|
| ```bbox_skip_blocks(type)``` | List of fixing blocks to skip, used to allow a hinged panel for example |
|
|
| ```bbox_span(type)``` | Maximum span between fixing blocks |
|
|
| ```bbox_top_sheet(type)``` | Sheet type for the top |
|
|
| ```bbox_width(type)``` | Internal width |
|
|
| ```star_washers(type)``` | Set to false to remove star washers. |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```bbox(screw, sheets, base_sheet, top_sheet, span, size, name = "bbox", skip_blocks = [], star_washers = true)``` | Construct the property list for a butt_box |
|
|
| ```bbox_area(type)``` | Internal surdface area in m^2 |
|
|
| ```bbox_volume(type)``` | Internal volume in litres |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```_bbox_assembly(type, top = true, base = true, left = true, right = true, back = true, front = true)``` | The box assembly, wrap with a local copy without parameters |
|
|
| ```bbox_back(type)``` | Default back, can be overridden to customise |
|
|
| ```bbox_back_blank(type, sheet = false)``` | 2D template for the back |
|
|
| ```bbox_base(type)``` | Default base, can be overridden to customise |
|
|
| ```bbox_base_blank(type)``` | 2D template for the base |
|
|
| ```bbox_front(type)``` | Default front, can be overridden to customise |
|
|
| ```bbox_front_blank(type, sheet = false, width = 0)``` | 2D template for the front |
|
|
| ```bbox_left(type)``` | Default left side, can be overridden to customise |
|
|
| ```bbox_left_blank(type, sheet = false)``` | 2D template for the left side |
|
|
| ```bbox_right(type)``` | Default right side, can be overridden to customise |
|
|
| ```bbox_right_blank(type, sheet = false)``` | 2D template for the right side |
|
|
| ```bbox_shelf_blank(type)``` | 2D template for a shelf |
|
|
| ```bbox_top(type)``` | Default top, can be overridden to customise |
|
|
| ```bbox_top_blank(type)``` | 2D template for the top |
|
|
|
|
![butt_box](tests/png/butt_box.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 48 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
|
| 36 | ```screw(M3_dome_screw, 10)``` | Screw M3 dome x 10mm |
|
|
| 4 | ```screw(M3_dome_screw, 12)``` | Screw M3 dome x 12mm |
|
|
| 8 | ```screw(M3_dome_screw, 16)``` | Screw M3 dome x 16mm |
|
|
| 2 | ```sheet(DiBond, 303, 126)``` | Sheet DiBond 303mm x 126mm x 3mm |
|
|
| 1 | ```sheet(DiBond, 400, 126)``` | Sheet DiBond 400mm x 126mm x 3mm |
|
|
| 1 | ```sheet(DiBond6, 400, 300, 1)``` | Sheet DiBond 400mm x 300mm x 6mm |
|
|
| 1 | ```sheet(DiBond, 406, 129)``` | Sheet DiBond 406mm x 129mm x 3mm |
|
|
| 1 | ```sheet(PMMA3, 406, 303)``` | Sheet acrylic 406mm x 303mm x 3mm |
|
|
| 48 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 48 | ```star_washer(M3_washer)``` | Washer star M3 x 0.5mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 8 | corner_block_M30.stl |
|
|
| 8 | fixing_block_M30.stl |
|
|
|
|
### Routed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | bbox_back.dxf |
|
|
| 1 | bbox_base.dxf |
|
|
| 1 | bbox_front.dxf |
|
|
| 1 | bbox_left.dxf |
|
|
| 1 | bbox_right.dxf |
|
|
| 1 | bbox_top.dxf |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | bbox_assembly |
|
|
| 8 | corner_block_M30_assembly |
|
|
| 8 | fixing_block_M30_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Cable_grommets"></a>
|
|
## Cable_grommets
|
|
Printed cable grommets for passing cables through panels avoiding sharp edges and in the case
|
|
of conductive panels, an extra layer of insulation.
|
|
|
|
|
|
[printed/cable_grommets.scad](printed/cable_grommets.scad) Implementation.
|
|
|
|
[tests/cable_grommets.scad](tests/cable_grommets.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```mouse_grommet(r, thickness)``` | Make the STL for a mouse grommet |
|
|
| ```mouse_grommet_hole(r, h = 50, z = undef, expand = wall + clearance)``` | Make a hole for a mouse grommet |
|
|
| ```ribbon_grommet(ways, thickness)``` | Generate the STL for a printed ribbon grommet |
|
|
| ```ribbon_grommet_hole(ways, h = 50, expand = true)``` | Generate a hole for a ribbon grommet |
|
|
| ```round_grommet_bottom(diameter, od = undef)``` | Generate the STL for a round grommet bottom half |
|
|
| ```round_grommet_hole(diameter, h = 100)``` | Make a hole for a round grommet |
|
|
| ```round_grommet_top(diameter, thickness, od = undef)``` | Generate the STL for a round grommet top half |
|
|
|
|
![cable_grommets](tests/png/cable_grommets.png)
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | mouse_grommet_50_3.stl |
|
|
| 1 | ribbon_grommet_20_3.stl |
|
|
| 1 | round_grommet_bottom_60.stl |
|
|
| 1 | round_grommet_top_60_3.stl |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Camera_housing"></a>
|
|
## Camera_housing
|
|
Housings for PCB cameras.
|
|
|
|
|
|
[printed/camera_housing.scad](printed/camera_housing.scad) Implementation.
|
|
|
|
[tests/camera_housing.scad](tests/camera_housing.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```cam_front_size(cam)``` | Outside dimensions of the case |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```camera_assembly(cam, angle = 0)``` | Camera case assembly |
|
|
| ```camera_back(cam)``` | Make the STL for a camera case back |
|
|
| ```camera_bracket(cam)``` | Make the STL for the camera bracket |
|
|
| ```camera_bracket_position(cam)``` | Position children at the bracket position |
|
|
| ```camera_bracket_screw_positions(cam)``` | Position children at the bracket screw positions |
|
|
| ```camera_front(cam, hinge = 0)``` | Make the STL for a camera case front |
|
|
| ```rpi_camera_focus_ring_stl()``` | Focus ring the glue onto RPI lens |
|
|
|
|
![camera_housing](tests/png/camera_housing.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 7 | ```nut(M2_nut, nyloc = true)``` | Nut M2 x 1.6mm nyloc |
|
|
| 10 | ```nut(M3_nut, nyloc = true)``` | Nut M3 x 2.4mm nyloc |
|
|
| 1 | ```camera(rpi_camera_v1)``` | Raspberry Pi camera V1 |
|
|
| 1 | ```camera(rpi_camera_v2)``` | Raspberry Pi camera V2 |
|
|
| 1 | ```camera(rpi_camera)``` | Raspberry Pi focusable camera |
|
|
| 7 | ```screw(M2_cap_screw, 10)``` | Screw M2 cap x 10mm |
|
|
| 4 | ```screw(M3_cap_screw, 16)``` | Screw M3 cap x 16mm |
|
|
| 4 | ```screw(M3_dome_screw, 10)``` | Screw M3 dome x 10mm |
|
|
| 2 | ```screw(M3_dome_screw, 12)``` | Screw M3 dome x 12mm |
|
|
| 7 | ```washer(M2_washer)``` | Washer M2 x 5mm x 0.3mm |
|
|
| 16 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | camera_back_rpi_camera.stl |
|
|
| 1 | camera_back_rpi_camera_v1.stl |
|
|
| 1 | camera_back_rpi_camera_v2.stl |
|
|
| 1 | camera_bracket_rpi_camera.stl |
|
|
| 1 | camera_bracket_rpi_camera_v1.stl |
|
|
| 1 | camera_bracket_rpi_camera_v2.stl |
|
|
| 1 | camera_front_rpi_camera.stl |
|
|
| 1 | camera_front_rpi_camera_v1.stl |
|
|
| 1 | camera_front_rpi_camera_v2.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | camera_rpi_camera_assembly |
|
|
| 1 | camera_rpi_camera_v1_assembly |
|
|
| 1 | camera_rpi_camera_v2_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Carriers"></a>
|
|
## Carriers
|
|
Adapts ESP12 modules and various small PCBs to 0.1" grid. See <https://hydraraptor.blogspot.com/2018/04/esp-12-module-breakout-adaptor.html>.
|
|
|
|
|
|
[printed/carriers.scad](printed/carriers.scad) Implementation.
|
|
|
|
[tests/carriers.scad](tests/carriers.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```carrier_height()``` | Height of PCB carrier |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```ESP12F_carrier_stl()``` | Generate the STL for an ESP12 carrier |
|
|
| ```MT3608_carrier_stl()``` | Generate the STL for an MT3608 carrier, two required |
|
|
| ```TP4056_carrier_stl()``` | Generate the STL for an TP4056 carrier, two required |
|
|
|
|
![carriers](tests/png/carriers.png)
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | ESP12F_carrier.stl |
|
|
| 1 | MT3608_carrier.stl |
|
|
| 1 | TP4056_carrier.stl |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Corner_block"></a>
|
|
## Corner_block
|
|
Corner brackets using threaded inserts for fastening three sheets together at right angles.
|
|
Defaults to M3 but other screws sizes can be specified provided they have inserts defined.
|
|
|
|
See [butt_box](#Butt_box) for an example of usage.
|
|
|
|
Note that the block with its inserts is defined as a sub assembly, but its fasteners get added to the parent assembly.
|
|
|
|
Specific fasteners can be omitted by setting a side's thickness to 0 and the block omitted by setting ```show_block``` to false.
|
|
This allows the block and one set of fasteners to be on one assembly and the other fasteners on the mating assemblies.
|
|
|
|
Star washers can be omitted by setting ```star_washers``` to false.
|
|
|
|
|
|
[printed/corner_block.scad](printed/corner_block.scad) Implementation.
|
|
|
|
[tests/corner_block.scad](tests/corner_block.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```corner_block_h_holes(screw = def_screw)``` | List of transforms to side holes |
|
|
| ```corner_block_hole_offset(screw = def_screw)``` | Hole offset from the edge |
|
|
| ```corner_block_holes(screw)``` | List of transforms to all holes |
|
|
| ```corner_block_screw()``` | Default screw type |
|
|
| ```corner_block_v_hole(screw = def_screw)``` | Transform to bottom hole |
|
|
| ```corner_block_width(screw = def_screw)``` | Block width, depth and height |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```corner_block(screw = def_screw, name = false)``` | Generate the STL for a printed corner block |
|
|
| ```corner_block_assembly(screw = def_screw, name = false)``` | The printed block with inserts |
|
|
| ```corner_block_h_holes(screw = def_screw, index = undef)``` | Place children at the side screw holes |
|
|
| ```corner_block_holes(screw = def_screw)``` | Place children at all the holes |
|
|
| ```corner_block_v_hole(screw = def_screw)``` | Place children at the bottom screw hole |
|
|
| ```fastened_corner_block_assembly(thickness, screw = def_screw, thickness_below = undef, thickness_side2 = undef, name = false, show_block = true, star_washers = true)``` | Printed block with all fasteners |
|
|
|
|
![corner_block](tests/png/corner_block.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 3 | ```insert(F1BM2)``` | Heatfit insert M2 |
|
|
| 3 | ```insert(F1BM2p5)``` | Heatfit insert M2.5 |
|
|
| 3 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
|
| 3 | ```insert(F1BM4)``` | Heatfit insert M4 |
|
|
| 3 | ```screw(M2_cap_screw, 8)``` | Screw M2 cap x 8mm |
|
|
| 3 | ```screw(M2p5_pan_screw, 10)``` | Screw M2.5 pan x 10mm |
|
|
| 3 | ```screw(M3_dome_screw, 10)``` | Screw M3 dome x 10mm |
|
|
| 3 | ```screw(M4_dome_screw, 12)``` | Screw M4 dome x 12mm |
|
|
| 3 | ```washer(M2_washer)``` | Washer M2 x 5mm x 0.3mm |
|
|
| 3 | ```washer(M2p5_washer)``` | Washer M2.5 x 5.9mm x 0.5mm |
|
|
| 3 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 3 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
| 3 | ```star_washer(M2_washer)``` | Washer star M2 x 0.3mm |
|
|
| 3 | ```star_washer(M2p5_washer)``` | Washer star M2.5 x 0.5mm |
|
|
| 3 | ```star_washer(M3_washer)``` | Washer star M3 x 0.5mm |
|
|
| 3 | ```star_washer(M4_washer)``` | Washer star M4 x 0.8mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | corner_block_M20.stl |
|
|
| 1 | corner_block_M25.stl |
|
|
| 1 | corner_block_M30.stl |
|
|
| 1 | corner_block_M40.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | corner_block_M20_assembly |
|
|
| 1 | corner_block_M25_assembly |
|
|
| 1 | corner_block_M30_assembly |
|
|
| 1 | corner_block_M40_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Door_hinge"></a>
|
|
## Door_hinge
|
|
Door hinges to hang an acrylic sheet door on a 3D printer, default 6mm thick.
|
|
|
|
The screws are tapped into the acrylic.
|
|
Rubber door [sealing strip](#sealing_strip) is used to make it airtight and a [door_latch](#door_latch) holds it closed.
|
|
|
|
|
|
[printed/door_hinge.scad](printed/door_hinge.scad) Implementation.
|
|
|
|
[tests/door_hinge.scad](tests/door_hinge.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```door_hinge_pin_x()``` | X offset of the hinge pin |
|
|
| ```door_hinge_pin_y()``` | Y offset of the hinge pin |
|
|
| ```door_hinge_screw()``` | Screw type used for hinge pin |
|
|
| ```door_hinge_stat_length()``` | Length of the stationary part |
|
|
| ```door_hinge_stat_screw()``` | Screw use to fasten the stationary part |
|
|
| ```door_hinge_stat_width()``` | Width of the stationary part |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```door_hinge(door_thickness)``` | Generates STL for the moving part of the hinge |
|
|
| ```door_hinge_assembly(top, door_thickness = 6)``` | The moving assembly that goes on the door |
|
|
| ```door_hinge_hole_positions(dir = 0)``` | Position chidren at the door hole positions |
|
|
| ```door_hinge_parts_stl()``` | Generates the STL for both parts of the hinge |
|
|
| ```door_hinge_stat_hole_positions(dir = 0)``` | Position children over the screws holes of the stationary part |
|
|
| ```door_hinge_stat_stl()``` | Generates the STL for the stationary part |
|
|
| ```door_hinge_static_assembly(top, sheet_thickness = 3)``` | The stationary assembly |
|
|
|
|
![door_hinge](tests/png/door_hinge.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 4 | ```nut(M4_nut, nyloc = true)``` | Nut M4 x 3.2mm nyloc |
|
|
| 2 | ```screw(M3_cap_screw, 35)``` | Screw M3 cap x 35mm |
|
|
| 4 | ```screw(M3_dome_screw, 10)``` | Screw M3 dome x 10mm |
|
|
| 4 | ```screw(M4_dome_screw, 16)``` | Screw M4 dome x 16mm |
|
|
| 1 | ```sheet(PMMA6, 50, 50, 3)``` | Sheet acrylic 50mm x 50mm x 6mm |
|
|
| 8 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 8 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 2 | door_hinge_6.stl |
|
|
| 2 | door_hinge_stat.stl |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Door_latch"></a>
|
|
## Door_latch
|
|
Door latch for 6mm acrylic door for 3D printer. See [door_hinge](#door_hinge).
|
|
|
|
|
|
[printed/door_latch.scad](printed/door_latch.scad) Implementation.
|
|
|
|
[tests/door_latch.scad](tests/door_latch.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```door_latch_offset()``` | Offset of the axle from the door edge |
|
|
| ```door_latch_screw()``` | The screw used for the axle |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```door_latch_assembly(sheet_thickness = 3)``` | The assembly for a specified sheet thickess |
|
|
| ```door_latch_stl()``` | Generates the STL for the printed part |
|
|
|
|
![door_latch](tests/png/door_latch.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```nut(M4_nut, nyloc = true)``` | Nut M4 x 3.2mm nyloc |
|
|
| 1 | ```screw(M4_hex_screw, 20)``` | Screw M4 hex x 20mm |
|
|
| 2 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | door_latch.stl |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Drag_chain"></a>
|
|
## Drag_chain
|
|
Parametric cable drag chain to limit the bend radius of a cable run.
|
|
|
|
Each link has a maximum bend angle of 45°, so the mininium radius is proportional to the link length.
|
|
|
|
The travel property is how far it can move in each direction, i.e. half the maximum travel if the chain is mounted in the middle of the travel.
|
|
|
|
The ends can have screw lugs with four screw positions to choose from, specified by a list of two arrays of four bools.
|
|
If none are enabled then a child object is expected to customise the end and this gets unioned with the blank end.
|
|
If both ends are customised then two children are expected.
|
|
Each child is called twice, once with ```$fasteners``` set to 0 to augment the STL and again with ```$fasteners``` set to 1 to add
|
|
to the assembly, for example to add inserts.
|
|
|
|
|
|
[printed/drag_chain.scad](printed/drag_chain.scad) Implementation.
|
|
|
|
[tests/drag_chain.scad](tests/drag_chain.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```drag_chain_bwall(type)``` | Bottom wall |
|
|
| ```drag_chain_name(type)``` | The name to allow more than one in a project |
|
|
| ```drag_chain_screw(type)``` | Mounting screw for the ends |
|
|
| ```drag_chain_screw_lists(type)``` | Two lists of four bools to say which screws positions are used |
|
|
| ```drag_chain_size(type)``` | The internal size and link length |
|
|
| ```drag_chain_travel(type)``` | X travel |
|
|
| ```drag_chain_twall(type)``` | Top wall |
|
|
| ```drag_chain_wall(type)``` | Side wall thickness |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```drag_chain(name, size, travel, wall = 1.6, bwall = 1.5, twall = 1.5, screw = M2_cap_screw, screw_lists = [[1,0,0,1],[1,0,0,1]])``` | Constructor |
|
|
| ```drag_chain_clearance()``` | Clearance around joints. |
|
|
| ```drag_chain_outer_size(type)``` | Link outer dimensions |
|
|
| ```drag_chain_radius(type)``` | The bend radius at the pivot centres |
|
|
| ```drag_chain_z(type)``` | Outside dimension of a 180 bend |
|
|
| ```screw_lug_radius(screw)``` | Radius of a screw lug |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```drag_chain_assembly(type, pos = 0)``` | Drag chain assembly |
|
|
| ```drag_chain_link(type, start = false, end = false, check_kids = true)``` | One link of the chain, special case for start and end |
|
|
| ```drag_chain_screw_positions(type, end)``` | Place children at the screw positions, end = 0 for the start, 1 for the end |
|
|
| ```screw_lug(screw, h = 0)``` | Create a D shaped lug for a screw |
|
|
|
|
![drag_chain](tests/png/drag_chain.png)
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 14 | x_drag_chain_link.stl |
|
|
| 1 | x_drag_chain_link_end.stl |
|
|
| 1 | x_drag_chain_link_start.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | x_drag_chain_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Fan_guard"></a>
|
|
## Fan_guard
|
|
Pintable fan finger guard to match the specified fan. To be ```include```d, not ```use```d.
|
|
|
|
The ring spacing as well as the number of spokes can be specified, if zero a gasket is generated instead of a guard.
|
|
|
|
|
|
[printed/fan_guard.scad](printed/fan_guard.scad) Implementation.
|
|
|
|
[tests/fan_guard.scad](tests/fan_guard.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```fan_guard_corner_r(type)``` | Corner radius of the guard |
|
|
| ```fan_guard_thickness()``` | Default thickness |
|
|
| ```fan_guard_width(type)``` | Width of the guard |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```fan_guard(type, name = false, thickness = fan_guard_thickness()``` | Generate the STL |
|
|
|
|
![fan_guard](tests/png/fan_guard.png)
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | fan_guard_120.stl |
|
|
| 1 | fan_guard_17.stl |
|
|
| 1 | fan_guard_25.4.stl |
|
|
| 1 | fan_guard_30.stl |
|
|
| 1 | fan_guard_40.stl |
|
|
| 1 | fan_guard_50.stl |
|
|
| 2 | fan_guard_60.stl |
|
|
| 1 | fan_guard_70.stl |
|
|
| 2 | fan_guard_80.stl |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Fixing_block"></a>
|
|
## Fixing_block
|
|
Fixing block to mount two sheets at right angles using threaded inserts.
|
|
Defaults to M3 but other screw sizes can be specified provided they have inserts defined.
|
|
|
|
See [butt_box](#Butt_box) for an example of usage.
|
|
|
|
Note that the block with its inserts is defined as a sub assembly, but its fasteners get added to the parent assembly.
|
|
|
|
Specific fasteners can be omitted by setting a side's thickness to 0 and the block omitted by setting ```show_block``` to false.
|
|
This allows the block and one set of fasteners to be on one assembly and the other fasteners on the mating assemblies.
|
|
|
|
Star washers can be omitted by setting ```star_washers``` to false.
|
|
|
|
|
|
[printed/fixing_block.scad](printed/fixing_block.scad) Implementation.
|
|
|
|
[tests/fixing_block.scad](tests/fixing_block.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```fixing_block_depth(screw = def_screw)``` | Depth given screw size |
|
|
| ```fixing_block_h_hole(screw = def_screw)``` | Returns transform to position the horizontal screw |
|
|
| ```fixing_block_height(screw = def_screw)``` | Height given screw size, same as depth |
|
|
| ```fixing_block_holes(screw)``` | Returns a list of transforms to position all the screws |
|
|
| ```fixing_block_screw()``` | Default screw type |
|
|
| ```fixing_block_v_holes(screw = def_screw)``` | Returns a list of transforms to position the vertical screws |
|
|
| ```fixing_block_width(screw = def_screw)``` | Width given screw size |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```fastened_fixing_block_assembly(thickness, screw = def_screw, screw2 = undef, thickness2 = undef, show_block = true, star_washers = true)``` | Assembly with fasteners in place |
|
|
| ```fixing_block(screw = def_screw)``` | Generate the STL |
|
|
| ```fixing_block_assembly(screw = def_screw)``` | Printed part with the inserts inserted |
|
|
| ```fixing_block_h_hole(screw = def_screw)``` | Position children on the horizontal hole |
|
|
| ```fixing_block_h_hole_2D(screw = def_screw)``` | Position 2D child on the horizontal hole |
|
|
| ```fixing_block_holes(screw = def_screw)``` | Position children on all the holes |
|
|
| ```fixing_block_v_holes(screw = def_screw)``` | Position children on the vertical holes |
|
|
|
|
![fixing_block](tests/png/fixing_block.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 3 | ```insert(F1BM2)``` | Heatfit insert M2 |
|
|
| 3 | ```insert(F1BM2p5)``` | Heatfit insert M2.5 |
|
|
| 3 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
|
| 3 | ```insert(F1BM4)``` | Heatfit insert M4 |
|
|
| 3 | ```screw(M2_cap_screw, 8)``` | Screw M2 cap x 8mm |
|
|
| 3 | ```screw(M2p5_pan_screw, 10)``` | Screw M2.5 pan x 10mm |
|
|
| 3 | ```screw(M3_dome_screw, 10)``` | Screw M3 dome x 10mm |
|
|
| 3 | ```screw(M4_dome_screw, 16)``` | Screw M4 dome x 16mm |
|
|
| 3 | ```washer(M2_washer)``` | Washer M2 x 5mm x 0.3mm |
|
|
| 3 | ```washer(M2p5_washer)``` | Washer M2.5 x 5.9mm x 0.5mm |
|
|
| 3 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 3 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
| 3 | ```star_washer(M2_washer)``` | Washer star M2 x 0.3mm |
|
|
| 3 | ```star_washer(M2p5_washer)``` | Washer star M2.5 x 0.5mm |
|
|
| 3 | ```star_washer(M3_washer)``` | Washer star M3 x 0.5mm |
|
|
| 3 | ```star_washer(M4_washer)``` | Washer star M4 x 0.8mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | fixing_block_M20.stl |
|
|
| 1 | fixing_block_M25.stl |
|
|
| 1 | fixing_block_M30.stl |
|
|
| 1 | fixing_block_M40.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | fixing_block_M20_assembly |
|
|
| 1 | fixing_block_M25_assembly |
|
|
| 1 | fixing_block_M30_assembly |
|
|
| 1 | fixing_block_M40_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Flat_hinge"></a>
|
|
## Flat_hinge
|
|
A parametric flat hinge. A piece of filament can be used for the hinge pin.
|
|
|
|
The width, depth, thickness, number and type of screws, number of knuckles, knuckle diameter, pin diameter and clearance can all be varied.
|
|
A margin between the screws and the knuckle edge can be enforced to allow the hinge to bend all the way back to 270° from closed.
|
|
|
|
Opening the test in OpenSCAD with its customiser enabled allows these parameters to be played with.
|
|
|
|
Note setting ```thickness1``` or ```thickness2``` to zero in the ```hinge_fastened_assembly()``` removes the screws from one side or the other and
|
|
setting ```show_hinge``` to false removes the hinge.
|
|
This allows the hinges and one set of screws to belong to one assembly and the other set of screws to another assembly.
|
|
|
|
|
|
[printed/flat_hinge.scad](printed/flat_hinge.scad) Implementation.
|
|
|
|
[tests/flat_hinge.scad](tests/flat_hinge.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```hinge_clearance(type)``` | Clearance between knuckles |
|
|
| ```hinge_depth(type)``` | Depth of each leaf |
|
|
| ```hinge_knuckle_dia(type)``` | The knuckle diameter |
|
|
| ```hinge_knuckles(type)``` | How many knuckles |
|
|
| ```hinge_margin(type)``` | How far to keep the screws from the knuckes |
|
|
| ```hinge_pin_dia(type)``` | The pin diameter |
|
|
| ```hinge_screw(type)``` | Screw type to mount it |
|
|
| ```hinge_screws(type)``` | How many screws |
|
|
| ```hinge_thickness(type)``` | Thickness of the leaves |
|
|
| ```hinge_width(type)``` | Width |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```flat_hinge(name, size, pin_d, knuckle_d, knuckles, screw, screws, clearance, margin)``` | Construct the property list for a flat hinge. |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```hinge_both(type)``` | Both parts together for printing |
|
|
| ```hinge_fastened_assembly(type, thickness1, thickness2, angle, show_hinge = true)``` | Assembled hinge with its fasteners |
|
|
| ```hinge_male(type, female = false)``` | The half with the stationary pin |
|
|
| ```hinge_screw_positions(type)``` | Place children at the screw positions |
|
|
|
|
![flat_hinge](tests/png/flat_hinge.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | | Hinge pin 20 x 2.85mm |
|
|
| 1 | | Hinge pin 50 x 4mm |
|
|
| 14 | ```nut(M3_nut, nyloc = true)``` | Nut M3 x 2.4mm nyloc |
|
|
| 4 | ```screw(M3_dome_screw, 10)``` | Screw M3 dome x 10mm |
|
|
| 10 | ```screw(M3_dome_screw, 12)``` | Screw M3 dome x 12mm |
|
|
| 28 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | hinge_female_big.stl |
|
|
| 1 | hinge_female_small.stl |
|
|
| 1 | hinge_male_big.stl |
|
|
| 1 | hinge_male_small.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | hinge_big_assembly |
|
|
| 1 | hinge_small_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Foot"></a>
|
|
## Foot
|
|
Customisable printed rubber feet for equipment cases. The insert variant is better for solid feet because
|
|
inserts don't grip well in rubber.
|
|
|
|
|
|
[printed/foot.scad](printed/foot.scad) Implementation.
|
|
|
|
[tests/foot.scad](tests/foot.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```foot_diameter(type = foot)``` | Outside maximum diameter |
|
|
| ```foot_height(type = foot)``` | Total height |
|
|
| ```foot_rad(type = foot)``` | Rounded corner radius |
|
|
| ```foot_screw(type = foot)``` | Screw type |
|
|
| ```foot_slant(type = foot)``` | Taper angle |
|
|
| ```foot_thickness(type = foot)``` | Thickness under the screw |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```Foot(d, h, t, r, screw, slant = 10)``` | Construct a foot property list |
|
|
| ```insert_foot()``` | Default foot with insert |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```fastened_insert_foot_assembly(t = 3, type = insert_foot)``` | Assembly with fasteners in place for specified sheet thickness |
|
|
| ```foot(type = foot)``` | Generate STL |
|
|
| ```foot_assembly(t = 0, type = foot, flip = false)``` | Assembly with fasteners in place for specified sheet thickness |
|
|
| ```insert_foot(type = insert_foot)``` | Generate STL for foot with insert |
|
|
| ```insert_foot_assembly(type = insert_foot)``` | Printed part with insert in place |
|
|
|
|
![foot](tests/png/foot.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
|
| 1 | ```nut(M4_nut, nyloc = true)``` | Nut M4 x 3.2mm nyloc |
|
|
| 1 | ```screw(M3_cap_screw, 8)``` | Screw M3 cap x 8mm |
|
|
| 1 | ```screw(M4_cap_screw, 16)``` | Screw M4 cap x 16mm |
|
|
| 1 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 2 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
| 1 | ```star_washer(M3_washer)``` | Washer star M3 x 0.5mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | foot.stl |
|
|
| 1 | insert_foot.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | insert_foot_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Handle"></a>
|
|
## Handle
|
|
Printed handle that can be printed without needing support material due to its truncated teardrop profile.
|
|
|
|
|
|
[printed/handle.scad](printed/handle.scad) Implementation.
|
|
|
|
[tests/handle.scad](tests/handle.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```handle_height()``` | Total height |
|
|
| ```handle_length()``` | Outside length |
|
|
| ```handle_screw()``` | The screw type |
|
|
| ```handle_width()``` | The width, i.e. diameter |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```handle_assembly()``` | Printed part with inserts in place |
|
|
| ```handle_fastened_assembly(thickness)``` | Assembly with fasteners in place |
|
|
| ```handle_holes(h = 100)``` | Drills holes for the screws |
|
|
| ```handle_screw_positions()``` | Position children at the screw positions |
|
|
| ```handle_stl()``` | generate the STL |
|
|
|
|
![handle](tests/png/handle.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 2 | ```insert(F1BM4)``` | Heatfit insert M4 |
|
|
| 2 | ```screw(M4_cap_screw, 16)``` | Screw M4 cap x 16mm |
|
|
| 2 | ```washer(M4_washer)``` | Washer M4 x 9mm x 0.8mm |
|
|
| 2 | ```star_washer(M4_washer)``` | Washer star M4 x 0.8mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | handle.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | handle_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="PCB_mount"></a>
|
|
## PCB_mount
|
|
A frame to mount a PCB by its corners when it has no mounting holes.
|
|
The stl must be given a parameterless wrapper in the project that uses it.
|
|
|
|
|
|
[printed/pcb_mount.scad](printed/pcb_mount.scad) Implementation.
|
|
|
|
[tests/PCB_mount.scad](tests/PCB_mount.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```pcb_mount_length(pcb)``` | Outside length of the mount |
|
|
| ```pcb_mount_width(pcb)``` | Outside width of the mount |
|
|
| ```pillar_x_pitch(pcb)``` | x pitch of screw pillars |
|
|
| ```pillar_y_pitch(pcb)``` | y pitch of screw pillars |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```pcb_mount(pcb, height = 5, washers = true)``` | Make the STL of a pcb mount for the specified PCB. |
|
|
| ```pcb_mount_assembly(pcb, thickness, height = 5)``` | A PCB mount assembly with fasteners |
|
|
| ```pcb_mount_holes(pcb, h = 0)``` | Drill holes for PCB mount |
|
|
| ```pcb_mount_screw_positions(pcb)``` | Positions of the screws and pillars |
|
|
| ```pcb_mount_washer_stl()``` | A plastic washer to clamp a PCB |
|
|
|
|
![pcb_mount](tests/png/pcb_mount.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 4 | ```nut(M3_nut, nyloc = true)``` | Nut M3 x 2.4mm nyloc |
|
|
| 1 | ```pcb(PI_IO)``` | PI_IO V2 |
|
|
| 1 | ```pin_socket(2p54header, 13, 2)``` | Pin socket 13 x 2 |
|
|
| 4 | ```screw(M3_cap_screw, 16)``` | Screw M3 cap x 16mm |
|
|
| 3 | ```terminal_35(2)``` | Terminal block 2 way 3.5mm |
|
|
| 4 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | pcb_mount_PI_IO_5.stl |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Press_fit"></a>
|
|
## Press_fit
|
|
Utility for making printed press fit connectors to join printed parts.
|
|
|
|
Add solvent or glue to make a permanent fixture.
|
|
|
|
|
|
[printed/press_fit.scad](printed/press_fit.scad) Implementation.
|
|
|
|
[tests/press_fit.scad](tests/press_fit.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```press_fit_peg(h, w = 5, horizontal = false)``` | Make a rounded chamfered peg for easy insertion |
|
|
| ```press_fit_socket(w = 5, h = 50, horizontal = false)``` | Make a square hole to accept a peg |
|
|
|
|
![press_fit](tests/png/press_fit.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Printed_box"></a>
|
|
## Printed_box
|
|
A fully parametric 3D printed case that can be customised with cutouts and additions specified by children.
|
|
|
|
The walls can be made wavy, which possibly reduces warping when printing and looks nice, however if holes need to be made
|
|
in the sides you can't print a wavy bridge. Any holes need to be surrounded by a 45° chamfer to make the bridges straight.
|
|
See the mounting points for the feet in the first example.
|
|
|
|
It can also have printed feet on the base with the screws doubling up to hold the base on.
|
|
|
|
|
|
[printed/printed_box.scad](printed/printed_box.scad) Implementation.
|
|
|
|
[tests/printed_box.scad](tests/printed_box.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```pbox_base(type)``` | Base thickness, can be zero for no base |
|
|
| ```pbox_base_screw(type)``` | Screw type if no feet |
|
|
| ```pbox_depth(type)``` | Internal depth |
|
|
| ```pbox_foot(type)``` | Printed foot, can be false to suppress feet |
|
|
| ```pbox_height(type)``` | Internal height |
|
|
| ```pbox_name(type)``` | Name to allow more than one box in a project |
|
|
| ```pbox_radius(type)``` | Internal corner radius |
|
|
| ```pbox_ridges(type)``` | Ridge wavelength and amplitude |
|
|
| ```pbox_top(type)``` | Top thickness |
|
|
| ```pbox_wall(type)``` | Wall thickness |
|
|
| ```pbox_width(type)``` | Internal width |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```pbox(name, wall, top_t, base_t, radius, size, foot = false, screw = false, ridges = [0, 0])``` | Construct a printed box property list |
|
|
| ```pbox_inclusion(type)``` | How far the ledge for the base extends inwards |
|
|
| ```pbox_insert(type)``` | The insert for the base screws |
|
|
| ```pbox_screw(type)``` | Foot screw if got feet else base_screw |
|
|
| ```pbox_screw_inset(type)``` | How far the base screws are inset |
|
|
| ```pbox_screw_length(type, panel_thickness = 0)``` | Length of the base screw |
|
|
| ```pbox_total_height(type)``` | Total height including base overlap |
|
|
| ```pbox_washer(type)``` | The washer for the base screws |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```pbox(type)``` | Generate the STL for the main case |
|
|
| ```pbox_base(type)``` | Generate the STL for the base |
|
|
| ```pbox_base_screws(type, thickness = 0)``` | Place the screws and feet |
|
|
| ```pbox_inserts(type)``` | Place the inserts for the base screws |
|
|
| ```pbox_outer_shape(type)``` | 2D outer shape of the box |
|
|
| ```pbox_screw_positions(type)``` | Place children at base screw positions |
|
|
|
|
![printed_box](tests/png/printed_box.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 4 | ```insert(F1BM2)``` | Heatfit insert M2 |
|
|
| 4 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
|
| 4 | ```screw(M2_cap_screw, 6)``` | Screw M2 cap x 6mm |
|
|
| 3 | ```screw(M3_pan_screw, 6)``` | Screw M3 pan x 6mm |
|
|
| 4 | ```screw(M3_pan_screw, 10)``` | Screw M3 pan x 10mm |
|
|
| 4 | ```washer(M2_washer)``` | Washer M2 x 5mm x 0.3mm |
|
|
| 7 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | box1.stl |
|
|
| 1 | box1_base.stl |
|
|
| 7 | foot.stl |
|
|
| 1 | smooth_box.stl |
|
|
| 1 | smooth_box_base.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | box1_assembly |
|
|
| 1 | box2_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="PSU_shroud"></a>
|
|
## PSU_shroud
|
|
A cover to go over the mains end of a PSU terminal strip to make it safe.
|
|
The stl and assembly must be given a name and parameterless wrappers for the stl and assembly added to the project.
|
|
|
|
|
|
[printed/psu_shroud.scad](printed/psu_shroud.scad) Implementation.
|
|
|
|
[tests/PSU_shroud.scad](tests/PSU_shroud.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```psu_shroud_cable_pitch(cable_d)``` | Pitch between cable entries |
|
|
| ```psu_shroud_centre_y(type)``` | Shroud centre relative to PSU centre |
|
|
| ```psu_shroud_depth(type)``` | Outside depth of the shroud |
|
|
| ```psu_shroud_extent(type)``` | How far it extends beyond the PSU to clear the connections |
|
|
| ```psu_shroud_height(type)``` | Outside height |
|
|
| ```psu_shroud_screw(type)``` | Screw used to fasten |
|
|
| ```psu_shroud_width(type)``` | Outside width of the shroud |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```psu_shroud(type, cable_d, name, cables = 1)``` | Generate the STL file for a specified ssr and cable |
|
|
| ```psu_shroud_assembly(type, cable_d, name, cables = 1)``` | The printed parts with inserts fitted |
|
|
| ```psu_shroud_cable_positions(type, cable_d, cables = 1)``` | Place children at the cable tie positions |
|
|
| ```psu_shroud_fastened_assembly(type, cable_d, thickness, name, cables = 1)``` | Assembly with screws in place |
|
|
| ```psu_shroud_hole_positions(type)``` | Place children at the screw hole positions |
|
|
| ```psu_shroud_holes(type, cable_d, cables = 1)``` | Drill the screw and ziptie holes |
|
|
|
|
![psu_shroud](tests/png/psu_shroud.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 6 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
|
| 6 | ```screw(M3_cap_screw, 10)``` | Screw M3 cap x 10mm |
|
|
| 6 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 6 | ```star_washer(M3_washer)``` | Washer star M3 x 0.5mm |
|
|
| 3 | ```ziptie(small_ziptie, 3)``` | Ziptie 2.5mm x 100mm min length |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | psu_shroud_PD_150_12.stl |
|
|
| 1 | psu_shroud_S_250_48.stl |
|
|
| 1 | psu_shroud_S_300_12.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | PSU_shroud_PD_150_12_assembly |
|
|
| 1 | PSU_shroud_S_250_48_assembly |
|
|
| 1 | PSU_shroud_S_300_12_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Ribbon_clamp"></a>
|
|
## Ribbon_clamp
|
|
Clamp for ribbon cable and polypropylene strip.
|
|
|
|
|
|
[printed/ribbon_clamp.scad](printed/ribbon_clamp.scad) Implementation.
|
|
|
|
[tests/ribbon_clamp.scad](tests/ribbon_clamp.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```ribbon_clamp_height(screw = screw)``` | Height |
|
|
| ```ribbon_clamp_length(ways, screw = screw)``` | Length given ways |
|
|
| ```ribbon_clamp_width(screw = screw)``` | Width |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```ribbon_clamp(ways, screw = screw)``` | Generate STL for given number of ways |
|
|
| ```ribbon_clamp_assembly(ways, screw = screw)``` | Printed part with inserts in place |
|
|
| ```ribbon_clamp_fastened_assembly(ways, thickness, screw = screw)``` | Clamp with fasteners in place |
|
|
| ```ribbon_clamp_hole_positions(ways, screw = screw, side = undef)``` | Place children at hole positions |
|
|
| ```ribbon_clamp_holes(ways, h = 20, screw = screw)``` | Drill screw holes |
|
|
|
|
![ribbon_clamp](tests/png/ribbon_clamp.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 2 | ```insert(F1BM2)``` | Heatfit insert M2 |
|
|
| 2 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
|
| 1 | | Ribbon cable 20 way 100mm |
|
|
| 1 | | Ribbon cable 8 way 100mm |
|
|
| 2 | ```screw(M2_dome_screw, 8)``` | Screw M2 dome x 8mm |
|
|
| 2 | ```screw(M3_cap_screw, 10)``` | Screw M3 cap x 10mm |
|
|
| 1 | | Tape self amalgamating silicone 11 x 25mm |
|
|
| 1 | | Tape self amalgamating silicone 26 x 25mm |
|
|
| 2 | ```washer(M2_washer)``` | Washer M2 x 5mm x 0.3mm |
|
|
| 2 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 2 | ```star_washer(M2_washer)``` | Washer star M2 x 0.3mm |
|
|
| 2 | ```star_washer(M3_washer)``` | Washer star M3 x 0.5mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | ribbon_clamp_20.stl |
|
|
| 1 | ribbon_clamp_8_2.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | ribbon_clamp_20_assembly |
|
|
| 1 | ribbon_clamp_8_2_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Screw_knob"></a>
|
|
## Screw_knob
|
|
Knob with embedded hex head screw.
|
|
|
|
|
|
[printed/screw_knob.scad](printed/screw_knob.scad) Implementation.
|
|
|
|
[tests/screw_knob.scad](tests/screw_knob.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```screw_knob(screw)``` | Generate the STL for a knob to fit the specified hex screw |
|
|
| ```screw_knob_assembly(screw, length)``` | Assembly with the screw in place |
|
|
|
|
![screw_knob](tests/png/screw_knob.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```screw(M3_hex_screw, 16)``` | Screw M3 hex x 16mm |
|
|
| 1 | ```screw(M4_hex_screw, 16)``` | Screw M4 hex x 16mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | screw_knob_M30.stl |
|
|
| 1 | screw_knob_M40.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | screw_knob_M30_16_assembly |
|
|
| 1 | screw_knob_M40_16_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Socket_box"></a>
|
|
## Socket_box
|
|
UK 13A socket and printed backbox with earth terminal for the panel it is mounted on.
|
|
|
|
|
|
[printed/socket_box.scad](printed/socket_box.scad) Implementation.
|
|
|
|
[tests/socket_box.scad](tests/socket_box.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```socket_box_depth()``` | Outside depth of the backbox |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```socket_box(type)``` | Generate STL of the backbox for the specified socket |
|
|
| ```socket_box_assembly(type)``` | The box with inserts fitted |
|
|
| ```socket_box_fastened_assembly(type, thickness)``` | The socket and backbox on each side of the specified panel thickness |
|
|
|
|
![socket_box](tests/png/socket_box.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 4 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
|
| 1 | ```mains_socket(Contactum)``` | Mains socket 13A |
|
|
| 1 | ```mains_socket(MKLOGIC)``` | Mains socket 13A, switched |
|
|
| 2 | ```nut(M3_nut, nyloc = true)``` | Nut M3 x 2.4mm nyloc |
|
|
| 2 | ```ring_terminal(M3_ringterm)``` | Ring terminal 3mm |
|
|
| 4 | ```screw(M3_cs_cap_screw, 20)``` | Screw M3 cs cap x 20mm |
|
|
| 2 | ```screw(M3_dome_screw, 10)``` | Screw M3 dome x 10mm |
|
|
| 4 | ```star_washer(M3_washer)``` | Washer star M3 x 0.5mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | socket_box_Contactum.stl |
|
|
| 1 | socket_box_MKLOGIC.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | socket_box_Contactum_assembly |
|
|
| 1 | socket_box_MKLOGIC_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="SSR_shroud"></a>
|
|
## SSR_shroud
|
|
A cover to go over the mains end of an SSR to make it safe to be touched.
|
|
The STL and assembly must be given a name and parameterless wrappers for the stl and assembly added to the project.
|
|
|
|
|
|
[printed/ssr_shroud.scad](printed/ssr_shroud.scad) Implementation.
|
|
|
|
[tests/SSR_shroud.scad](tests/SSR_shroud.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```ssr_shroud_cable_x(type, cable_d)``` | Position of cable entry holes |
|
|
| ```ssr_shroud_extent(type, cable_d)``` | How far it extends beyond the SSR |
|
|
| ```ssr_shroud_height(type)``` | Outside height |
|
|
| ```ssr_shroud_screw(type)``` | Screw used to fasten |
|
|
| ```ssr_shroud_width(type)``` | Outside width of shroud |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```ssr_shroud(type, cable_d, name)``` | Generate the STL file for a specified ssr and cable |
|
|
| ```ssr_shroud_assembly(type, cable_d, name)``` | The printed parts with inserts fitted |
|
|
| ```ssr_shroud_fastened_assembly(type, cable_d, thickness, name)``` | Assembly with screws in place |
|
|
| ```ssr_shroud_hole_positions(type)``` | Place children at the screw hole positions |
|
|
| ```ssr_shroud_holes(type, cable_d)``` | Drill the screw and ziptie holes |
|
|
|
|
![ssr_shroud](tests/png/ssr_shroud.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 4 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
|
| 4 | ```screw(M3_cap_screw, 10)``` | Screw M3 cap x 10mm |
|
|
| 4 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 4 | ```star_washer(M3_washer)``` | Washer star M3 x 0.5mm |
|
|
| 4 | ```ziptie(small_ziptie, 3)``` | Ziptie 2.5mm x 100mm min length |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | ssr_shroud_SSR10DA.stl |
|
|
| 1 | ssr_shroud_SSR25DA.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | SSR_shroud_SSR10DA_assembly |
|
|
| 1 | SSR_shroud_SSR25DA_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Strap_handle"></a>
|
|
## Strap_handle
|
|
Retracting strap handle. Print the strap with flexible filament. Shown with default dimensions but can
|
|
be fully customised by passing a list of properties.
|
|
|
|
|
|
[printed/strap_handle.scad](printed/strap_handle.scad) Implementation.
|
|
|
|
[tests/strap_handle.scad](tests/strap_handle.scad) Code for this example.
|
|
|
|
### Properties
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```strap_extension(type = strap)``` | How much length of the strap that can pull out |
|
|
| ```strap_panel(type = strap)``` | Panel thickness |
|
|
| ```strap_screw(type = strap)``` | Screw type |
|
|
| ```strap_thickness(type = strap)``` | Thickness of strap |
|
|
| ```strap_width(type = strap)``` | Width of strap |
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```strap(width = 18, thickness = 2, screw = M3_pan_screw, panel_thickness = 3, extension = 25)``` | Construct a property list for a strap |
|
|
| ```strap_end_width(type = strap)``` | Width of the ends |
|
|
| ```strap_height(type)``` | Height of the ends |
|
|
| ```strap_insert(type)``` | The insert type |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```strap(length, type = strap)``` | Generate the STL for the rubber strap |
|
|
| ```strap_assembly(length, type = strap)``` | Assembly with screws in place |
|
|
| ```strap_end(type = strap)``` | Generate the STL for end piece |
|
|
| ```strap_holes(length, type = strap, h = 100)``` | The panel cut outs |
|
|
| ```strap_screw_positions(length, type = strap)``` | Place children at the screw positions |
|
|
|
|
![strap_handle](tests/png/strap_handle.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 2 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
|
| 2 | ```screw(M3_pan_screw, 8)``` | Screw M3 pan x 8mm |
|
|
| 2 | ```washer(M3_penny_washer)``` | Washer penny M3 x 12mm x 0.8mm |
|
|
| 2 | ```star_washer(M3_washer)``` | Washer star M3 x 0.5mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | strap.stl |
|
|
| 2 | strap_end.stl |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 2 | strap_end_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Annotation"></a>
|
|
## Annotation
|
|
Annotation used in this documentation
|
|
|
|
|
|
[utils/annotation.scad](utils/annotation.scad) Implementation.
|
|
|
|
[tests/annotation.scad](tests/annotation.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```arrow(length = 20)``` | Draw an arrow that faces downwards |
|
|
| ```label(str, scale = 0.25, valign = "baseline", halign = "left")``` | Draw text that always faces the camera |
|
|
|
|
![annotation](tests/png/annotation.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Bezier"></a>
|
|
## Bezier
|
|
Bezier curves and function to get and adjust the length or minimum z point.
|
|
|
|
|
|
[utils/bezier.scad](utils/bezier.scad) Implementation.
|
|
|
|
[tests/bezier.scad](tests/bezier.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```adjust_bezier_length(v, l, eps = 0.001, r1 = 1.0, r2 = 1.5, l1, l2)``` | Adjust Bezier control points ```v``` to get the required curve length ```l``` |
|
|
| ```adjust_bezier_z(v, z, eps = 0.001, r1 = 1, r2 = 1.5, z1, z2)``` | Adjust Bezier control points ```v``` to get the required minimum ```z``` |
|
|
| ```bezier(t, v)``` | Returns a point at distance ```t``` [0 - 1] along the curve with control points ```v``` |
|
|
| ```bezier_length(v, delta = 0.01, t = 0, length = 0)``` | Calculate the length of a Bezier curve from control points ```v``` |
|
|
| ```bezier_min_z(v, steps = 100, z = inf, i = 0)``` | Calculate the minimum z coordinate of a Bezier curve from control points ```v``` |
|
|
| ```bezier_path(v, steps = 100)``` | Returns a Bezier path from control points ```v``` with ```steps``` segments |
|
|
|
|
![bezier](tests/png/bezier.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Catenary"></a>
|
|
## Catenary
|
|
Catenary curve to model hanging wires, etc.
|
|
|
|
Although the equation of the curve is simply ```y = a cosh(x / a)``` there is no explicit formula to calculate the constant ```a``` or the range of ```x``` given the
|
|
length of the cable and the end point coordinates. See <https://en.wikipedia.org/wiki/Catenary#Determining_parameters>. The Newton-Raphson method is used to find
|
|
```a``` numerically, see <https://en.wikipedia.org/wiki/Newton%27s_method>.
|
|
|
|
The coordinates of the lowest point on the curve can be retrieved by calling ```catenary_points()``` with ```steps``` equal to zero.
|
|
|
|
|
|
[utils/catenary.scad](utils/catenary.scad) Implementation.
|
|
|
|
[tests/catenary.scad](tests/catenary.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```catenary(t, a)``` | Parametric catenary function linear along the length of the curve. |
|
|
| ```catenary_ds_by_da(d, a)``` | First derivative of the length with respect to ```a```. |
|
|
| ```catenary_find_a(d, l, a = 1, best_e = inf, best_a = 1)``` | Find the catenary constant ```a```, given half the horizontal span and the length. |
|
|
| ```catenary_points(l, x, y, steps = 100)``` | Returns a list of 2D points on the curve that goes from the origin to ```(x,y)``` and has length ```l```. |
|
|
| ```catenary_s(d, a)``` | Length of a symmetric catenary with width ```2d```. |
|
|
|
|
![catenary](tests/png/catenary.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Dogbones"></a>
|
|
## Dogbones
|
|
When square holes are cut with a CNC bit they get rounded corners. If it is important that
|
|
a square cornered part fits in the hole then circles are placed in the corners making a bone shape.
|
|
|
|
|
|
[utils/dogbones.scad](utils/dogbones.scad) Implementation.
|
|
|
|
[tests/dogbones.scad](tests/dogbones.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```dogbone_rectangle(size, r = cnc_bit_r, center = true, xy_center = true)``` | Rectangle with cylinders at the corners |
|
|
| ```dogbone_square(size, r = cnc_bit_r, center = true)``` | Square with circles at the corners |
|
|
|
|
![dogbones](tests/png/dogbones.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Fillet"></a>
|
|
## Fillet
|
|
Rounded fillet for adding to corners.
|
|
|
|
|
|
[utils/fillet.scad](utils/fillet.scad) Implementation.
|
|
|
|
[tests/fillet.scad](tests/fillet.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```fillet(r, h, center = false)``` | Fillet with specified radius and height |
|
|
|
|
![fillet](tests/png/fillet.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Gears"></a>
|
|
## Gears
|
|
Utilities for making involute gears.
|
|
|
|
Formulas from <https://khkgears.net/new/gear_knowledge/gear_technical_reference/involute_gear_profile.html>
|
|
<https://khkgears.net/new/gear_knowledge/gear_technical_reference/calculation_gear_dimensions.html>
|
|
and <https://www.tec-science.com/mechanical-power-transmission/involute-gear/calculation-of-involute-gears/>
|
|
|
|
```involute_gear_profile()``` returns a polygon that can have the bore and spokes, etc, subtracted from it before linear extruding it to 3D.
|
|
Helical gears can be made using ```twist``` and bevel gears using ```scale``` parameters of ```linear_extrude()```.
|
|
|
|
Gears with less than 19 teeth (when pressure angle is 20) are profile shifted to avoid undercutting the tooth root. 7 teeth is considered
|
|
the practical minimum.
|
|
|
|
The clearance between tip and root defaults to module / 6, but can be overridden by setting the ```clearance``` parameter.
|
|
|
|
The origin of the rack is the left end of the pitch line and its width is below the pitch line. I.e. it does not include the addendum.
|
|
|
|
```involute_worm_profile()``` returns a tooth profile that can be passed to ```thread()``` to make worms.
|
|
|
|
|
|
[utils/gears.scad](utils/gears.scad) Implementation.
|
|
|
|
[tests/gears.scad](tests/gears.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```centre_distance(m, z1, z2, pa = 20)``` | Calculate distance between centres taking profile shift into account |
|
|
| ```involute(r, u)``` | Involute of circle radius r at angle u in radians |
|
|
| ```involute_gear_od(m, z, pa = 20)``` | involute gear outside diameter given modulus, tooth count and pressure angle |
|
|
| ```involute_rack_tooth_profile(m, pa = 20, clearance = undef)``` | Calculate rack tooth profile given module and pressure angle |
|
|
| ```involute_worm_profile(m, pa = 20, clearance = undef)``` | Calculate worm profile suitable for passing to thread() |
|
|
| ```profile_shift(z, pa)``` | Calculate profile shift for small gears |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```involute_gear_profile(m, z, pa = 20, clearance = undef, steps = 20)``` | Calculate gear profile given module, number of teeth and pressure angle |
|
|
| ```involute_rack_profile(m, z, w, pa = 20, clearance = undef)``` | Calculate rack profile given module, number of teeth and pressure angle |
|
|
|
|
![gears](tests/png/gears.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Hanging_hole"></a>
|
|
## Hanging_hole
|
|
Method to print holes in mid air. See <https://hydraraptor.blogspot.com/2014/03/buried-nuts-and-hanging-holes.html>
|
|
|
|
|
|
[utils/hanging_hole.scad](utils/hanging_hole.scad) Implementation.
|
|
|
|
[tests/hanging_hole.scad](tests/hanging_hole.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```hanging_hole(z, ir, h = 100, h2 = 100)``` | Hole radius ```ir``` hanging at the specified ```z``` value above a void who's shape is given by a 2D child |
|
|
|
|
![hanging_hole](tests/png/hanging_hole.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Horiholes"></a>
|
|
## Horiholes
|
|
Utilities for depicting the staircase slicing of horizontal holes made with [`teardrop_plus()`](#teardrops), see <https://hydraraptor.blogspot.com/2020/07/horiholes-2.html>
|
|
|
|
```horicylinder()``` makes cylinders that fit inside a round hole. Layers that are less than 2 filaments wide and layers that need more than a 45 degree overhang are omitted.
|
|
|
|
|
|
[utils/horiholes.scad](utils/horiholes.scad) Implementation.
|
|
|
|
[tests/horiholes.scad](tests/horiholes.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```teardrop_minus_x(r, y, h)``` | Calculate the ordinate of a compensated teardrop given y and layer height. |
|
|
| ```teardrop_plus_x(r, y, h)``` | Calculate the ordinate of a compensated teardrop given y and layer height. |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```horicylinder(r, z, h = 0, center = true)``` | For making horizontal cylinders that don't need support material and are correct dimensions |
|
|
| ```horihole(r, z, h = 0, center = true)``` | For making horizontal holes that don't need support material and are correct dimensions |
|
|
|
|
![horiholes](tests/png/horiholes.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Layout"></a>
|
|
## Layout
|
|
Layout objects in a line with equal gaps given a vector of their widths.
|
|
|
|
|
|
[utils/layout.scad](utils/layout.scad) Implementation.
|
|
|
|
[tests/layout.scad](tests/layout.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```layout_offset(widths, i, gap = 2)``` | Calculate the offset for the ```i```th item |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```layout(widths, gap = 2, no_offset = false)``` | Layout children passing ```$i``` |
|
|
|
|
![layout](tests/png/layout.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Maths"></a>
|
|
## Maths
|
|
Maths utilities for manipulating vectors and matrices.
|
|
|
|
|
|
[utils/maths.scad](utils/maths.scad) Implementation.
|
|
|
|
[tests/maths.scad](tests/maths.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```angle_between(v1, v2)``` | Return the angle between two vectors |
|
|
| ```argcosh(x)``` | inverse hyperbolic cosine |
|
|
| ```argcoth(x)``` | inverse hyperbolic cotangent |
|
|
| ```argsinh(x)``` | inverse hyperbolic sine |
|
|
| ```argtanh(x)``` | inverse hyperbolic tangent |
|
|
| ```augment(m)``` | Augment a matrix by adding an identity matrix to the right |
|
|
| ```circle_intersect(c1, r1, c2, r2)``` | Calculate one point where two circles in the X-Z plane intersect, clockwise around c1 |
|
|
| ```cosh(x)``` | hyperbolic cosine |
|
|
| ```coth(x)``` | hyperbolic cotangent |
|
|
| ```degrees(radians)``` | Convert degrees to radians |
|
|
| ```euler(R)``` | Convert a rotation matrix to a Euler rotation vector. |
|
|
| ```identity(n, x = 1)``` | Construct an arbitrary size identity matrix |
|
|
| ```invert(m)``` | Invert a matrix |
|
|
| ```nearly_zero(x)``` | True if x is close to zero |
|
|
| ```radians(degrees)``` | Convert radians to degrees |
|
|
| ```reverse(v)``` | Reverse a vector |
|
|
| ```rot2_z(a)``` | Generate a 2x2 matrix to rotate around z |
|
|
| ```rot3_z(a)``` | Generate a 3x3 matrix to rotate around z |
|
|
| ```rotate(a, v)``` | Generate a 4x4 rotation matrix, ```a``` can be a vector of three angles or a single angle around ```z```, or around axis ```v``` |
|
|
| ```rowswap(m, i, j)``` | Swap two rows of a matrix |
|
|
| ```scale(v)``` | Generate a 4x4 matrix that scales by ```v```, which can be a vector of xyz factors or a scalar to scale all axes equally |
|
|
| ```sinh(x)``` | hyperbolic sine |
|
|
| ```solve(m, i = 0, j = 0)``` | Solve each row ensuring diagonal is not zero |
|
|
| ```solve_row(m, i)``` | Make diagonal one by dividing the row by it and subtract from other rows to make column zero |
|
|
| ```sqr(x)``` | Square x |
|
|
| ```tanh(x)``` | hyperbolic tangent |
|
|
| ```transform(v, m)``` | Apply 4x4 transform to a 3 vector by extending it and cropping it again |
|
|
| ```transform_points(path, m)``` | Apply transform to a path |
|
|
| ```translate(v)``` | Generate a 4x4 translation matrix, ```v``` can be ```[x, y]```, ```[x, y, z]``` or ```z``` |
|
|
| ```transpose(m)``` | Transpose an arbitrary size matrix |
|
|
| ```unit(v)``` | Convert ```v``` to a unit vector |
|
|
| ```vec3(v)``` | Return a 3 vector with the first three elements of ```v``` |
|
|
| ```vec4(v)``` | Return a 4 vector with the first three elements of ```v``` |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```position_children(list, t)``` | Position children if they are on the Z = 0 plane when transformed by t |
|
|
|
|
![maths](tests/png/maths.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Offset"></a>
|
|
## Offset
|
|
3D offset using `minkowski` with a `sphere`, so very slow if `$fn` is not kept small. The offset can be positive or negative.
|
|
|
|
Can be used to round corners. Positive offsets will round convex corners, negative offsets round concave corners. To round both use [`round_3D()`](#round).
|
|
|
|
If `chamfer_base` is true then the bottom edge is made suitable for 3D printing by chamfering when the angle gets shallower than 45 degrees.
|
|
|
|
|
|
[utils/offset.scad](utils/offset.scad) Implementation.
|
|
|
|
[tests/offset.scad](tests/offset.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```offset_3D(r, chamfer_base = false)``` | Offset 3D shape by specified radius ```r```, positive or negative. |
|
|
|
|
![offset](tests/png/offset.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Quadrant"></a>
|
|
## Quadrant
|
|
Square with one rounded corner.
|
|
|
|
|
|
[utils/quadrant.scad](utils/quadrant.scad) Implementation.
|
|
|
|
[tests/quadrant.scad](tests/quadrant.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```quadrant(w, r, center = false)``` | Draw a square with one rounded corner, can be centered on the arc centre, when ```center``` is ```true```. |
|
|
|
|
![quadrant](tests/png/quadrant.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Round"></a>
|
|
## Round
|
|
Round 2D shapes using `offset()`, which is fast and 3D shapes with [`offset_3D()`](#offset), which is very slow.
|
|
|
|
A single radius can be specified or separate internal and external radii.
|
|
If `chamfer_base` is `true` for `round_3D()` then the bottom edge is made suitable for 3D printing by chamfering once the
|
|
the angle gets shallower than 45 degrees.
|
|
|
|
|
|
[utils/round.scad](utils/round.scad) Implementation.
|
|
|
|
[tests/round.scad](tests/round.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```round(r, ir = undef, or = undef)``` | Round a 2D child, single radius or separate inside and outside radii |
|
|
| ```round_3D(r, ir = undef, or = undef, chamfer_base = false)``` | Round a 3D child single radius or separate inside and outside radii |
|
|
|
|
![round](tests/png/round.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Rounded_cylinder"></a>
|
|
## Rounded_cylinder
|
|
Cylinder with a rounded end.
|
|
|
|
|
|
[utils/rounded_cylinder.scad](utils/rounded_cylinder.scad) Implementation.
|
|
|
|
[tests/rounded_cylinder.scad](tests/rounded_cylinder.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```rounded_corner(r, h, r2, ir = 0)``` | 2D version |
|
|
| ```rounded_cylinder(r, h, r2, ir = 0, angle = 360)``` | Rounded cylinder given radius ```r```, height ```h```, optional internal radius ```ir``` and optional ```angle``` |
|
|
|
|
![rounded_cylinder](tests/png/rounded_cylinder.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Rounded_polygon"></a>
|
|
## Rounded_polygon
|
|
Draw a polygon with rounded corners. Each element of the vector is the XY coordinate and a radius. Radius can be negative for a concave corner.
|
|
|
|
Because the tangents need to be calculated to find the length these can be calculated separately and re-used when drawing to save calculating them twice.
|
|
|
|
|
|
[utils/rounded_polygon.scad](utils/rounded_polygon.scad) Implementation.
|
|
|
|
[tests/rounded_polygon.scad](tests/rounded_polygon.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```rounded_polygon_length(points, tangents)``` | Calculate the length given the point list and the list of tangents computed by ``` rounded_polygon_tangents``` |
|
|
| ```rounded_polygon_tangents(points)``` | Compute the straight sections needed to draw and to compute the lengths |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```rounded_polygon(points, _tangents = undef)``` | Draw the rounded polygon from the point list, can pass the tangent list to save it being calculated |
|
|
|
|
![rounded_polygon](tests/png/rounded_polygon.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Sector"></a>
|
|
## Sector
|
|
A sector of a circle between two angles.
|
|
|
|
|
|
[utils/sector.scad](utils/sector.scad) Implementation.
|
|
|
|
[tests/sector.scad](tests/sector.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```sector(r, start_angle, end_angle)``` | Create specified sector given radius ```r```, ```start_angle``` and ```end_angle``` |
|
|
|
|
![sector](tests/png/sector.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Sweep"></a>
|
|
## Sweep
|
|
Utility to generate a polhedron by sweeping a 2D profile along a 3D path and utilities for generating paths.
|
|
|
|
The initial orientation is the Y axis of the profile points towards the initial center of curvature, Frenet-Serret style.
|
|
Subsequent rotations use the minimum rotation method.
|
|
|
|
The path can be open or closed. If closed sweep ensures that the start and end have the same rotation to line up.
|
|
An additional twist around the path can be specified. If the path is closed this should be a multiple of 360.
|
|
|
|
|
|
[utils/sweep.scad](utils/sweep.scad) Implementation.
|
|
|
|
[tests/sweep.scad](tests/sweep.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```after(path1, path2)``` | Translate ```path2``` so its start meets the end of ```path1``` and then concatenate |
|
|
| ```arc_points(r, a = [90, 0, 180], al = 90)``` | Generate the points of a circular arc |
|
|
| ```before(path1, path2)``` | Translate ```path1``` so its end meets the start of ```path2``` and then concatenate |
|
|
| ```cap(facets, segment = 0, end)``` | Create the mesh for an end cap |
|
|
| ```circle_points(r = 1, z = 0, dir = -1)``` | Generate the points of a circle, setting z makes a single turn spiral |
|
|
| ```helical_twist_per_segment(r, pitch, sides)``` | Calculate the twist around Z that rotate_from_to() introduces |
|
|
| ```path_length(path, i = 0, length = 0)``` | Calculated the length along a path |
|
|
| ```rectangle_points(w, h)``` | Generate the points of a rectangle |
|
|
| ```skin_faces(points, npoints, facets, loop, offset = 0)``` | Create the mesh for the swept volume without end caps |
|
|
| ```sweep(path, profile, loop = false, twist = 0)``` | Generate the point list and face list of the swept volume |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```sweep(path, profile, loop = false, twist = 0, convexity = 1)``` | Draw a polyhedron that is the swept volume |
|
|
|
|
![sweep](tests/png/sweep.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Thread"></a>
|
|
## Thread
|
|
Utilities for making threads with sweep. They can be used to model screws, nuts, studding, leadscrews, etc, and also to make printed threads.
|
|
|
|
The ends can be tapered, flat or chamfered by setting the ```top``` and ```bot``` parameters to -1 for tapered, 0 for a flat cut and positive to
|
|
specify a chamfer angle.
|
|
|
|
Threads are by default solid, so the male version is wrapped around a cylinder and the female inside a tube. This can be suppressed to just get the helix, for
|
|
example to make a printed pot with a screw top lid.
|
|
|
|
A left hand thread can be made by using mirror([0,1]).
|
|
|
|
Threads with a typical 60 degree angle appear too bright with OpenSCAD's primitive lighting model as they face towards the lights more than the top and sides of
|
|
a cylinder. To get around this a colour can be passed to thread that is used to colour the cylinder and then toned down to colour the helix.
|
|
|
|
Making the ends requires a CGAL intersection, which make threads relatively slow. For this reason they are generally disabled when using the GUI but can
|
|
be enabled by setting ```$show_threads``` to ```true```. When the tests are run, by default, threads are enabled only for things that feature them like screws.
|
|
This behaviour can be changed by setting a ```NOPSCADLIB_SHOW_THREADS``` environment variable to ```false``` to disable all threads and ```true``` to enable all threads.
|
|
The same variable also affects the generation of assembly diagrams.
|
|
|
|
Threads obey the $fn, $fa, $fs variables.
|
|
|
|
|
|
[utils/thread.scad](utils/thread.scad) Implementation.
|
|
|
|
[tests/thread.scad](tests/thread.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```metric_coarse_pitch(d)``` | Convert metric diameter to pitch |
|
|
| ```thread_profile(h, crest, angle, overlap = 0.1)``` | Create thread profile path |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```female_metric_thread(d, pitch, length, center = true, top = -1, bot = -1, colour = undef)``` | Create female thread with metric profile |
|
|
| ```male_metric_thread(d, pitch, length, center = true, top = -1, bot = -1, solid = true, colour = undef)``` | Create male thread with metric profile |
|
|
| ```thread(dia, pitch, length, profile, center = true, top = -1, bot = -1, starts = 1, solid = true, female = false, colour = undef)``` | Create male or female thread, ends can be tapered, chamfered or square |
|
|
|
|
![thread](tests/png/thread.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Tube"></a>
|
|
## Tube
|
|
Simple tube or ring
|
|
|
|
|
|
[utils/tube.scad](utils/tube.scad) Implementation.
|
|
|
|
[tests/tube.scad](tests/tube.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```ring(or, ir)``` | Create a ring with specified external and internal radii |
|
|
| ```tube(or, ir, h, center = true)``` | Create a tube with specified external and internal radii and height ```h``` |
|
|
| ```woven_tube(or, ir, h, center= true, colour = grey(30)``` | Create a woven tube with specified external and internal radii, height ```h```, colours, warp and weft |
|
|
|
|
![tube](tests/png/tube.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="BOM"></a>
|
|
## BOM
|
|
Bill Of Materials generation via echo and the ```bom.py``` script. Also handles exploded assembly views and posing.
|
|
Assembly instructions can precede the module definition that makes the assembly.
|
|
|
|
Assembly views shown in the instructions can be large or small and this is deduced by looking at the size of the printed parts involved and if any routed
|
|
parts are used.
|
|
This heuristic isn't always correct, so the default can be overridden by setting the ```big``` parameter of ```assembly``` to ```true``` or ```false```.
|
|
|
|
The example below shows how to define a vitamin and incorporate it into an assembly with sub-assemblies and make an exploded view.
|
|
The resulting flat BOM is shown but heirachical BOMs are also generated for real projects.
|
|
|
|
|
|
[utils/core/bom.scad](utils/core/bom.scad) Implementation.
|
|
|
|
[tests/BOM.scad](tests/BOM.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```arg(value, default, name = "")``` | Create string for arg if not default, helper for ```vitamin()``` |
|
|
| ```bom_mode(n = 1)``` | Current BOM mode, 0 = none, 1 = printed and routed parts and assemblies, 2 includes vitamins as well |
|
|
| ```exploded()``` | Returns the value of ```$exploded``` if it is defined, else ```0``` |
|
|
| ```show_supports()``` | True if printed support material should be shown |
|
|
| ```value_string(value)``` | Convert ```value``` to a string or quote it if it is already a string |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```assembly(name, big = undef)``` | Name an assembly that will appear on the BOM, there needs to a module named ```<name>_assembly``` to make it. ```big``` can force big or small assembly diagrams. |
|
|
| ```dxf(name)``` | Name a dxf that will appear on the BOM, there needs to a module named ```<name>_dxf``` to make it |
|
|
| ```explode(d, explode_children = false, offset = [0,0,0])``` | Explode children by specified Z distance or vector ```d```, option to explode grand children |
|
|
| ```hidden()``` | Make item invisible, except on the BOM |
|
|
| ```no_explode()``` | Prevent children being exploded |
|
|
| ```no_pose()``` | Force children not to be posed even if parent is |
|
|
| ```not_on_bom(on = false)``` | Specify the following child parts are not on the BOM, for example when they are on a PCB that comes assembled |
|
|
| ```pose(a = [55, 0, 25], t = [0, 0, 0], exploded = undef)``` | Pose an STL or assembly for rendering to png by specifying rotation ```a``` and translation ```t```, ```exploded = true for``` just the exploded view or ```false``` for unexploded only. |
|
|
| ```pose_hflip(exploded = undef)``` | Pose an STL or assembly for rendering to png by flipping around the Y axis, ```exploded = true for``` just the exploded view or ```false``` for unexploded only. |
|
|
| ```pose_vflip(exploded = undef)``` | Pose an STL or assembly for rendering to png by flipping around the X axis, ```exploded = true for``` just the exploded view or ```false``` for unexploded only. |
|
|
| ```stl(name)``` | Name an stl that will appear on the BOM, there needs to a module named ```<name>_stl``` to make it |
|
|
| ```stl_colour(colour = pp1_colour, alpha = 1)``` | Colour an stl where it is placed in an assembly. ```alpha``` can be used to make it appear transparent. |
|
|
| ```vitamin(description)``` | Describe a vitamin for the BOM entry and precede it with a module call that creates it, eg. "wigit(42): Type 42 widget" |
|
|
|
|
![bom](tests/png/bom.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```insert(F1BM3)``` | Heatfit insert M3 |
|
|
| 1 | ```widget(3)``` | Rivit like thing for 3mm sheets |
|
|
| 1 | ```screw(M3_cap_screw, 8)``` | Screw M3 cap x 8mm |
|
|
| 1 | ```sheet(PMMA3, 20, 20, 1)``` | Sheet acrylic 20mm x 20mm x 3mm |
|
|
| 1 | ```washer(M3_washer)``` | Washer M3 x 7mm x 0.5mm |
|
|
| 1 | ```star_washer(M3_washer)``` | Washer star M3 x 0.5mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | widget.stl |
|
|
|
|
### Routed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | widget.dxf |
|
|
|
|
### Assemblies
|
|
| Qty | Name |
|
|
| ---:|:--- |
|
|
| 1 | widget_top_assembly |
|
|
| 1 | widgit_base_assembly |
|
|
| 1 | wigdit_assembly |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Clip"></a>
|
|
## Clip
|
|
Construct arbirarily large box to partition 3D space and clip objects, useful for creating cross sections to see the inside when debugging.
|
|
|
|
Original version by Doug Moen on the OpenSCAD forum
|
|
|
|
|
|
[utils/core/clip.scad](utils/core/clip.scad) Implementation.
|
|
|
|
[tests/clip.scad](tests/clip.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```box(xmin, ymin, zmin, xmax, ymax, zmax)``` | Construct a box given its bounds |
|
|
| ```clip(xmin = -inf, ymin = -inf, zmin = -inf, xmax = inf, ymax = inf, zmax = inf)``` | Clip child to specified boundaries |
|
|
|
|
![clip](tests/png/clip.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Global"></a>
|
|
## Global
|
|
Global constants, functions and modules. This file is used directly or indirectly in every scad file.
|
|
|
|
|
|
[utils/core/global.scad](utils/core/global.scad) Implementation.
|
|
|
|
[tests/global.scad](tests/global.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```Len(x)``` | Returns the length of a list or 0 if ```x``` is not a list |
|
|
| ```cm(x)``` | cm to mm conversion |
|
|
| ```echoit(x)``` | Echo expression and return it, useful for debugging |
|
|
| ```foot(x)``` | Foot to mm conversion |
|
|
| ```in(list, x)``` | Returns true if ```x``` is an element in the ```list``` |
|
|
| ```inch(x)``` | Inch to mm conversion (For fractional inches, 'inch(1 + 7/8)' will work as expected.) |
|
|
| ```limit(x, min, max)``` | Force x in range min <= x <= max |
|
|
| ```m(x)``` | m to mm conversion |
|
|
| ```mm(x)``` | Explicit mm specified |
|
|
| ```no_point(str)``` | Replace decimal point in string with 'p' |
|
|
| ```r2sides(r)``` | Replicates the OpenSCAD logic to calculate the number of sides from the radius |
|
|
| ```r2sides4n(r)``` | Round up the number of sides to a multiple of 4 to ensure points land on all axes |
|
|
| ```slice(list, start = 0, end = undef)``` | Slice a list or string with Python type semantics |
|
|
| ```sqr(x)``` | Returns the square of ```x``` |
|
|
| ```yard(x)``` | Yard to mm conversion |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```circle4n(r, d = undef)``` | Circle with multiple of 4 vertices |
|
|
| ```ellipse(xr, yr)``` | Draw an ellipse |
|
|
| ```extrude_if(h, center = true)``` | Extrudes 2D object to 3D when ```h``` is nonzero, otherwise leaves it 2D |
|
|
| ```hflip(flip=true)``` | Invert children by doing a 180° flip around the Y axis |
|
|
| ```right_triangle(width, height, h, center = true)``` | A right angled triangle with the 90° corner at the origin. 3D when ```h``` is nonzero, otherwise 2D |
|
|
| ```semi_circle(r, d = undef)``` | A semi circle in the positive Y domain |
|
|
| ```translate_z(z)``` | Shortcut for Z only translations |
|
|
| ```vflip(flip=true)``` | Invert children by doing a 180° flip around the X axis |
|
|
|
|
![global](tests/png/global.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Polyholes"></a>
|
|
## Polyholes
|
|
A method of making 3D printed holes come out the right size regardless of the printer, providing
|
|
it gets the linear dimensions right. See <https://hydraraptor.blogspot.com/2011/02/polyholes.html>
|
|
|
|
The module provides `poly_circle()`, `poly_cylinder()` and `poly_ring()` that is useful for making printed washers and pillars.
|
|
|
|
`poly_cylinder()` has a `twist` parameter which can be set to make the polygon rotate each layer.
|
|
This can be used to mitigate the number of sides being small and make small holes stronger and more round, but is quite slow due to the
|
|
large increase in the number of facets.
|
|
When set to 1 the polygons alternate each layer, when set higher the rotation takes `twist + 1` layers to repeat.
|
|
A small additional rotation is added to make the polygon rotate one more side over the length of the hole to make it appear round when
|
|
veiwed end on.
|
|
|
|
When `twist` is set the resulting cylinder is extended by `eps` at each end so that the exact length of the hole can be used without
|
|
leaving a scar on either surface.
|
|
|
|
|
|
[utils/core/polyholes.scad](utils/core/polyholes.scad) Implementation.
|
|
|
|
[tests/polyholes.scad](tests/polyholes.scad) Code for this example.
|
|
|
|
### Functions
|
|
| Function | Description |
|
|
|:--- |:--- |
|
|
| ```corrected_diameter(d, n = 0)``` | Adjusted diameter to make flats lie on the circle |
|
|
| ```corrected_radius(r, n = 0)``` | Adjusted radius to make flats lie on the circle |
|
|
| ```sides(r)``` | Optimium number of sides for specified radius |
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```drill(r, h = 100, center = true)``` | Make a cylinder for drilling holes suitable for CNC routing, set h = 0 for circle |
|
|
| ```poly_circle(r, sides = 0)``` | Make a circle adjusted to print the correct size |
|
|
| ```poly_cylinder(r, h, center = false, sides = 0, chamfer = false, twist = 0)``` | Make a cylinder adjusted to print the correct size |
|
|
| ```poly_drill(r, h = 100, center = true)``` | Make a cylinder for drilling holes suitable for CNC routing if cnc_bit_r is non zero, otherwise a poly_cylinder. |
|
|
| ```poly_ring(or, ir, sides = 0)``` | Make a 2D ring adjusted to have the correct internal radius |
|
|
| ```poly_tube(or, ir, h, center = false)``` | Make a tube adjusted to have the correct internal radius |
|
|
| ```slot(r, l, h = 100)``` | Make a horizontal slot suitable for CNC routing, set h = 0 for 2D version |
|
|
|
|
![polyholes](tests/png/polyholes.png)
|
|
|
|
### Vitamins
|
|
| Qty | Module call | BOM entry |
|
|
| ---:|:--- |:---|
|
|
| 1 | ```sheet(Steel06, 20, 20, 1)``` | Sheet mild steel 20mm x 20mm x 0.6mm |
|
|
| 1 | ```rod(1.5, 11)``` | Smooth rod 1.5mm x 11mm |
|
|
| 1 | ```rod(10.5, 47)``` | Smooth rod 10.5mm x 47mm |
|
|
| 1 | ```rod(10, 45)``` | Smooth rod 10mm x 45mm |
|
|
| 1 | ```rod(1, 9)``` | Smooth rod 1mm x 9mm |
|
|
| 1 | ```rod(2.5, 15)``` | Smooth rod 2.5mm x 15mm |
|
|
| 1 | ```rod(2, 13)``` | Smooth rod 2mm x 13mm |
|
|
| 1 | ```rod(3.5, 19)``` | Smooth rod 3.5mm x 19mm |
|
|
| 1 | ```rod(3, 17)``` | Smooth rod 3mm x 17mm |
|
|
| 4 | ```rod(3, 3)``` | Smooth rod 3mm x 3mm |
|
|
| 1 | ```rod(4.5, 23)``` | Smooth rod 4.5mm x 23mm |
|
|
| 1 | ```rod(4, 21)``` | Smooth rod 4mm x 21mm |
|
|
| 1 | ```rod(5.5, 27)``` | Smooth rod 5.5mm x 27mm |
|
|
| 1 | ```rod(5, 25)``` | Smooth rod 5mm x 25mm |
|
|
| 1 | ```rod(6.5, 31)``` | Smooth rod 6.5mm x 31mm |
|
|
| 1 | ```rod(6, 29)``` | Smooth rod 6mm x 29mm |
|
|
| 1 | ```rod(7.5, 35)``` | Smooth rod 7.5mm x 35mm |
|
|
| 1 | ```rod(7, 33)``` | Smooth rod 7mm x 33mm |
|
|
| 1 | ```rod(8.5, 39)``` | Smooth rod 8.5mm x 39mm |
|
|
| 1 | ```rod(8, 37)``` | Smooth rod 8mm x 37mm |
|
|
| 1 | ```rod(9.5, 43)``` | Smooth rod 9.5mm x 43mm |
|
|
| 1 | ```rod(9, 41)``` | Smooth rod 9mm x 41mm |
|
|
|
|
### Printed
|
|
| Qty | Filename |
|
|
| ---:|:--- |
|
|
| 1 | polyhole.stl |
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Rounded_rectangle"></a>
|
|
## Rounded_rectangle
|
|
Rectangle with rounded corners.
|
|
|
|
|
|
[utils/core/rounded_rectangle.scad](utils/core/rounded_rectangle.scad) Implementation.
|
|
|
|
[tests/rounded_rectangle.scad](tests/rounded_rectangle.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```rounded_rectangle(size, r, center = true, xy_center = true)``` | Like ```cube()``` but corners rounded in XY plane and separate centre options for xy and z. |
|
|
| ```rounded_square(size, r, center = true)``` | Like ```square()``` but with with rounded corners |
|
|
|
|
![rounded_rectangle](tests/png/rounded_rectangle.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Sphere"></a>
|
|
## Sphere
|
|
Redefines `sphere()` to always have a vertex on all six half axes I.e. vertices at the poles and the equator and `$fn` a multiple of four.
|
|
This ensures `hull` and `minkowski` results have the correct dimensions when spheres are placed at the corners.
|
|
|
|
|
|
[utils/core/sphere.scad](utils/core/sphere.scad) Implementation.
|
|
|
|
[tests/sphere.scad](tests/sphere.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```sphere(r = 1, d = undef)``` | Override ```sphere``` so that has vertices on all three axes. Has the advantage of giving correct dimensions when hulled |
|
|
|
|
![sphere](tests/png/sphere.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|
|
<a name="Teardrops"></a>
|
|
## Teardrops
|
|
For making horizontal holes that don't need support material.
|
|
Small holes can get away without it, but they print better with truncated teardrops.
|
|
|
|
Using teardrop_plus() or setting the plus option on other modules will elongate the teardrop vertically by the layer height, so when sliced the staircase tips
|
|
do not intrude into the circle. See <https://hydraraptor.blogspot.com/2020/07/horiholes-2.html>
|
|
|
|
|
|
[utils/core/teardrops.scad](utils/core/teardrops.scad) Implementation.
|
|
|
|
[tests/teardrops.scad](tests/teardrops.scad) Code for this example.
|
|
|
|
### Modules
|
|
| Module | Description |
|
|
|:--- |:--- |
|
|
| ```semi_teardrop(h, r, d = undef, center = true, chamfer = 0, plus = false)``` | A semi teardrop in the positive Y domain |
|
|
| ```teardrop(h, r, center = true, truncate = true, chamfer = 0, plus = false)``` | For making horizontal holes that don't need support material, set ```truncate = false``` to make traditional RepRap teardrops that don't even need bridging |
|
|
| ```teardrop_chamfer(h, center, chamfer)``` | Helper module for adding chamfer to a teardrop |
|
|
| ```teardrop_plus(h, r, center = true, truncate = true, chamfer = 0)``` | Slightly elongated teardrop to allow for the 3D printing staircase effect |
|
|
| ```tearslot(h, r, w, center = true, chamfer = 0, plus = false)``` | A horizontal slot that doesn't need support material |
|
|
| ```vertical_tearslot(h, r, l, center = true, chamfer = 0, plus = false)``` | A vertical slot that doesn't need support material |
|
|
|
|
![teardrops](tests/png/teardrops.png)
|
|
|
|
|
|
<a href="#top">Top</a>
|
|
|
|
---
|