1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
3 // File: SolveSpaceSolver_ConstraintType.h
5 // Author: Artem ZHIDKOV
7 #ifndef SolveSpaceSolver_ConstraintType_H_
8 #define SolveSpaceSolver_ConstraintType_H_
10 #include <SketchSolver_IConstraintWrapper.h>
11 #include <SolveSpaceSolver_Solver.h>
13 namespace ConstraintType
15 /// \brief Convert constraint type from SketchSolver to SolveSpace
16 static int toSolveSpace(SketchSolver_ConstraintType theType)
19 case CONSTRAINT_PT_PT_COINCIDENT: return SLVS_C_POINTS_COINCIDENT;
20 case CONSTRAINT_PT_ON_LINE: return SLVS_C_PT_ON_LINE;
21 case CONSTRAINT_PT_ON_CIRCLE: return SLVS_C_PT_ON_CIRCLE;
22 case CONSTRAINT_MIDDLE_POINT: return SLVS_C_AT_MIDPOINT;
23 case CONSTRAINT_PT_PT_DISTANCE: return SLVS_C_PT_PT_DISTANCE;
24 case CONSTRAINT_PT_LINE_DISTANCE: return SLVS_C_PT_LINE_DISTANCE;
25 case CONSTRAINT_ANGLE: return SLVS_C_ANGLE;
26 case CONSTRAINT_RADIUS: return SLVS_C_DIAMETER;
27 case CONSTRAINT_FIXED: return SLVS_C_WHERE_DRAGGED;
28 case CONSTRAINT_HORIZONTAL: return SLVS_C_HORIZONTAL;
29 case CONSTRAINT_VERTICAL: return SLVS_C_VERTICAL;
30 case CONSTRAINT_PARALLEL: return SLVS_C_PARALLEL;
31 case CONSTRAINT_PERPENDICULAR: return SLVS_C_PERPENDICULAR;
32 case CONSTRAINT_SYMMETRIC: return SLVS_C_SYMMETRIC_LINE;
33 case CONSTRAINT_EQUAL_LINES: return SLVS_C_EQUAL_LENGTH_LINES;
34 case CONSTRAINT_EQUAL_LINE_ARC: return SLVS_C_EQUAL_LINE_ARC_LEN;
35 case CONSTRAINT_EQUAL_RADIUS: return SLVS_C_EQUAL_RADIUS;
36 case CONSTRAINT_TANGENT_ARC_LINE: return SLVS_C_ARC_LINE_TANGENT;
37 case CONSTRAINT_TANGENT_ARC_ARC: return SLVS_C_CURVE_CURVE_TANGENT;
38 case CONSTRAINT_MULTI_ROTATION: return SLVS_C_MULTI_ROTATION;
39 case CONSTRAINT_MULTI_TRANSLATION: return SLVS_C_MULTI_TRANSLATION;
42 return SLVS_C_UNKNOWN;
45 /// \brief Convert constraint type from SolveSpace to SketchSolver
46 static SketchSolver_ConstraintType fromSolveSpace(int theType)
49 case SLVS_C_POINTS_COINCIDENT: return CONSTRAINT_PT_PT_COINCIDENT;
50 case SLVS_C_PT_ON_LINE: return CONSTRAINT_PT_ON_LINE;
51 case SLVS_C_PT_ON_CIRCLE: return CONSTRAINT_PT_ON_CIRCLE;
52 case SLVS_C_AT_MIDPOINT: return CONSTRAINT_MIDDLE_POINT;
53 case SLVS_C_PT_PT_DISTANCE: return CONSTRAINT_PT_PT_DISTANCE;
54 case SLVS_C_PT_LINE_DISTANCE: return CONSTRAINT_PT_LINE_DISTANCE;
55 case SLVS_C_EQUAL_LENGTH_LINES: return CONSTRAINT_EQUAL_LINES;
56 case SLVS_C_EQUAL_LINE_ARC_LEN: return CONSTRAINT_EQUAL_LINE_ARC;
57 case SLVS_C_SYMMETRIC_LINE: return CONSTRAINT_SYMMETRIC;
58 case SLVS_C_HORIZONTAL: return CONSTRAINT_HORIZONTAL;
59 case SLVS_C_VERTICAL: return CONSTRAINT_VERTICAL;
60 case SLVS_C_DIAMETER: return CONSTRAINT_RADIUS;
61 case SLVS_C_ANGLE: return CONSTRAINT_ANGLE;
62 case SLVS_C_PARALLEL: return CONSTRAINT_PARALLEL;
63 case SLVS_C_PERPENDICULAR: return CONSTRAINT_PERPENDICULAR;
64 case SLVS_C_ARC_LINE_TANGENT: return CONSTRAINT_TANGENT_ARC_LINE;
65 case SLVS_C_EQUAL_RADIUS: return CONSTRAINT_EQUAL_RADIUS;
66 case SLVS_C_WHERE_DRAGGED: return CONSTRAINT_FIXED;
67 case SLVS_C_CURVE_CURVE_TANGENT: return CONSTRAINT_TANGENT_ARC_ARC;
68 case SLVS_C_MULTI_ROTATION: return CONSTRAINT_MULTI_ROTATION;
69 case SLVS_C_MULTI_TRANSLATION: return CONSTRAINT_MULTI_TRANSLATION;
72 return CONSTRAINT_UNKNOWN;