The goal of this project is to create a 3D CAD program. Current work is focusing on 2D functionality and overall GUI elements. The intent is to create 2D sketches and extrude them into solid objects, then perform boolean operations to create more complicated objects for machining or 3D printing.
This version is written in C++, using Vulkan 3D API, on top of GLFW3. I rolled my own GUI widgets and text handling routines. All the graphics are presented using only a few shaders: a unit square, line, arc, and TTF glyph rendering.
The shaders are represented in the source as elements of a scene graph. Sizes are controlled using transformations in the graph structure. There are currently no images used, elements such as button-tops are rendered as text. The button tops were drawn using FontForge and are stored in a font file and are rendered as regular text.
The following presents images of the sketch editor in action. The steps increase the number of constraints active on the sketch, and highlights the different constraints used. While it is possible to explicitly declare the length of a dimension, angle, point coordinates, and add labels, this functionality was disabled in this version.
The last image in this document shows a sketch where this application was used to lay out an oddly shaped flower-bed by my father.
Looking at the GUI there is a toolbar at the top, status bar beneath and a drawing area with a simple sketch created using a poly-line tool and an arc tool.
This simple demonstration showed the solver and 2D sketch in action.
Because of conflicting development, the text edit widget needs revisited. Tools requiring input, number entry and text entry, are not functioning.
The last element on the toolbar brings up a save dialog. Currently saving and loading is completely drag and drop. Clicking on the save button will present a window with a drag source area and file name field. The current implementation uses X Window drag functionality to write the file.
Dragging a saved file into the application window will open the file. Dragging from the save dialog allows the file to be dropped into a folder on the KDE Desktop.