Module Scad_ml

OpenSCAD DSL

module Scad : sig ... end

Build scad models with well-typed dimensional system (3d / 2d) aware functions mapping down onto the similarly named operations made available by the OpenSCAD language.

Configuration Types

These modules are provided at the top-level as convenient namespaces for the configuration types taken as parameters to their corresponding model building functions in Scad.

module Text : sig ... end

Scad.text configuration parameter types

module Color : sig ... end

Scad.color specification type

Vectors

Spatial vectors used to transform Scad.t shapes, and compose into other types (e.g. Path3.t, Poly2.t, and Mesh.t) contained in the modules below, which can in turn used to generate point based shapes to be mapped into Scad.t.

type v3 = {
x : float;
y : float;
z : float;
}

3-dimensional vector

type v2 = {
x : float;
y : float;
}

2-dimensional vector

val v2 : float -> float -> v2

v2 x y

Construct a 2d vector from x and y coordinates.

val v3 : float -> float -> float -> v3

v3 x y z

Construct a 3d vector from x, y, and z coordinates.

module V2 : sig ... end

2-dimensional vector type, including basic mathematical/geometrical operations and transformations mirroring those found in Scad, allowing for points in 2d space, and higher level types composed of them (e.g. Path2.t and Poly2.t) to be manipulated in similar fashion to 2d OpenSCAD shapes (Scad.d2).

module V3 : sig ... end

3-dimensional vector type, including basic mathematical/geometrical operations and transformations mirroring those found in Scad, allowing for points in 3d space, and higher level types composed of them (e.g. Path3.t, Poly3.t, and Mesh.t) to be manipulated in similar fashion to 3d OpenSCAD shapes (Scad.d3).

Transformations

module Affine2 : sig ... end

A 2d affine transformation matrix.

module Affine3 : sig ... end

Affine transformation matrices for transforming 3d vectors (V3.t), and 3d shapes (Scad.t) via OpenSCAD's own multmatrix, (see Scad.affine).

module Quaternion : sig ... end

Provides functions for the creation of and operations between quaternions. These can be used to create composable and interpolatable rotations to be applied to 3d vectors (V3.t) directly, and Scad.t through Affine3.t.

module Plane : sig ... end

Normalized cartesian plane operations facilitating conversion between 2d and 3d space.

2-dimensional paths and polygons

module Path2 : sig ... end

2d path generation (including arcs and basic shapes), manipulation (including offset and roundovers (see Round), and measurement.

module Bezier2 : sig ... end

Generation and measurement of 2d bezier curve (and patch/surface) functions. Including of_path, which produces a bezier spline function that passes through all points of the given path.

module CubicSpline : sig ... end

Cubic spline interpolation of 2d paths.

module Poly2 : sig ... end

2d polygons (made up of an outer, and zero or more inner Path2.ts) that map into Scad.d2. Includes basic shape creation helpers, manipulations, (including offset and basic transformations), measurement, and validation.

module PolyText : sig ... end

Point path representations (using Poly2.t) of text via ocaml-cairo import of system fonts. NOTE: Still somewhat experimental.

3-dimensional paths, coplanar polygons, and meshes

module Path3 : sig ... end

3d path generation (including arcs and basic shapes), manipulation (including roundovers (see Round), and conversion to sweeping transformations with to_transforms), and measurement.

module Bezier3 : sig ... end

Generation and measurement of 3d bezier curve (and patch/surface) functions. Including of_path, which produces a bezier spline function that passes through all points of the given path.

module Poly3 : sig ... end

Planar 3d polygons (made up of an outer, and zero or more inner Path3.ts) that map into Scad.d2. Includes basic shape creation helpers, manipulations, (including offset and basic transformations), measurement, and validation.

module Mesh : sig ... end

Generation, and manipulation of 3-dimensional meshes (points and faces) that can be mapped into Scad.d3 as polyhedrons.

Utilities

module Math : sig ... end

Various operations on floats (e.g. approximate equality, linear interpolation), and basic arbitrary size 2d matrix operations.

module Easing : sig ... end

Cubic bezier easing.

module Export : sig ... end

Exporting .scad scripts through the OpenSCAD command line interface.

module BallTree2 : sig ... end

Construction of 2d vector space partitioning ball tree structures for nearest neighbour search. Implementation adapted from the BOSL2 vectors module.

module BallTree3 : sig ... end

Construction of 3d vector space partitioning ball tree structures for nearest neighbour search. Implementation adapted from the BOSL2 vectors module.