// Created on: 1996-07-26 // Created by: s: Maria PUMBORIOS // Copyright (c) 1996-1999 Matra Datavision // Copyright (c) 1999-2014 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License version 2.1 as published // by the Free Software Foundation, with special exception defined in the file // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT // distribution for complete text of the license and disclaimer of any warranty. // // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. #ifndef _FilletSurf_InternalBuilder_HeaderFile #define _FilletSurf_InternalBuilder_HeaderFile #include "BRepAdaptor_Curve2d.hxx" #include "ChFi3d_FilBuilder.hxx" #include "ChFi3d_FilletShape.hxx" #include "TopoDS_Shape.hxx" #include "NCollection_List.hxx" #include "ChFiDS_SurfData.hxx" #include "NCollection_Sequence.hxx" #include "math_Vector.hxx" #include "TopAbs_Orientation.hxx" #include "FilletSurf_StatusType.hxx" class Adaptor3d_TopolTool; class ChFiDS_Spine; class Geom_Surface; class Geom_Curve; class Geom2d_Curve; class Geom_TrimmedCurve; class TopoDS_Shape; class TopoDS_Face; //! This class is private. It is used by the class Builder //! from FilletSurf. It computes geometric information about fillets. class FilletSurf_InternalBuilder : public ChFi3d_FilBuilder { public: DEFINE_STANDARD_ALLOC Standard_EXPORT FilletSurf_InternalBuilder(const TopoDS_Shape& S, const ChFi3d_FilletShape FShape = ChFi3d_Polynomial, const double Ta = 1.0e-2, const double Tapp3d = 1.0e-4, const double Tapp2d = 1.0e-5); //! Initializes the contour with a list of Edges //! 0 : no problem //! 1 : empty list //! 2 : the edges are not G1 //! 3 : two connected faces on a same support are not G1 //! 4 : the edge is not on shape //! 5 : NotSharpEdge: the edge is not sharp Standard_EXPORT int Add(const NCollection_List& E, const double R); Standard_EXPORT void Perform(); Standard_EXPORT bool Done() const; //! gives the number of NUBS surfaces of the Fillet. Standard_EXPORT int NbSurface() const; //! gives the NUBS surface of index Index. Standard_EXPORT const occ::handle& SurfaceFillet(const int Index) const; //! gives the 3d tolerance reached during approximation //! of the surface of index Index Standard_EXPORT double TolApp3d(const int Index) const; //! gives the first support face relative to SurfaceFillet(Index); Standard_EXPORT const TopoDS_Face& SupportFace1(const int Index) const; //! gives the second support face relative to SurfaceFillet(Index); Standard_EXPORT const TopoDS_Face& SupportFace2(const int Index) const; //! gives the 3d curve of SurfaceFillet(Index) on SupportFace1(Index) Standard_EXPORT const occ::handle& CurveOnFace1(const int Index) const; //! gives the 3d curve of SurfaceFillet(Index) on SupportFace2(Index) Standard_EXPORT const occ::handle& CurveOnFace2(const int Index) const; //! gives the PCurve associated to CurvOnSup1(Index) on the support face Standard_EXPORT const occ::handle& PCurveOnFace1(const int Index) const; //! gives the PCurve associated to CurveOnFace1(Index) on the Fillet Standard_EXPORT const occ::handle& PCurve1OnFillet(const int Index) const; //! gives the PCurve associated to CurveOnSup2(Index) on the support face Standard_EXPORT const occ::handle& PCurveOnFace2(const int Index) const; //! gives the PCurve associated to CurveOnSup2(Index) on the fillet Standard_EXPORT const occ::handle& PCurve2OnFillet(const int Index) const; //! gives the parameter of the fillet on the first edge. Standard_EXPORT double FirstParameter() const; //! gives the parameter of the fillet on the last edge Standard_EXPORT double LastParameter() const; Standard_EXPORT FilletSurf_StatusType StartSectionStatus() const; Standard_EXPORT FilletSurf_StatusType EndSectionStatus() const; Standard_EXPORT void Simulate(); Standard_EXPORT int NbSection(const int IndexSurf) const; //! Returns the arc of the section of index IndexSec of surface //! of index IndexSurf. The basis curve of the trimmed curve is a Geom_Circle. //! @param[in] IndexSurf 1-based surface index //! @param[in] IndexSec 1-based section index //! @return the section as a trimmed circular arc [[nodiscard]] Standard_EXPORT occ::handle Section(const int IndexSurf, const int IndexSec) const; //! @deprecated Use Section() returning handle by value instead. Standard_DEPRECATED("Use Section() returning handle by value instead") Standard_EXPORT void Section(const int IndexSurf, const int IndexSec, occ::handle& Circ) const; protected: //! This method calculates the elements of construction of the //! fillet (constant or evolutive). Standard_EXPORT bool PerformSurf(NCollection_Sequence>& SeqData, const occ::handle& Guide, const occ::handle& Spine, const int Choix, const occ::handle& S1, const occ::handle& I1, const occ::handle& S2, const occ::handle& I2, const double MaxStep, const double Fleche, const double TolGuide, double& First, double& Last, const bool Inside, const bool Appro, const bool Forward, const bool RecOnS1, const bool RecOnS2, const math_Vector& Soldep, int& Intf, int& Intl) override; Standard_EXPORT void PerformSurf(NCollection_Sequence>& SeqData, const occ::handle& Guide, const occ::handle& Spine, const int Choix, const occ::handle& S1, const occ::handle& I1, const occ::handle& PC1, const occ::handle& Sref1, const occ::handle& PCref1, bool& Decroch1, const occ::handle& S2, const occ::handle& I2, const TopAbs_Orientation Or2, const double MaxStep, const double Fleche, const double TolGuide, double& First, double& Last, const bool Inside, const bool Appro, const bool Forward, const bool RecP, const bool RecS, const bool RecRst, const math_Vector& Soldep) override; Standard_EXPORT void PerformSurf(NCollection_Sequence>& SeqData, const occ::handle& Guide, const occ::handle& Spine, const int Choix, const occ::handle& S1, const occ::handle& I1, const TopAbs_Orientation Or1, const occ::handle& S2, const occ::handle& I2, const occ::handle& PC2, const occ::handle& Sref2, const occ::handle& PCref2, bool& Decroch2, const double MaxStep, const double Fleche, const double TolGuide, double& First, double& Last, const bool Inside, const bool Appro, const bool Forward, const bool RecP, const bool RecS, const bool RecRst, const math_Vector& Soldep) override; Standard_EXPORT void PerformSurf(NCollection_Sequence>& Data, const occ::handle& Guide, const occ::handle& Spine, const int Choix, const occ::handle& S1, const occ::handle& I1, const occ::handle& PC1, const occ::handle& Sref1, const occ::handle& PCref1, bool& Decroch1, const TopAbs_Orientation Or1, const occ::handle& S2, const occ::handle& I2, const occ::handle& PC2, const occ::handle& Sref2, const occ::handle& PCref2, bool& Decroch2, const TopAbs_Orientation Or2, const double MaxStep, const double Fleche, const double TolGuide, double& First, double& Last, const bool Inside, const bool Appro, const bool Forward, const bool RecP1, const bool RecRst1, const bool RecP2, const bool RecRst2, const math_Vector& Soldep) override; }; #endif // _FilletSurf_InternalBuilder_HeaderFile