dorkhub

NopSCADlib

Library of parts modelled in OpenSCAD and a framework for making projects

nophead
OpenSCAD1.6k189 forksGPL-3.0updated 9 months ago
git clone https://github.com/nophead/NopSCADlib.gitnophead/NopSCADlib

NopSCADlib

An ever expanding library of parts modelled in OpenSCAD useful for 3D printers and enclosures for electronics, etc.

It contains lots of vitamins (the RepRap term for non-printed parts), some general purpose printed parts and some utilities. There are also Python scripts to generate Bills of Materials (BOMs), STL files for all the printed parts, DXF files for CNC routed parts in a project and a manual containing assembly instructions and exploded views by scraping markdown embedded in OpenSCAD comments, see scripts.

A simple example project can be found here and more complex examples here.

For more examples of what it can make see the gallery.

The license is GNU General Public License v3.0, see COPYING.

See usage for requirements, installation instructions and a usage guide.

A list of changes classified as breaking, additions or fixes is maintained in CHANGELOG.md.

Table of Contents

Vitamins A-H Vitamins I-Q Vitamins R-Z Printed Utilities Core Utilities
7_segments IECs Radials Box Annotation BOM
Antennas Inserts Rails Butt_box Bezier Clip
Axials Jack Ring_terminals Cable_clip Catenary Global
BLDC_motors LDRs Rockers Cable_grommets Chamfer Polyholes
Ball_bearings LED_meters Rod Camera_housing Core_xy Rounded_rectangle
Batteries LEDs Rod_ends Carriers Dimension Sphere
Bearing_blocks Leadnuts SBR_rails Corner_block Dogbones Teardrops
Belts Light_strips SK_brackets Door_hinge Fillet
Blowers Linear_bearings SMDs Door_latch Gears
Box_sections Magnets SSRs Drag_chain Hanging_hole
Bulldogs Mains_sockets Screws Fan_guard Horiholes
Buttons Microswitches Sealing_strip Fixing_block Layout
Cable_strips Microview Servo_motors Flat_hinge Maths
Cameras Modules Shaft_couplings Foot Offset
Circlips Nuts Sheets Gridfinity PCB_utils
Components O_ring Spades Handle Quadrant
DIP Opengrab Spools Knob Round
D_connectors PCB Springs LED_bezel Rounded_cylinder
Displays PCBs Stepper_motors PCB_mount Rounded_polygon
Extrusion_brackets PSUs Swiss_clips PSU_shroud Rounded_triangle
Extrusions Panel_meters Terminals Pocket_handle Sector
Fans Photo_interrupters Toggles Press_fit Splines
Fastons Pillars Transformers Printed_box Sweep
Fuseholder Pillow_blocks Ttracks Printed_pulleys Thread
Gear_motors Pin_headers Tubings Ribbon_clamp Tube
Geared_steppers Potentiometers Variacs SSR_shroud
Green_terminals Pulleys Veroboard Screw_knob
HT_pipes Washers Socket_box
Hot_ends Wire Strap_handle
Hygrometer Zipties

7_segments

7 Segment displays.

Can be single digits stacked side by side or can be multiple digits in one unit. This is determined by the overall width compared to the width of a digit. Presence of a decimal point is determined by the number of pins. Its position is determined by a heuristic.

vitamins/7_segments.scad Object definitions.

vitamins/7_segment.scad Implementation.

tests/7_segments.scad Code for this example.

Properties

Function Description
7_segment_digit_size(type) Size of the actual digit and segment width and angle
7_segment_pin_pitch(type) x and y pin pitches and pin diameter
7_segment_pins(type) None
7_segment_size(type) Size of the body

Modules

Module Description
7_segment_digit(type, colour = grey(95), pin_length = 6.4) Draw the specified 7 segment digit
7_segment_digits(type, n, colour = grey(70), pin_length = 6.4, cutout = false) Draw n digits side by side

7_segments

Top


Antennas

Wifi Antennas

vitamins/antennas.scad Object definitions.

vitamins/antenna.scad Implementation.

tests/antennas.scad Code for this example.

Properties

Function Description
antenna_bot_d(type) Diameter at the base
antenna_gap(type) Space for left panel, washers and nuts when screwed on fully.
antenna_grip(type) Grip d, h, h2
antenna_hinge(type) Hinge post width, z value of the pin, pin diameter, width reduction and slot width
antenna_length(type) Total length
antenna_rings(type) List of ring z, thickness, depths
antenna_split(type) Split point
antenna_straight(type) Length of the straight part
antenna_top_d(type) Diameter at the top

Functions

Function Description
antenna_hole_r(type) Panel hole radius
antenna_nut(type) The nut

Modules

Module Description
antenna(type, thickness, angle) Draw a WiFi antenna

antennas

Vitamins

Qty Module call BOM entry
1 antenna(ESP201_antenna) Antenna ESP201
1 nut(ant_nut) Nut M6.25 x 1.8mm
1 star_washer(ant_washer_washer) Washer star M6.4 x 0.6mm

Top


Axials

Axial components for PCBs.

vitamins/axials.scad Object definitions.

vitamins/axial.scad Implementation.

tests/axials.scad Code for this example.

Properties

Function Description
ax_diode_colour(type) Body colour and stripe colour
ax_diode_size(type) Body length, diameter and corner radius
ax_diode_wire(type) Wire diameter
ax_res_colour(type) Body colour
ax_res_diameter(type) Body diameter
ax_res_end_d(type) End cap diameter
ax_res_end_l(type) End cap length
ax_res_length(type) Body length
ax_res_wattage(type) Power rating
ax_res_wire(type) Wire diameter

Modules

Module Description
ax_diode(type, value, pitch = 0) Through hole axial diode. If pitch is zero the minimum is used. If below the minimum the resistor is placed vertical.
ax_res(type, value, tol = 5, pitch = 0) Through hole axial resistor. If pitch is zero the minimum is used. If below the minimum the resistor is placed vertical.
wire_link(d, l, h = 1, tail = 3, sleeve = false) Draw a wire jumper link. sleeve can be a list with the diameter and colour. If l is zero then a vertical wire is drawn.

axials

Vitamins

Qty Module call BOM entry
2 ax_diode(DO_41, "1N4007") Diode 1N4007
2 ax_diode(DO_35, "1N4148") Diode 1N4148
1 pcb(PERF60x40) Perfboard 60 x 40mm
1 ax_res(res1_8, 1000) Resistor 1000 Ohms 5% 0.125W
1 ax_res(res1_8, 2200, tol = 1) Resistor 2200 Ohms 1% 0.125W
1 ax_res(res1_4, 39000, tol = 1) Resistor 39000 Ohms 1% 0.25W
1 ax_res(res1_4, 47000) Resistor 47000 Ohms 5% 0.25W
1 ax_res(res1_2, 8200) Resistor 8200 Ohms 5% 0.5W
1 ax_res(res1_2, 8250, tol = 1) Resistor 8250 Ohms 1% 0.5W
1 wire_link(0.8, 7.62, h = 0.75, sleeve = [1.5, "red"]) Wire link 0.8mm x 0.3" with red sleeving
1 wire_link(0.8, 10.16) Wire link 0.8mm x 0.4"
1 wire_link(0.8, 0, h = 5) Wire link 0.8mm x 8mm

Top


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

Function Description
bb_bore(type) Internal diameter
bb_colour(type) Shield colour, "silver" for metal
bb_diameter(type) External diameter
bb_flange_diameter(type) Flange diameter
bb_flange_width(type) Flange width
bb_hub(type) Inner rim thickness guesstimate
bb_name(type) Part code without shield type suffix
bb_rim(type) Outer rim thickness guesstimate
bb_width(type) Width

Modules

Module Description
ball_bearing(type) Draw a ball bearing
bearing_ball(dia) Draw a steel bearing ball

ball_bearings

Vitamins

Qty Module call BOM entry
1 ball_bearing(BB608) Ball bearing 608-2RS 8mm x 22mm x 7mm
1 ball_bearing(BB6200) Ball bearing 6200-2RS 10mm x 30mm x 9mm
1 ball_bearing(BB6201) Ball bearing 6201-2RS 12mm x 32mm x 10mm
1 ball_bearing(BB624) Ball bearing 624-2RS 4mm x 13mm x 5mm
1 ball_bearing(BB6808) Ball bearing 6808-2RS 40mm x 52mm x 7mm
1 ball_bearing(BB686) Ball bearing 686ZZ 6mm x 13mm x 5mm
1 ball_bearing(BB696) Ball bearing 696ZZ 6mm x 16mm x 5mm
1 ball_bearing(BBF623) Ball bearing F623-2RS 3mm x 10mm x 4mm
1 ball_bearing(BBF625) Ball bearing F625ZZ 5mm x 16mm x 5mm
1 ball_bearing(BBF693) Ball bearing F693ZZ 3mm x 8mm x 3mm
1 ball_bearing(BBF695) Ball bearing F695ZZ 5mm x 13mm x 4mm
1 ball_bearing(BBMR63) Ball bearing MR63ZZ 3mm x 6mm x 2.5mm
1 ball_bearing(BBMR83) Ball bearing MR83ZZ 3mm x 8mm x 3mm
1 ball_bearing(BBMR85) Ball bearing MR85ZZ 5mm x 8mm x 2.5mm
1 ball_bearing(BBMR93) Ball bearing MR93ZZ 3mm x 9mm x 4mm
1 ball_bearing(BBMR95) Ball bearing MR95ZZ 5mm x 9mm x 3mm
1 ball_bearing(BBSMR95) Ball bearing SMR95ZZ 5mm x 9mm x 2.5mm
8 bearing_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

Function Description
battery_colour(type) Casing colour
battery_contact(type) Contact type
battery_diameter(type) Casing diameter
battery_led_positions(type) LED positions for Lumintop
battery_length(type) Total length including terminals
battery_neg_dia(type) Negative terminal diameter
battery_pos_dia(type) Positive terminal diameter
battery_pos_height(type) Positive terminal height above the casing
battery_type(type) Battery type
battery_usb_offset(type) USB connector offset from the top
contact_height(type) Height of the flat part
contact_neg(type) Negative spring height above the plate when compressed and the spring type
contact_pos(type) Positive contact dimple height and top and bottom internal diameter
contact_tab_length(type) Length of the tab
contact_tab_width(type) Width of the tab
contact_thickness(type) Thickness of the metal
contact_width(type) Width of the flat part

Modules

Module Description
battery(type) Draw a battery
battery_contact(type, pos = true) Draw a positive or negative battery contact for specified battery
battery_led_positions(type) Position of the LEDs on a Lumintop

batteries

Vitamins

Qty Module call BOM entry
10 battery_contact(bcontact, false) Battery negative contact
10 battery_contact(bcontact, true) Battery positive contact
1 battery(A23CELL) Cell A23 12v
1 battery(AACELL) Cell AA
1 battery(AAACELL) Cell AAA
1 battery(CCELL) Cell C
1 battery(DCELL) Cell D
1 battery(LUMINTOP) Cell LUMINTOP 18650 LION with charger
1 battery(S25R18650) Cell Samsung 25R 18650 LION
1 battery(L16340) Li-Ion/LiFePo4 16340 3.2v
1 battery(L32700) Li-Ion/LiFePo4 32700 3.2v
1 battery(L4680) Li-Ion/LiFePo4 4680 3.2v

Top


Bearing_blocks

SCSnUU and SCSnLUU bearing blocks

vitamins/bearing_blocks.scad Object definitions.

vitamins/bearing_block.scad Implementation.

tests/bearing_blocks.scad Code for this example.

Properties

Function Description
sbr_bearing(type) Linear bearing used
sbr_circlip(type) Circlip used
sbr_hole_offset(type) Offset of bearing hole from base of rail
sbr_screw(type) Screw type
sbr_screw_separation_x(type) Screw separation in X direction
sbr_screw_separation_z(type) Screw separation in Z direction
sbr_side_height(type) Height of side above rail
sbr_spacer(type) Spacer used in long bearings
scs_bearing(type) Linear bearing used
scs_block_center_height(type) Height of the center of the block
scs_block_side_height(type) Height of the side of the block, this determines the minimum screw length
scs_circlip(type) Circlip used
scs_hole_offset(type) Offset of bearing hole from base of block
scs_screw(type) Screw type
scs_screw_separation_x(type) Screw separation in X direction
scs_screw_separation_z(type) Screw separation in Z direction
scs_spacer(type) Spacer used in long bearings

Functions

Function Description
sbr_size(type) Size of SBR bracket bounding block
scs_size(type) Size of scs bracket bounding block

Modules

Module Description
right_trapezoid(base, top, height, h = 0, center = true) A right angled trapezoid with the 90° corner at the origin. 3D when h is nonzero, otherwise 2D
sbr_bearing_block(type) Draw the specified SBR bearing block
sbr_bearing_block_assembly(type, part_thickness, screw_type) Assembly with screws in place
sbr_bearing_block_hole_positions(type) Place children at hole positions
scs_bearing_block(type) Draw the specified SCS bearing block
scs_bearing_block_assembly(type, part_thickness, screw_type, nut_type) Assembly with screws and nuts in place
scs_bearing_block_hole_positions(type) Place children at hole positions

bearing_blocks

Vitamins

Qty Module call BOM entry
12 nut(M4_nut) Nut M4 x 3.2mm
24 nut(M5_nut) Nut M5 x 4mm
1 sbr_bearing_block(SBR16UU) SBR16UU bearing block
1 scs_bearing_block(SCS10LUU) SCS10LUU bearing block
1 scs_bearing_block(SCS10UU) SCS10UU bearing block
1 scs_bearing_block(SCS12LUU) SCS12LUU bearing block
1 scs_bearing_block(SCS12UU) SCS12UU bearing block
1 scs_bearing_block(SCS16LUU) SCS16LUU bearing block
1 scs_bearing_block(SCS16UU) SCS16UU bearing block
1 scs_bearing_block(SCS6UU) SCS6UU bearing block
1 scs_bearing_block(SCS8LUU) SCS8LUU bearing block
1 scs_bearing_block(SCS8UU) SCS8UU bearing block
4 screw(M4_cap_screw, 25) Screw M4 cap x 25mm
8 screw(M4_cap_screw, 30) Screw M4 cap x 30mm
4 screw(M5_cap_screw, 16) Screw M5 cap x 16mm
16 screw(M5_cap_screw, 35) Screw M5 cap x 35mm
8 screw(M5_cap_screw, 45) Screw M5 cap x 45mm
12 washer(M4_washer) Washer M4 x 9mm x 0.8mm
24 washer(M5_washer) Washer M5 x 10mm x 1mm

Top


Belts

Models timing belt running in a path over toothed or smooth pulleys and calculates an accurate length. Only models 2D paths, belt may twist to support crossed belt core XY and other designs where the belt twists!

By default the path is a closed loop. An open loop can be specified by specifying open=true, and in that case the start and end points are not connected, leaving the loop open.

To get a 180 degree twist of the loop, you can use the twist argument. Twist can be a single number, and in that case the belt will twist after the position with that number. Alternatively twist can be a list of boolean values with a boolean for each position; the belt will then twist after the position that have a true value in the twist list. If the path is specified with pulley/idler types, then you can use auto_twist=true; in that case the belt will automatically twist so the back of the belt always runs against idlers and the tooth side runs against pulleys. If you use open=true then you might also use start_twist=true to let the belt start the part with the back side out.

The path must be specified as a list of positions. Each position should be either a vector with [x, y, pulley] or [x, y, r]. A pulley is a type from pulleys.scad, and correct radius and angle will automatically be calculated. Alternatively a radius can be specified directly.

To make the back of the belt run against a smooth pulley on the outside of the loop specify a negative pitch radius. Alternatively you can just specify smooth pulleys in the path, and it will then happen automatically.

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

Function Description
belt_pitch(type) Pitch in mm
belt_pitch_height(type) Offset of the pitch radius from the tips of the teeth
belt_thickness(type) Total thickness including teeth
belt_tooth_height(type) Tooth height
belt_width(type) Width in mm

Functions

Function Description
_belt_points_info(type, points, open, twist, auto_twist, start_twist) Helper function that calculates [twist, istwisted, points, tangents, arcs]
belt_length(type, points, open = false) Compute belt length given path
belt_pitch_to_back(type) Offset of the back from the pitch radius
belt_pulley_pr(type, pulley, twisted=false) Pitch radius. Default it expects the belt tooth to be against a toothed pulley an the backside to be against a smooth pulley (an idler). If twisted is true, the the belt is the other way around.

Modules

Module Description
belt(type, points, belt_colour = grey(20), tooth_colour = grey(50), open = false, twist = undef, auto_twist = false, start_twist = false) Draw a belt path given a set of points and pitch radii where the pulleys are. Closed loop unless open is specified

belts

Vitamins

Qty Module call BOM entry
1 belt(GT2x12, [ ... ]) Belt GT2 x 12mm x 128mm
1 belt(GT2x6, [ ... ]) Belt GT2 x 6mm x 128mm
1 belt(GT2x6, [ ... ]) Belt GT2 x 6mm x 584mm
2 belt(GT2x6, [ ... ]) Belt GT2 x 6mm x 588mm
1 belt(GT2x9, [ ... ]) Belt GT2 x 9mm x 128mm
1 belt(GT3x12, [ ... ]) Belt GT3 x 12mm x 128mm
1 belt(GT3x6, [ ... ]) Belt GT3 x 6mm x 128mm
1 belt(GT3x9, [ ... ]) Belt GT3 x 9mm x 128mm
1 belt(T2p5x6, [ ... ]) Belt T2.5 x 6mm x 130mm
1 belt(T5x10, [ ... ]) Belt T5 x 10mm x 130mm
1 belt(T5x6, [ ... ]) Belt T5 x 6mm x 130mm
2 insert(F1BM3) Heatfit insert M3 x 5.8mm
2 pulley(GT2x16_toothed_idler) Pulley GT2 idler 16 teeth
4 pulley(GT2x20_toothed_idler) Pulley GT2 idler 20 teeth
6 pulley(GT2x16_plain_idler) Pulley GT2 idler smooth 9.63mm
3 pulley(GT2x20ob_pulley) Pulley GT2OB 20 teeth
2 screw(M3_cs_cap_screw, 20) Screw M3 cs cap x 20mm
6 screw(M3_grub_screw, 6) Screw M3 grub x 6mm

Top


BLDC_motors

Brushless DC electric motor

vitamins/bldc_motors.scad Object definitions.

vitamins/bldc_motor.scad Implementation.

tests/BLDC_motors.scad Code for this example.

Properties

Function Description
BLDC_base_diameter(type) Base diameter
BLDC_base_height_1(type) Base height 1
BLDC_base_height_2(type) Base height 2
BLDC_base_hole_diameter(type) Base hole diameter
BLDC_base_holes(type) Base holes
BLDC_base_open(type) Base open
BLDC_bell_diameter(type) Bell diameter
BLDC_bell_height_1(type) Bell height 1
BLDC_bell_height_2(type) Bell height 2
BLDC_bell_hole_diameter(type) Bell hole diameter
BLDC_bell_holes(type) Bell holes
BLDC_bell_spokes(type) Bell spoke count
BLDC_body_colour(type) Body colour
BLDC_boss_diameter(type) Boss diameter
BLDC_boss_height(type) Boss height
BLDC_diameter(type) Diameter of motor
BLDC_height(type) Height of motor including boss, if any, but excluding prop shaft
BLDC_prop_shaft_diameter(type) Diameter of unthreaded portion of prop shaft
BLDC_prop_shaft_length(type) Prop shaft length, including threaded section
BLDC_prop_shaft_thread_diameter(type) Diameter of threaded section of prop shaft
BLDC_prop_shaft_thread_length(type) Length of threaded section of prop shaft
BLDC_shaft_diameter(type) shaft diameter
BLDC_shaft_length(type) Total shaft length
BLDC_shaft_offset(type) shaft offset from base
BLDC_side_colour(type) Side colour
BLDC_wire_diameter(type) Wire diameter

Modules

Module Description
BLDC(type) Draw specified BLDC motor
BLDC_base_screw_positions(type, n = 4) Positions children at the base screw holes
BLDC_bell_screw_positions(type, n = 4) Positions children at the bell screw holes
BLDC_screw_positions(holes, n = 4) Screw positions utility function

bldc_motors

Vitamins

Qty Module call BOM entry
1 BLDC(BLDC0603) Brushless DC motor BLDC0603
1 BLDC(BLDC0802) Brushless DC motor BLDC0802
1 BLDC(BLDC1105) Brushless DC motor BLDC1105
1 BLDC(BLDC1306) Brushless DC motor BLDC1306
1 BLDC(BLDC1804) Brushless DC motor BLDC1804
1 BLDC(BLDC2205) Brushless DC motor BLDC2205
1 BLDC(BLDC2212) Brushless DC motor BLDC2212
1 BLDC(BLDC3548) Brushless DC motor BLDC3548
1 BLDC(BLDC4250) Brushless DC motor BLDC4250

Top


Blowers

Models of radial blowers. Note that blower_exit() and blower_exit_offset() are for the inside of the exit for square blowers but the outside for spiral blowers.

vitamins/blowers.scad Object definitions.

vitamins/blower.scad Implementation.

tests/blowers.scad Code for this example.

Properties

Function Description
blower_axis(type) XY coordinates of the axle
blower_base(type) Thickness of the base
blower_bore(type) The air intake hole diameter
blower_depth(type) Height
blower_exit(type) The width of the exit port
blower_hub(type) Rotor hub diameter
blower_hub_height(type) Height of the rotor
blower_length(type) Length of enclosing rectangle
blower_lug(type) Height of the lugs
blower_screw(type) The type of screws needed
blower_screw_hole(type) Screw hole diameter
blower_screw_holes(type) List of XY coordinates of the screw holes
blower_top(type) Thickness of the top
blower_wall(type) Side wall thickness
blower_wall_left(type) Left side wall thickness
blower_wall_right(type) Right wall thickness (for square fans)
blower_width(type) Width of enclosing rectangle

Functions

Function Description
blower_casing_is_square(type) True for square radial fans, false for spiral shape radial blowers
blower_exit_offset(type) Offset of exit's centre from the edge
blower_size(type) Size

Modules

Module Description
blower(type) Draw specified blower
blower_hole_positions(type) Translate children to screw hole positions
blower_square(type) Draw a square blower

blowers

Vitamins

Qty Module call BOM entry
1 blower(PE4020) Blower Pengda Technology 4020
1 blower(RB5015) Blower Runda RB5015
4 screw(M2_cap_screw, 8) Screw M2 cap x 8mm
2 screw(M2_cap_screw, 10) Screw M2 cap x 10mm
3 screw(M3_cap_screw, 20) Screw M3 cap x 20mm
2 screw(M4_cap_screw, 25) Screw M4 cap x 25mm
1 blower(BL30x10) Square radial fan 3010
1 blower(BL40x10) Square radial fan 4010
6 washer(M2_washer) Washer M2 x 5mm x 0.3mm
3 washer(M3_washer) Washer M3 x 7mm x 0.5mm
2 washer(M4_washer) Washer M4 x 9mm x 0.8mm

Top


Box_sections

Box sections.

vitamins/box_sections.scad Object definitions.

vitamins/box_section.scad Implementation.

tests/box_sections.scad Code for this example.

Properties

Function Description
box_section_colour(type) Colour
box_section_colour2(type) Colour2, for woven box section
box_section_fillet(type) Fillet
box_section_material(type) Material description
box_section_size(type) Size
box_section_thickness(type) Wall thickness

Functions

Function Description
box_section_is_woven(type) Box section is woven, eg carbon fiber

box_sections

Vitamins

Qty Module call BOM entry
1 box_section(AL12x8x1, 100) Aluminium rectangular box section 12mm x 8mm x 1mm, length 100mm
1 box_section(AL20x20x2, 80) Aluminium rectangular box section 20mm x 20mm x 2mm, length 80mm
1 box_section(AL38p1x25p4x1p6, 60) Aluminium rectangular box section 38.1mm x 25.4mm x 1.6mm, length 60mm
1 box_section(AL50p8x38p1x3, 40) Aluminium rectangular box section 50.8mm x 38.1mm x 3.0mm, length 40mm
1 box_section(CF10x10x1, 100) Carbon fiber rectangular box section 10mm x 10mm x 1mm, length 100mm

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

Function Description
bulldog_depth(type) Depth from the back to the front of the tubes
bulldog_handle_length(type) Length that the handle protrudes from the back
bulldog_height(type) Height at the back
bulldog_length(type) Length along the profile
bulldog_radius(type) Outside radius of the back corners
bulldog_thickness(type) Thickness of the metal
bulldog_tube(type) Outside diameter of the tubes

Modules

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

bulldogs

Vitamins

Qty Module call BOM entry
1 bulldog(small_bulldog) Bulldog clip 19mm
1 bulldog(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

Function Description
square_button_cap_d(type) Diameter of the body of the cap
square_button_cap_flange_d(type) Diameter of the flange of the cap
square_button_cap_flange_h(type) Height of the cap flange
square_button_cap_h(type) Height of the cap including the stem
square_button_cap_stem(type) Length of the cap stem
square_button_d(type) Button diameter
square_button_h(type) Height of the button above the PCB
square_button_height(type) Height of the base
square_button_ra_z(type) Height of button centre above the PCB for right_angle version
square_button_rivit(type) Size of the corner rivets
square_button_wall(type) Offset of the metal part
square_button_width(type) Width and depth of the base

Modules

Module Description
square_button(type, colour = "yellow", right_angle = false) Draw square button with specified cap colour if it has a cap

buttons

Vitamins

Qty Module call BOM entry
1 square_button(button_12mm, "yellow") Square button 12mm with yellow cap
1 square_button(button_4p5mm) Square button 4.5mm
1 square_button(button_6mm) Square button 6mm
1 square_button(button_6mm_7) 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 minimum energy curve but very close, especially 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

Function Description
bezier_cable_length(depth, min_z, pos) Calculate a length that will achieve the desired minimum z
cable_strip_length(depth, travel, extra = 15) Calculate circular cable strip length
ribbon_clamp_slot(ways) Width of the slot to accept a ribbon cable
ribbon_clamp_slot_depth() Depth of slot to accept a ribbon cable and a cable strip
ribbon_ways(ways) Allows ribbon clamps to accept multiple cables

Modules

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

cable_strips

Vitamins

Qty Module call BOM entry
3 bezier_cable_strip(20, 50, 150, 100, 10) Polypropylene strip 170mm x 26mm x 0.8mm
3 cable_strip(20, 25, 100, 30) Polypropylene strip 189mm x 24mm x 0.8mm

Top


Cameras

PCB cameras.

vitamins/cameras.scad Object definitions.

vitamins/camera.scad Implementation.

tests/cameras.scad Code for this example.

Properties

Function Description
camera_connector_pos(type) The flex connector block for the camera itself's position
camera_connector_size(type) The flex connector block for the camera itself's size
camera_fov(type) The field of view of the camera lens
camera_lens(type) Stack of lens parts, can be round, rectangular or rounded rectangular, with optional tapered aperture
camera_lens_offset(type) Offset of the lens center from the PCB centre
camera_pcb(type) The PCB part of the camera

Functions

Function Description
camera_lens_height(type) The height of the lens stack

Modules

Module Description
camera(type, show_lens = true, fov_distance = 0, fov = undef) Draw specified PCB camera
camera_lens(type, offset = 0, show_lens = true) Draw the lens stack, with optional offset for making a clearance hole

cameras

Vitamins

Qty Module call BOM entry
1 camera(ESP32_CAM) ESP32-CAM Camera module
1 camera(rpi_camera_v1) Raspberry Pi camera V1
1 camera(rpi_camera_v2) Raspberry Pi camera V2
1 camera(rpi_camera) Raspberry Pi focusable camera

Top


Circlips

Circlips aka tapered retaining rings.

vitamins/circlips.scad Object definitions.

vitamins/circlip.scad Implementation.

tests/circlips.scad Code for this example.

Properties

Function Description
circlip_a(type) Size of the lugs
circlip_b(type) Widest part of the taper
circlip_d1(type) Nominal OD, i.e. diameter of tube
circlip_d2(type) Groove diameter, i.e. OD when installed
circlip_d3(type) Relaxed OD when not installed
circlip_d5(type) Plier hole diameter
circlip_thickness(type) Thickness

Functions

Function Description
circlip_closed_angle(type) Closed angle

Modules

Module Description
internal_circlip(type, open = 0) Draw specified internal circlip, open = 0, for nominal size installed, 1 for relaxed uninstalled, -1 for squeezed to install

circlips

Vitamins

Qty Module call BOM entry
3 circlip(circlip_12i) Circlip internal 12mm
3 circlip(circlip_15i) Circlip internal 15mm
3 circlip(circlip_19i) Circlip internal 19mm
3 circlip(circlip_21i) Circlip internal 21mm
3 circlip(circlip_28i) Circlip internal 28mm
3 circlip(circlip_28iw) Circlip internal 28mm (wide opening)

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

Function Description
al_clad_clearance(type) Clearance from screw hole centre to the body
al_clad_height(type) Body height
al_clad_hole(type) Hole diameter
al_clad_hpitch(type) Lengthways pitch between screw holes
al_clad_length(type) Body length
al_clad_tab(type) Tab width
al_clad_thickness(type) Tab thickness
al_clad_vpitch(type) Widthways pitch between screw holes
al_clad_width(type) Width including tabs
al_clad_wire_length(type) Total length including wires
resistor_colour(type) Body colour
resistor_diameter(type) Body diameter
resistor_hole(type) Hole big enough to glue it into
resistor_length(type) Body length
resistor_radial(type) Radial gives bead thermistor style body
resistor_sleeved(type) Are the leads sleeved
resistor_wire_diameter(type) Wire diameter
resistor_wire_length(type) Wire length from body
tc_body_height(type) Plastic body height
tc_body_inset(type) How far metal is inset into the plastic body
tc_body_length(type) Plastic body length
tc_body_width(type) Plastic body width
tc_hole_dia(type) Screw hole diameter
tc_hole_pitch(type) Screw hole pitch
tc_length(type) Across the lugs
tc_spade_height(type) Terminal spade height measured from base
tc_spade_pitch(type) Terminal spade pitch
tc_thickness(type) Metal thickness
tc_width(type) Width of lugs

Functions

Function Description
TO220_lead_pos(i, l) Position of ith lead end when length = l
TO220_size() Size of a TO220
TO220_thickness() Thickness of the tab of a TO220
TO247_size() Body dimensions of a T247, hole offset, lead height and lead wide length
fack2spm_bezel_size() FACK2SPM Bezel dimensions
fack2spm_screw() Screw type for FACK2SPM

Modules

Module Description
TO220(description, leads = 3, lead_length = 16) Draw a TO220 package, use description to describe what it is
TO247(description, lead_length = 20) Draw a TO247 package, use description to describe what it is
al_clad_resistor(type, value, leads = true) Draw an aluminium clad resistor
al_clad_resistor_assembly(type, value, sleeved = true, sleeving = HSHRNK32, sleeving_length = 15) Draw aluminium clad resistor with optional sleaving, positions children at the screw positions
al_clad_resistor_hole_positions(type) Position children at the screw holes of an aluminium clad resistor
al_clad_resistor_holes(type, h = 100) Drill screw holes for an aluminium clad resistor
fack2spm() Draw a FACK2SPM Cat5E RJ45 shielded panel mount coupler
fack2spm_hole_positions() Place children at the FACK2SPM mounting hole positions
fack2spm_holes(h = 0) Cut the holes for a FACK2SPM
multiwatt11(part_no, tail = 3) Draw a MULTIWATT11 package
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 resistor
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

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

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

Function Description
d_flange_length(type) Length of the flange
d_flange_thickness(type) Thickness of the flange
d_flange_width(type) Width of the flange
d_front_height(type) From the back of the flange to the front
d_height(type) From the front to the back of the metal part
d_hole_pitch(type) Mounting hole pitch
d_lengths(type) Lengths of the D for plug and socket
d_ways(type) Number of ways
d_widths(type) Widths of the D for plug and socket

Functions

Function Description
d_mate_distance(type) Spacing when mated
d_pcb_offset(type) Height of the back of the flange above the PCB
d_slot_length(type) Slot to clear the back

Modules

Module Description
d_connector_holes(type) Place children at the screw hole positions
d_hole(type, h = 0, center = true, clearance = 0.2) Make a hole to clear the back of d-connector
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_plug_D(length, width, rad) D plug D shape
d_socket(connector, pcb = false, idc = false) Draw specified D socket, which can be IDC, PCB or plain solder bucket

d_connectors

Vitamins

Qty Module call BOM entry
1 d_plug(DCONN15, idc = true) D-type 15 way IDC plug
1 d_socket(DCONN15, idc = true) D-type 15 way IDC socket
1 d_plug(DCONN25, pcb = true) D-type 25 way PCB mount plug
1 d_socket(DCONN25, pcb = true) D-type 25 way PCB mount socket
1 d_plug(DCONN37) D-type 37 way plug
1 d_socket(DCONN37) D-type 37 way socket
1 d_plug(DCONN9) D-type 9 way plug
1 d_socket(DCONN9) D-type 9 way socket
8 d_pillar() D-type connector pillar

Top


DIP

Dual inline IC packages and sockets

vitamins/dip.scad Implementation.

tests/DIP.scad Code for this example.

Properties

Function Description
pdip_pin_W(type) Pin shoulder width
pdip_pin_h(type) Pin height
pdip_pin_n(type) Pin neck
pdip_pin_s(type) Height above seating plane
pdip_pin_t(type) Pin thickness
pdip_pin_w(type) Pin width

Modules

Module Description
dip(n, part, size, w, pitch, pin) Draw DIP package
pdip(pins, part, socketed, w = inch(0.3), pitch = inch(0.1)) Draw standard 0.1" PDIP IC package
pdip_pin(type, l, end) Draw a pin

dip

Vitamins

Qty Module call BOM entry
1 dil_socket(14, 7.62) DIL socket 28 x 0.3"
1 pdip(14, 74HC00) IC 74HC00 PDIP14
1 pdip(20, 74HC245) IC 74HC245 PDIP20
1 pdip(28, ATMEGA328) IC ATMEGA328 PDIP28
1 pdip(8, NE555) IC NE555 PDIP8
1 pdip(6, OPTO) IC OPTO PDIP6
1 pdip(16, ULN2003) IC ULN2003 PDIP16
1 pdip(18, ULN2803) IC ULN2803 PDIP18

Top


Displays

LCD displays.

vitamins/displays.scad Object definitions.

vitamins/display.scad Implementation.

tests/displays.scad Code for this example.

Properties

Function Description
display_aperture(type) Size of the aperture including its depth
display_height(type) Depth of the metal part
display_pcb(type) PCB mounted on the back
display_pcb_offset(type) 3D offset of the PCB centre
display_ribbon(type) Keep out region for ribbon cable
display_thickness(type) Height of the metal part
display_threads(type) Length that studs protrude from the PCB holes
display_touch_screen(type) Touch screen position and size
display_width(type) Width of the metal part

Functions

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

Modules

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

displays

Vitamins

Qty Module call BOM entry
1 display(BigTreeTech_TFT35v3_0) BigTreeTech TFT35 v3.0
1 display(HDMI5) HDMI display 5"
1 display(TFT128x160) LCD TFT ST7735 display 128x160
2 display(LCD1602A) LCD display 1602A
1 display(LCD2004A) LCD display 2004A
1 display(LCDS7282B) LCD display S-7282B
1 display(SSD1963_4p3) LCD display SSD1963 4.3"

Top


Extrusion_brackets

Brackets for joining extrusions at a corner.

vitamins/extrusion_brackets.scad Object definitions.

vitamins/extrusion_bracket.scad Implementation.

tests/extrusion_brackets.scad Code for this example.

Properties

Function Description
extrusion_corner_bracket_3D_inner_height(type) The depth offset of the dip in the cuboid
extrusion_corner_bracket_3D_inner_side_length(type) The length of the dip in the cuboid sides
extrusion_corner_bracket_3D_nut_dia(type) The width of bottom part of the nut
extrusion_corner_bracket_3D_nut_nyloc_thickness(type) The total thickness of the nut
extrusion_corner_bracket_3D_nut_screw(type) The screw (most likely Mx_grub_screw from <NopSCADlib/vitamins/screws.scad>)
extrusion_corner_bracket_3D_nut_screws_hor(type) The positions of the screw holes on the horizontal arms, expressed in %/100 of the nut arm
extrusion_corner_bracket_3D_nut_screws_ver(type) The positions of the screw holes on the vertical arms, expressed in %/100 of the nut arm
extrusion_corner_bracket_3D_nut_sx(type) The length of the nuts
extrusion_corner_bracket_3D_nut_thickness(type) The thickness of the top part of the nut
extrusion_corner_bracket_3D_nut_ty1(type) The total width of the nut
extrusion_corner_bracket_3D_nut_ty2(type) The width of the top edge of the nut
extrusion_corner_bracket_3D_outer_height(type) The height of the cuboid
extrusion_corner_bracket_3D_outer_side_length(type) The length of the base cuboid sides
extrusion_corner_bracket_base_thickness(type) Thickness of base of bracket
extrusion_corner_bracket_extrusion(type) Default extrusion this bracket is for
extrusion_corner_bracket_hole_offset(type) Hole offset from corner
extrusion_corner_bracket_side_thickness(type) Thickness of side of bracket
extrusion_corner_bracket_size(type) Size of bracket
extrusion_corner_bracket_tnut(type) The sliding t-nut to use in the assembly
extrusion_inner_corner_bracket_extrusion(type) Default extrusion this bracket is for
extrusion_inner_corner_bracket_screw_offsets(type) Screw offsets from the ends
extrusion_inner_corner_bracket_size(type) Size of inner bracket
extrusion_inner_corner_bracket_tnut(type) The sliding t-nut it is based on

Functions

Function Description
extrusion_corner_bracket_3D_get_x_offset(type) helper function to position the x beam
extrusion_corner_bracket_3D_get_x_rot(type) helper function to rotate the y beam
extrusion_corner_bracket_3D_get_y_offset(type) helper function to position the y beam
extrusion_corner_bracket_3D_get_y_rot(type) helper function to rotate the y beam

Modules

Module Description
extrusion_corner_bracket(type) Corner bracket for extrusion
extrusion_corner_bracket_3D(type, grub_screws = true) draw the specified extrusion_corner_bracket_3D
extrusion_corner_bracket_assembly(type, part_thickness = undef, screw_type = undef, nut_type = undef, max_screw_depth = undef, extrusion = undef) Assembly with fasteners in place
extrusion_inner_corner_bracket(type, grub_screws = true, backwards = false, extrusion = undef) Inner corner bracket for extrusion

extrusion_brackets

Vitamins

Qty Module call BOM entry
3 extrusion(E2020, 40, cornerHole = true) Extrusion E2020 x 40mm
2 extrusion(E2020t, 20.5) Extrusion E2020t x 20.5mm
1 extrusion(E2020t, 28) Extrusion E2020t x 28mm
2 extrusion(E2020t, 39.5) Extrusion E2020t x 39.5mm
1 extrusion(E2020t, 48) Extrusion E2020t x 48mm
3 extrusion(E3030, 40, cornerHole = true) Extrusion E3030 x 40mm
3 extrusion(E4040, 40, cornerHole = true) Extrusion E4040 x 40mm
1 extrusion(E4040t, 27.4, cornerHole = true) Extrusion E4040t x 27.4mm
1 extrusion(E4040t, 40, cornerHole = true) Extrusion E4040t x 40mm
1 extrusion(E4040t, 60.4, cornerHole = true) Extrusion E4040t x 60.4mm
1 extrusion(E4040t, 80, cornerHole = true) Extrusion E4040t x 80mm
2 extrusion_corner_bracket(E20_corner_bracket) Extrusion corner bracket 20mm for E2020t
2 extrusion_corner_bracket(E40_corner_bracket) Extrusion corner bracket 35mm for E4040t
2 extrusion_corner_bracket_3D(extrusion_corner_bracket_3D_2020) Extrusion corner bracket 3D mm for E2020
2 extrusion_corner_bracket_3D(extrusion_corner_bracket_3D_3030) Extrusion corner bracket 3D mm for E3030
2 extrusion_corner_bracket_3D(extrusion_corner_bracket_3D_4040) Extrusion corner bracket 3D mm for E4040
4 extrusion_inner_corner_bracket(E20_inner_corner_bracket) Extrusion inner corner bracket for E2020t
2 extrusion_inner_corner_bracket(E40_inner_corner_bracket) Extrusion inner corner bracket for E4040t
4 sliding_t_nut(M4_sliding_t_nut) Nut M4 sliding T
4 sliding_t_nut(M8_sliding_ball_t_nut) Nut M8 sliding T with spring loaded ball
4 screw(M4_cap_screw, 8) Screw M4 cap x 8mm
12 screw(M4_grub_screw, 5) Screw M4 grub x 5mm
20 screw(M6_grub_screw, 6.2) Screw M6 grub x 6.2mm
20 screw(M6_grub_screw, 9.5) Screw M6 grub x 9.5mm
4 screw(M8_cap_screw, 12) Screw M8 cap x 12mm
4 washer(M4_washer) Washer M4 x 9mm x 0.8mm
4 washer(M8_washer) Washer M8 x 17mm x 1.6mm

Top


Extrusions

Aluminium extrusion.

vitamins/extrusions.scad Object definitions.

vitamins/extrusion.scad Implementation.

tests/extrusions.scad Code for this example.

Properties

Function Description
extrusion_center_hole_wd(type) Diameter of center hole if -ve or square side if +ve
extrusion_center_square_wd(type) Size of center square if +ve or tube diameter if -ve
extrusion_channel_recess(type) Channel recess width and depth or false in none
extrusion_channel_width(type) Channel width
extrusion_channel_width_internal(type) Internal channel width
extrusion_corner_hole_wd(type) Diameter of corner hole if -ve or square side if +ve
extrusion_fillet(type) Radius of corner fillet
extrusion_height(type) Height of extrusion
extrusion_spar_thickness(type) Spar thickness
extrusion_tab_thickness(type) Tab thickness
extrusion_width(type) Width of extrusion

Functions

Function Description
extrusion_center_hole(type) Diameter of center hole or side if square
extrusion_center_square(type) Size of center square or tube
extrusion_corner_hole(type) Diameter of corner hole or side if square

Modules

Module Description
extrusion(type, length, center = true, cornerHole = true) Draw the specified extrusion

extrusions

Vitamins

Qty Module call BOM entry
1 extrusion(E1515, 80, cornerHole = true) Extrusion E1515 x 80mm
1 extrusion(E2020, 80, cornerHole = true) Extrusion E2020 x 80mm
1 extrusion(E2020t, 80, cornerHole = true) Extrusion E2020t x 80mm
1 extrusion(E2040, 80, cornerHole = true) Extrusion E2040 x 80mm
1 extrusion(E2060, 80, cornerHole = true) Extrusion E2060 x 80mm
1 extrusion(E2080, 80, cornerHole = true) Extrusion E2080 x 80mm
1 extrusion(E3030, 80, cornerHole = true) Extrusion E3030 x 80mm
1 extrusion(E3060, 80, cornerHole = true) Extrusion E3060 x 80mm
1 extrusion(E4040, 80, cornerHole = true) Extrusion E4040 x 80mm
1 extrusion(E4040t, 80, cornerHole = true) Extrusion E4040t x 80mm
1 extrusion(E4080, 80, cornerHole = true) Extrusion E4080 x 80mm
1 extrusion(Makerbeam, 80, cornerHole = true) Extrusion Makerbeam x 80mm
1 extrusion(MakerbeamXL, 80, cornerHole = true) Extrusion MakerbeamXL x 80mm

Top


Fans

Axial fans.

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

vitamins/fans.scad Object definitions.

more like this

TrailPrint-3D

GPX 轨迹转 3D 可打印地形模型 | Hiking trail to 3D printable terrain | Electron + Vue。 一款面向户外爱好者与 3D 打印玩家的 Web 工具。将 GPX 徒步/骑行轨迹一键转…

Python51

DroidKlipp

Install and monitor KlipperScreen on Android via DroidKlipp APK, USB ADB forwarding, and WiFi fallback

Shell51

search

search projects, people, and tags