How CAD works
All 3D software is not CAD. Here's what makes a CAD software.
January 25, 2026
What makes a CAD software?
It seems like everybody is trying to make an AI CAD software these days. There have been many attempts from many groups, from the largest companies to fresh startups and university labs. It's clear that this is a lucrative field, since CAD software has massive prevalence in industry, with the three biggest companies in the field all exceeding 5 billion in revenue with consistent growth. However, the vast majority of these efforts are directed towards a space that may seem similar, but is miles apart from what is really CAD.
Blender vs SolidWorks
Two of the most popular 3D modeling tools are Blender and SolidWorks. Blender is a free and open-source tool that is highly popular in the 3D modeling community. On the other hand, SolidWorks is a commercial tool that is highly popular in the engineering community. Despite Blender's apparent ability to create 3D models, many of which are exported to formats identical to those created in SolidWorks, the tools are fundamentally different. This boils down to the types of models that these tools create. There are two main subsets of 3D modeling - meshes and parametric models.
Blender works in the mesh space, which works by decomposing a given 3D object down to a collection of triangles set in 3D space using absolute coordinates. This results in highly efficient performance for rendering and animation as well as enabling advanced graphical techniques like UV unwrapping, ray tracing, and rigging. This idea is similar to that of a raster image, where if you zoom in far enough, you can see the individual pixels that make up the image. As you zoom into a mesh, at some point you will be able to see the polygons that make the mesh, a quality that is undesirable in certain high-precision situations.
Instead, most professional CAD software used in engineering works in the parametric space, which works by defining a set of geometric constraints that are used to generate the final model, similar to how a vector graphic is composed of a set of paths and curves that can scale to any size without losing quality. This is especially important for high-precision engineering, where accuracy is key as parts may be manufactured to extreme tolerances and force calculations may very well be sensitive to the exact geometry.
Parametric design
To achieve the level of precision required for engineering, most professional CAD software uses a style of modeling called parametric design, which works by defining a set of parameters that together generate the final model. We can think of these like a program which will then be compiled into the final 3D model.
In a parametric design, we can pre-set dimensions for our part like the diameter of a hole, the thickness of a plate, or the radius of a fillet for ease of manufacturing. Because they are defined as numbers, the final model is computed so the accuracy and precision of the parameters is preserved. At any point in our process we can edit these dimensions and the final 3D model will be updated appropriately. This results in a completely different design experience than a tool like Blender, since we can iterate on parts of our design even once we have finished modeling.
The relational model of geometry
We can start to more formally define what a parametric model is by understanding the relational model of geometry, which shares many beautiful similarities with concepts from computer science and mathematics.
We start with basic geometric shapes - points, lines, splines, arcs, and circles which have been predefined and therefore heavily optimized for computations. We then compose these building blocks into the shape that we like by defining constraints, or relations between entities like lengths, angles, equality, tangency, and more. Once these have been set, we solve the model to find the exact position of every entity in the model.
As we increase the number of constraints, the space of possible solutions becomes more and more constrained until we have a single solution. Formally, we consider the model to be perfectly constrained when given only a single starting point $$p$$, there is a single solution $$s$$ that places all entities in a way that satisfies all the constraints. We can extend this to a single element - an element can be considered perfectly constrained when given all other perfectly constrained geometry in the model, there is a single solution for this element.
Here, we see a circle constrained by tangency with three lines. If we move the lines, the circle will change size accordingly. If these were three perfectly constrained lines, we would not be able to move the circle at all, so it would be perfectly constrained. In many CAD software, perfectly constrained geometry appears locked in place, while underconstrained geometry appears free to drag.
The circle on the left is only constrained by two lines, so we can drag it freely because it is underconstrained, even if everything else has been constrained. The circle on the right is already constrained by three lines, so if we try to apply another constraint like tangency with a fourth line the model will fail to compute.
Defining everything as a set of entities and constraints allows us to define the model as what is essentially a graph of entities and constraints which can be solved starting with a single point. We iteratively apply constraints until we have a single solution. The simplicity of this calculation also allows us to easily edit any constraint and recompute the model with minimal overhead.
If you look at the graph above, you may notice one type of constraint that doesn't seem to follow the typical pattern of constraints as relations: dimensions. Dimensions are the equivalent of injecting a string literal into a C program - they simply represent a value used in the computation process. It's generally considered best practice to avoid arbitrarily assigning dimensions to entities as they can prevent the computation from finding the optimal solution for your constraints. However, in some stages of the modeling process, especially as we step into 3 dimensions, we don't have enough other geometry to avoid basing our model on a bunch of arbitrary dimensions. Enter history as truth.
History as truth
As opposed to relational geometry, history as truth operates a lot more like an interpreted program than a system of equations. Typically, we start with a piece of geometry we've defined using the techniques laid out above, and begin to apply a set of features that consist of transformations of this geometry. We store this history as a set of instructions that can then be run in order given starting geometry to create a final 3D shape. For example, we may extrude a shape to a thickness of 1 inch, then round off the top edge, then extrude the inner face by another 1/2 inch. The beauty of this system is that the paramters to all the instructions are independent, meaning we can change the radius of the rounding and the inner face extrude will seamlessly update.
We can also treat the creation of relational geometry as a feature known within this program (known as a sketch), where the sketch entities are preconditioned not on a single starting point but on geometry derived from the state of the model at that point. This lets us switch between the more precise 2D design space and the more complex 3D one with ease.