Salome HOME
c9243e6657ae45b5b273bf8ceebe1931c16c23d1
[modules/shaper.git] / src / SketchSolver / SolveSpaceSolver / SolveSpaceSolver_ConstraintType.h
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:    SolveSpaceSolver_ConstraintType.h
4 // Created: 8 Dec 2015
5 // Author:  Artem ZHIDKOV
6
7 #ifndef SolveSpaceSolver_ConstraintType_H_
8 #define SolveSpaceSolver_ConstraintType_H_
9
10 #include <SketchSolver_IConstraintWrapper.h>
11 #include <SolveSpaceSolver_Solver.h>
12 #include <slvs.h>
13
14 namespace ConstraintType
15 {
16   /// \brief Convert constraint type from SketchSolver to SolveSpace
17   static int toSolveSpace(SketchSolver_ConstraintType theType)
18   {
19     switch (theType) {
20     case CONSTRAINT_PT_PT_COINCIDENT:   return SLVS_C_POINTS_COINCIDENT;
21     case CONSTRAINT_PT_ON_LINE:         return SLVS_C_PT_ON_LINE;
22     case CONSTRAINT_PT_ON_CIRCLE:       return SLVS_C_PT_ON_CIRCLE;
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;
40     default: break;
41     }
42     return SLVS_C_UNKNOWN;
43   }
44
45   /// \brief Convert constraint type from SolveSpace to SketchSolver
46   static SketchSolver_ConstraintType fromSolveSpace(int theType)
47   {
48     switch (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_PT_PT_DISTANCE:       return CONSTRAINT_PT_PT_DISTANCE;
53     case SLVS_C_PT_LINE_DISTANCE:     return CONSTRAINT_PT_LINE_DISTANCE;
54     case SLVS_C_EQUAL_LENGTH_LINES:   return CONSTRAINT_EQUAL_LINES;
55     case SLVS_C_EQUAL_LINE_ARC_LEN:   return CONSTRAINT_EQUAL_LINE_ARC;
56     case SLVS_C_SYMMETRIC_LINE:       return CONSTRAINT_SYMMETRIC;
57     case SLVS_C_HORIZONTAL:           return CONSTRAINT_HORIZONTAL;
58     case SLVS_C_VERTICAL:             return CONSTRAINT_VERTICAL;
59     case SLVS_C_DIAMETER:             return CONSTRAINT_RADIUS;
60     case SLVS_C_ANGLE:                return CONSTRAINT_ANGLE;
61     case SLVS_C_PARALLEL:             return CONSTRAINT_PARALLEL;
62     case SLVS_C_PERPENDICULAR:        return CONSTRAINT_PERPENDICULAR;
63     case SLVS_C_ARC_LINE_TANGENT:     return CONSTRAINT_TANGENT_ARC_LINE;
64     case SLVS_C_EQUAL_RADIUS:         return CONSTRAINT_EQUAL_RADIUS;
65     case SLVS_C_WHERE_DRAGGED:        return CONSTRAINT_FIXED;
66     case SLVS_C_CURVE_CURVE_TANGENT:  return CONSTRAINT_TANGENT_ARC_ARC;
67     case SLVS_C_MULTI_ROTATION:       return CONSTRAINT_MULTI_ROTATION;
68     case SLVS_C_MULTI_TRANSLATION:    return CONSTRAINT_MULTI_TRANSLATION;
69     default: break;
70     }
71     return CONSTRAINT_UNKNOWN;
72   }
73 }
74
75
76 #endif