OpenSCAD User Manual/Libraries

From Wikibooks, open books for an open world
< OpenSCAD User Manual
Jump to: navigation, search

Library Locations[edit]

OpenSCAD uses three library locations, the installation library, built-in library, and user defined libraries.

  1. The Installation library location is the libraries directory under the directory where OpenSCAD is installed.
  2. The Built-In library location is O/S dependent. Since version 2014.03, it can be opened in the system specific file manager using the "File->Show Library Folder..." menu entry.
    • Windows: My Documents\OpenSCAD\libraries
    • Linux: $HOME/.local/share/OpenSCAD/libraries
    • Mac OS X: $HOME/Documents/OpenSCAD/libraries
  3. The User-Defined library path can be created using the OPENSCADPATH Environment Variable to point to the library(s). OPENSCADPATH can contain multiple directories in case you have library collections in more than one place, separate directories with a semi-colon for Windows, and a colon for Linux/Mac OS. For example:
Windows: C:\Users\A_user\Documents\OpenSCAD\MyLib;C:\Thingiverse Stuff\OpenSCAD Things;D:\test_stuff
(Note: For Windows, in versions prior to 2014.02.22 there is a bug preventing multiple directories in OPENSCADPATH as described above, it uses a colon (:) to separate directories. A workaround, if your libraries are on C: is to leave off the drive letter & colon, e.g. \Thingiverse Stuff\OpenSCAD Things:\stuff
Linux/Mac OS: /usr/lib:/home/mylib:.
OpenSCAD will need to be restarted to recognise any change to the OPENSCADPATH Environment Variable.
Where you specify a non-fully qualified path & filename in the use <...> or include <...> statement that path/file is checked against the directory of the calling .scad file, the User-Defined library paths (OPENSCADPATH), the Built-In library (i.e. the O/S dependent locations above), and the Installation library, in that order. NOTE: In the case of a library file itself having use <...> or include <...> the directory of the library .scad file is the 'calling' file, i.e. when looking for libraries within a library, it does not check the directory of the top level .scad file.

For example, with the following locations & files defined: (with OPENSCADATH=/usr/lib:/home/lib_os:.)

1. <installation library>/lib1.scad
2. <built-in library>/lib2.scad
3. <built-in library>/sublib/lib2.scad
4. <built-in library>/sublib/lib3.scad
5. /usr/lib/lib2.scad
6. /home/lib_os/sublib/lib3.scad

The following include <...> statements will match to the nominated library files

include <lib1.scad>  // #1.
include <lib2.scad>  // #5.
include <sublib/lib2.scad>  // #3.
include <sublib/lib3.scad>  // #6.

Since 2014.03, the currently active list of locations can be verified in the "Help->Library Info" dialog.

The details info shows both the content of the OPENSCADPATH variable and the list of all library locations. The locations will be searched in the order they appear in this list. For example;

OPENSCADPATH: /data/lib1:/data/lib2
OpenSCAD library path:
  /data/lib1
  /data/lib2
  /home/user/.local/share/OpenSCAD/libraries
  /opt/OpenSCAD/libraries

Setting OPENSCADPATH[edit]

In Windows, Environment Variables are set via the Control panel, select System, then Advanced System Settings, click Environment Variables. Create a new User Variable, or edit OPENSCADPATH if it exists.

On Linux (probably also on Mac), to simply add the environment variable to all users, you can type in terminal: sudo sh -c 'echo "OPENSCADPATH=$HOME/openscad/libraries" >>/etc/profile' to set the OPENSCADPATH to openscad/libraries under each user's home directory. For more control on environment variables, you'll need to edit the configuration files; see for example this page.

MCAD[edit]

OpenSCAD bundles the MCAD library.

There are many different forks floating around (e.g.[1], [2], [3]) many of them unmaintained.

MCAD bundles a lot of stuff, of varying quality, including:

  • Many common shapes like rounded boxes, regular polygons and polyeders in 2D and 3D
  • Gear generator for involute gears and bevel gears.
  • Stepper motor mount helpers, stepper and servo outlines
  • Nuts, bolts and bearings
  • Screws and augers
  • Material definitions for common materials
  • Mathematical constants, curves
  • Teardrop holes and polyholes

The git repo also contains python ncode to scrape OpenSCAD code, a testing framework and SolidPython, an external python library for solid cad.

Other Libraries[edit]

  • BOLTS tries to build a standard part and vitamin library that can be used with OpenSCAD and other CAD tools: [4]
  • Obiscad contains various useful tools, notably a framework for attaching modules on other modules in a simple and modular way: [5]
  • This library provides tools to create proper 2D technical drawings of your 3D objects: [6]
  • Stephanie Shaltes wrote a fairly comprehensive fillet library (https://github.com/StephS/i2_xends/blob/master/inc/fillets.scad)
  • The shapes library contains many shapes like rounded boxes, regular polygons. It is also included in MCAD.
  • Also Giles Bathgates shapes library provides regular polygons and polyeders and is included in MCAD.
  • The OpenSCAD threads library provides ISO conform metric and imperial threads and support internal and external threads and multiple starts.
  • Sprockets for ANSI chains and motorcycle chains can be created with the Roller Chain Sprockets OpenSCAD Module. Contains hard coded fudge factors, may require tweaking.
  • The Pinball Library provides many components for pinball design work, including models for 3d printing of the parts, 3d descriptions of mount holes for CNC drilling and 2d descriptions of parts footprint
  • For the generation of celtic knots there is the Celtic knot library
  • The 2D connection library helps with connections between 2D sheets, which is useful for laser cut designs.
  • local.scad provides a flexible method for positioning parts of a design. Is also used in BOLTS.
  • SCADBoard is a library for designing 3D printed PCBs in OpenSCAD.
  • A Ruler for determining the size of things in OpenSCAD.

There is also a list with more libraries here: [7]