The Belfry OpenScad Library, v2.0. An OpenSCAD library of shapes, masks, and manipulators to make working with OpenSCAD easier. BETA
Find a file
Revar Desmera c8d7d6dc77
Merge pull request #360 from adrianVmariano/master
no_function, no_module
2021-01-03 20:17:32 -08:00
.github Bugfixes for cheat sheet generation. 2020-09-01 00:54:27 -07:00
changes Removed deprecations. 2019-04-18 21:16:10 -07:00
examples Added BOSL2 logo example. 2020-12-09 23:44:22 -08:00
githooks Added version.scad 2019-11-05 13:33:48 -08:00
images Added logo to README. 2020-12-30 15:44:17 -08:00
scripts Added Mutators tutorial to generation list. 2020-12-29 21:21:12 -08:00
tests Added echo_matrix, matrix_strings, str_pad and str_replace_char. 2021-01-01 01:30:13 -05:00
tutorials Bottom half example fix. 2020-12-29 21:23:02 -08:00
.gitignore Added version.scad 2019-11-05 13:33:48 -08:00
.nodocsfiles Fixes for turtle3d docs. 2020-12-12 17:11:19 -08:00
affine.scad rot_decode bugfix: relax check to approximate for last row of 2020-11-12 09:19:25 -05:00
arrays.scad Fixed bugs in list_set, list_remove, list_insert that were revealed by 2020-12-31 09:32:47 -05:00
attachments.scad Fixed shift handling for rect geometries. 2020-12-27 21:48:16 -08:00
beziers.scad Guard various linear_extrude()s for height=0 2020-11-29 20:23:03 -08:00
bosl1compat.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
bottlecaps.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
common.scad Added no_function and no_module 2021-01-02 23:28:11 -05:00
constants.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
CONTRIBUTING.md fixed modulated_circle() to work as advertised 2020-12-01 23:56:57 +01:00
coords.scad updating docs 2020-09-09 09:57:13 +01:00
cubetruss.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
debug.scad Merge remote-tracking branch 'upstream/master' 2021-01-01 21:16:47 -05:00
distributors.scad Fixed some undef warnings in distributors. 2020-12-09 23:43:08 -08:00
edges.scad Added corner_edges() 2020-09-22 00:21:12 -07:00
geometry.scad Various fixes to get example generation working. 2020-12-14 18:28:26 -08:00
hingesnaps.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
hull.scad Fixed bugs in hull_points, added seeds to tests, added seed parm to shuffle() 2020-12-22 18:15:25 -05:00
involute_gears.scad Modular gear2d(mod=) bugfix. 2020-10-22 01:33:45 -07:00
joiners.scad Changes all references to polyline to path. 2020-11-16 17:50:08 -08:00
knurling.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
LICENSE Updated copyright years. Split math.scad up. Enabled attach for lots of shapes. Removed backwards compatability. 2019-04-19 17:02:17 -07:00
linear_bearings.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
masks.scad Implement Issue #2. Added diameter alternates for most radius options. 2020-08-26 20:39:45 -07:00
math.scad Fixed some undef warnings in distributors. 2020-12-09 23:43:08 -08:00
metric_screws.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
mutators.scad minkowski_difference() 3d bugfix. 2020-12-29 22:04:47 -08:00
nema_steppers.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
partitions.scad Fixed calls to vmul() with heteerogenous vector sizes. 2020-08-02 23:23:50 -07:00
paths.scad Example fix for path_chamfer_and_rounding() 2020-12-30 00:38:24 -08:00
phillips_drive.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
polyhedra.scad Fixed trapezohedron bug 2020-12-02 18:15:05 -05:00
primitives.scad Guard various linear_extrude()s for height=0 2020-11-29 20:23:03 -08:00
quaternions.scad Changes in Q_Angle computation and formatting 2020-07-19 22:09:33 +01:00
queues.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
README.md Added logo to README. 2020-12-30 15:44:17 -08:00
regions.scad Enhanced sweep() to accept region input. 2020-11-17 14:25:08 -08:00
rounding.scad Added function form usage message to offset_sweep and added 2021-01-03 12:55:15 -05:00
screws.scad Fixed indentation in screws.scad 2020-06-11 21:40:52 -07:00
shapes.scad Fix for cuboid negative chamfer/rounding overhangs. 2021-01-01 16:31:15 -08:00
shapes2d.scad Bugfix for malformed teardrop2d() 2020-12-31 16:33:09 -08:00
skin.scad Improved error message for skin() 2020-12-31 08:58:22 -05:00
sliders.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
stacks.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
std.scad Changes all references to polyline to path. 2020-11-16 17:50:08 -08:00
strings.scad eps bug fix 2021-01-01 01:35:34 -05:00
structs.scad Added ability to return default value from struct_val() if keyword is not present 2020-11-13 17:10:04 +01:00
threading.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
torx_drive.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
transforms.scad Fix for #166: tweaks for xcopies, etc. 2020-11-30 21:09:00 -08:00
triangulation.scad Standardize indention on spaces, not tabs. 2020-05-29 19:04:34 -07:00
turtle3d.scad Merge pull request #332 from adrianVmariano/master 2020-12-12 18:26:15 -08:00
vectors.scad Fixed a bunch of undef math warnings with dev snapshot OpenSCAD builds. 2020-10-03 19:50:29 -07:00
version.scad Fix for cuboid negative chamfer/rounding overhangs. 2021-01-01 16:31:15 -08:00
vnf.scad Add "bad" example 2020-12-19 19:36:15 -05:00
walls.scad Implement fix for issue #174. 2020-09-25 00:01:45 -07:00
wiring.scad Changes all references to polyline to path. 2020-11-16 17:50:08 -08:00
WRITING_DOCS.md Tweak docs gen to allow a lone period on a line to break a paragraph. 2020-05-23 19:17:32 -07:00

BOSL2

BOSL2 Logo

The Belfry OpenScad Library, v2

A library for OpenSCAD, filled with useful tools, shapes, masks, math and manipulators, designed to make OpenSCAD easier to use.

  • NOTE: BOSL2 IS PRE-ALPHA CODE. THE CODE IS STILL BEING REORGANIZED.
  • NOTE2: CODE WRITTEN FOR BOSLv1 PROBABLY WON'T WORK WITH BOSL2!

Join the chat at https://gitter.im/revarbat/BOSL2 BOSL2 Docs

Installation

  1. Download the .zip or .tar.gz release file for this library.
  2. Unpack it. Make sure that you unpack the whole file structure. Some zipfile unpackers call this option "Use folder names". It should create either a BOSL-v2.0 or BOSL2-master directory with the library files within it. You should see "examples", "scripts", "tests", and other subdirectories.
  3. Rename the unpacked main directory to BOSL2.
  4. Move the BOSL2 directory into the apropriate OpenSCAD library directory for your platform:
    • Windows: My Documents\OpenSCAD\libraries\
    • Linux: $HOME/.local/share/OpenSCAD/libraries/
    • Mac OS X: $HOME/Documents/OpenSCAD/libraries/
  5. Restart OpenSCAD.

Terminology

For purposes of the BOSL2 library, the following terms apply:

  • Left: Towards X-
  • Right: Towards X+
  • Front/Forward: Towards Y-
  • Back/Behind: Towards Y+
  • Bottom/Down/Below: Towards Z-
  • Top/Up/Above: Towards Z+

Common Arguments:

Args What it is
rounding Radius of rounding for interior or exterior edges.
chamfer Size of chamfers/bevels for interior or exterior edges.
orient Axis a part should be oriented along. Given as an XYZ triplet of rotation angles. It is recommended that you use the ORIENT_ constants from constants.scad. Default is usually ORIENT_Z for vertical orientation.
anchor Side of the object that should be anchored to the origin. Given as a vector towards the side of the part to align with the origin. It is recommended that you use the directional constants from constants.scad. Default is usually CENTER for centered.

Examples

A lot of the features of this library are to allow shorter, easier-to-read, intent-based coding. For example:

BOSL2/transforms.scad Examples Raw OpenSCAD Equivalent
up(5) translate([0,0,5])
xrot(30,cp=[0,10,20]) translate([0,10,20]) rotate([30,0,0]) translate([0,-10,-20])
xspread(20,n=3) for (dx=[-20,0,20]) translate([dx,0,0])
zring(n=6,r=20) for (zr=[0:5]) rotate([0,0,zr*60]) translate([20,0,0])
skew_xy(xa=30,ya=45) multmatrix([[1,0,tan(30),0],[0,1,tan(45),0],[0,0,1,0],[0,0,0,1]])
BOSL2/shapes.scad Examples Raw OpenSCAD Equivalent
cube([10,20,30], anchor=BOTTOM); translate([0,0,15]) cube([10,20,30], center=true);
cuboid([20,20,30], fillet=5, edges=EDGES_Z_ALL); minkowski() {cube([10,10,20], center=true); sphere(r=5, $fn=32);}
prismoid([30,40],[20,30],h=10); hull() {translate([0,0,0.005]) cube([30,40,0.01], center=true); translate([0,0,9.995]) cube([20,30,0.01],center=true);}
xcyl(l=20,d=4); rotate([0,90,0]) cylinder(h=20, d=4, center=true);
cyl(l=100, d=40, fillet=5); translate([0,0,50]) minkowski() {cylinder(h=90, d=30, center=true); sphere(r=5);}
BOSL2/masks.scad Examples Raw Openscad Equivalent
chamfer_mask_z(l=20,chamfer=5); rotate(45) cube([5*sqrt(2), 5*sqrt(2), 20], center=true);
fillet_mask_z(l=20,fillet=5); difference() {cube([10,10,20], center=true); for(dx=[-5,5],dy=[-5,5]) translate([dx,dy,0]) cylinder(h=20.1, r=5, center=true);}
fillet_hole_mask(r=30,fillet=5); difference() {cube([70,70,10], center=true); translate([0,0,-5]) rotate_extrude(convexity=4) translate([30,0,0]) circle(r=5);}

The Library Files

The library files are as follows:

Basics (Imported via std.scad)

Math (Imported via std.scad)

Geometry (Imported via std.scad)

  • geometry.scad: Functions to find line intersections, circles from 3 points, etc.
  • edges.scad: Constants and functions to specify edges and corners.
  • vnf.scad: Vertices 'n' Faces structure to make creating polyhedron()s easier.
  • paths.scad: Functions and modules to work with arbitrary 3D paths.
  • regions.scad: Perform offsets and boolean geometry on 2D paths and regions.

Common (Imported via std.scad)

Processes

  • beziers.scad: Functions and modules to work with bezier curves.
  • threading.scad: Modules to make triangular and trapezoidal threaded rods and nuts.
  • rounding.scad: Functions to help rounding corners in a path.
  • knurling.scad: Masks and shapes to help with knurling.
  • partitions.scad: Modules to help partition large objects into smaller assembled parts.
  • rounding.scad: Functions and modules to create rounded paths and boxes.
  • skin.scad: Functions to skin surfaces between 2D cross-section paths.
  • hull.scad: Functions to create 2D and 3D convex hulls.
  • triangulation.scad: Functions to triangulate polyhedron() faces.
  • debug.scad: Modules to help debug polygons()s and polyhedron()s

Data Structures

  • strings.scad: String manipulation functions.
  • stacks.scad: Functions to manipulate stack data structures.
  • queues.scad: Functions to manipulate queue data structures.
  • structs.scad: Structure/Dictionary creation and manipulation functions.

Miscellaneous Parts

Documentation

The full library docs can be found at https://github.com/revarbat/BOSL2/wiki