NURBS-Python
A pure Python open-source computational geometry library for NURBS modeling and evaluation.

Full circle w/ 9 control points
NURBS-Python (geomdl) is a pure Python object-oriented B-spline and NURBS library with convenient data structures and extensible algorithms. The work is described in our SoftwareX article.
How It Started
NURBS-Python started in 2016 during my Ph.D. studies at Iowa State University. At the time, most NURBS libraries were either commercial or written in compiled languages like C, C++, or Fortran, and the few Python options were fairly limited. I put this together, initially as part of my coursework and later as part of my dissertation, favoring readability over raw performance.
Since then, I’ve also developed GPU-accelerated extensions using Numba, though that work remains unpublished and experimental.
Features
- Self-contained, object-oriented, extensible, and highly customizable API
- Convenient data structures for storing curve, surface, and volume descriptions
- Surface and curve fitting with interpolation and least squares approximation
- Surface trimming
- Knot vector and surface grid generators
- Customizable visualization and animation with Matplotlib, Plotly, and VTK
- Export to JSON, YAML, Libconfig, STL, OBJ, and VTK
- Complete documentation with references, examples, and illustrations
- Pure Python implementation (no C/C++ or Fortran dependencies required)
- Optional Cython build for higher performance
- Install from PyPI
- Rhino
.3dmimport/export via rw3dm
References
- GitHub: https://github.com/orbingol/NURBS-Python
- Documentation: https://nurbs-python.readthedocs.io/
- PyPI: https://pypi.org/project/geomdl/
- SoftwareX article: https://doi.org/10.1016/j.softx.2018.12.005
- For questions:
nurbs-python@googlegroups.com





