// 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 _BRepFilletAPI_MakeFillet2d_HeaderFile #define _BRepFilletAPI_MakeFillet2d_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _ChFi2d_Builder_HeaderFile #include #endif #ifndef _BRepBuilderAPI_MakeShape_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _ChFi2d_ConstructionError_HeaderFile #include #endif class TopoDS_Face; class TopoDS_Edge; class TopoDS_Vertex; class TopTools_SequenceOfShape; class TopTools_ListOfShape; class TopoDS_Shape; //! Describes functions to build fillets and chamfers on the
//! vertices of a planar face.
//! Fillets and Chamfers on the Vertices of a Planar Face
//! A MakeFillet2d object provides a framework for:
//! - initializing the construction algorithm with a given face,
//! - acquiring the data characterizing the fillets and chamfers,
//! - building the fillets and chamfers, and constructing the
//! resulting shape, and
//! - consulting the result.
//! Warning
//! Only segments of straight lines and arcs of circles are
//! treated. BSplines are not processed.
class BRepFilletAPI_MakeFillet2d : public BRepBuilderAPI_MakeShape { public: void* operator new(size_t,void* anAddress) { return anAddress; } void* operator new(size_t size) { return Standard::Allocate(size); } void operator delete(void *anAddress) { if (anAddress) Standard::Free((Standard_Address&)anAddress); } //! Initializes an empty algorithm for computing fillets and
//! chamfers. The face on which the fillets and
//! chamfers are built is defined using the Init function.
//! The vertices on which fillets or chamfers are built are
//! defined using the AddFillet or AddChamfer function.
//! Warning
//! The status of the initialization, as given by the Status
//! function, can be one of the following:
//! - ChFi2d_Ready if the initialization is correct,
//! - ChFi2d_NotPlanar if F is not planar,
//! - ChFi2d_NoFace if F is a null face.
Standard_EXPORT BRepFilletAPI_MakeFillet2d(); //! Initializes an algorithm for computing fillets and chamfers on the face F.
//! The vertices on which fillets or chamfers are built are
//! defined using the AddFillet or AddChamfer function.
//! Warning
//! The status of the initialization, as given by the Status
//! function, can be one of the following:
//! - ChFi2d_Ready if the initialization is correct,
//! - ChFi2d_NotPlanar if F is not planar,
//! - ChFi2d_NoFace if F is a null face.
Standard_EXPORT BRepFilletAPI_MakeFillet2d(const TopoDS_Face& F); //! Initializes this algorithm for constructing fillets or
//! chamfers with the face F.
//! Warning
//! The status of the initialization, as given by the Status
//! function, can be one of the following:
//! - ChFi2d_Ready if the initialization is correct,
//! - ChFi2d_NotPlanar if F is not planar,
//! - ChFi2d_NoFace if F is a null face.
Standard_EXPORT void Init(const TopoDS_Face& F) ; //! This initialize method allow to init the builder
//! from a face and another face
//! which derive from . This is usefull to
//! modify a fillet or a chamfer already created on
//! .
Standard_EXPORT void Init(const TopoDS_Face& RefFace,const TopoDS_Face& ModFace) ; //! Adds a fillet of radius Radius between the two edges
//! adjacent to the vertex V on the face modified by this
//! algorithm. The two edges do not need to be rectilinear.
//! This function returns the fillet and builds the resulting face.
//! Warning
//! The status of the construction, as given by the Status
//! function, can be one of the following:
//! - ChFi2d_IsDone if the fillet is built,
//! - ChFi2d_ConnexionError if V does not belong to the initial face,
//! - ChFi2d_ComputationError if Radius is too large
//! to build a fillet between the two adjacent edges,
//! - ChFi2d_NotAuthorized
//! - if one of the two edges connected to V is a fillet or chamfer, or
//! - if a curve other than a straight line or an arc of a
//! circle is used as E, E1 or E2.
//! Do not use the returned fillet if the status of the construction is not ChFi2d_IsDone.
//! Exceptions
//! Standard_NegativeValue if Radius is less than or equal to zero.
Standard_EXPORT TopoDS_Edge AddFillet(const TopoDS_Vertex& V,const Standard_Real Radius) ; //! Assigns the radius Radius to the fillet Fillet already
//! built on the face modified by this algorithm.
//! This function returns the new fillet and modifies the existing face.
//! Warning
//! The status of the construction, as given by the Status
//! function, can be one of the following:
//! - ChFi2d_IsDone if the new fillet is built,
//! - ChFi2d_ConnexionError if Fillet does not
//! belong to the existing face,
//! - ChFi2d_ComputationError if Radius is too
//! large to build a fillet between the two adjacent edges.
//! Do not use the returned fillet if the status of the
//! construction is not ChFi2d_IsDone.
//! Exceptions
//! Standard_NegativeValue if Radius is less than or equal to zero.
Standard_EXPORT TopoDS_Edge ModifyFillet(const TopoDS_Edge& Fillet,const Standard_Real Radius) ; //! Removes the fillet Fillet already built on the face
//! modified by this algorithm.
//! This function returns the vertex connecting the two
//! adjacent edges of Fillet and modifies the existing face.
//! Warning
//! - The returned vertex is only valid if the Status
//! function returns ChFi2d_IsDone.
//! - A null vertex is returned if the edge Fillet does not
//! belong to the initial face.
Standard_EXPORT TopoDS_Vertex RemoveFillet(const TopoDS_Edge& Fillet) ; //! Adds a chamfer on the face modified by this algorithm
//! between the two adjacent edges E1 and E2, where
//! the extremities of the chamfer are on E1 and E2 at
//! distances D1 and D2 respectively
//! In cases where the edges are not rectilinear, distances
//! are measured using the curvilinear abscissa of the
//! edges and the angle is measured with respect to the
//! tangent at the corresponding point.
//! The angle Ang is given in radians.
//! This function returns the chamfer and builds the resulting face.
Standard_EXPORT TopoDS_Edge AddChamfer(const TopoDS_Edge& E1,const TopoDS_Edge& E2,const Standard_Real D1,const Standard_Real D2) ; //! Adds a chamfer on the face modified by this algorithm
//! between the two edges connected by the vertex V,
//! where E is one of the two edges. The chamfer makes
//! an angle Ang with E and one of its extremities is on
//! E at distance D from V.
//! In cases where the edges are not rectilinear, distances
//! are measured using the curvilinear abscissa of the
//! edges and the angle is measured with respect to the
//! tangent at the corresponding point.
//! The angle Ang is given in radians.
//! This function returns the chamfer and builds the resulting face.
//! Warning
//! The status of the construction, as given by the Status function, can
//! be one of the following:
//! - ChFi2d_IsDone if the chamfer is built,
//! - ChFi2d_ParametersError if D1, D2, D or Ang is less than or equal to zero,
//! - ChFi2d_ConnexionError if:
//! - the edge E, E1 or E2 does not belong to the initial face, or
//! - the edges E1 and E2 are not adjacent, or
//! - the vertex V is not one of the limit points of the edge E,
//! - ChFi2d_ComputationError if the parameters of the chamfer
//! are too large to build a chamfer between the two adjacent edges,
//! - ChFi2d_NotAuthorized if:
//! - the edge E1, E2 or one of the two edges connected to V is a fillet or chamfer, or
//! - a curve other than a straight line or an arc of a circle is used as E, E1 or E2.
//! Do not use the returned chamfer if
//! the status of the construction is not ChFi2d_IsDone.
Standard_EXPORT TopoDS_Edge AddChamfer(const TopoDS_Edge& E,const TopoDS_Vertex& V,const Standard_Real D,const Standard_Real Ang) ; //! Modifies the chamfer Chamfer on the face modified
//! by this algorithm, where:
//! E1 and E2 are the two adjacent edges on which
//! Chamfer is already built; the extremities of the new
//! chamfer are on E1 and E2 at distances D1 and D2 respectively.
Standard_EXPORT TopoDS_Edge ModifyChamfer(const TopoDS_Edge& Chamfer,const TopoDS_Edge& E1,const TopoDS_Edge& E2,const Standard_Real D1,const Standard_Real D2) ; //! Modifies the chamfer Chamfer on the face modified
//! by this algorithm, where:
//! E is one of the two adjacent edges on which
//! Chamfer is already built; the new chamfer makes
//! an angle Ang with E and one of its extremities is
//! on E at distance D from the vertex on which the chamfer is built.
//! In cases where the edges are not rectilinear, the
//! distances are measured using the curvilinear abscissa
//! of the edges and the angle is measured with respect
//! to the tangent at the corresponding point.
//! The angle Ang is given in radians.
//! This function returns the new chamfer and modifies the existing face.
//! Warning
//! The status of the construction, as given by the Status
//! function, can be one of the following:
//! - ChFi2d_IsDone if the chamfer is built,
//! - ChFi2d_ParametersError if D1, D2, D or Ang is less than or equal to zero,
//! - ChFi2d_ConnexionError if:
//! - the edge E, E1, E2 or Chamfer does not belong
//! to the existing face, or
//! - the edges E1 and E2 are not adjacent,
//! - ChFi2d_ComputationError if the parameters of
//! the chamfer are too large to build a chamfer
//! between the two adjacent edges,
//! - ChFi2d_NotAuthorized if E1 or E2 is a fillet or chamfer.
//! Do not use the returned chamfer if the status of the
//! construction is not ChFi2d_IsDone.
Standard_EXPORT TopoDS_Edge ModifyChamfer(const TopoDS_Edge& Chamfer,const TopoDS_Edge& E,const Standard_Real D,const Standard_Real Ang) ; //! Removes the chamfer Chamfer already built on the face
//! modified by this algorithm.
//! This function returns the vertex connecting the two
//! adjacent edges of Chamfer and modifies the existing face.
//! Warning
//! - The returned vertex is only valid if the Status
//! function returns ChFi2d_IsDone.
//! - A null vertex is returned if the edge Chamfer does
//! not belong to the initial face.
Standard_EXPORT TopoDS_Vertex RemoveChamfer(const TopoDS_Edge& Chamfer) ; //! Returns true if the edge E on the face modified by this
//! algorithm is chamfered or filleted.
//! Warning
//! Returns false if E does not belong to the face modified by this algorithm.
Standard_Boolean IsModified(const TopoDS_Edge& E) const; //! Returns the table of fillets on the face modified by this algorithm.
const TopTools_SequenceOfShape& FilletEdges() const; //! Returns the number of fillets on the face modified by this algorithm.
Standard_Integer NbFillet() const; //! Returns the table of chamfers on the face modified by this algorithm.
const TopTools_SequenceOfShape& ChamferEdges() const; //! Returns the number of chamfers on the face modified by this algorithm.
Standard_Integer NbChamfer() const; //! Returns the list of shapes modified from the shape
//! .
Standard_EXPORT virtual const TopTools_ListOfShape& Modified(const TopoDS_Shape& S) ; //! returns the number of new curves
//! after the shape creation.
Standard_EXPORT Standard_Integer NbCurves() const; //! Return the Edges created for curve I.
Standard_EXPORT const TopTools_ListOfShape& NewEdges(const Standard_Integer I) ; Standard_Boolean HasDescendant(const TopoDS_Edge& E) const; //! Returns the chamfered or filleted edge built from the
//! edge E on the face modified by this algorithm. If E has
//! not been modified, this function returns E.
//! Exceptions
//! Standard_NoSuchObject if the edge E does not
//! belong to the initial face.
const TopoDS_Edge& DescendantEdge(const TopoDS_Edge& E) const; //! Returns the basis edge on the face modified by this
//! algorithm from which the chamfered or filleted edge E is
//! built. If E has not been modified, this function returns E.
//! Warning
//! E is returned if it does not belong to the initial face.
Standard_EXPORT const TopoDS_Edge& BasisEdge(const TopoDS_Edge& E) const; ChFi2d_ConstructionError Status() const; //! Update the result and set the Done flag
Standard_EXPORT virtual void Build() ; protected: private: ChFi2d_Builder myMakeChFi2d; }; #include // other Inline functions and methods (like "C++: function call" methods) #endif