waterfall-cad: Declarative CAD/Solid Modeling Library

[ graphics, lgpl, library ] [ Propose Tags ] [ Report a vulnerability ]
Versions [RSS] 0.0.0.1, 0.1.0.0, 0.1.1.0, 0.1.1.1, 0.1.2.1, 0.1.2.2, 0.2.0.0, 0.2.1.0, 0.2.2.0, 0.2.2.1, 0.3.0.0, 0.3.0.1, 0.4.0.0, 0.5.0.0, 0.5.0.1, 0.5.1.0, 0.5.1.1
Change log CHANGELOG.md
Dependencies base (>=4.7 && <5), filepath (>=1.4 && <1.6), lattices (>=2.0 && <3), lens (>=5 && <6), linear (>=1.21 && <2), opencascade-hs (>=0.5.1.1 && <0.6), primitive (>=0.7 && <0.10), resourcet (>=1.2 && <1.4) [details]
License LGPL-2.1-only
Copyright 2023 Joe Warren
Author Joe Warren
Maintainer josephmarkwarren@gmail.com
Category Graphics
Home page https://github.com/joe-warren/opencascade-hs#readme
Bug tracker https://github.com/joe-warren/opencascade-hs/issues
Source repo head: git clone https://github.com/joe-warren/opencascade-hs
Uploaded by josephwarren at 2025-08-08T20:18:03Z
Distributions NixOS:0.5.0.1
Reverse Dependencies 2 direct, 0 indirect [details]
Downloads 601 total (36 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for waterfall-cad-0.5.1.1

[back to package description]

Waterfall CAD

Waterfall CAD

Waterfall CAD is a declarative CAD/Solid Modeling library.

This uses opencascade-hs as the kernel, but provides a "more functional" API over it.

Dependencies

You'll need the main OpenCASCADE libraries/header files installed to use this.

Please see the main readme on Github for more information.

Examples

There are examples of how to use the library in waterfall-cad-examples.

You can see images of these examples in the main readme on Github.

Imports

This library is recommended to used by importing the root Waterfall module, qualified, which includes the entire public API. You'll also almost certainly need to import Linear, in my experience this is best imported unqualified, e.g:

import qualified Waterfall
import Linear

It should also be possible to import the library unqualified, or to import the individual modules.

The examples use qualified imports from the individual modules, in order to communicate the module structure. However this can be a little tedious for regular use.