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
2a51cf271d
Allow passing of undef in anchor, spin, and orient to get default val… |
||
---|---|---|
.github | ||
examples | ||
githooks | ||
images | ||
scripts | ||
tests | ||
tutorials | ||
.gitignore | ||
.nodocsfiles | ||
affine.scad | ||
arrays.scad | ||
attachments.scad | ||
beziers.scad | ||
bosl1compat.scad | ||
bottlecaps.scad | ||
common.scad | ||
constants.scad | ||
CONTRIBUTING.md | ||
coords.scad | ||
cubetruss.scad | ||
debug.scad | ||
distributors.scad | ||
edges.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 | ||
mutators.scad | ||
nema_steppers.scad | ||
partitions.scad | ||
paths.scad | ||
phillips_drive.scad | ||
polyhedra.scad | ||
primitives.scad | ||
quaternions.scad | ||
queues.scad | ||
README.md | ||
regions.scad | ||
rounding.scad | ||
screws.scad | ||
shapes.scad | ||
shapes2d.scad | ||
skin.scad | ||
sliders.scad | ||
stacks.scad | ||
std.scad | ||
strings.scad | ||
structs.scad | ||
threading.scad | ||
torx_drive.scad | ||
transforms.scad | ||
triangulation.scad | ||
turtle3d.scad | ||
vectors.scad | ||
version.scad | ||
vnf.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. 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
orBOSL2-master
directory with the library files within it. You should see "examples", "scripts", "tests", and other subdirectories. - Rename the unpacked main 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:
Basics (Imported via std.scad)
transforms.scad
: Commonly used transformations shortcuts.distributors.scad
: Modules and Functions to distribute items.mutators.scad
: Modules and Functions to mutate items.attachments.scad
: Modules and functions to enable attachments.primitives.scad
: Attachment aware replacements for built-in shapes.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()
.
Math (Imported via std.scad)
math.scad
: Useful math helper functions.vectors.scad
: Functions for vector math.arrays.scad
: Functions to manipulate lists and arrays.quaternions.scad
: Functions to work with quaternion rotations.affine.scad
: Functions for affine transformation matrix math.coords.scad
: Functions for coordinate system conversions and transformations.
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 creatingpolyhedron()
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)
common.scad
: Useful helpers for argument processing.constants.scad
: Useful constants for vectors, edges, etc.errors.scad
: Routines to help print out warnings and errors.version.scad
: Ways to parse and compare semantic versions.
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 triangulatepolyhedron()
faces.debug.scad
: Modules to help debugpolygons()
s andpolyhedron()
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
polyhedra.scad
: Modules to create various regular and stellated polyhedra.walls.scad
: Modules to create walls and structural elements for 3D printing.cubetruss.scad
: Modules to create modular open-framed trusses and joiners.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.hingesnaps.scad
: Modules to make foldable, snap-locking parts.bottlecaps.scad
: Modules to make standard beverage bottle caps and necks.
Documentation
The full library docs can be found at https://github.com/revarbat/BOSL2/wiki