SketchGen: Generating Constrained CAD Sketches
  Computer-aided design (CAD) is the most widely used modeling approach for
technical design. The typical starting point in these designs is 2D sketches
which can later be extruded and combined to obtain complex three-dimensional
assemblies. Such sketches are typically composed of parametric primitives, such
as points, lines, and circular arcs, augmented with geometric constraints
linking the primitives, such as coincidence, parallelism, or orthogonality.
Sketches can be represented as graphs, with the primitives as nodes and the
constraints as edges. Training a model to automatically generate CAD sketches
can enable several novel workflows, but is challenging due to the complexity of
the graphs and the heterogeneity of the primitives and constraints. In
particular, each type of primitive and constraint may require a record of
different size and parameter types. We propose SketchGen as a generative model
based on a transformer architecture to address the heterogeneity problem by
carefully designing a sequential language for the primitives and constraints
that allows distinguishing between different primitive or constraint types and
their parameters, while encouraging our model to re-use information across
related parameters, encoding shared structure. A particular highlight of our
work is the ability to produce primitives linked via constraints that enables
the final output to be further regularized via a constraint solver. We evaluate
our model by demonstrating constraint prediction for given sets of primitives
and full sketch generation from scratch, showing that our approach
significantly out performs the state-of-the-art in CAD sketch generation.
