GeoSolver Project Page

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. 


The GeoSolver Python package provides classes and functions for specifying, analysing and solving geometric constraint problems. It can be used in python applications that need to solve geometric constraint problems.


GCS Workbench

The Geometric Constraint Solving Workbench provides a nice GUI for interactively editing, analysing and solving geometric constraints problems. It uses the GeoSolver package for analysis and solving, and pyQt and pyOpenGL for interactive 3D graphics.

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.


GCS Workbench screenshot

Download & Documentation

Download GeoSolver + GCS Workbench (version 20090901)

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:// geosolver-code


The GeoSolver package was written by Rick van der Meiden. The GCS Workbench was written by Rogier de Regt and maintained by Rick van der Meiden.

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


An research paper on the geometric constraint solving algorithm used in GeoSolver:

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]