Skip to content
Object-oriented pure Python B-Spline and NURBS library
Python Dockerfile Shell
Branch: master
Clone or download
Latest commit 314a59c Sep 11, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Tag Python 3.6.x as latest for Docker images Sep 1, 2019
.github Minor updates in contribution guidelines May 20, 2019
.travisci Add performance testing to TravisCI Jan 7, 2019
conda Update conda package metafile Jul 20, 2019
docker Update libpng package name Apr 17, 2019
docs Update heading [skip ci] Sep 10, 2019
geomdl Release v5.2.9 Sep 10, 2019
tests Add CurveEvaluator2 and SurfaceEvaluator2 tests Sep 10, 2019
.appveyor.yml Update AppVeyor CI config for build numbering May 22, 2019
.gitignore Update .gitignore Jul 15, 2019
.travis.yml Cache pip in TravisCI Jan 8, 2019 Release v5.2.9 Sep 10, 2019
CONTRIBUTORS.rst Update contributors list Aug 29, 2019
DESCRIPTION.rst Update pypi description [skip ci] May 17, 2019
LICENSE Move six and functools_lru_cache inside the package Mar 3, 2019 Add pip requirements to sdist manifest file Nov 15, 2018
README.rst Add ACIS exporter Mar 22, 2019 Add bash scripts for building manylinux1 packages Apr 10, 2019 Add bash scripts for building manylinux1 packages Apr 10, 2019
requirements.txt Move six and functools_lru_cache inside the package Mar 3, 2019
setup.cfg Added optional cython compile options Aug 9, 2018 Update package config Sep 10, 2019
tox.ini Remove pytest version pinning in tox.ini Jan 7, 2019


NURBS-Python (geomdl)




NURBS-Python (geomdl) is a pure Python, self-contained, object-oriented B-Spline and NURBS spline library for Python versions 2.7.x, 3.4.x and later.

The following article outlines the design and features of NURBS-Python (geomdl). I would be glad if you would cite it if you have used NURBS-Python (geomdl) in your research:

  title={{NURBS-Python}: An open-source object-oriented {NURBS} modeling framework in {Python}},
  author={Bingol, Onur Rauf and Krishnamurthy, Adarsh},


NURBS-Python (geomdl) provides convenient data structures and highly customizable API for rational and non-rational splines along with the efficient and extensible implementations of the following algorithms:

  • Spline evaluation
  • Derivative evaluation
  • Knot insertion
  • Knot removal
  • Knot vector refinement
  • Degree elevation
  • Degree reduction
  • Curve and surface fitting via interpolation and least squares approximation

NURBS-Python (geomdl) also provides customizable visualization and animation options via Matplotlib, Plotly and VTK libraries. Please refer to the documentation for more details.


The easiest way to install NURBS-Python (geomdl) is using pip:

$ pip install --user geomdl

It is also possible to install NURBS-Python (geomdl) using conda:

$ conda install -c orbingol geomdl

Please refer to the Installation and Testing section of the documentation for alternative installation methods.

Examples and Documentation

Extra Modules



Please see CONTRIBUTORS.rst file for the acknowledgements.


NURBS-Python (geomdl) is licensed under the terms of MIT License and it contains the following modules:

  • six is licensed under the terms of MIT License
  • backports.functools_lru_cache is licensed under the terms of MIT License
You can’t perform that action at this time.