diff --git a/readme.html b/readme.html new file mode 100644 index 0000000..0bff913 --- /dev/null +++ b/readme.html @@ -0,0 +1,10892 @@ +

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 and DXF files for CNC routed parts in a project.

+

Table of Contents

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vitamins A-N Vitamins O-Z Printed Utilities Core Utilities
Ball_bearings Opengrab Box Annotation Bom
Batteries O_ring Butt_box Bezier Clip
Belts Pcbs Cable_grommets Dogbones Global
Blowers Pillars Carriers Fillet Polyholes
Bulldogs Psus Corner_block Hanging_hole Rounded_rectangle
Buttons Pulleys Door_hinge Layout Sphere
Cable_strips Rails Door_latch Maths Teardrops
Components Ring_terminals Fan_guard Offset
Displays Rockers Fixing_block Quadrant
D_connectors Rod Foot Round
Fans Screws Handle Rounded_cylinder
Fuseholder Sealing_strip Ribbon_clamp Rounded_polygon
Hot_ends Sheets Screw_knob Sector
Iecs Spades Socket_box Sweep
Inserts Spools Strap_handle Tube
Jack Springs
Leadnuts Ssrs
Leds Stepper_motors
Light_strips Toggles
Linear_bearings Transformers
Mains_sockets Tubings
Meter Variacs
Microswitches Veroboard
Microview Washers
Modules Zipties
Nuts

+
+

+

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 Object definitions.

+

vitamins/ball_bearing.scad Implementation.

+

tests/ball_bearings.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bb_bore(type)Internal diameter
bb_colour(type)Shield colour, "silver" for metal
bb_diameter(type)External diameter
bb_name(type)Part code without shield type suffix
bb_width(type)Width
+

Functions

+ + + + + + + + + + + + + +
bb_rim(type)Inner and outer rim thickness
+

Modules

+ + + + + + + + + + + + + + + + + +
ball_bearing(type)Draw a ball bearing
bearing_ball(dia)Draw a steel bearing ball
+

ball_bearings

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + +
1ball_bearing(BB608)Ball bearing 608-2RS 8mm x 22mm x 7mm
1ball_bearing(BB624)Ball bearing 624-2RS 4mm x 13mm x 5mm
2bearing_ball(3)Steel ball 3mm
+

Top

+
+

+

Batteries

+

Actually just single cells at the moment, shown here with mating contacts in place.

+

Note that the Lumintop LM34 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 Object definitions.

+

vitamins/battery.scad Implementation.

+

tests/batteries.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
6battery_contact(bcontact, false)Battery negative contact
6battery_contact(bcontact, true)Battery positive contact
1battery(AACELL)Cell AA
1battery(AAACELL)Cell AAA
1battery(CCELL)Cell C
1battery(DCELL)Cell D
1battery(LUMINTOP)Cell LUMINTOP 18650 LION with charger
1battery(S25R18650)Cell Samsung 25R 18650 LION
+

Top

+
+

+

Belts

+

Models timing belt running over toothed or smooth pulleys and calculates an accurate length. +Only models 2D paths, so not core XY!

+

By default the path is a closed loop but a gap length and position can be specified to make open loops.

+

Individual teeth are not drawn, instead they are represented by a lighter colour.

+

vitamins/belts.scad Object definitions.

+

vitamins/belt.scad Implementation.

+

tests/belts.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + +
belt_pitch(type)Pitch in mm
belt_thickness(type)Total thickness including teeth
belt_tooth_height(type)Tooth height
belt_width(type)Width in mm
+

Functions

+ + + + + + + + + + + + + + + + + +
belt_length(points, gap = 0)Compute belt length given path and optional gap
belt_pitch_height(type)Offset of the pitch radius from the tips of the teeth
+

Modules

+ + + + + + + + + + + + + +
belt(type, points, gap = 0, gap_pt = undef)Draw a belt path given a set of points and pitch radii where the pulleys are. Closed loop unless a gap is specified
+

belts

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1belt(GT2x6, [ ... ])Belt GT2 x 6mm x 128mm
1belt(GT2x6, [ ... ], 80, [0, 0.81])Belt GT2 x 6mm x 694mm
1belt(T2p5x6, [ ... ])Belt T2.5 x 6mm x 130mm
1belt(T5x10, [ ... ])Belt T5 x 10mm x 130mm
1belt(T5x6, [ ... ])Belt T5 x 6mm x 130mm
1insert(F1BM3)Heatfit insert M3
2pulley(GT2x20_toothed_idler)Pulley GT2 idler 20 teeth
2pulley(GT2x16_plain_idler)Pulley GT2 idler smooth
2pulley(GT2x20ob_pulley)Pulley GT2OB 20 teeth
1screw(M3_cs_cap_screw, 20)Screw M3 cs cap x 20mm
4screw(M3_grub_screw, 6)Screw M3 grub x 6mm
+

Top

+
+

+

Blowers

+

Models of radial blowers.

+

vitamins/blowers.scad Object definitions.

+

vitamins/blower.scad Implementation.

+

tests/blowers.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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
+

Modules

+ + + + + + + + + + + + + + + + + +
blower(type)Draw specified blower
blower_hole_positions(type)Translate children to screw hole positions
+

blowers

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1blower(PE4020)Blower Pengda Technology 4020
1blower(RM5015)Blower Runda RB5015
3screw(M3_cap_screw, 20)Screw M3 cap x 20mm
2screw(M4_cap_screw, 25)Screw M4 cap x 25mm
3washer(M3_washer)Washer M3 x 7mm x 0.5mm
2washer(M4_washer)Washer M4 x 9mm x 0.8mm
+

Top

+
+

+

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 Object definitions.

+

vitamins/bulldog.scad Implementation.

+

tests/bulldogs.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + +
bulldog(type, open = 4)Draw bulldog clip open by specified amount
+

bulldogs

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + +
1bulldog(small_bulldog)Bulldog clip 19mm
1bulldog(large_bulldog)Bulldog clip 25mm
+

Top

+
+

+

Buttons

+

PCB mounted buttons. Can optionally have a coloured cap

+

vitamins/buttons.scad Object definitions.

+

vitamins/button.scad Implementation.

+

tests/buttons.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + +
square_button(type, colour = "yellow")Draw square button with specified cap colour if it has a cap
+

buttons

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + +
1square_button(button_12mm, "yellow")Square button 12mm with yellow cap
1square_button(button_4p5mm)Square button 4.5mm
1square_button(button_6mm)Square button 6mm
+

Top

+
+

+

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 miniumum 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 Implementation.

+

tests/cable_strips.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + +
bezier_cable_strip(ways, depth, length, travel, pos, below, extra)Draw a cable strip using a Bezier curve
cable_strip(ways, depth, travel, x, extra = 15)Draw a cable stripe with a semi circular fold
+

cable_strips

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1bezier_cable_strip(20, 50, 150, 100, -100, 100, 10)Polypropylene strip 170mm x 26mm x 0.8mm
1bezier_cable_strip(20, 50, 150, 100, 0, 100, 10)Polypropylene strip 170mm x 26mm x 0.8mm
1bezier_cable_strip(20, 50, 150, 100, 100, 100, 10)Polypropylene strip 170mm x 26mm x 0.8mm
1cable_strip(20, 25, 100, -100, 30)Polypropylene strip 189mm x 24mm x 0.8mm
1cable_strip(20, 25, 100, 0, 30)Polypropylene strip 189mm x 24mm x 0.8mm
1cable_strip(20, 25, 100, 100, 30)Polypropylene strip 189mm x 24mm x 0.8mm
+

Top

+
+

+

Components

+

Various electronic components used in hot ends and heated beds.

+

vitamins/components.scad Object definitions.

+

vitamins/component.scad Implementation.

+

tests/components.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + +
TO220_thickness()Thickness of the tab of a TO220
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1TO220("Generic TO220 package")Generic TO220 package
8tubing(HSHRNK32)Heatshrink sleeving ID 3.2mm x 15mm
1resistor(RWM04106R80J)Resistor RWM04106R80J 6R8 3W vitreous enamel
1resistor(RIE1212UB5C5R6)Resistor UB5C 5R6F 5R6 3W vitreous enamel
1al_clad_resistor(THS10, 4.7)Resistor aluminium clad THS10 4.7
1al_clad_resistor(THS15, 4.7)Resistor aluminium clad THS15 4.7
1al_clad_resistor(THS25, 4.7)Resistor aluminium clad THS25 4.7
1al_clad_resistor(THS50, 4.7)Resistor aluminium clad THS50 4.7
4screw(M2p5_pan_screw, 16)Screw M2.5 pan x 16mm
4screw(M3_pan_screw, 16)Screw M3 pan x 16mm
1panel_USBA()Socket USB A panel mount
1thermal_cutout(TC)Thermal cutout TC
1resistor(Epcos)Thermistor Epcos B57560G104F 100K 1%
1resistor(EpcosBlue)Thermistor Epcos B57861S104F40 100K 1%
1resistor(Honewell)Thermistor Honeywell 135-104LAC-J01 100K 1%
+

Top

+
+

+

Displays

+

LCD dispays.

+

vitamins/displays.scad Object definitions.

+

vitamins/display.scad Implementation.

+

tests/displays.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + +
display_depth(type)Total thickness including touch screen and PCB
display_ts_thickness(type)Touch screen thickness or 0
+

Modules

+ + + + + + + + + + + + + + + + + +
display(type)Draw specified display
display_aperture(type, clearance, clear_pcb = false)Make aperture cutout
+

displays

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + +
1display(HDMI5)HDMI display 5"
1display(LCD1602A)LCD display 1602A
+

Top

+
+

+

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 Object definitions.

+

vitamins/d_connector.scad Implementation.

+

tests/d_connectors.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1d_plug(DCONN15, idc = true)D-type 15 way IDC plug
1d_socket(DCONN15, idc = true)D-type 15 way IDC socket
1d_plug(DCONN25, pcb = true)D-type 25 way PCB mount plug
1d_socket(DCONN25, pcb = true)D-type 25 way PCB mount socket
1d_plug(DCONN9)D-type 9 way plug
1d_socket(DCONN9)D-type 9 way socket
6d_pillar()D-type connector pillar
+

Top

+
+

+

Fans

+

Axial fans.

+

Can draw three styles: solid, open frame and open frame with screw bosses.

+

vitamins/fans.scad Object definitions.

+

vitamins/fan.scad Implementation.

+

tests/fans.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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
+

Functions

+ + + + + + + + + + + + + +
fan_screw_length(type, thickness)Screw length required
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + +
fan(type)Draw specified fan, origin in the centre
fan_assembly(type, thickness, include_fan = true)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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1fan(fan120x25)Fan 120mm x 25mm
1fan(fan25x10)Fan 25mm x 10mm
1fan(fan30x10)Fan 30mm x 10mm
1fan(fan40x11)Fan 40mm x 11mm
1fan(fan50x15)Fan 50mm x 15mm
1fan(fan60x15)Fan 60mm x 15mm
1fan(fan60x25)Fan 60mm x 25mm
1fan(fan70x15)Fan 70mm x 15mm
1fan(fan80x25)Fan 80mm x 25mm
1fan(fan80x38)Fan 80mm x 38mm
4nut(M2p5_nut, nyloc = true)Nut M2.5 nyloc
8nut(M3_nut, nyloc = true)Nut M3 nyloc
28nut(M4_nut, nyloc = true)Nut M4 nyloc
4screw(M2p5_pan_screw, 20)Screw M2.5 pan x 20mm
8screw(M3_dome_screw, 20)Screw M3 dome x 20mm
20screw(M4_dome_screw, 16)Screw M4 dome x 16mm
4screw(M4_dome_screw, 25)Screw M4 dome x 25mm
4screw(M4_dome_screw, 30)Screw M4 dome x 30mm
4washer(M2p5_washer)Washer M2.5 x 5.9mm x 0.5mm
8washer(M3_washer)Washer M3 x 7mm x 0.5mm
28washer(M4_washer)Washer M4 x 9mm x 0.8mm
+

Top

+
+

+

Fuseholder

+

20mm panel mount fuse holder.

+

vitamins/fuseholder.scad Implementation.

+

tests/fuseholder.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + +
fuseholder_diameter()Outside diameter of flange
+

Modules

+ + + + + + + + + + + + + + + + + +
fuseholder(thickness)Fuseholder with nut in place for specified panel thickness
fuseholder_hole(h = 100)Hole with flats for fuseholder
+

fuseholder

+

Vitamins

+ + + + + + + + + + + + + + + +
1fuseholder(6)Fuse holder 20mm
+

Top

+
+

+

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 Object definitions.

+

vitamins/hot_end.scad Implementation.

+

tests/hot_ends.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + +
hot_end(type, filament, naked = false)Draw specified hot end
+

hot_ends

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
2tubing(HSHRNK16)Heatshrink sleeving ID 1.6mm x 15mm
4tubing(HSHRNK64, 60)Heatshrink sleeving ID 6.4mm x 60mm
1e3d_hot_end(E3Dv5, 3)Hot end E3D V5 direct 3mm
1e3d_hot_end(E3Dv6, 3)Hot end E3D V6 direct 3mm
1e3d_hot_end(E3D_clone, 3)Hot end E3D clone aliexpress 3mm
1jhead_hot_end(JHeadMk5, 3)Hot end JHead MK5 3mm
2tubing(PTFE07, 62)PTFE sleeving OD 1.2mm ID 0.71mm x 62mm
2tubing(PTFE20, 45)PTFE sleeving OD 2.6mm ID 2mm x 45mm
1resistor(RIE1212UB5C5R6)Resistor UB5C 5R6F 5R6 3W vitreous enamel
1Tape self amalgamating silicone 110mm x 25mm
1resistor(Epcos)Thermistor Epcos B57560G104F 100K 1%
2Wire Red PTFE 16/0.2 length 170mm
4ziptie(small_ziptie, 8)Ziptie 100mm min length
+

Top

+
+

+

Iecs

+

IEC mains inlets and outlet.

+

vitamins/iecs.scad Object definitions.

+

vitamins/iec.scad Implementation.

+

tests/iecs.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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_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_slot_h(type)Body height
iec_slot_r(type)Body corner radius
iec_slot_w(type)Body width
iec_spades(type)Spade type
iec_width(type)Widest part including the lugs
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + +
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_screw_positions(type)Position children at the screw holes
+

iecs

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1iec(IEC_fused_inlet)IEC fused inlet
1iec(IEC_inlet)IEC inlet
1iec(IEC_inlet_atx)IEC inlet for ATX
1iec(IEC_outlet)IEC outlet
8nut(M3_nut, nyloc = true)Nut M3 nyloc
4screw(M3_cs_cap_screw, 10)Screw M3 cs cap x 10mm
4screw(M3_cs_cap_screw, 12)Screw M3 cs cap x 12mm
8washer(M3_washer)Washer M3 x 7mm x 0.5mm
+

Top

+
+

+

Inserts

+

Heatfit threaded inserts. Can be pushed into thermoplastics using a soldering iron with a conical bit set to 200°C.

+

vitamins/inserts.scad Object definitions.

+

vitamins/insert.scad Implementation.

+

tests/inserts.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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
+

Modules

+ + + + + + + + + + + + + + + + + + + + + +
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
+

inserts

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1insert(F1BM)Heatfit insert M2
1insert(F1BM2p5)Heatfit insert M2.5
1insert(F1BM3)Heatfit insert M3
1insert(F1BM4)Heatfit insert M4
+

Top

+
+

+

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 Implementation.

+

tests/jack.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + +
1post_4mm("red", 3)4mm jack binding post red
1jack_4mm("blue", 3, "royalblue")4mm jack socket blue
1jack_4mm_shielded("brown", 3, "sienna")4mm shielded jack socket brown
+

Top

+
+

+

Leadnuts

+

Nuts for leadscrews.

+

vitamins/leadnuts.scad Object definitions.

+

vitamins/leadnut.scad Implementation.

+

tests/leadnuts.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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_od(type)Outer diameter of the shank
leadnut_screw(type)The type of the fixing screws
+

Functions

+ + + + + + + + + + + + + +
leadnut_shank(type)The length of the shank below the flange
+

Modules

+ + + + + + + + + + + + + + + + + +
leadnut(type)Draw specified leadnut
leadnut_screw_positions(type)Position children at the screw holes
+

leadnuts

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + +
1leadnut(LSN8x2)Leadscrew nut 8 x 2
1leadnut(LSN8x8)Leadscrew nut 8 x 8 RobotDigg
+

Top

+
+

+

Leds

+

Standard domed through hole LEDs. Can specify colour and lead length.

+

vitamins/leds.scad Object definitions.

+

vitamins/led.scad Implementation.

+

tests/leds.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + +
led_hole_radius(type)Radius of panel hole to accept LED
+

Modules

+ + + + + + + + + + + + + +
led(type, colour = "red", lead = 5)Draw specified LED with desired colour and led length
+

leds

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + +
1led(LED10mm)LED 10 mm red
1led(LED3mm, "green")LED 3 mm green
1led(LED5mm, "blue")LED 5 mm blue
+

Top

+
+

+

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 Object definitions.

+

vitamins/light_strip.scad Implementation.

+

tests/light_strips.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
light_strip_clip_depth(light)Depth of the clip
light_strip_clip_length(light)Outside length
light_strip_clip_slot(light)Clip slot size
light_strip_clip_width(light)Outside width
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

+ + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + +
1light_strip(Rigid5050, 6)Light strip rigid SMD5050 low profile x 250mm (6 segments)
1light_strip(RIGID5050, 6)Light strip rigid SMD5050 x 250mm (6 segments)
+

Top

+
+

+

Linear_bearings

+

LMnUU linear bearings.

+

vitamins/linear_bearings.scad Object definitions.

+

vitamins/linear_bearing.scad Implementation.

+

tests/linear_bearings.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + +
bearing_dia(type)Outside diameter
bearing_length(type)Total length
bearing_rod_dia(type)Internal diameter
+

Functions

+ + + + + + + + + + + + + +
bearing_radius(type)Outside radius
+

Modules

+ + + + + + + + + + + + + +
linear_bearing(type)Draw specified linear bearing
+

linear_bearings

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1linear_bearing(LM10UU)Linear bearing LM10UU
1linear_bearing(LM12UU)Linear bearing LM12UU
1linear_bearing(LM3UU)Linear bearing LM3UU
1linear_bearing(LM4UU)Linear bearing LM4UU
1linear_bearing(LM5UU)Linear bearing LM5UU
1linear_bearing(LM6UU)Linear bearing LM6UU
1linear_bearing(LM8UU)Linear bearing LM8UU
+

Top

+
+

+

Mains_sockets

+

UK 13A sockets at the moment.

+

vitamins/mains_sockets.scad Object definitions.

+

vitamins/mains_socket.scad Implementation.

+

tests/mains_sockets.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + +
mains_socket_screw(type)Screw type
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + +
1mains_socket(Contactum)Mains socket 13A
1mains_socket(MKLOGIC)Mains socket 13A, switched
+

Top

+
+

+

Meter

+

LED volt meter modules available from China and a printed bezel that allows them 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.

+

Needs 7 segment font from http://www.twyman.org.uk/Fonts/font-download.htm to look realistic.

+

vitamins/meter.scad Implementation.

+

tests/meter.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
meter_height(type = led_meter)Height of body excluding PCB
meter_hole_pitch(type = led_meter)Lug hole pitch
meter_hole_radius(type = led_meter)Lug hole radius
meter_length(type = led_meter)Length of body
meter_lug_length(type = led_meter)PCB length including lugs
meter_lug_width(type = led_meter)Lug width
meter_pcb_length(type = led_meter)PCB length excluding lugs
meter_pcb_thickness(type = led_meter)PCB thickness
meter_pcb_width(type = led_meter)PCB width
meter_width(type = led_meter)Width of body
+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
meter()Default meter type
meter_bezel_length(type = led_meter)Printed bezel length
meter_bezel_rad(type = led_meter)Printed bezel corner radius
meter_bezel_wall(type = led_meter)Printed bezel wall thickness
meter_bezel_width(type = led_meter)Printed bezel width
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
meter(type = led_meter, colour = "red", value = "888", display_colour = false)Draw a meter with optional colour and display value
meter_assembly(type = led_meter, colour = "red", value = "888", display_colour = false)Meter assembled into the bezel
meter_bezel(type = led_meter)Generate the STL for the meter bezel
meter_bezel_hole(type = led_meter, h = 100)Make a hole to fit the meter Bezel
meter_hole_positions(type = led_meter)Position children over the holes
+

meter

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + +
1meter(led_meter, colour = "blue")LED meter blue
2meter(led_meter)LED meter red
+

Printed

+ + + + + + + + + + + + + + + +
2meter_bezel.stl
+

Top

+
+

+

Microswitches

+

Used for limit switches.

+

vitamins/microswitches.scad Object definitions.

+

vitamins/microswitch.scad Implementation.

+

tests/microswitches.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + +
microswitch_lower_extent(type)How far legs extend downwards
microswitch_right_extent(type)How far legs extend right
+

Modules

+ + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + +
1microswitch(small_microswitch)Microswitch DM1-00P-110-3
1microswitch(medium_microswitch)Microswitch SS-01 or SS-5GL
1microswitch(large_microswitch)Microswitch Saia G3 low force
+

Top

+
+

+

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.scad Implementation.

+

tests/microview.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + +
microview(cutout = false)Draw microview or generate a panel cutout for it
+

microview

+

Vitamins

+ + + + + + + + + + + + + + + +
1microview()Microview OLED display
+

Top

+
+

+

Modules

+

Random screw down modules. Currently just DROK buck converters.

+

vitamins/modules.scad Object definitions.

+

vitamins/module.scad Implementation.

+

tests/modules.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1mod(drok_buck)Drok buck converter
2nut(M4_nut, nyloc = true)Nut M4 nyloc
2screw(M4_dome_screw, 12)Screw M4 dome x 12mm
4washer(M4_washer)Washer M4 x 9mm x 0.8mm
+

Top

+
+

+

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 Object definitions.

+

vitamins/nut.scad Implementation.

+

tests/nuts.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + +
nut_radius(type)Radius across the corners
nut_size(type)Diameter of the corresponding screw
nut_trap_depth(type)Depth of nut trap
nut_washer(type)Corresponding washer
+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + +
nut(type, nyloc = false, brass = false, nylon = false)Draw specified nut
nut_and_washer(type, nyloc)Draw nut with corresponding washer
nut_trap(screw, nut, depth = 0, horizontal = false, supported = false, h = 200)Make a nut trap
wingnut(type)Draw a wingnut
+

nuts

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1nut(M2_nut)Nut M2
1nut(M2_nut, nyloc = true)Nut M2 nyloc
1nut(M2p5_nut)Nut M2.5
1nut(M2p5_nut, nyloc = true)Nut M2.5 nyloc
1nut(M2p5_nut, nylon = true)Nut M2.5 nylon
1nut(M3_nut)Nut M3
1nut(M3_nut, brass = true)Nut M3 brass
1nut(M3_nut, nyloc = true)Nut M3 nyloc
1nut(M4_nut)Nut M4
1nut(M4_nut, nyloc = true)Nut M4 nyloc
1nut(M5_nut)Nut M5
1nut(M5_nut, nyloc = true)Nut M5 nyloc
1nut(M6_nut)Nut M6
1nut(M6_half_nut)Nut M6
1nut(M6_nut, nyloc = true)Nut M6 nyloc
1nut(M8_nut)Nut M8
1nut(M8_nut, nyloc = true)Nut M8 nyloc
1washer(M6_washer)Washer M6 x 12.5mm x 1.5mm
1wingnut(M4_wingnut)Wingnut M4
+

Top

+
+

+

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 Implementation.

+

tests/opengrab.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + +
opengrab_depth()Module height
opengrab_target_thickness()Target sheet thickness
opengrab_width()Module width
+

Modules

+ + + + + + + + + + + + + + + + + + + + + +
opengrab()Draw OpenGrab module
opengrab_hole_positions()Position children at the screw positions
opengrab_target()Draw OpenGrab target
+

opengrab

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + +
1opengrab_target()OpenGrab silicon steel target plate
1opengrab()OpenGrab V3 electro permanent magnet
+

Top

+
+

+

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 Implementation.

+

tests/o_ring.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + +
1O_ring(2.5, 1.6)O-ring nitrile 2.5mm x 1.6mm
+

Top

+
+

+

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 Object definitions.

+

vitamins/pcb.scad Implementation.

+

tests/pcbs.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
hdr_base_colour(type)Header insulator colour
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_socket_depth(type)Socket depth for female housing
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

+ + + + + + + + + + + + + + + + + +
pcb_coord(type, p)Convert offsets from the edge to coordinates relative to the centre
pcb_screw(type, cap = hs_cap)Mounting screw type
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
barrel_jack(cutout = false)Draw barrel power jack
chip(length, width, thickness, cutout = false)Draw a black cube to represent a chip
flex(cutout = false)Draw flexistrip connector
hdmi(cutout = false)Draw HDMI socket
idc_transition(type, cols = 5, skip = [], cutout = false)Draw IDC transition header
jack(cutout = false)Draw 3.5mm jack
molex_254(ways)Draw molex header
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_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 positions
pcb_screw_positions(type)Positions children at the mounting hole positions
pcb_spacer(screw, height, wall = 1.8)Generate STL for PCB spacer
pin(type = 2p54header, length = undef)Draw a header pin
pin_header(type = 2p54header, cols = 1, rows = 1, smt = false, cutout = false)Draw pin header
pin_socket(type = 2p54header, cols = 1, rows = 1, right_angle = false, height = 0, cutout = false)Draw pin socket
rj45(cutout = false)Draw RJ45 Ethernet connector
terminal_254(ways, skip = [])Draw 0.1" terminal block
terminal_35(ways)Draw 3.5mm terminal block
usb_Ax2(cutout = false)Draw USB type A dual socket
usb_B(cutout = false)Draw USB B connector
usb_uA(cutout = false)Draw USB micro A connector
+

pcbs

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1pcb(ArduinoUno3)Arduino Uno R3
1d_plug(DCONN15, pcb = true)D-type 15 way PCB mount plug
1pcb(DuetW)Duet WiFi electronics
1pcb(ExtruderPCB)Extruder connection PCB
1pcb(Keyes5p1)Keyes5.1 Arduino Uno expansion board
1pcb(Melzi)Melzi electronics
2Micro SD card
1molex_254(2)Molex KK header 2 way
1molex_254(3)Molex KK header 3 way
16nut(M2_nut, nyloc = true)Nut M2 nyloc
12nut(M2p5_nut, nyloc = true)Nut M2.5 nyloc
12nut(M3_nut, nyloc = true)Nut M3 nyloc
4nut(M4_nut, nyloc = true)Nut M4 nyloc
1pcb(PI_IO)PI_IO V2
1pcb(PSU12V1A)PSU 12V 1A
1pcb(PERF60x40)Perfboard 60 x 40mm
1pcb(PERF70x30)Perfboard 70 x 30mm
1pcb(PERF70x50)Perfboard 70 x 50mm
1pcb(PERF74x51)Perfboard 74 x 51mm
1pcb(PERF80x20)Perfboard 80 x 20mm
1pin_socket(2p54header, 13, 2, right_angle = true)Pin socket 13 x 2 right_angle
1pcb(RPI3)Raspberry Pi 3
12screw(M2_cap_screw, 20)Screw M2 cap x 20mm
4screw(M2_cap_screw, 25)Screw M2 cap x 25mm
4screw(M2p5_cap_screw, 16)Screw M2.5 cap x 16mm
8screw(M2p5_pan_screw, 20)Screw M2.5 pan x 20mm
8screw(M3_cap_screw, 25)Screw M3 cap x 25mm
4screw(M3_cap_screw, 30)Screw M3 cap x 30mm
4screw(M4_cap_screw, 30)Screw M4 cap x 30mm
3terminal_35(2)Terminal block 2 way 3.5mm
2terminal_254(4)Terminal block 4 way 0.1"
1USB A to Mini B lead
16washer(M2_washer)Washer M2 x 5mm x 0.3mm
12washer(M2p5_washer)Washer M2.5 x 5.9mm x 0.5mm
12washer(M3_washer)Washer M3 x 7mm x 0.5mm
4washer(M4_washer)Washer M4 x 9mm x 0.8mm
+

Printed

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
4pcb_spacer20100.stl
4pcb_spacer20110.stl
4pcb_spacer20120.stl
4pcb_spacer20130.stl
4pcb_spacer2560.stl
8pcb_spacer2570.stl
4pcb_spacer2580.stl
4pcb_spacer2590.stl
4pcb_spacer30140.stl
4pcb_spacer30150.stl
4pcb_spacer30170.stl
4pcb_spacer40160.stl
+

Top

+
+

+

Pillars

+

Threaded pillars. Each end can be male or female.

+

vitamins/pillars.scad Object definitions.

+

vitamins/pillar.scad Implementation.

+

tests/pillars.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + +
pillar(type)Draw specified pillar
+

pillars

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1pillar(M3x13_hex_pillar)Pillar hex M/F M3x13
1pillar(M3x20_hex_pillar)Pillar hex M/F M3x20
1pillar(M2x16_brass_pillar)Pillar nurled F/M M2x16
1pillar(M3x10_nylon_hex_pillar)Pillar nylon M/F M3x10
1pillar(M3x20_nylon_pillar)Pillar nylon M/F M3x20
1pillar(M3x20_nylon_hex_pillar)Pillar nylon M/F M3x20
1pillar(M4x17_nylon_pillar)Pillar nylon M/F M4x20
+

Top

+
+

+

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 Object definitions.

+

vitamins/psu.scad Implementation.

+

tests/psus.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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_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

+ + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1IEC mains lead
1psu(ATX500)PSU ATX500
1psu(KY240W)PSU KY-240W-12-L
1psu(PD_150_12)PSU PD-150-12
1psu(S_250_48)PSU S-250-48
1psu(S_300_12)PSU S-300-12
4screw(No632_pan_screw, 8)Screw 6-32 pan x 8mm
4screw(M3_cap_screw, 8)Screw M3 cap x 8mm
8screw(M3_pan_screw, 8)Screw M3 pan x 8mm
4screw(M4_cap_screw, 8)Screw M4 cap x 8mm
12washer(M3_washer)Washer M3 x 7mm x 0.5mm
8washer(M4_washer)Washer M4 x 9mm x 0.8mm
+

Top

+
+

+

Pulleys

+

Timing belt pulleys, both toothed and plain with internal bearings for idlers.

+

vitamins/pulleys.scad Object definitions.

+

vitamins/pulley.scad Implementation.

+

tests/pulleys.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + +
pulley(type)Draw a pulley
pulley_assembly(type)Draw a pulley with its grub screws in place
+

pulleys

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1pulley(GT2x16_toothed_idler)Pulley GT2 idler 16 teeth
1pulley(GT2x20_toothed_idler)Pulley GT2 idler 20 teeth
1pulley(GT2x20_plain_idler)Pulley GT2 idler smooth
1pulley(GT2x16_plain_idler)Pulley GT2 idler smooth
1pulley(GT2x20ob_pulley)Pulley GT2OB 20 teeth
1pulley(GT2x12_pulley)Pulley GT2RD 12 teeth
1pulley(GT2x20um_pulley)Pulley GT2UM 20 teeth
1pulley(T2p5x16_pulley)Pulley T2.5 16 teeth
1pulley(T5x10_pulley)Pulley T5 10 teeth
1screw(M3_grub_screw, 3)Screw M3 grub x 3mm
2screw(M3_grub_screw, 4)Screw M3 grub x 4mm
4screw(M3_grub_screw, 6)Screw M3 grub x 6mm
1screw(M4_grub_screw, 6)Screw M4 grub x 6mm
+

Top

+
+

+

Rails

+

Linear rails with carriages.

+

vitamins/rails.scad Object definitions.

+

vitamins/rail.scad Implementation.

+

tests/rails.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + +
carriage_screw_depth(type)Carriage thread depth
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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
carriage(type, rail)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)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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1rail(MGN15, 260)Linear rail MGN15 x 260mm
1rail(MGN5, 200)Linear rail MGN5 x 200mm
1rail(MGN7, 200)Linear rail MGN7 x 200mm
1rail(MGN9, 200)Linear rail MGN9 x 200mm
1rail(SSR15, 200)Linear rail SSR15 x 200mm
26nut(M2_nut, nyloc = true)Nut M2 nyloc
17nut(M3_nut, nyloc = true)Nut M3 nyloc
4nut(M4_nut, nyloc = true)Nut M4 nyloc
11screw(M2_cap_screw, 10)Screw M2 cap x 10mm
15screw(M2_cs_cap_screw, 10)Screw M2 cs cap x 10mm
8screw(M3_cap_screw, 10)Screw M3 cap x 10mm
5screw(M3_cap_screw, 16)Screw M3 cap x 16mm
2screw(M3_cs_cap_screw, 12)Screw M3 cs cap x 12mm
2screw(M3_cs_cap_screw, 16)Screw M3 cs cap x 16mm
2screw(M4_cap_screw, 16)Screw M4 cap x 16mm
2screw(M4_cs_cap_screw, 20)Screw M4 cs cap x 20mm
26washer(M2_washer)Washer M2 x 5mm x 0.3mm
17washer(M3_washer)Washer M3 x 7mm x 0.5mm
4washer(M4_washer)Washer M4 x 9mm x 0.8mm
+

Top

+
+

+

Ring_terminals

+

Ring terminals and earth assemblies for DiBond panels.

+

vitamins/ring_terminals.scad Object definitions.

+

vitamins/ring_terminal.scad Implementation.

+

tests/ring_terminals.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + +
ringterm_extent(type)Space to leave
+

Modules

+ + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1nut(M3_nut, nyloc = true)Nut M3 nyloc
1ring_terminal(M3_ringterm)Ring terminal 3mm
1screw(M3_dome_screw, 10)Screw M3 dome x 10mm
2star_washer(M3_washer)Washer star M3 x 0.5mm
+

Top

+
+

+

Rockers

+

Rocket switch. Also used for neon indicator in the same form factor.

+

vitamins/rockers.scad Object definitions.

+

vitamins/rocker.scad Implementation.

+

tests/rockers.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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 slow height
rocker_slot_w(type)Panel slot width
rocker_spades(type)Spade types and positions
rocker_width(type)Body width
+

Modules

+ + + + + + + + + + + + + + + + + +
rocker(type)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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + +
1rocker(neon_indicator)Neon Indicator H8630FBNAL
1rocker(small_rocker)Rocker Switch PRASA1-16F-BB0BW
+

Top

+
+

+

Rod

+

Steel rods, with optional chamfer.

+

vitamins/rod.scad Implementation.

+

tests/rod.scad Code for this example.

+

rod

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1rod(10, 80)Smooth rod 10mm x 80mm
1rod(12, 80)Smooth rod 12mm x 80mm
1rod(3, 80)Smooth rod 3mm x 80mm
1rod(4, 80)Smooth rod 4mm x 80mm
1rod(5, 80)Smooth rod 5mm x 80mm
1rod(6, 80)Smooth rod 6mm x 80mm
1rod(8, 80)Smooth rod 8mm x 80mm
+

Top

+
+

+

Screws

+

Machine screws and wood screws with various head styles.

+

vitamins/screws.scad Object definitions.

+

vitamins/screw.scad Implementation.

+

tests/screws.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
screw_boss_diameter(type)Boss big enough for nut trap and washer
screw_head_depth(type, d)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_shorter_than(x)Returns longest screw length shorter than or equal to x
+

Modules

+ + + + + + + + + + + + + + + + + + + + + +
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)Countersink shape
+

screws

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1screw(No632_pan_screw, 30)Screw 6-32 pan x 30mm
1screw(M2_cap_screw, 25)Screw M2 cap x 25mm
1screw(M2_cs_cap_screw, 25)Screw M2 cs cap x 25mm
1screw(M2p5_cap_screw, 25)Screw M2.5 cap x 25mm
1screw(M2p5_pan_screw, 30)Screw M2.5 pan x 30mm
1screw(M3_cap_screw, 25)Screw M3 cap x 25mm
1screw(M3_cs_cap_screw, 25)Screw M3 cs cap x 25mm
1screw(M3_dome_screw, 25)Screw M3 dome x 25mm
1screw(M3_grub_screw, 6)Screw M3 grub x 6mm
1screw(M3_hex_screw, 30)Screw M3 hex x 30mm
1screw(M3_low_cap_screw, 25)Screw M3 low cap x 25mm
1screw(M3_pan_screw, 30)Screw M3 pan x 30mm
1screw(M4_cap_screw, 25)Screw M4 cap x 25mm
1screw(M4_cs_cap_screw, 25)Screw M4 cs cap x 25mm
1screw(M4_dome_screw, 25)Screw M4 dome x 25mm
1screw(M4_grub_screw, 6)Screw M4 grub x 6mm
1screw(M4_hex_screw, 30)Screw M4 hex x 30mm
1screw(M4_pan_screw, 30)Screw M4 pan x 30mm
1screw(M5_cap_screw, 30)Screw M5 cap x 30mm
1screw(M5_hex_screw, 30)Screw M5 hex x 30mm
1screw(M5_pan_screw, 30)Screw M5 pan x 30mm
1screw(M6_cap_screw, 30)Screw M6 cap x 30mm
1screw(M6_hex_screw, 30)Screw M6 hex x 30mm
1screw(M6_pan_screw, 30)Screw M6 pan x 30mm
1screw(M8_cap_screw, 35)Screw M8 cap x 35mm
1screw(M8_hex_screw, 30)Screw M8 hex x 30mm
1screw(No2_screw, 30)Screw No2 pan wood x 30mm
1screw(No4_screw, 30)Screw No4 pan wood x 30mm
1screw(No6_cs_screw, 30)Screw No6 cs wood x 30mm
1screw(No6_screw, 30)Screw No6 pan wood x 30mm
+

Top

+
+

+

Sealing_strip

+

Sealing strip from B&Q used to seal around the door of 3D printers.

+

vitamins/sealing_strip.scad Implementation.

+

tests/sealing_strip.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + +
sealing_strip(length)Draw specified length of sealing strip
+

sealing_strip

+

Vitamins

+ + + + + + + + + + + + + + + +
1sealing_strip(100)Sealing strip 10mm x 4mm x 100mm
+

Top

+
+

+

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.:

+ +

The "Color" parameter is a quad-array: [R, G, B, Alpha], or can be a named color, see OpenSCAD_User_Manual.

+

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 Object definitions.

+

vitamins/sheet.scad Implementation.

+

tests/sheets.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + +
sheet_colour(type)Colour
sheet_is_soft(type)Is soft enough for wood screws
sheet_thickness(type)Thickness
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + +
render_2D_sheet(type, color = false)Extrude a 2D sheet template and give it the correct colour
render_sheet(type, color = false)Render a sheet in the correct colour after holes have been subtracted
sheet(type, w, d, corners = [0, 0, 0, 0])Draw speified sheet
sheet_2D(type, w, d, corners = [0, 0, 0, 0])2D sheet template with specified size and optionally rounded corners
+

sheets

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1sheet(FoilTape, 30, 30, 2)Aluminium foil tape 30mm x 30mm x 0.05mm
1sheet(AL6, 30, 30, 2)Aluminium tooling plate 30mm x 30mm x 6mm
1sheet(AL8, 30, 30, 2)Aluminium tooling plate 30mm x 30mm x 8mm
1sheet(Cardboard, 30, 30, 2)Corrugated cardboard 30mm x 30mm x 5mm
1sheet(Foam20, 30, 30, 2)Foam sponge 30mm x 30mm x 20mm
1sheet(DiBond, 30, 30, 2)Sheet DiBond 30mm x 30mm x 3mm
1sheet(DiBond6, 30, 30, 2)Sheet DiBond 30mm x 30mm x 6mm
1sheet(MDF10, 30, 30, 2)Sheet MDF 30mm x 30mm x 10mm
1sheet(MDF12, 30, 30, 2)Sheet MDF 30mm x 30mm x 12mm
1sheet(MDF19, 30, 30, 2)Sheet MDF 30mm x 30mm x 19mm
1sheet(MDF6, 30, 30, 2)Sheet MDF 30mm x 30mm x 6mm
1sheet(PMMA10, 30, 30, 2)Sheet acrylic 30mm x 30mm x 10mm
1sheet(PMMA3, 30, 30, 2)Sheet acrylic 30mm x 30mm x 3mm
1sheet(PMMA6, 30, 30, 2)Sheet acrylic 30mm x 30mm x 6mm
1sheet(PMMA8, 30, 30, 2)Sheet acrylic 30mm x 30mm x 8mm
1sheet(glass2, 30, 30, 2)Sheet glass 30mm x 30mm x 2mm
1sheet(Steel06, 30, 30, 2)Sheet mild steel 30mm x 30mm x 0.6mm
+

Top

+
+

+

Spades

+

Spade terminals used as parts of electrical components.

+

vitamins/spades.scad Object definitions.

+

vitamins/spade.scad Implementation.

+

tests/spades.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + +
spade(type, height = 14)Draw a spade of the specified type and total length. The shank length is adjusted to make the length.
+

spades

+

Top

+
+

+

Spools

+

Filament spool models

+

vitamins/spools.scad Object definitions.

+

vitamins/spool.scad Implementation.

+

tests/spools.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + +
spool_height(type)Outside width
+

Modules

+ + + + + + + + + + + + + +
spool(type)Draw specified spool
+

spools

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + +
1spool(spool_200x55)Filament spool 200 x 55
1spool(spool_300x85)Filament spool 300 x 85
+

Top

+
+

+

Springs

+

Compression springs. Can be tapered, have open, closed or ground ends. Ground ends will render a lot slower.

+

vitamins/springs.scad Object definitions.

+

vitamins/spring.scad Implementation.

+

tests/springs.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + +
comp_spring(type, l = 0)Calculate the mesh for spring
+

Modules

+ + + + + + + + + + + + + +
comp_spring(type, l = 0)Draw specified spring, l can be set to specify the compressed length.
+

springs

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + +
1comp_spring(batt_spring)Spring 5 - 6mm spiral OD, 0.5mm gauge x 8mm long, closed end
1comp_spring(peg_spring)Spring 6.4mm OD, 0.9mm gauge x 15.5mm long, closed end
+

Top

+
+

+

Ssrs

+

Solid state relays.

+

vitamins/ssrs.scad Object definitions.

+

vitamins/ssr.scad Implementation.

+

tests/ssrs.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
4nut(M4_nut, nyloc = true)Nut M4 nyloc
4screw(M4_cap_screw, 16)Screw M4 cap x 16mm
1ssr(SSR25DA)Solid state relay Fotek 25A
1ssr(SSR10DA)Solid state relay Robodigg 10A
8washer(M4_washer)Washer M4 x 9mm x 0.8mm
+

Top

+
+

+

Stepper_motors

+

NEMA stepper motor model.

+

vitamins/stepper_motors.scad Object definitions.

+

vitamins/stepper_motor.scad Implementation.

+

tests/stepper_motors.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NEMA_body_radius(type)Body radius
NEMA_boss_height(type)Boss height
NEMA_boss_radius(type)Boss around the spindle radius
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
NEMA_width(type)Width of the square face
+

Functions

+ + + + + + + + + + + + + + + + + +
NEMA_big_hole(type)Clearance hole for the big boss
NEMA_holes(type)Screw positions for for loop
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + +
NEMA(type)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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
24screw(M3_pan_screw, 8)Screw M3 pan x 8mm
1NEMA(NEMA14)Stepper motor NEMA14 x 36mm
1NEMA(NEMA16)Stepper motor NEMA16 x 19.2mm
1NEMA(NEMA17S)Stepper motor NEMA17 x 34mm
1NEMA(NEMA17M)Stepper motor NEMA17 x 40mm
1NEMA(NEMA17)Stepper motor NEMA17 x 47mm
1NEMA(NEMA23)Stepper motor NEMA22 x 51.2mm
24washer(M3_washer)Washer M3 x 7mm x 0.5mm
24star_washer(M3_washer)Washer star M3 x 0.5mm
+

Top

+
+

+

Toggles

+

Toggle switches

+

vitamins/toggles.scad Object definitions.

+

vitamins/toggle.scad Implementation.

+

tests/toggles.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + +
toggle_hole_radius(type)Radius of the panel hole
+

Modules

+ + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1toggle(AP5236, 3)Toggle switch AP5236
1toggle(CK7101, 3)Toggle switch CK7101
1toggle(CK7105, 3)Toggle switch CK7101
1toggle(MS332F, 3)Toggle switch MS332F
+

Top

+
+

+

Transformers

+

Iron core transformers. The grey shaded area is the keep out region where the terminals are.

+

vitamins/transformers.scad Object definitions.

+

vitamins/transformer.scad Implementation.

+

tests/transformers.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + +
transformer(type)Draw specified transformer
transformer_hole_positions(type)Position children at the mounting hole positions
+

transformers

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + +
1transformer(CCM300)Transformer Carroll & Meynell CCM300/230 isolation
1transformer(SMALLTX)Transformer Small mains
+

Top

+
+

+

Tubings

+

Tubing and sleeving. The internal diameter can be forced to stretch it over something.

+

vitamins/tubings.scad Object definitions.

+

vitamins/tubing.scad Implementation.

+

tests/tubings.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + +
tubing_colour(type)Colour
tubing_id(type)Inside diameter
tubing_material(type)Material description
tubing_od(type)Outside diameter
+

Modules

+ + + + + + + + + + + + + +
tubing(type, length = 15, forced_id = 0)Draw specified tubing with optional forced internal diameter
+

tubings

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1tubing(HSHRNK16)Heatshrink sleeving ID 1.6mm x 15mm
1tubing(HSHRNK100)Heatshrink sleeving ID 10mm x 15mm
1tubing(HSHRNK24)Heatshrink sleeving ID 2.4mm x 15mm
1tubing(HSHRNK64)Heatshrink sleeving ID 6.4mm x 15mm
1tubing(NEOP85)Neoprene tubing OD 8mm ID 5mm x 15mm
1tubing(PTFE07)PTFE sleeving OD 1.2mm ID 0.71mm x 15mm
1tubing(PTFE20)PTFE sleeving OD 2.6mm ID 2mm x 15mm
1tubing(PF7)PTFE tubing OD 4.6mm ID 3.84mm x 15mm
1tubing(PVC64)PVC aquarium tubing OD 6mm ID 4mm x 15mm
1tubing(PVC85)PVC aquarium tubing OD 8mm ID 5mm x 15mm
+

Top

+
+

+

Variacs

+

Variable auto transformers.

+

vitamins/variacs.scad Object definitions.

+

vitamins/variac.scad Implementation.

+

tests/variacs.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + +
variac_radius(type)Body radius
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + +
1variac(DURATRAKV5HM, 3)Variac DURATRAK V5HM
1variac(RAVISTAT1F1, 3)Variac RAVISTAT 1F-1
+

Top

+
+

+

Veroboard

+

Veroboard with mounting holes, track breaks, removed tracks, solder points and components.

+

vitamins/veroboard.scad Implementation.

+

tests/veroboard.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
2idc_transition(2p54header, 10)IDC transition header 10 x 2
4nut(M3_nut, nyloc = true)Nut M3 nyloc
4screw(M3_dome_screw, 25)Screw M3 dome x 25mm
2terminal_254(10)Terminal block 10 way 0.1"
2veroboard(z_vb)Veroboard 5 holes x 22strips
8washer(M3_washer)Washer M3 x 7mm x 0.5mm
+

Printed

+ + + + + + + + + + + + + + + +
4pcb_spacer30120.stl
+

Assemblies

+ + + + + + + + + + + + + + + +
2z_bed_terminal_assembly
+

Top

+
+

+

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 Object definitions.

+

vitamins/washer.scad Implementation.

+

tests/washers.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + +
washer_colour(type)Washer colour
washer_id(type)Inside diameter
washer_radius(type)Outside radius
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1washer(M2_washer)Washer M2 x 5mm x 0.3mm
1washer(M2p5_washer)Washer M2.5 x 5.9mm x 0.5mm
1washer(M3_washer)Washer M3 x 7mm x 0.5mm
1washer(M3p5_washer)Washer M3.5 x 8mm x 0.5mm
1washer(M4_washer)Washer M4 x 9mm x 0.8mm
1washer(M5_washer)Washer M5 x 10mm x 1mm
1washer(M6_washer)Washer M6 x 12.5mm x 1.5mm
1washer(M8_washer)Washer M8 x 17mm x 1.6mm
1washer(M3_penny_washer)Washer penny M3 x 12mm x 0.8mm
1washer(M4_penny_washer)Washer penny M4 x 14mm x 0.8mm
1washer(M5_penny_washer)Washer penny M5 x 20mm x 1.4mm
1washer(M6_penny_washer)Washer penny M6 x 26mm x 1.5mm
1washer(M8_penny_washer)Washer penny M8 x 30mm x 1.5mm
1washer(M3_rubber_washer)Washer rubber M3 x 10mm x 1.5mm
1spring_washer(M2_washer)Washer spring M2 x 0.5mm
1spring_washer(M2p5_washer)Washer spring M2.5 x 0.6mm
1spring_washer(M3_washer)Washer spring M3 x 1mm
1spring_washer(M3p5_washer)Washer spring M3.5 x 1mm
1spring_washer(M4_washer)Washer spring M4 x 1.2mm
1spring_washer(M5_washer)Washer spring M5 x 1.6mm
1spring_washer(M6_washer)Washer spring M6 x 1.6mm
1spring_washer(M8_washer)Washer spring M8 x 2mm
1star_washer(M2_washer)Washer star M2 x 0.3mm
1star_washer(M2p5_washer)Washer star M2.5 x 0.5mm
1star_washer(M3_washer)Washer star M3 x 0.5mm
1star_washer(M3_rubber_washer)Washer star M3 x 1.5mm
1star_washer(M3p5_washer)Washer star M3.5 x 0.5mm
1star_washer(M4_washer)Washer star M4 x 0.8mm
1star_washer(M5_washer)Washer star M5 x 1mm
1star_washer(M6_washer)Washer star M6 x 1.5mm
1star_washer(M8_washer)Washer star M8 x 1.6mm
+

Printed

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1M20_washer.stl
1M25_washer.stl
2M30_washer.stl
1M35_washer.stl
1M40_washer.stl
1M50_washer.stl
1M60_washer.stl
1M80_washer.stl
+

Top

+
+

+

Zipties

+

Cable zipties.

+

vitamins/zipties.scad Object definitions.

+

vitamins/ziptie.scad Implementation.

+

tests/zipties.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ziptie_colour(type)Colour
ziptie_latch(type)Latch dimensions
ziptie_tail(type)The length without teeth
ziptie_thickness(type)Thickness
ziptie_width(type)Width
+

zipties

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + +
1ziptie(small_ziptie, 5)Ziptie 100mm min length
1ziptie(ziptie_3mm, 5)Ziptie 100mm min length
1ziptie(ziptie_3p6mm, 5)Ziptie 100mm min length
+

Top

+
+

+

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 used and box_assembly.scad included.

+

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: +

+

Normally the side sheets are the same type but they can be overridden individually as long as the substitute has the same thickness.

+

box.scad Implementation.

+

tests/box.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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_top_sheet(type)Sheet type for the top
box_wall(type)Wall thickness of 3D parts
box_width(type)Internal width
+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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_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)Generates a 2D template for a shelf sheet
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
8insert(F1BM3)Heatfit insert M3
4screw(M3_dome_screw, 16)Screw M3 dome x 16mm
4screw(M3_dome_screw, 20)Screw M3 dome x 20mm
2sheet(DiBond, 143, 63, 1)Sheet DiBond 143mm x 63mm x 3mm
1sheet(DiBond6, 150, 100, 2.9)Sheet DiBond 150mm x 100mm x 6mm
2sheet(DiBond, 93, 63, 1)Sheet DiBond 93mm x 63mm x 3mm
1sheet(PMMA3, 150, 100, 2.9)Sheet acrylic 150mm x 100mm x 3mm
8washer(M3_washer)Washer M3 x 7mm x 0.5mm
8star_washer(M3_washer)Washer star M3 x 0.5mm
+

Printed

+ + + + + + + + + + + + + + + + + + + + + + + + + +
10bottom_bezel.stl
4box_corner_profile.stl
1top_bezel.stl
+

Routed

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1box_back.dxf
1box_base.dxf
1box_front.dxf
1box_left.dxf
1box_right.dxf
1box_top.dxf
+

Assemblies

+ + + + + + + + + + + + + + + +
1box_assembly
+

Top

+
+

+

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 included rather than used 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.

+

Uses fixing blocks and corner blocks.

+

butt_box.scad Implementation.

+

tests/butt_box.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bbox_base_sheet(type)Sheet type for the base
bbox_depth(type)Internal depth
bbox_height(type)Internal height
bbox_screw(type)Screw type for corner blocks
bbox_sheets(type)Sheet type for the sides
bbox_span(type)Maximum span between fixing blocks
bbox_top_sheet(type)Sheet type for the top
bbox_width(type)Internal width
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_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)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)2D template for the front
bbox_left(type)Default left side, can be overridden to customise
bbox_left_blank(type)2D template for the left side
bbox_right(type)Default right side, can be overridden to customise
bbox_right_blank(type)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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
48insert(F1BM3)Heatfit insert M3
36screw(M3_dome_screw, 10)Screw M3 dome x 10mm
4screw(M3_dome_screw, 12)Screw M3 dome x 12mm
8screw(M3_dome_screw, 16)Screw M3 dome x 16mm
2sheet(DiBond, 303, 126)Sheet DiBond 303mm x 126mm x 3mm
1sheet(DiBond, 400, 126)Sheet DiBond 400mm x 126mm x 3mm
1sheet(DiBond6, 400, 300, 1)Sheet DiBond 400mm x 300mm x 6mm
1sheet(DiBond, 406, 129)Sheet DiBond 406mm x 129mm x 3mm
1sheet(PMMA3, 406, 303)Sheet acrylic 406mm x 303mm x 3mm
48washer(M3_washer)Washer M3 x 7mm x 0.5mm
48star_washer(M3_washer)Washer star M3 x 0.5mm
+

Printed

+ + + + + + + + + + + + + + + + + + + + +
8corner_block_M30.stl
8fixing_block_M30.stl
+

Routed

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1bbox_back.dxf
1bbox_base.dxf
1bbox_front.dxf
1bbox_left.dxf
1bbox_right.dxf
1bbox_top.dxf
+

Assemblies

+ + + + + + + + + + + + + + + + + + + + + + + + + +
1bbox_assembly
8corner_block_M30_assembly
8fixing_block_M30_assembly
+

Top

+
+

+

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.

+

cable_grommets.scad Implementation.

+

tests/cable_grommets.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+

Printed

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1mouse_grommet_50_3.stl
1ribbon_grommet_20_3.stl
1round_grommet_bottom_60.stl
1round_grommet_top_60_3.stl
+

Top

+
+

+

Carriers

+

Adapts ESP12 module to 0.1" grid. See https://hydraraptor.blogspot.com/2018/04/esp-12-module-breakout-adaptor.html.

+

carriers.scad Implementation.

+

tests/carriers.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + +
ESP12F_carrier_stl()Generate the STL for an ESP12 carrier
+

carriers

+

Printed

+ + + + + + + + + + + + + + + +
1ESP12F_carrier.stl
+

Top

+
+

+

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 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.

+

corner_block.scad Implementation.

+

tests/corner_block.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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)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, name = false)Printed block with all fasteners
+

corner_block

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
3insert(F1BM)Heatfit insert M2
3insert(F1BM2p5)Heatfit insert M2.5
3insert(F1BM3)Heatfit insert M3
3insert(F1BM4)Heatfit insert M4
3screw(M2_cap_screw, 8)Screw M2 cap x 8mm
3screw(M2p5_pan_screw, 10)Screw M2.5 pan x 10mm
3screw(M3_dome_screw, 10)Screw M3 dome x 10mm
3screw(M4_dome_screw, 12)Screw M4 dome x 12mm
3washer(M2_washer)Washer M2 x 5mm x 0.3mm
3washer(M2p5_washer)Washer M2.5 x 5.9mm x 0.5mm
3washer(M3_washer)Washer M3 x 7mm x 0.5mm
3washer(M4_washer)Washer M4 x 9mm x 0.8mm
3star_washer(M2_washer)Washer star M2 x 0.3mm
3star_washer(M2p5_washer)Washer star M2.5 x 0.5mm
3star_washer(M3_washer)Washer star M3 x 0.5mm
3star_washer(M4_washer)Washer star M4 x 0.8mm
+

Printed

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1corner_block_M20.stl
1corner_block_M25.stl
1corner_block_M30.stl
1corner_block_M40.stl
+

Assemblies

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1corner_block_M20_assembly
1corner_block_M25_assembly
1corner_block_M30_assembly
1corner_block_M40_assembly
+

Top

+
+

+

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 is used to make it airtight and a door_latch holds it closed.

+

door_hinge.scad Implementation.

+

tests/door_hinge.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
4nut(M4_nut, nyloc = true)Nut M4 nyloc
2screw(M3_cap_screw, 35)Screw M3 cap x 35mm
4screw(M3_dome_screw, 10)Screw M3 dome x 10mm
4screw(M4_dome_screw, 16)Screw M4 dome x 16mm
1sheet(PMMA6, 50, 50, 3)Sheet acrylic 50mm x 50mm x 6mm
8washer(M3_washer)Washer M3 x 7mm x 0.5mm
8washer(M4_washer)Washer M4 x 9mm x 0.8mm
+

Printed

+ + + + + + + + + + + + + + + + + + + + +
2door_hinge_6.stl
2door_hinge_stat.stl
+

Top

+
+

+

Door_latch

+

Door latch for 6mm acrylic door for 3D printer. See door_hinge.

+

door_latch.scad Implementation.

+

tests/door_latch.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + +
door_latch_offset()Offset of the axle from the door edge
door_latch_screw()The screw used for the axle
+

Modules

+ + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + +
1nut(M4_nut, nyloc = true)Nut M4 nyloc
1screw(M4_hex_screw, 20)Screw M4 hex x 20mm
2washer(M4_washer)Washer M4 x 9mm x 0.8mm
+

Printed

+ + + + + + + + + + + + + + + +
1door_latch.stl
+

Top

+
+

+

Fan_guard

+

Pintable fan finger guard to match the specified fan. To be included, not used.

+

The ring spacing as well as the number of spokes can be specified, if zero a gasket is generated instead of a guard.

+

fan_guard.scad Implementation.

+

tests/fan_guard.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + +
fan_guard_corner_r(type)Corner radius of the guard
fan_guard_thickness()Default thickness
fan_guard_width(type)Width of the guard
+

Modules

+ + + + + + + + + + + + + +
fan_guard(type, name = false, thickness = fan_guard_thickness()Generate the STL
+

fan_guard

+

Printed

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1fan_guard_120.stl
1fan_guard_25.stl
1fan_guard_30.stl
1fan_guard_40.stl
1fan_guard_50.stl
2fan_guard_60.stl
1fan_guard_70.stl
2fan_guard_80.stl
+

Top

+
+

+

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 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.

+

fixing_block.scad Implementation.

+

tests/fixing_block.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fastened_fixing_block_assembly(thickness, screw = def_screw, screw2 = undef, thickness2 = undef)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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
3insert(F1BM)Heatfit insert M2
3insert(F1BM2p5)Heatfit insert M2.5
3insert(F1BM3)Heatfit insert M3
3insert(F1BM4)Heatfit insert M4
3screw(M2_cap_screw, 8)Screw M2 cap x 8mm
3screw(M2p5_pan_screw, 10)Screw M2.5 pan x 10mm
3screw(M3_dome_screw, 10)Screw M3 dome x 10mm
3screw(M4_dome_screw, 16)Screw M4 dome x 16mm
3washer(M2_washer)Washer M2 x 5mm x 0.3mm
3washer(M2p5_washer)Washer M2.5 x 5.9mm x 0.5mm
3washer(M3_washer)Washer M3 x 7mm x 0.5mm
3washer(M4_washer)Washer M4 x 9mm x 0.8mm
3star_washer(M2_washer)Washer star M2 x 0.3mm
3star_washer(M2p5_washer)Washer star M2.5 x 0.5mm
3star_washer(M3_washer)Washer star M3 x 0.5mm
3star_washer(M4_washer)Washer star M4 x 0.8mm
+

Printed

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1fixing_block_M20.stl
1fixing_block_M25.stl
1fixing_block_M30.stl
1fixing_block_M40.stl
+

Assemblies

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1fixing_block_M20_assembly
1fixing_block_M25_assembly
1fixing_block_M30_assembly
1fixing_block_M40_assembly
+

Top

+
+

+

Foot

+

Customisable printed rubber feet for equipment cases. The insert variant is better for solid feet because +inserts don't grip well in rubber.

+

foot.scad Implementation.

+

tests/foot.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + +
foot()Default foot used unless a list of parameters is passed
insert_foot()Default foot with insert
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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)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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1insert(F1BM3)Heatfit insert M3
1nut(M4_nut, nyloc = true)Nut M4 nyloc
1screw(M3_cap_screw, 8)Screw M3 cap x 8mm
1screw(M4_cap_screw, 16)Screw M4 cap x 16mm
1washer(M3_washer)Washer M3 x 7mm x 0.5mm
2washer(M4_washer)Washer M4 x 9mm x 0.8mm
1star_washer(M3_washer)Washer star M3 x 0.5mm
+

Printed

+ + + + + + + + + + + + + + + + + + + + +
1foot.stl
1insert_foot.stl
+

Assemblies

+ + + + + + + + + + + + + + + +
1insert_foot_assembly
+

Top

+
+

+

Handle

+

Printed handle that can be printed without needing support material due to its truncated teardrop profile.

+

handle.scad Implementation.

+

tests/handle.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + +
handle_height()Total height
handle_length()Outside length
handle_screw()The screw type
handle_width()The width, i.e. diameter
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
2insert(F1BM4)Heatfit insert M4
2screw(M4_cap_screw, 16)Screw M4 cap x 16mm
2washer(M4_washer)Washer M4 x 9mm x 0.8mm
2star_washer(M4_washer)Washer star M4 x 0.8mm
+

Printed

+ + + + + + + + + + + + + + + +
1handle.stl
+

Assemblies

+ + + + + + + + + + + + + + + +
1handle_assembly
+

Top

+
+

+

Ribbon_clamp

+

Clamp for ribbon cable and polypropylene strip.

+

ribbon_clamp.scad Implementation.

+

tests/ribbon_clamp.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ribbon_clamp_height()Height
ribbon_clamp_hole_pitch(ways)Hole pitch
ribbon_clamp_length(ways)Length given ways
ribbon_clamp_width()Width
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ribbon_clamp(ways)Generate STL for given number of ways
ribbon_clamp_assembly(ways)Printed part with inserts in place
ribbon_clamp_fastened_assembly(ways, thickness, screw = screw)Clamp with fasteners in place
ribbon_clamp_hole_positions(ways, side = undef)Place children at hole positions
ribbon_clamp_holes(ways, h = 20)Drill screw holes
+

ribbon_clamp

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
2insert(F1BM3)Heatfit insert M3
1Ribbon cable 20 way 100mm
2screw(M3_cap_screw, 10)Screw M3 cap x 10mm
1Tape self amalgamating silicone 26 x 25mm
2washer(M3_washer)Washer M3 x 7mm x 0.5mm
2star_washer(M3_washer)Washer star M3 x 0.5mm
+

Printed

+ + + + + + + + + + + + + + + +
1ribbon_clamp_20.stl
+

Assemblies

+ + + + + + + + + + + + + + + +
1ribbon_clamp_20_assembly
+

Top

+
+

+

Screw_knob

+

Knob with embedded hex head screw.

+

screw_knob.scad Implementation.

+

tests/screw_knob.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + + + + + +
screw_knob(screw)Generate the STL foe a knob to fit the specified hex screw
screw_knob_assembly(screw, length)Assembly with the screw in place
+

screw_knob

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + +
1screw(M3_hex_screw, 16)Screw M3 hex x 16mm
1screw(M4_hex_screw, 16)Screw M4 hex x 16mm
+

Printed

+ + + + + + + + + + + + + + + + + + + + +
1screw_knob_M30.stl
1screw_knob_M40.stl
+

Assemblies

+ + + + + + + + + + + + + + + + + + + + +
1screw_knob_M30_16_assembly
1screw_knob_M40_16_assembly
+

Top

+
+

+

Socket_box

+

UK 13A socket and printed backbox with earth terminal for the panel it is mounted on.

+

socket_box.scad Implementation.

+

tests/socket_box.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + +
socket_box_depth()Outside depth of the backbox
+

Modules

+ + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
4insert(F1BM3)Heatfit insert M3
1mains_socket(Contactum)Mains socket 13A
1mains_socket(MKLOGIC)Mains socket 13A, switched
2nut(M3_nut, nyloc = true)Nut M3 nyloc
2ring_terminal(M3_ringterm)Ring terminal 3mm
4screw(M3_cs_cap_screw, 20)Screw M3 cs cap x 20mm
2screw(M3_dome_screw, 10)Screw M3 dome x 10mm
4star_washer(M3_washer)Washer star M3 x 0.5mm
+

Printed

+ + + + + + + + + + + + + + + + + + + + +
1socket_box_Contactum.stl
1socket_box_MKLOGIC.stl
+

Assemblies

+ + + + + + + + + + + + + + + + + + + + +
1socket_box_Contactum_assembly
1socket_box_MKLOGIC_assembly
+

Top

+
+

+

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.

+

strap_handle.scad Implementation.

+

tests/strap_handle.scad Code for this example.

+

Properties

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + +
strap_end_width(type = strap)Width of the ends
strap_height(type)Height of the ends
strap_insert(type)The insert type
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
2insert(F1BM3)Heatfit insert M3
2screw(M3_pan_screw, 8)Screw M3 pan x 8mm
2washer(M3_penny_washer)Washer penny M3 x 12mm x 0.8mm
2star_washer(M3_washer)Washer star M3 x 0.5mm
+

Printed

+ + + + + + + + + + + + + + + + + + + + +
1strap.stl
2strap_end.stl
+

Assemblies

+ + + + + + + + + + + + + + + +
2strap_end_assembly
+

Top

+
+

+

Annotation

+

Annotation used in this documentation

+

utils/annotation.scad Implementation.

+

tests/annotation.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + + + + + +
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

+

Top

+
+

+

Bezier

+

Bezier curves and function to get and adjust the length or minimum z point.

+

utils/bezier.scad Implementation.

+

tests/bezier.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+

Top

+
+

+

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 Implementation.

+

tests/dogbones.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + + + + + +
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

+

Top

+
+

+

Fillet

+

Rounded fillet for adding to corners.

+

utils/fillet.scad Implementation.

+

tests/fillet.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + +
fillet(r, h, center = false)Fillet with specified radius and height
+

fillet

+

Top

+
+

+

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 Implementation.

+

tests/hanging_hole.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + +
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

+

Top

+
+

+

Layout

+

Layout objects in a line with equal gaps given a vector of their widths.

+

utils/layout.scad Implementation.

+

tests/layout.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + +
layout_offset(widths, i, gap = 2)Calculate the offset for the ith item
+

Modules

+ + + + + + + + + + + + + +
layout(widths, gap = 2, no_offset = false)Layout children passing $i
+

layout

+

Top

+
+

+

Maths

+

Maths utilities for minapulating vectors and matrices.

+

utils/maths.scad Implementation.

+

tests/maths.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
identity(n, x = 1)Construct an arbitrary size identity matrix
reverse(v)Reverse a vector
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
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
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
+

maths

+

Top

+
+

+

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().

+

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 Implementation.

+

tests/offset.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + +
offset_3D(r, chamfer_base = false)Offset 3D shape by specified radius r, positive or negative.
+

offset

+

Top

+
+

+

Quadrant

+

Square with one rounded corner.

+

utils/quadrant.scad Implementation.

+

tests/quadrant.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + +
quadrant(w, r, center = false)Draw a square with one rounded corner, can be centered on the arc centre, when center is true.
+

quadrant

+

Top

+
+

+

Round

+

Round 2D shapes uisng offset(), which is fast and 3D shapes with offset_3D(), 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 Implementation.

+

tests/round.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + + + + + +
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

+

Top

+
+

+

Rounded_cylinder

+

Cylinder with a rounded end.

+

utils/rounded_cylinder.scad Implementation.

+

tests/rounded_cylinder.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + + + + + +
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

+

Top

+
+

+

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 Implementation.

+

tests/rounded_polygon.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + +
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

+

Top

+
+

+

Sector

+

A sector of a circle between two angles.

+

utils/sector.scad Implementation.

+

tests/sector.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + +
sector(r, start_angle, end_angle)Create specified sector given radius r, start_angle and end_angle
+

sector

+

Top

+
+

+

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. +This means the first three points must not be colinear. 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 Implementation.

+

tests/sweep.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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
circle_points(r = 1, z = 0)Generate the points of a circle, setting z makes a single turn spiral
path_length(path, i = 0, length = 0)Calculated the length along a path
rectangle_points(w, h)Generate the points of a rectangle
sweep(path, profile, loop = false, twist = 0)Generate the point list and face list of the swept volume
+

Modules

+ + + + + + + + + + + + + +
sweep(path, profile, loop = false, twist = 0)Draw a polyhedron that is the swept volume
+

sweep

+

Top

+
+

+

Tube

+

Simple tube or ring

+

utils/tube.scad Implementation.

+

tests/tube.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + + + + + +
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
+

tube

+

Top

+
+

+

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.

+

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 Implementation.

+

tests/bom.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
assembly(name)Name an assembly that will appear on the BOM, there needs to a module named <name>_assembly to make it
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.
stl(name)Name an stl that will appear on the BOM, there needs to a module named <name>_stl to make it
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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1insert(F1BM3)Heatfit insert M3
1widget(3)Rivit like thing for 3mm sheets
1screw(M3_cap_screw, 8)Screw M3 cap x 8mm
1sheet(PMMA3, 20, 20, 1)Sheet acrylic 20mm x 20mm x 3mm
1washer(M3_washer)Washer M3 x 7mm x 0.5mm
1star_washer(M3_washer)Washer star M3 x 0.5mm
+

Printed

+ + + + + + + + + + + + + + + +
1widget.stl
+

Routed

+ + + + + + + + + + + + + + + +
1widget.dxf
+

Assemblies

+ + + + + + + + + + + + + + + + + + + + + + + + + +
1widget_top_assembly
1widgit_base_assembly
1wigdit_assembly
+

Top

+
+

+

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 Implementation.

+

tests/clip.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + + + + + +
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

+

Top

+
+

+

Global

+

Global constants, functions and modules. This file is used directly or indirectly in every scad file.

+

utils/core/global.scad Implementation.

+

tests/global.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Len(x)Returns the length of a list or 0 if x is not a list
echoit(x)Echo expression and return it, useful for debugging
in(list, x)Returns true if x is an element in the list
inch(x)Inch to mm conversion
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
sqr(x)Returns the square of x
+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
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
semi_circle(r, d = undef)A semi circle in the positive Y domain
translate_z(z)Shortcut for Z only translations
vflip()Invert children by doing a 180 flip around the X axis
+

global

+

Top

+
+

+

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.

+

utils/core/polyholes.scad Implementation.

+

tests/polyholes.scad Code for this example.

+

Functions

+ + + + + + + + + + + + + + + + + + + + + +
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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
drill(r, h = 100)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)Make a cylinder adjusted to print the correct size
poly_ring(or, ir)Make a 2D ring 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

+

Vitamins

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1sheet(Steel06, 20, 20, 1)Sheet mild steel 20mm x 20mm x 0.6mm
1rod(1.5, 11)Smooth rod 1.5mm x 11mm
1rod(10.5, 47)Smooth rod 10.5mm x 47mm
1rod(10, 45)Smooth rod 10mm x 45mm
1rod(1, 9)Smooth rod 1mm x 9mm
1rod(2.5, 15)Smooth rod 2.5mm x 15mm
1rod(2, 13)Smooth rod 2mm x 13mm
1rod(3.5, 19)Smooth rod 3.5mm x 19mm
1rod(3, 17)Smooth rod 3mm x 17mm
4rod(3, 3)Smooth rod 3mm x 3mm
1rod(4.5, 23)Smooth rod 4.5mm x 23mm
1rod(4, 21)Smooth rod 4mm x 21mm
1rod(5.5, 27)Smooth rod 5.5mm x 27mm
1rod(5, 25)Smooth rod 5mm x 25mm
1rod(6.5, 31)Smooth rod 6.5mm x 31mm
1rod(6, 29)Smooth rod 6mm x 29mm
1rod(7.5, 35)Smooth rod 7.5mm x 35mm
1rod(7, 33)Smooth rod 7mm x 33mm
1rod(8.5, 39)Smooth rod 8.5mm x 39mm
1rod(8, 37)Smooth rod 8mm x 37mm
1rod(9.5, 43)Smooth rod 9.5mm x 43mm
1rod(9, 41)Smooth rod 9mm x 41mm
+

Top

+
+

+

Rounded_rectangle

+

Rectangle with rounded corners.

+

utils/core/rounded_rectangle.scad Implementation.

+

tests/rounded_rectangle.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + + + + + +
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

+

Top

+
+

+

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 Implementation.

+

tests/sphere.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + +
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

+

Top

+
+

+

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.

+

utils/core/teardrops.scad Implementation.

+

tests/teardrops.scad Code for this example.

+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + +
teardrop(h, r, center = true, truncate = true)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_plus(h, r, center = true, truncate = true)Slightly bigger teardrop to allow for the 3D printing staircase effect
tearslot(h, r, w, center = true)A horizontal slot that doesn't need support material
vertical_tearslot(h, r, l, center = true)A vertical slot that doesn't need support material
+

teardrops

+

Top

+
\ No newline at end of file