// 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 _GeomFill_ConstrainedFilling_HeaderFile #define _GeomFill_ConstrainedFilling_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _Handle_GeomFill_CoonsAlgPatch_HeaderFile #include #endif #ifndef _Handle_GeomFill_TgtField_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif #ifndef _GeomFill_CornerState_HeaderFile #include #endif #ifndef _gp_Vec_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _Handle_TColgp_HArray1OfPnt_HeaderFile #include #endif #ifndef _Handle_TColStd_HArray1OfInteger_HeaderFile #include #endif #ifndef _Handle_TColStd_HArray1OfReal_HeaderFile #include #endif #ifndef _Handle_TColgp_HArray2OfPnt_HeaderFile #include #endif #ifndef _Handle_Geom_BSplineSurface_HeaderFile #include #endif #ifndef _Handle_GeomFill_Boundary_HeaderFile #include #endif #ifndef _Handle_GeomFill_BoundWithSurf_HeaderFile #include #endif class GeomFill_CoonsAlgPatch; class GeomFill_TgtField; class TColgp_HArray1OfPnt; class TColStd_HArray1OfInteger; class TColStd_HArray1OfReal; class TColgp_HArray2OfPnt; class Geom_BSplineSurface; class GeomFill_Boundary; class GeomFill_BoundWithSurf; //! An algorithm for constructing a BSpline surface filled
//! from a series of boundaries which serve as path
//! constraints and optionally, as tangency constraints.
//! The algorithm accepts three or four curves as the
//! boundaries of the target surface.
//! A ConstrainedFilling object provides a framework for:
//! - defining the boundaries of the surface
//! - implementing the construction algorithm
//! - consulting the result.
//! Warning
//! This surface filling algorithm is specifically designed to
//! be used in connection with fillets. Satisfactory results
//! cannot be guaranteed for other uses.
class GeomFill_ConstrainedFilling { 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); } //! Constructs an empty framework for filling a surface from boundaries.
//! The boundaries of the surface will be defined, and the
//! surface will be built by using the function Init.
//! The surface will respect the following constraints:
//! - its degree will not be greater than MaxDeg
//! - the maximum number of segments MaxSeg which
//! BSpline surfaces can have.
Standard_EXPORT GeomFill_ConstrainedFilling(const Standard_Integer MaxDeg,const Standard_Integer MaxSeg); Standard_EXPORT void Init(const Handle(GeomFill_Boundary)& B1,const Handle(GeomFill_Boundary)& B2,const Handle(GeomFill_Boundary)& B3,const Standard_Boolean NoCheck = Standard_False) ; //! Constructs a BSpline surface filled from the series of
//! boundaries B1, B2, B3 and, if need be, B4, which serve:
//! - as path constraints
//! - and optionally, as tangency constraints if they are
//! GeomFill_BoundWithSurf curves.
//! The boundaries may be given in any order: they are
//! classified and if necessary, reversed and reparameterized.
//! The surface will also respect the following constraints:
//! - its degree will not be greater than the maximum
//! degree defined at the time of construction of this framework, and
//! - the maximum number of segments MaxSeg which BSpline surfaces can have
Standard_EXPORT void Init(const Handle(GeomFill_Boundary)& B1,const Handle(GeomFill_Boundary)& B2,const Handle(GeomFill_Boundary)& B3,const Handle(GeomFill_Boundary)& B4,const Standard_Boolean NoCheck = Standard_False) ; //! Allows to modify domain on witch the blending function
//! associated to the constrained boundary B will propag
//! the influence of the field of tangency. Can be
//! usefull to reduce influence of boundaries on whitch
//! the Coons compatibility conditions are not respected.
//! l is a relative value of the parametric range of B.
//! Default value for l is 1 (used in Init).
//! Warning: Must be called after Init with a constrained boundary
//! used in the call to Init.
Standard_EXPORT void SetDomain(const Standard_Real l,const Handle(GeomFill_BoundWithSurf)& B) ; //! Computes the new poles of the surface using the new
//! blending functions set by several calls to SetDomain.
Standard_EXPORT void ReBuild() ; //! Returns the bound of index i after sort.
Standard_EXPORT Handle_GeomFill_Boundary Boundary(const Standard_Integer I) const; //! Returns the BSpline surface after computation of the fill by this framework.
Standard_EXPORT Handle_Geom_BSplineSurface Surface() const; //! Internal use for Advmath approximation call.
Standard_EXPORT Standard_Integer Eval(const Standard_Real W,const Standard_Integer Ord,Standard_Real& Result) const; //! Computes the fields of tangents on 30 points along the
//! bound I, these are not the constraint tangents but
//! gives an idea of the coonsAlgPatch regularity.
Standard_EXPORT void CheckCoonsAlgPatch(const Standard_Integer I) ; //! Computes the fields of tangents and normals on 30
//! points along the bound I, draw them, and computes the
//! max dot product that must be near than 0.
Standard_EXPORT void CheckTgteField(const Standard_Integer I) ; //! Computes values and normals along the bound I and
//! compare them to the approx result curves (bound and
//! tgte field) , draw the normals and tangents.
Standard_EXPORT void CheckApprox(const Standard_Integer I) ; //! Computes values and normals along the bound I on both
//! constraint surface and result surface, draw the
//! normals, and computes the max distance between values
//! and the max angle between normals.
Standard_EXPORT void CheckResult(const Standard_Integer I) ; protected: private: //! Performs the approximation an compute the poles of the
//! surface.
Standard_EXPORT void Build() ; //! Performs the parallel approximation on two oppsite
//! bounds
Standard_EXPORT void PerformApprox() ; //! matches the nodal vectors of the blending functions
//! and the results of the approx to allow the surface
//! computation.
Standard_EXPORT void MatchKnots() ; //! performs the poles of the partial construction S0.
Standard_EXPORT void PerformS0() ; //! performs the poles of the partial construction S1.
Standard_EXPORT void PerformS1() ; //! performs the poles of the surface using the partial
//! constructions S0 and S1.
Standard_EXPORT void PerformSurface() ; //! Checks if the field of tangency doesn t twist along the
//! boundary.
Standard_EXPORT Standard_Boolean CheckTgte(const Standard_Integer I) ; //! Evaluates the min magnitude of the field of tangency
//! along bound I to allow a simple evaluation of the
//! tolerance needed for the approximation of the field of
//! tangency.
Standard_EXPORT void MinTgte(const Standard_Integer I) ; Standard_Integer degmax; Standard_Integer segmax; Handle_GeomFill_CoonsAlgPatch ptch; Handle_GeomFill_TgtField tgalg[4]; Standard_Real mig[4]; GeomFill_CornerState stcor[4]; gp_Vec v[4]; Standard_Boolean appdone; Standard_Real tolapp3d[4]; Standard_Real tolappang[4]; Standard_Integer degree[2]; Handle_TColgp_HArray1OfPnt curvpol[4]; Handle_TColgp_HArray1OfPnt tgtepol[4]; Handle_TColStd_HArray1OfInteger mults[2]; Handle_TColStd_HArray1OfReal knots[2]; Handle_TColStd_HArray1OfReal ab[4]; Handle_TColStd_HArray1OfReal pq[4]; Standard_Real dom[4]; Handle_TColgp_HArray1OfPnt ncpol[4]; Handle_TColgp_HArray1OfPnt ntpol[4]; Handle_TColStd_HArray1OfInteger nm[2]; Handle_TColStd_HArray1OfReal nk[2]; Standard_Integer ibound[2]; Standard_Integer ctr[2]; Standard_Integer nbd3; Handle_TColgp_HArray2OfPnt S0; Handle_TColgp_HArray2OfPnt S1; Handle_Geom_BSplineSurface surf; }; // other Inline functions and methods (like "C++: function call" methods) #endif