Skip to content

jdegenstein/curated-code-cad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 

Repository files navigation

Curated Code Cad ⚙️ 👩‍🔧

You like 3d modelling, but don't like using a GUI. Good for you! But which modeller do you use?? You'll have to figure that out for yourself, but here are some options.

Special mention

The rest of the packages are in alphabetical order, but OpenScad gets a special mention because it's the OG. Many of the projects below were inspired by OpenScad and is the most well-known choice. If you're new to code-cad this is the safest choice, even if only from tutorials and content perspective.

It's a c++ library that a number the projects below wrap. OpenCascade uses a Boundary representation (B-rep) kernel, which is a powerful way representing solid geometry, this is a point of difference for some many of the other projects that use a polygon mesh.

Contributing

Know of a package that we missed? tell us with an issue or open up a PR. The description for each package is pretty minimal at the moment. If you'd like to add more detail to any of them please go ahead.

Here they are:

AngelCAD aim to do two things:

  1. Offer an embedded, but general-purpose scripting language for Constructive Solid Geometry, via AngelScript. This allows for a natural programming style with true variables, user-defined functions and even classes. Programmers should feel at home. See AngelCAD sample scripts.

  2. Offer a fast boolean engine, which is powered by Carve is used for this purpose. This means that AngelCAD is generally many times faster than other mesh-based systems.

AngelCAD is capable of running OpenSCAD script for interoperability and has features like text support and DXF import coming soon.

A community hub for sharing code-cad projects. Currently integrates with the excellent CascadeStudio. Built and maintained by yours truly.

CadQuery is a Python library that wraps and extends OpenCascade. It has a philosophy of capturing design intent. The API has been designed to be as close as possible to how you’d describe the object to a human. An example of this is its ability to "select" parts of the model's geometry to run operations on, such as the following code that selects only the edges running along the Z-axis and fillets them.

result = cq.Workplane("XY" ).box(3, 3, 0.5).edges("|Z").fillet(0.125)

z edge select example

A javascript wrapper for OpenCascade that runs in the browser. (OpenCascade can run in the browser when compiled to web-assembly). CadHub integrates with CascadeStudio.

Curv is a programming language for creating art using mathematics. It’s a 2D and 3D geometric modelling tool that supports full colour, animation and 3D printing. It was inspired by OpenScad and shadertoy.

FreeCad is a more traditional CAD package that supports python scripting, Both for modelling as well as controlling the FreeCAD GUI itself. Not only that it has a built in OpenScad workbench as well as an external CadQuery workbench, making it the best in this list at interoperability. FreeCAD uses OpenCascade under-the-hood.

Inspired by OpenScad with a very similar language, implemented in Haskell and includes the ability to write definitions in Haskell, instead of just OpenSCAD, and is part of an 'almost stack' of tools including ExplicitCAD (for a GUI), and HSlice (for an STL slicer).

JSCAD (formally know as OpenJSCAD) provides a programmer’s approach to develop 3D models. In particular, this functionality is tuned towards creating precise models for 3D printing.

JSCAD provides the ability to:

  • Create and manipulate 3D models, as well as 2D models
  • Use JavaScript programming concepts, and libraries
  • Save 3D models as STL (and other) formats

JSCAD is available as a:

  • Website
  • Command line application for backend processing
  • User application
  • Set of packages (libraries) for building custom applications

JSCAD allows anyone to create 3D (or 2D) designs by combining simple shapes. And any shape can be rotated, moved, scaled, etc. Complex shapes can be saved as parts, which can used later. And the final design can be exported into various standard formats, i.e. STL, DXF, SVG, etc.

  • Repo
  • Community (Github Issues)
  • Docs
  • License: Mozilla Public License 2.0 and GPL-2 or later
  • Online editor

Libfive is a software library and set of tools for solid modelling, especially suited for parametric and procedural design. Lisp based language, (so (you (((((can expect ) lots of parentheses))))).

Python-based, Also uses OpenCascade.

  • Repo
  • Community
  • Docs
  • License: GPL-3
  • Online editor

Another project inspired by OpenScad. The author considers key differences to be procedural vs functional programming language style, (i.e variables can be modified) and the use of arbitrary precision arithmetic throughout (meaning there are no unexpected double/float rounding errors). There is a handy feature matrix between RapCAD, OpenScad and ImplicitCad.

  • Repo
  • Community
  • Docs (No docs but mirrors openscad functions)
  • License: EPL-1.0
  • Online editor

OpenSCAD DSL in Clojure. Functions generally mirror OpenSCAD, with a couple of notable exceptions.

  • Repo
  • Community
  • Docs (No docs but mirrors openscad functions)
  • License: BSD-3-Clause License
  • Online editor

Same author as scad-cji, he likes functional programming languages clearly.

  • Repo
  • Community
  • Docs
  • License: GPL-2 or later
  • Online editor

Python-based library that wraps OpenScad, i.e. it outputs OpenScad code.

  • Repo
  • Community (Gitlab Issues)
  • Docs
  • License: LGPL-2.1 or later and GPL-2 or later
  • Online editor

Tovero is a binding of Libfive to Common Lisp, including a standalone REPL-based viewer. Tovero can be integrated with Clive, a Common Lisp scene graph and 3D GUI, to build more complex modelling applications.

Node editors / other

Not quiet Code-Cad, but they do embody much of the same thought process.

Dynamo is, quite literally, what you make it. Working with Dynamo may include using the application, either in connection with other Autodesk software or not, engaging a Visual Programming process, or participating in a broad community of users and contributors. Works with FreeCad

  • Repo
  • Community
  • Docs
  • License: GPL-3
  • Online editor

Add-on for blender. Sverchok is a powerful parametric tool for architects, allowing geometry to be programmed visually with nodes.

About

A list of the various code-cad projects out there.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 46.6%
  • JavaScript 28.3%
  • Go 18.3%
  • OpenSCAD 6.8%