NURBGen: High-Fidelity Text-to-CAD Generation through LLM-Driven NURBS Modeling

Muhammad Usama, Mohammad Sadil Khan, Didier Stricker, Muhammad Zeshan Afzal
11/9/2025
cs.CV

No official code found. Best implementation: SadilKhan/NURBGen (31 stars, last commit 2026-04-21).

Abstract

Generating editable 3D CAD models from natural language remains challenging, as existing text-to-CAD systems either produce meshes or rely on scarce design-history data. We present NURBGen, the first framework to generate high-fidelity 3D CAD models directly from text using Non-Uniform Rational B-Splines (NURBS). To achieve this, we fine-tune a large language model (LLM) to translate free-form texts into JSON representations containing NURBS surface parameters (\textit{i.e}, control points, knot vectors, degrees, and rational weights) which can be directly converted into BRep format using Python. We further propose a hybrid representation that combines untrimmed NURBS with analytic primitives to handle trimmed surfaces and degenerate regions more robustly, while reducing token complexity. Additionally, we introduce partABC, a curated subset of the ABC dataset consisting of individual CAD components, annotated with detailed captions using an automated annotation pipeline. NURBGen demonstrates strong performance on diverse prompts, surpassing prior methods in geometric fidelity and dimensional accuracy, as confirmed by expert evaluations. Code and dataset will be released publicly.

View on arXivView PDF

Code Implementations(1)

SadilKhan/NURBGenCommunity60%

[AAAI 2026] Official Implementation of NURBGen: High-Fidelity Text-to-CAD Generation through LLM-Driven NURBS Modeling

315Shell, PythonDec 3, 20256 months ago
3dabccadcaptionsdataset+2 more

Similar Papers

Cite this paper

@article{usama2025nurbgen,
  title  = {NURBGen: High-Fidelity Text-to-CAD Generation through LLM-Driven NURBS Modeling},
  author = {Muhammad Usama and Mohammad Sadil Khan and Didier Stricker and Muhammad Zeshan Afzal},
  year   = {2025},
  eprint = {2511.06194},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2511.06194v2}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2511.06194.svg)](https://codeofpaper.com/paper/2511.06194)

Discussion