## Assignment of GCE Geometric Solver The 2D solver included in C3D geometry core is called GCE. This is an internal name given for technical purposes, it is an *abbreviation of Geometric* *Constraint Engine*. GCE is a component of C3D Solver module that has another component, namely three-dimensional mating solver (GCM). The main purpose of the GCE component is to satisfy the system of constraints for geometric objects of flat drawing (sketch). The following flat geometric objects can be a subject of GCE calculations: a point, line, circle, ellipse, spline or parametric curve. Users can add links to them in the form of constraints selected from a given set of types, including the following logic constraints: parallelism, perpendicularity, tangency, point on curve, symmetry, and also various types of dimensional constraints that define the distances, lengths and angles. The solver can also work with curves that have ends (bounded curves), for example, line segments and circular arcs. All functions of the GCE geometric solver are available via the **gce_types.h** and **gce_api.h** header files, they contain a set of simple data structures and functions. The solver type system reflects the main concepts required to define geometric constrain problem for a drawing and manipulate the states of geometric objects. The problem domain of the geometric solver includes such concepts, as geometric solver, geometric constraint, dimension, constraint system, numeric variable, etc. The application interacts with the constraint solver based on simple C++ data structures, all these structures are declared in **gce_types.h** file.