mirror of
https://github.com/BelfrySCAD/BOSL2.git
synced 2024-12-29 16:29:40 +00:00
The Belfry OpenScad Library, v2.0. An OpenSCAD library of shapes, masks, and manipulators to make working with OpenSCAD easier. BETA
fc99ce985d
Fixed collinear bug in arc() Added arcleftto and arcrrightto and arcsteps to turtle() |
||
---|---|---|
.github/ISSUE_TEMPLATE | ||
changes | ||
examples | ||
scripts | ||
tests | ||
.gitignore | ||
affine.scad | ||
arrays.scad | ||
attachments.scad | ||
beziers.scad | ||
common.scad | ||
constants.scad | ||
coords.scad | ||
cubetruss.scad | ||
debug.scad | ||
edges.scad | ||
errors.scad | ||
geometry.scad | ||
hingesnaps.scad | ||
hull.scad | ||
involute_gears.scad | ||
joiners.scad | ||
knurling.scad | ||
LICENSE | ||
linear_bearings.scad | ||
masks.scad | ||
math.scad | ||
metric_screws.scad | ||
nema_steppers.scad | ||
partitions.scad | ||
paths.scad | ||
phillips_drive.scad | ||
polyhedra.scad | ||
primitives.scad | ||
quaternions.scad | ||
README.md | ||
rounding.scad | ||
shapes.scad | ||
shapes2d.scad | ||
sliders.scad | ||
std.scad | ||
strings.scad | ||
structs.scad | ||
threading.scad | ||
torx_drive.scad | ||
transforms.scad | ||
triangulation.scad | ||
vectors.scad | ||
walls.scad | ||
wiring.scad | ||
WRITING_DOCS.md |
BOSL2
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!
Installation
- Download the .zip or .tar.gz release file for this library.
- Unpack it. It should create a
BOSL-v2.0
directory with the library files within it. - Rename the directory to
BOSL2
. - 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/
- Windows:
- 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:
Commonly Used
transforms.scad
: The most commonly used transformations, manipulations, and shortcuts are in this file.attachments.scad
: Modules and functions to enable attaching parts together.primitives.scad
: Enhanced replacements forcube()
,cylinder()
, andsphere()
.shapes.scad
: Common useful 3D shapes and structured objects.shapes2d.scad
: Common useful 2D shapes and drawing helpers.masks.scad
: Shapes that are useful for masking withdifference()
andintersect()
.threading.scad
: Modules to make triangular and trapezoidal threaded rods and nuts.paths.scad
: Functions and modules to work with arbitrary 3D paths.beziers.scad
: Functions and modules to work with bezier curves.roundcorners.scad
: Functions and modules to make rounded corners.debug.scad
: Modules to help debug beziers,polygons()
s andpolyhedron()
s, etc.
Standard Parts
involute_gears.scad
: Modules and functions to make involute gears and racks.joiners.scad
: Modules to make joiner shapes for connecting separately printed objects.sliders.scad
: Modules for creating simple sliders and rails.metric_screws.scad
: Functions and modules to make metric screws, nuts, and screwholes.linear_bearings.scad
: Modules to make mounts for LMxUU style linear bearings.nema_steppers.scad
: Modules to make mounting holes for NEMA motors.phillips_drive.scad
: Modules to create Phillips screwdriver tips.torx_drive.scad
: Functions and Modules to create Torx bit drive holes.wiring.scad
: Modules to render routed bundles of wires.polyhedra.scad
: Modules to create various regular and stellated polyhedra.
Various Math
constants.scad
: Useful constants for vectors, edges, etc.errors.scad
: Stuff for reporting errors and warnings.common.scad
: Common argument processing helpers and functions.math.scad
: Useful helper functions.arrays.scad
: List and Array helper functions.vectors.scad
: Vector math functions.affine.scad
: Affine transformation matrix functions.coords.scad
: Coordinate system conversions and point transformations.geometry.scad
: Functions to calculate various geometry.quaternions.scad
: Functions to work with quaternion rotations.convex_hull.scad
: Functions to generate 2D and 3D hulls of points.triangulation.scad
: Functions to triangulatepolyhedron()
faces.
Documentation
The full library docs can be found at https://github.com/revarbat/BOSL2/wiki