Facilitating 3D Model Construction and Minimizing Parameter Definition in Programming-Based Computer Aided Design Software through the Application of Program Synthesis by Example


  • Raunak Daga Aspiring Scientists' Summer Internship Program, 2019
  • Rishabh Misra Aspiring Scientists' Summer Internship Program, 2019
  • Dr. Thomas LaToza Department of Computer Science, Volgenau School of Engineering, George Mason University




Computer-Aided Design (CAD) tools are popular tools used to design and specify 3D models to analyze manufacturing opportunities, prepare objects for 3D printing, and more. CAD software, such as OpenJSCAD, often specify 3D models as programs. By representing a 3D model as a program, different model variants can be generated by simply adjusting parameters. For example, a 3D model of a ladder might have a variable number of rungs and a width, which might each be adjusted with separate parameters. Using programming-based CAD software, however, can pose difficulties. Users without programming experience may not know how to program desired specifications. In addition, even experienced programmers may over define parameters or write excessive code. Our project hopes to address these concerns by exploring ways to automatically detect parameters from programs using program synthesis by example, the generation of programs using user-provided input-output examples. Using program synthesis, output programs are generated which are equivalent to the original input programs, except for capturing redundancy as parameters. Using this technique, concrete 3D models can be transformed into more generic programs that can be easily customized by users by editing parameter values. In the near future, we hope to fulfill our goal of helping non-programmers by enabling the synthesis of programs based on input parameters provided by users. We envision moving away from simply detecting parameters to taking a 3D model and making it more generic.





Abstracts from the 2019 Aspiring Scientists' Summer Internship Program