2017-08-30 00:59:43 +00:00
|
|
|
# BOSL
|
|
|
|
The Belfry OpenScad Library - A library of tools, shapes, and helpers to make OpenScad easier to use.
|
|
|
|
|
|
|
|
This library is a set of useful tools, shapes and manipulators that I developed while working on various
|
|
|
|
projects, including large ones like the Snappy-Reprap printed 3D printer.
|
|
|
|
|
|
|
|
# Overview
|
2017-08-30 01:57:37 +00:00
|
|
|
The library files are as follows:
|
2017-08-31 03:29:49 +00:00
|
|
|
- `transforms.scad`: The most commonly used transformations, manipulations, and shortcuts are in this file.
|
|
|
|
- `shapes.scad`: Common useful shapes and structured objects.
|
|
|
|
- `masks.scad`: Shapes that are useful for masking with `difference()` and `intersect()`.
|
|
|
|
- `math.scad`: Useful helper functions and constants.
|
|
|
|
- `paths.scad`: Functions and modules to work with arbitrary 3D paths.
|
|
|
|
- `bezier.scad`: Functions and modules to work with bezier curves.
|
|
|
|
- `involute_gears.scad`: Modules and functions to make involute gears and racks.
|
|
|
|
- `metric_screws.scad`: Functions and modules to make holes for metric screws and nuts.
|
|
|
|
- `joiners.scad`: Modules to make joiner shapes for connecting separately printed objects.
|
|
|
|
- `sliders.scad`: Modules for creating simple sliders and rails.
|
|
|
|
- `acme_screws.scad`: Modules to make trapezoidal (ACME) threaded rods and nuts.
|
|
|
|
- `nema_steppers.scad`: Modules to make mounting holes for NEMA motors.
|
|
|
|
- `linear_bearings.scad`: Modules to make mounts for LMxUU style linear bearings.
|
|
|
|
- `wiring.scad`: Modules to render routed bundles of wires.
|
|
|
|
- `quaternions.scad`: Functions to work with quaternion rotations.
|
2017-08-30 00:59:43 +00:00
|
|
|
|
2017-08-30 01:57:37 +00:00
|
|
|
## transforms.scad
|
2017-08-31 03:29:49 +00:00
|
|
|
The most commonly useful of the library files is `transforms.scad`. It provides features such as:
|
|
|
|
- `up()`, `down()`, `left()`, `right()`, `fwd()`, `back()` as more readable alternatives to `translate()`.
|
|
|
|
- `xrot()`, `yrot()`, `zrot()` as single-axis alternatives to `rotate`.
|
|
|
|
- `xspread()`, `yspread()`, and `zspread()` to evenly space copies of an item along an axis.
|
|
|
|
- `xring()`, `yring()`, `zring()` to evenly space copies of an item around a circle.
|
|
|
|
- `skewxy()` that let you skew objects without using a `multmatrix()`.
|
|
|
|
- Easy mirroring with `xflip()`, `xflip_copy()`, etc.
|
|
|
|
- Slice items in half with `top_half()`, `left_half()`, `back_half()`, etc.
|
2017-08-30 00:59:43 +00:00
|
|
|
|
2017-08-30 01:57:37 +00:00
|
|
|
## shapes.scad
|
2017-08-31 03:29:49 +00:00
|
|
|
The `shapes.scad` library file provides useful compound shapes, such as:
|
|
|
|
- `upcube()` a ridiculously useful version of `cube()` that is centered on top of the XY plane.
|
2017-08-30 00:59:43 +00:00
|
|
|
- Filleted (rounded) and Chamferred (bevelled) cubes and cylinders.
|
2017-08-31 03:29:49 +00:00
|
|
|
- `pyramid()` and `prism()`
|
|
|
|
- The incredibly useful `trapezoid()` for non-parallelogram cubes.
|
|
|
|
- `right_triangle()` for the obvious shape.
|
|
|
|
- `teardrop()` and `onion()` for making more 3D printable holes.
|
|
|
|
- `tube()` and `torus()` for donut shapes.
|
|
|
|
- `slot()` and `arced_slot()` for making things like screw slots.
|
|
|
|
- `thinning_wall()` makes a vertical wall which thins in the middle, to reduce print volume.
|
|
|
|
- `thinning_triangle()` makes a right triangle which thins in the middle, to reduce print volume.
|
|
|
|
- `sparse_strut()` makes a cross-braced open strut wall, optimized for support-less 3D printing.
|
|
|
|
- `corrugated_wall()` makes a corrugated wall to reduce print volume while keeping strength.
|
2017-08-30 01:57:37 +00:00
|
|
|
|
|
|
|
## masks.scad
|
2017-08-31 03:29:49 +00:00
|
|
|
The `masks.scad` library file provides mask shapes like:
|
|
|
|
- `angle_pie_mask()` to mask a pie-slice shape.
|
|
|
|
- `chamfer_mask_x()`, `chamfer_mask_y()`, and `chamfer_mask_z()` to chamfer (bevel) an axis aligned 90 degree edge.
|
|
|
|
- `fillet_mask_x()`, `fillet_mask_y()`, and `fillet_mask_z()` to fillet (round) an axis aligned 90 degree edge.
|
|
|
|
- `fillet_corner_mask()` to fillet a 90 degree corner.
|
|
|
|
- `fillet_angled_edge_mask()` to fillet an acute or obtuse vertical edge.
|
|
|
|
- `fillet_angled_corner_mask()` to fillet the corner of two acute or obtuse planes.
|
|
|
|
- `fillet_cylinder_mask()` to fillet the end of a cylinder.
|
|
|
|
- `fillet_hole_mask()` to fillet the edge of a cylindrical hole.
|
|
|
|
|
|
|
|
## Documentation
|
|
|
|
The full library docs can be found at https://github.com/revarbat/BOSL/wiki
|
|
|
|
|
|
|
|
|