package OCADml
Types and functions for building CAD packages in OCaml
Install
Dune Dependency
Authors
Maintainers
Sources
OCADml-0.2.0.tbz
sha256=f343bf7fcbeccd4dfb748f045a56a8edaa7e30157cf3a10b04c121c351c55873
sha512=079b5c5af8a1fc811d1cd13144f7aedc40509bd86929495e03f1de355f2a9b22e4313daa668e6c361848742ef9dcf7e144897fe6ae98f0c095c1eaec77ffd243
doc/index.html
OCADml
OCADml is a collection of types and functions facilitating Computer Aided Design (CAD) in OCaml. In particular, the style of design currently supported is that of 2D drawing and mesh generation via sweeping/extrusion.
API
OCADml
-- top level library interface
Vectors and transformations
V2
-- 2d vector operationsV3
-- 3d vector operationsAffine2
-- 2d affine transformation matricesAffine3
-- 3d affine transformation matricesQuaternion
-- quaternion manipulation andl applicationPlane
-- normalized cartesian plane operations
2d paths and polygons
Path2
-- generation and manipulation of 2d pathsBezier2
-- 2d bezier curves, patches, and splinesCubicSpline
-- cubic spline interpolation of 2d pathsPoly2
-- 2d polygons (outer, and zero or more inner paths)PolyText
-- point representations of text (via cairo)
3d paths, coplanar polygons, and meshes
Path3
-- generation and manipulation of 3d pathsBezier3
-- 3d bezier curves, patches, and splinesPoly3
-- planar 3d polygons (outer, and zero or more inner paths)Mesh
-- points and faces 3d mesh representation (polyhedrons)
Utilities
Math
-- float and 2d matrix operationsBallTree2
-- 2d vector space partitioning search treeBallTree3
-- 3d vector space partitioning search tree
CAD Package Specific Frontends
This library only provides a means to generate point and face based geometries, in order to perform boolean operations, validation, and export, you'll need to work with a particular CAD package.
OSCADml
[@@deriving cad]
There is a companion ppx, [@@deriving cad] for generating transformation functions for user-defined records and abstract types composed of types for which the basic transformation functions are defined, such as vectors (V2.t
or V3.t
) (and those composed of them) provided in this library.
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page