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 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
|
// 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 _BRepFill_Filling_HeaderFile
#define _BRepFill_Filling_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Macro.hxx>
#include <GeomPlate_BuildPlateSurface.hxx>
#include <BRepFill_SequenceOfEdgeFaceAndOrder.hxx>
#include <BRepFill_SequenceOfFaceAndOrder.hxx>
#include <GeomPlate_SequenceOfPointConstraint.hxx>
#include <TopTools_DataMapOfShapeListOfShape.hxx>
#include <TopTools_ListOfShape.hxx>
#include <TopoDS_Face.hxx>
#include <Standard_Real.hxx>
#include <Standard_Integer.hxx>
#include <Standard_Boolean.hxx>
#include <GeomAbs_Shape.hxx>
class StdFail_NotDone;
class Standard_OutOfRange;
class Standard_ConstructionError;
class TopoDS_Face;
class TopoDS_Edge;
class gp_Pnt;
class BRepFill_SequenceOfEdgeFaceAndOrder;
class TopTools_ListOfShape;
class TopTools_SequenceOfShape;
class TopoDS_Shape;
//! N-Side Filling
//! This algorithm avoids to build a face from:
//! * a set of edges defining the bounds of the face and some
//! constraints the surface support has to satisfy
//! * a set of edges and points defining some constraints
//! the support surface has to satisfy
//! * an initial surface to deform for satisfying the constraints
//! * a set of parameters to control the constraints.
//!
//! The support surface of the face is computed by deformation
//! of the initial surface in order to satisfy the given constraints.
//! The set of bounding edges defines the wire of the face.
//!
//! If no initial surface is given, the algorithm computes it
//! automatically.
//! If the set of edges is not connected (Free constraint)
//! missing edges are automatically computed.
//!
//! Limitations:
//! * If some constraints are not compatible
//! The algorithm does not take them into account.
//! So the constraints will not be satisfyed in an area containing
//! the incompatibilitries.
//! * The constraints defining the bound of the face have to be
//! entered in order to have a continuous wire.
//!
//! Other Applications:
//! * Deformation of a face to satisfy internal constraints
//! * Deformation of a face to improve Gi continuity with
//! connected faces
class BRepFill_Filling
{
public:
DEFINE_STANDARD_ALLOC
//! Constructor
Standard_EXPORT BRepFill_Filling(const Standard_Integer Degree = 3, const Standard_Integer NbPtsOnCur = 15, const Standard_Integer NbIter = 2, const Standard_Boolean Anisotropie = Standard_False, const Standard_Real Tol2d = 0.00001, const Standard_Real Tol3d = 0.0001, const Standard_Real TolAng = 0.01, const Standard_Real TolCurv = 0.1, const Standard_Integer MaxDeg = 8, const Standard_Integer MaxSegments = 9);
//! Sets the values of Tolerances used to control the constraint.
//! Tol2d:
//! Tol3d: it is the maximum distance allowed between the support surface
//! and the constraints
//! TolAng: it is the maximum angle allowed between the normal of the surface
//! and the constraints
//! TolCurv: it is the maximum difference of curvature allowed between
//! the surface and the constraint
Standard_EXPORT void SetConstrParam (const Standard_Real Tol2d = 0.00001, const Standard_Real Tol3d = 0.0001, const Standard_Real TolAng = 0.01, const Standard_Real TolCurv = 0.1) ;
//! Sets the parameters used for resolution.
//! The default values of these parameters have been chosen for a good
//! ratio quality/performance.
//! Degree: it is the order of energy criterion to minimize for computing
//! the deformation of the surface.
//! The default value is 3
//! The recommanded value is i+2 where i is the maximum order of the
//! constraints.
//! NbPtsOnCur: it is the average number of points for discretisation
//! of the edges.
//! NbIter: it is the maximum number of iterations of the process.
//! For each iteration the number of discretisation points is
//! increased.
//! Anisotropie:
Standard_EXPORT void SetResolParam (const Standard_Integer Degree = 3, const Standard_Integer NbPtsOnCur = 15, const Standard_Integer NbIter = 2, const Standard_Boolean Anisotropie = Standard_False) ;
//! Sets the parameters used for approximation of the surface
Standard_EXPORT void SetApproxParam (const Standard_Integer MaxDeg = 8, const Standard_Integer MaxSegments = 9) ;
//! Loads the initial Surface
//! The initial surface must have orthogonal local coordinates,
//! i.e. partial derivatives dS/du and dS/dv must be orthogonal
//! at each point of surface.
//! If this condition breaks, distortions of resulting surface
//! are possible.
Standard_EXPORT void LoadInitSurface (const TopoDS_Face& aFace) ;
//! Adds a new constraint which also defines an edge of the wire
//! of the face
//! Order: Order of the constraint:
//! GeomAbs_C0 : the surface has to pass by 3D representation
//! of the edge
//! GeomAbs_G1 : the surface has to pass by 3D representation
//! of the edge and to respect tangency with the first
//! face of the edge
//! GeomAbs_G2 : the surface has to pass by 3D representation
//! of the edge and to respect tangency and curvature
//! with the first face of the edge.
Standard_EXPORT Standard_Integer Add (const TopoDS_Edge& anEdge, const GeomAbs_Shape Order, const Standard_Boolean IsBound = Standard_True) ;
//! Adds a new constraint which also defines an edge of the wire
//! of the face
//! Order: Order of the constraint:
//! GeomAbs_C0 : the surface has to pass by 3D representation
//! of the edge
//! GeomAbs_G1 : the surface has to pass by 3D representation
//! of the edge and to respect tangency with the
//! given face
//! GeomAbs_G2 : the surface has to pass by 3D representation
//! of the edge and to respect tangency and curvature
//! with the given face.
Standard_EXPORT Standard_Integer Add (const TopoDS_Edge& anEdge, const TopoDS_Face& Support, const GeomAbs_Shape Order, const Standard_Boolean IsBound = Standard_True) ;
//! Adds a free constraint on a face. The corresponding edge has to
//! be automatically recomputed.
//! It is always a bound.
Standard_EXPORT Standard_Integer Add (const TopoDS_Face& Support, const GeomAbs_Shape Order) ;
//! Adds a punctual constraint
Standard_EXPORT Standard_Integer Add (const gp_Pnt& Point) ;
//! Adds a punctual constraint.
Standard_EXPORT Standard_Integer Add (const Standard_Real U, const Standard_Real V, const TopoDS_Face& Support, const GeomAbs_Shape Order) ;
//! Builds the resulting faces
Standard_EXPORT void Build() ;
Standard_EXPORT Standard_Boolean IsDone() const;
Standard_EXPORT TopoDS_Face Face() const;
//! Returns the list of shapes generated from the
//! shape <S>.
Standard_EXPORT const TopTools_ListOfShape& Generated (const TopoDS_Shape& S) ;
Standard_EXPORT Standard_Real G0Error() const;
Standard_EXPORT Standard_Real G1Error() const;
Standard_EXPORT Standard_Real G2Error() const;
Standard_EXPORT Standard_Real G0Error (const Standard_Integer Index) ;
Standard_EXPORT Standard_Real G1Error (const Standard_Integer Index) ;
Standard_EXPORT Standard_Real G2Error (const Standard_Integer Index) ;
protected:
private:
//! Adds constraints to builder
Standard_EXPORT void AddConstraints (const BRepFill_SequenceOfEdgeFaceAndOrder& SeqOfConstraints) ;
//! Builds wires of maximum length
Standard_EXPORT void BuildWires (TopTools_ListOfShape& EdgeList, TopTools_ListOfShape& WireList) ;
//! Finds extremities of future edges to fix the holes between wires.
//! Can properly operate only with convex contour
Standard_EXPORT void FindExtremitiesOfHoles (const TopTools_ListOfShape& WireList, TopTools_SequenceOfShape& VerSeq) const;
GeomPlate_BuildPlateSurface myBuilder;
BRepFill_SequenceOfEdgeFaceAndOrder myBoundary;
BRepFill_SequenceOfEdgeFaceAndOrder myConstraints;
BRepFill_SequenceOfFaceAndOrder myFreeConstraints;
GeomPlate_SequenceOfPointConstraint myPoints;
TopTools_DataMapOfShapeListOfShape myOldNewMap;
TopTools_ListOfShape myGenerated;
TopoDS_Face myFace;
TopoDS_Face myInitFace;
Standard_Real myTol2d;
Standard_Real myTol3d;
Standard_Real myTolAng;
Standard_Real myTolCurv;
Standard_Integer myMaxDeg;
Standard_Integer myMaxSegments;
Standard_Integer myDegree;
Standard_Integer myNbPtsOnCur;
Standard_Integer myNbIter;
Standard_Boolean myAnisotropie;
Standard_Boolean myIsInitFaceGiven;
Standard_Boolean myIsDone;
};
#endif // _BRepFill_Filling_HeaderFile
|