J. Felipe Gonzalez, Ph.D.


Facilitating Programming-based 3D Computer-Aided Design using Bidirectional Programming

Last Updated: Sep 6, 2024

Hey ! This project is aimed at improving the 3D design experience for users working with programming-based CAD applications where you must design in a text editor with a programming language while the application renders the visual representation of the model in a viewport after compiling, like OpenSCAD and JSCAD. It draws on insights from my PhD research, which you can explore in more detail here.

While many CAD tools feature intuitive drag-and-drop interfaces, programming-based CAD offers a unique, code-driven approach that unlocks powerful design possibilities. Though it can initially feel challenging, this method allows for greater precision and complexity in 3D modeling.

Programming-based CAD application OpenSCAD

OpenSCAD: A robust programming-based CAD tool for creating intricate 3D models.

Programming-based CAD application JSCAD

JSCAD: A flexible JavaScript-based CAD tool for advanced 3D modeling.

Through this project, I address key challenges faced by programming-based CAD users. By introducing innovative interactive features and leveraging bidirectional programming, I aim to make this approach more accessible and intuitive.

Getting to Know the Users: Challenges Faced by 3D Code Designers

In my project Understanding the Challenges of OpenSCAD Users for 3D Printing, I talked to 20 OpenSCAD users—a major tool in the programming-based CAD world. I wanted to get a real sense of what makes this approach challenging. From these conversations, I identified three main areas where users struggle: who the users are, the hurdles they face in 3D design, and the headaches that come up during 3D printing. For example, some users found it tough to visualize how changes in the code would affect the 3D model, while others struggled with the mathematics involved in creating parametric desings.

Bridging the Gap: Making Code and 3D Models Work Together

In my project Introducing Bidirectional Programming in Constructive Solid Geometry-Based CAD, I tackled a big issue in programming-based CAD: the tricky relationship between the code and the 3D view. It can be frustrating when you're trying to link what you see on the screen with the lines of code you're writing. To fix this, I introduced the concept of “bidirectional programming” into CAD. Now, you can interact with both the code and the view. Imagine this: you’re editing your model directly on the screen, and the code updates automatically. No more switching back and forth or guessing how a code tweak will look. I even tweaked OpenSCAD to make this a reality.

Simplifying Parametric Design: Making Parametric Design Effortless

In my project Facilitating the Parametric Definition of Geometric Properties in Programming-Based CAD, I focused on the challenge of defining geometric properties in parametric designs—a real pain point for many users. For instance, defining the exact dimensions or relationships between different parts of a model can get pretty complex. I analyzed a bunch of OpenSCAD models and developed new features to make it easier to define and manipulate these properties right from the 3D view. When I tested these new features with users, the results were promising. Not only did it make the design process faster and less error-prone, but it also made it much easier for beginners to jump in and start creating.

Related Publications