summaryrefslogtreecommitdiff
path: root/inc/ShapeUpgrade_WireDivide.hxx
blob: 43ddcacd786c7908f975ac87ed2c06a965f371d6 (plain)
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _ShapeUpgrade_WireDivide_HeaderFile
#define _ShapeUpgrade_WireDivide_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_ShapeUpgrade_WireDivide_HeaderFile
#include <Handle_ShapeUpgrade_WireDivide.hxx>
#endif

#ifndef _Handle_ShapeUpgrade_SplitCurve3d_HeaderFile
#include <Handle_ShapeUpgrade_SplitCurve3d.hxx>
#endif
#ifndef _Handle_ShapeUpgrade_SplitCurve2d_HeaderFile
#include <Handle_ShapeUpgrade_SplitCurve2d.hxx>
#endif
#ifndef _Handle_ShapeUpgrade_EdgeDivide_HeaderFile
#include <Handle_ShapeUpgrade_EdgeDivide.hxx>
#endif
#ifndef _Handle_ShapeAnalysis_TransferParameters_HeaderFile
#include <Handle_ShapeAnalysis_TransferParameters.hxx>
#endif
#ifndef _TopoDS_Face_HeaderFile
#include <TopoDS_Face.hxx>
#endif
#ifndef _TopoDS_Wire_HeaderFile
#include <TopoDS_Wire.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Handle_ShapeUpgrade_FixSmallCurves_HeaderFile
#include <Handle_ShapeUpgrade_FixSmallCurves.hxx>
#endif
#ifndef _ShapeUpgrade_Tool_HeaderFile
#include <ShapeUpgrade_Tool.hxx>
#endif
#ifndef _Handle_Geom_Surface_HeaderFile
#include <Handle_Geom_Surface.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _ShapeExtend_Status_HeaderFile
#include <ShapeExtend_Status.hxx>
#endif
class ShapeUpgrade_SplitCurve3d;
class ShapeUpgrade_SplitCurve2d;
class ShapeUpgrade_EdgeDivide;
class ShapeAnalysis_TransferParameters;
class ShapeUpgrade_FixSmallCurves;
class TopoDS_Wire;
class TopoDS_Face;
class Geom_Surface;
class TopoDS_Edge;
class TopLoc_Location;


//! Divides edges in the wire lying on the face or free wires or <br>
//!          free edges with a criterion. <br>
//!          Splits 3D curve and pcurve(s) of the edge on the face. <br>
//!          Other pcurves which may be associated with the edge are simply <br>
//!          copied. <br>
//!          If 3D curve is splitted then pcurve on the face is splitted as <br>
//!          well, and wice-versa. <br>
//!          Input shape is not modified. <br>
//!          The modifications made are recorded in external context <br>
//!          (ShapeBuild_ReShape). This tool is applied to all edges <br>
//!          before splitting them in order to keep sharing. <br>
class ShapeUpgrade_WireDivide : public ShapeUpgrade_Tool {

public:

  //! Empty constructor <br>
  Standard_EXPORT   ShapeUpgrade_WireDivide();
  //! Initializes by wire and face <br>
  Standard_EXPORT     void Init(const TopoDS_Wire& W,const TopoDS_Face& F) ;
  //! Initializes by wire and surface <br>
  Standard_EXPORT     void Init(const TopoDS_Wire& W,const Handle(Geom_Surface)& S) ;
  //! Loads working wire <br>
  Standard_EXPORT     void Load(const TopoDS_Wire& W) ;
  //! Creates wire of one edge and calls Load for wire <br>
  Standard_EXPORT     void Load(const TopoDS_Edge& E) ;
  //! Sets supporting surface by face <br>
  Standard_EXPORT     void SetFace(const TopoDS_Face& F) ;
  //! Sets supporting surface <br>
  Standard_EXPORT     void SetSurface(const Handle(Geom_Surface)& S) ;
  //! Sets supporting surface with location <br>
  Standard_EXPORT     void SetSurface(const Handle(Geom_Surface)& S,const TopLoc_Location& L) ;
  //! Computes the resulting wire by splitting all the edges <br>
//!          according to splitting criteria. <br>
//!          All the modifications made are recorded in context <br>
//!          (ShapeBuild_ReShape). This tool is applied to all edges <br>
//!          before splitting them in order to keep sharings. <br>
//!          If no supporting face or surface is defined, only 3d <br>
//!          splitting criteria are used. <br>
  Standard_EXPORT   virtual  void Perform() ;
  //! Gives the resulting Wire (equal to initial one if not done <br>
//!          or Null if not loaded) <br>
  Standard_EXPORT    const TopoDS_Wire& Wire() const;
  //! Queries status of last call to Perform() <br>
//! OK - no edges were splitted, wire left untouched <br>
//! DONE1 - some edges were splitted <br>
//! FAIL1 - some edges have no 3d curve (skipped) <br>
//! FAIL2 - some edges have no pcurve (skipped) <br>
  Standard_EXPORT     Standard_Boolean Status(const ShapeExtend_Status status) const;
  //! Sets the tool for splitting 3D curves. <br>
  Standard_EXPORT     void SetSplitCurve3dTool(const Handle(ShapeUpgrade_SplitCurve3d)& splitCurve3dTool) ;
  //! Sets the tool for splitting pcurves. <br>
  Standard_EXPORT     void SetSplitCurve2dTool(const Handle(ShapeUpgrade_SplitCurve2d)& splitCurve2dTool) ;
  //! Sets the tool for Transfer parameters between curves and pcurves. <br>
  Standard_EXPORT     void SetTransferParamTool(const Handle(ShapeAnalysis_TransferParameters)& TransferParam) ;
  //! Sets tool for splitting edge <br>
  Standard_EXPORT     void SetEdgeDivideTool(const Handle(ShapeUpgrade_EdgeDivide)& edgeDivideTool) ;
  //! returns tool for splitting edges <br>
  Standard_EXPORT   virtual  Handle_ShapeUpgrade_EdgeDivide GetEdgeDivideTool() const;
  //! Returns the tool for Transfer of parameters. <br>
  Standard_EXPORT   virtual  Handle_ShapeAnalysis_TransferParameters GetTransferParamTool() ;
  //!Sets mode for splitting 3d curves from edges. <br>
//! 0 - only curve 3d from free edges. <br>
//! 1 - only curve 3d from shared edges. <br>
//! 2 -  all curve 3d. <br>
  Standard_EXPORT     void SetEdgeMode(const Standard_Integer EdgeMode) ;
  //!Sets tool for fixing small curves with specified min tolerance; <br>
  Standard_EXPORT     void SetFixSmallCurveTool(const Handle(ShapeUpgrade_FixSmallCurves)& FixSmallCurvesTool) ;
  //!Returns tool for fixing small curves <br>
  Standard_EXPORT     Handle_ShapeUpgrade_FixSmallCurves GetFixSmallCurveTool() const;




  DEFINE_STANDARD_RTTI(ShapeUpgrade_WireDivide)

protected:

  //! Returns the tool for splitting 3D curves. <br>
  Standard_EXPORT   virtual  Handle_ShapeUpgrade_SplitCurve3d GetSplitCurve3dTool() const;
  //! Returns the tool for splitting pcurves. <br>
  Standard_EXPORT   virtual  Handle_ShapeUpgrade_SplitCurve2d GetSplitCurve2dTool() const;

TopoDS_Face myFace;
TopoDS_Wire myWire;
Standard_Integer myStatus;
Standard_Integer myEdgeMode;


private: 


Handle_ShapeUpgrade_SplitCurve3d mySplitCurve3dTool;
Handle_ShapeUpgrade_SplitCurve2d mySplitCurve2dTool;
Handle_ShapeUpgrade_EdgeDivide myEdgeDivide;
Handle_ShapeAnalysis_TransferParameters myTransferParamTool;
Handle_ShapeUpgrade_FixSmallCurves myFixSmallCurveTool;


};





// other Inline functions and methods (like "C++: function call" methods)


#endif