Introducing Bidirectional Programming in Constructive Solid Geometry-Based CAD
J. Felipe Gonzalez, Danny Kieken, Thomas Pietrzak, Audrey Girouard, Géry Casiez
TL;DR
This work introduces bidirectional programming for constructive solid geometry (CSG) CAD to bridge code-centric and direct-manipulation workflows. It combines user studies with a design process to identify navigation and spatial-editing challenges, then delivers a proof-of-concept by patching OpenSCAD with bidirectional navigation (reverse/forward search) and direct-manipulation transformations. The approach uses an AST/CSG/Geometric Tree pipeline to connect code statements with 3D view elements, enabling coherent updates in both directions and supporting intuitive edits through on-screen gizmos. The findings suggest that bidirectional navigation can significantly improve navigability and spatial editing in programming-based CAD, while also highlighting areas for refinement, such as handling ambiguities when multiple code statements affect the same geometry and extending support for complex transformation constraints.
Abstract
3D Computer-Aided Design (CAD) users need to overcome several obstacles to benefit from the flexibility of programmatic interface tools. Besides the barriers of any programming language, users face challenges inherent to 3D spatial interaction. Scripting simple operations, such as moving an element in 3D space, can be significantly more challenging than performing the same task using direct manipulation. We introduce the concept of bidirectional programming for Constructive Solid Geometry (CSG) CAD tools, informed by interviews we performed with programmatic interface users. We describe how users can navigate and edit the 3D model using direct manipulation in the view or code editing while the system ensures consistency between both spaces. We also detail a proof-of-concept implementation using a modified version of OpenSCAD.
