Skip to content
Object-oriented pure Python B-Spline and NURBS library
Branch: master
Clone or download
Latest commit a8a8b79 May 23, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Add Alpine Linux building options to CircleCI config Jan 13, 2019
.github Minor updates in contribution guidelines May 20, 2019
.travisci Add performance testing to TravisCI Jan 7, 2019
docker Update libpng package name Apr 17, 2019
docs Minor documentation updates and fixes [skip ci] May 22, 2019
geomdl Fix typo in indentation May 24, 2019
tests Deprecate load and save methods in favor of JSON Apr 19, 2019
.appveyor.yml Update AppVeyor CI config for build numbering May 22, 2019
.coveragerc Update coverage config May 2, 2018
.gitignore Fix sphinx warning May 22, 2019
.readthedocs.yml [skip ci] mock plotly in sphinx config and define specific py version Jan 9, 2019
.travis.yml Release v5.2.7 May 24, 2019
CONTRIBUTORS.rst Update contributors text Feb 3, 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 Add license text to May 20, 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.