-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathSketcher_CommandCircle2PTan.hxx
135 lines (104 loc) · 3.05 KB
/
Sketcher_CommandCircle2PTan.hxx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/**
* \file Sketcher_CommandCircle2PTan.hxx
* \brief Header file for the class Sketcher_CommandCircle2PTan
* \author <a href="mailto:[email protected]?subject=Sketcher_CommandCircle2PTan.hxx">Sergei Maslov</a>
*/
#ifndef Sketcher_CommandCircle2PTan_H
#define Sketcher_CommandCircle2PTan_H
#include "Sketcher_Command.hxx"
#include "Geom2d_Edge.hxx"
#include "Geom2d_Arc.hxx"
#include <gp_Circ2d.hxx>
#include <gp_Circ.hxx>
#include <Geom2d_CartesianPoint.hxx>
#include <Geom2d_Line.hxx>
#include <Geom2d_Circle.hxx>
#include <Geom2d_Curve.hxx>
#include <Geom_Circle.hxx>
#include <AIS_Circle.hxx>
#include <Geom2dGcc_Circ2d3Tan.hxx>
#include <Geom2dAPI_ProjectPointOnCurve.hxx>
#define MINIMUMDISTANCETOCURVE 100
class AIS_Circle;
DEFINE_STANDARD_HANDLE(Sketcher_CommandCircle2PTan,Sketcher_Command)
//Command entering Circle by 2 Point & 1 tangential to curve
class Sketcher_CommandCircle2PTan : public Sketcher_Command
{
public:
// Type management
DEFINE_STANDARD_RTTIEXT(Sketcher_CommandCircle2PTan, Sketcher_Command)
enum Circle2PTanAction { Nothing,Input_1CirclePoint,Input_2CirclePoint,Input_3CircleTan };
/**
* \fn Sketcher_CommandCircle2PTan()
* \brief Constructs a Sketcher_CommandCircle2PTan
*/
Standard_EXPORT Sketcher_CommandCircle2PTan();
/**
* \fn ~Sketcher_CommandCircle2PTan()
* \brief destructor
*/
Standard_EXPORT ~Sketcher_CommandCircle2PTan();
/**
* \fn Action()
* \brief turn command to active state
*/
Standard_EXPORT void Action();
/**
* \fn MouseInputEvent(const gp_Pnt2d& thePnt2d )
* \brief input event handler
* \return Standard_Boolean
* \param thePnt2d const gp_Pnt2d&
*/
Standard_EXPORT Standard_Boolean MouseInputEvent(const gp_Pnt2d& thePnt2d);
/**
* \fn MouseMoveEvent(const gp_Pnt2d& thePnt2d )
* \brief mouse move handler
* \return void
* \param thePnt2d const gp_Pnt2d&
*/
Standard_EXPORT void MouseMoveEvent(const gp_Pnt2d& thePnt2d);
/**
* \fn CancelEvent()
* \brief cancel event handler, stop entering object
* \return void
*/
Standard_EXPORT void CancelEvent();
/**
* \fn GetTypeOfMethod()
* \brief get command Method
* \return Sketcher_ObjectTypeOfMethod
*/
Standard_EXPORT Sketcher_ObjectTypeOfMethod GetTypeOfMethod();
private:
//methods
/**
* \fn SelectCurve()
* \brief selecy nearest curve
* \return void
*/
Standard_EXPORT void SelectCurve();
/**
* \fn SumDistanceToCircle()
* \brief select circle orientation
* \return Standard_Boolean
*/
Standard_EXPORT Standard_Boolean SumDistanceToCircle();
//members
Circle2PTanAction myCircle2PTanAction;
Handle(Sketcher_Object) mySObject;
Standard_Real minDistance;
Standard_Real curDistance;
Standard_Real u_temp;
gp_Pnt2d tempPnt2d;
Handle(Geom2d_CartesianPoint) First2dPoint;
Handle(Geom2d_CartesianPoint) Second2dPoint;
gp_Circ2d temp_Circ2d;
gp_Circ best_Circ;
Handle(AIS_Circle) myRubberCircle;
Handle(Geom2d_Line) tempGeom2d_Line;
Handle(Geom2d_Circle) tempGeom2d_Circle;
Handle(Geom2d_Curve) tempGeom2d_Curve;
Handle(Geom_Circle) tempGeom_Circle;
Geom2dAPI_ProjectPointOnCurve myProjectOnCurve;
};
#endif