NURBS-Python

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

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 .3dm import/export via rw3dm

References