GeoSolver is a Python package for geometric constraint solving.

A geometric constraint problem (GCP) is a set of geometric constraints
on/between geometric variables. The problem is finding a configuration
of the geometric variables so that all constraints are satisfied.
Geometric variables are objects with an unknown position, orientation,
shape, size, etc. Variables in a GCP can be points, lines,
planes, spheres, cylinders and more complex shapes. Geometric
constraints are relations such as the distance between objects (e.g.
between a pair of points or between a point and a plane), the angle
between objects (e.g. the angle between two planes), tangency of curves
and surfaces, othogonality and parellelism, etc.

Geometric constraint problems are found in CAD applications, robotics,
simulations, and many other scientific areas. Generic constraint
solving/satisfaction methods are typically not
suitable for geometric constraint problems, so specialised geometric
constraint solving (GCS) algorithms are needed.

Features:

- 3D geometric constraint problems, consisting of:

- point variables

- two-point distance constraint
- three-point angle constraint

- Problems with other geometric variables (lines, planes, spheres,
etc.) and constraints can be mapped to these basic constraints on point
variables

- Solution selection:
- chiralty constraints (clock and handedness constraints)

- protoype-based (sketch-based) selection

- Finds a generic
solution, from which all particular solutions, for different parameter
values (e.g. distances and angles), can be easily derived

- Incremental algorithm that it can efficiently deal with changes
in the GCP (i.e. adding and removing constraints and variables and
changing parameter values)

- Extensible solving framework, allowing for new types of geometric variables and constraints

The workbench is currenly used for debugging/testing the GeoSolver package. It may also be used as a teaching tool, and perhaps some day may evolve into a complete geometric design tool kit.

Features:

- Easy interactive editing of constraint problems
- 3D views of problem and solution

- Decompition view: shows how problem is decomposed into a tree of rigid clusers

Browse GeoSolver API reference (generated by pydoc)

[to do: GCS Workbench user manual]

The GeoSolver project is hosted on Sourceforge. Project information, source code and forums can be found on the sourceforge project page.

You can directly get the latest version from the subversion tree, using the following command:

svn checkout svn://svn.code.sf.net/p/geosolver/code/trunk geosolver-code

The GeoSolver package and the GCS Workbench are distributed with the GNU Public Licence version 3.0. See distribution files for more information.

Hilderick A. van der Meiden and Willem F. Bronsvoort, 2009, A non-rigid cluster rewriting approach to solve systems of 3D geometric constraints, Computer-Aided Design 42(1), pp. 36-49 [doi:10.1016/j.cad.2009.03.003] [Download PDF]

The GCS Workbench is presented in this paper:

Rogier de Regt, Hilderick A. van der Meiden and Willem F. Bronsvoort, 2008, A Workbench for Geometric Constraint Solving, Computer-Aided Design and Applications, Volume 5, Numbers 1-4 (Proceedings CAD'08, June 23-27, 2008, Orlando, Florida) [doi: 10.3722/cadaps.2008.471-482] [Download PDF]