mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-09 13:22:24 +03:00
0028828: Modeling Algorithms - New functionalities of BRepFilletAPI_MakeChamfer algorithm
Two new functionalities have been added in BRepFilletAPI_MakeChamfer: - constant throat (the section of chamfer is isosceles triangle, its height is constant in all sections - this is the "throat" of the weld); - constant throat with penetration(the section of chamfer is right-angled triangle, the first of two surfaces (where is the top of the chamfer) is virtually moved inside the solid by offset operation, the apex of the section is on the intersection curve between moved surface and second surface, right angle is at the top of the chamfer, the length of the leg from apex to top is constant - this is the "throat" of the weld). - New abstract classes BlendFunc_GenChamfer and BlendFunc_GenChamfInv have been added; - Class BlendFunc_Chamfer is now descended from BlendFunc_GenChamfer, class BlendFunc_ChamfInv is now descended from BlendFunc_GenChamfInv. - New class BlendFunc_ConstThroat is descended from BlendFunc_GenChamfer, new class BlendFund_ConstThroatInv is descended from BlendFunc_GenChamfInv. - New class BlendFunc_ConstThroatWithPenetration is descended from BlendFunc_GenChamfer, new class BlendFund_ConstThroatWithPenetrationInv is descended from BlendFunc_GenChamfInv. - Class ChFi3d_ChBuilder has now mode of chamfer that can be ClassicChamfer, ConstThroatChamfer and ConstThroatWithPenetrationChamfer. - Two new DRAW Test Harness commands "chamf_throat" ant "chamf_throat_with_penetration" have been added for the second mode of ChBuilder. - The interface of DRAW Test Harness command "chamf" changed for symmetric case.
This commit is contained in:
@@ -30,6 +30,7 @@
|
||||
#include <ChFiDS_Regularities.hxx>
|
||||
#include <TopTools_ListOfShape.hxx>
|
||||
#include <TopTools_DataMapOfShapeListOfInteger.hxx>
|
||||
#include <TopTools_DataMapOfShapeShape.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <ChFiDS_ErrorStatus.hxx>
|
||||
@@ -37,6 +38,9 @@
|
||||
#include <TopAbs_Orientation.hxx>
|
||||
#include <ChFiDS_SequenceOfSurfData.hxx>
|
||||
#include <TopAbs_State.hxx>
|
||||
|
||||
#include <BRepAdaptor_Surface.hxx>
|
||||
|
||||
class TopOpeBRepDS_HDataStructure;
|
||||
class TopOpeBRepBuild_HBuilder;
|
||||
class Standard_OutOfRange;
|
||||
@@ -82,9 +86,15 @@ public:
|
||||
|
||||
Standard_EXPORT virtual ~ChFi3d_Builder();
|
||||
|
||||
Standard_EXPORT void SetParams (const Standard_Real Tang, const Standard_Real Tesp, const Standard_Real T2d, const Standard_Real TApp3d, const Standard_Real TolApp2d, const Standard_Real Fleche);
|
||||
Standard_EXPORT void SetParams (const Standard_Real Tang,
|
||||
const Standard_Real Tesp,
|
||||
const Standard_Real T2d,
|
||||
const Standard_Real TApp3d,
|
||||
const Standard_Real TolApp2d,
|
||||
const Standard_Real Fleche);
|
||||
|
||||
Standard_EXPORT void SetContinuity (const GeomAbs_Shape InternalContinuity, const Standard_Real AngularTolerance);
|
||||
Standard_EXPORT void SetContinuity (const GeomAbs_Shape InternalContinuity,
|
||||
const Standard_Real AngularTolerance);
|
||||
|
||||
//! extracts from the list the contour containing edge E.
|
||||
Standard_EXPORT void Remove (const TopoDS_Edge& E);
|
||||
@@ -96,7 +106,8 @@ public:
|
||||
//! gives the number of the contour containing E or 0
|
||||
//! if E does not belong to any contour.
|
||||
//! Sets in IndexInSpine the index of E in the contour if it's found
|
||||
Standard_EXPORT Standard_Integer Contains (const TopoDS_Edge& E, Standard_Integer& IndexInSpine) const;
|
||||
Standard_EXPORT Standard_Integer Contains (const TopoDS_Edge& E,
|
||||
Standard_Integer& IndexInSpine) const;
|
||||
|
||||
//! gives the number of disjoint contours on which
|
||||
//! the fillets are calculated
|
||||
@@ -119,11 +130,13 @@ public:
|
||||
|
||||
//! returns the abscissa of the vertex V on
|
||||
//! the contour of index IC.
|
||||
Standard_EXPORT Standard_Real Abscissa (const Standard_Integer IC, const TopoDS_Vertex& V) const;
|
||||
Standard_EXPORT Standard_Real Abscissa (const Standard_Integer IC,
|
||||
const TopoDS_Vertex& V) const;
|
||||
|
||||
//! returns the relative abscissa([0.,1.]) of the
|
||||
//! vertex V on the contour of index IC.
|
||||
Standard_EXPORT Standard_Real RelativeAbscissa (const Standard_Integer IC, const TopoDS_Vertex& V) const;
|
||||
Standard_EXPORT Standard_Real RelativeAbscissa (const Standard_Integer IC,
|
||||
const TopoDS_Vertex& V) const;
|
||||
|
||||
//! returns true if the contour of index IC is closed
|
||||
//! an tangent.
|
||||
@@ -158,7 +171,8 @@ public:
|
||||
Standard_EXPORT Standard_Integer NbComputedSurfaces (const Standard_Integer IC) const;
|
||||
|
||||
//! Returns the IS'th surface calculated on the contour IC.
|
||||
Standard_EXPORT Handle(Geom_Surface) ComputedSurface (const Standard_Integer IC, const Standard_Integer IS) const;
|
||||
Standard_EXPORT Handle(Geom_Surface) ComputedSurface (const Standard_Integer IC,
|
||||
const Standard_Integer IS) const;
|
||||
|
||||
//! Returns the number of vertices on which the calculation
|
||||
//! has failed.
|
||||
@@ -189,7 +203,16 @@ public:
|
||||
//! Method, implemented in the inheritants, calculates
|
||||
//! the elements of construction of the surface (fillet or
|
||||
//! chamfer).
|
||||
Standard_EXPORT Standard_Boolean SplitKPart (const Handle(ChFiDS_SurfData)& Data, ChFiDS_SequenceOfSurfData& SetData, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Iedge, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, Standard_Boolean& Intf, Standard_Boolean& Intl);
|
||||
Standard_EXPORT Standard_Boolean SplitKPart (const Handle(ChFiDS_SurfData)& Data,
|
||||
ChFiDS_SequenceOfSurfData& SetData,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Iedge,
|
||||
const Handle(Adaptor3d_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(Adaptor3d_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
Standard_Boolean& Intf,
|
||||
Standard_Boolean& Intl);
|
||||
|
||||
Standard_EXPORT Standard_Boolean PerformTwoCornerbyInter (const Standard_Integer Index);
|
||||
|
||||
@@ -203,92 +226,544 @@ protected:
|
||||
|
||||
Standard_EXPORT virtual void SimulKPart (const Handle(ChFiDS_SurfData)& SD) const = 0;
|
||||
|
||||
Standard_EXPORT virtual Standard_Boolean SimulSurf (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecOnS1, const Standard_Boolean RecOnS2, const math_Vector& Soldep, Standard_Integer& Intf, Standard_Integer& Intl) = 0;
|
||||
Standard_EXPORT virtual Standard_Boolean SimulSurf (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecOnS1,
|
||||
const Standard_Boolean RecOnS2,
|
||||
const math_Vector& Soldep,
|
||||
Standard_Integer& Intf,
|
||||
Standard_Integer& Intl) = 0;
|
||||
|
||||
Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HCurve2d)& PC1, const Handle(BRepAdaptor_HSurface)& Sref1, const Handle(BRepAdaptor_HCurve2d)& PCref1, Standard_Boolean& Decroch1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const TopAbs_Orientation Or2, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst, const math_Vector& Soldep);
|
||||
Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC1,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref1,
|
||||
Standard_Boolean& Decroch1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const TopAbs_Orientation Or2,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP,
|
||||
const Standard_Boolean RecS,
|
||||
const Standard_Boolean RecRst,
|
||||
const math_Vector& Soldep);
|
||||
|
||||
Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const TopAbs_Orientation Or1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Handle(BRepAdaptor_HCurve2d)& PC2, const Handle(BRepAdaptor_HSurface)& Sref2, const Handle(BRepAdaptor_HCurve2d)& PCref2, Standard_Boolean& Decroch2, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst, const math_Vector& Soldep);
|
||||
Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const TopAbs_Orientation Or1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC2,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref2,
|
||||
Standard_Boolean& Decroch2,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP,
|
||||
const Standard_Boolean RecS,
|
||||
const Standard_Boolean RecRst,
|
||||
const math_Vector& Soldep);
|
||||
|
||||
Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HCurve2d)& PC1, const Handle(BRepAdaptor_HSurface)& Sref1, const Handle(BRepAdaptor_HCurve2d)& PCref1, Standard_Boolean& Decroch1, const TopAbs_Orientation Or1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Handle(BRepAdaptor_HCurve2d)& PC2, const Handle(BRepAdaptor_HSurface)& Sref2, const Handle(BRepAdaptor_HCurve2d)& PCref2, Standard_Boolean& Decroch2, const TopAbs_Orientation Or2, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP1, const Standard_Boolean RecRst1, const Standard_Boolean RecP2, const Standard_Boolean RecRst2, const math_Vector& Soldep);
|
||||
Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC1,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref1,
|
||||
Standard_Boolean& Decroch1,
|
||||
const TopAbs_Orientation Or1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC2,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref2,
|
||||
Standard_Boolean& Decroch2,
|
||||
const TopAbs_Orientation Or2,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP1,
|
||||
const Standard_Boolean RecRst1,
|
||||
const Standard_Boolean RecP2,
|
||||
const Standard_Boolean RecRst2,
|
||||
const math_Vector& Soldep);
|
||||
|
||||
Standard_EXPORT Standard_Boolean SimulData (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, Blend_Function& Func, Blend_FuncInv& FInv, const Standard_Real PFirst, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const math_Vector& Soldep, const Standard_Integer NbSecMin, const Standard_Boolean RecOnS1 = Standard_False, const Standard_Boolean RecOnS2 = Standard_False);
|
||||
Standard_EXPORT Standard_Boolean SimulData (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_HElSpine)& AdditionalGuide,
|
||||
Handle(BRepBlend_Line)& Lin,
|
||||
const Handle(Adaptor3d_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(Adaptor3d_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
Blend_Function& Func,
|
||||
Blend_FuncInv& FInv,
|
||||
const Standard_Real PFirst,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const math_Vector& Soldep,
|
||||
const Standard_Integer NbSecMin,
|
||||
const Standard_Boolean RecOnS1 = Standard_False,
|
||||
const Standard_Boolean RecOnS2 = Standard_False);
|
||||
|
||||
Standard_EXPORT Standard_Boolean SimulData (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& HGuide, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Adaptor2d_HCurve2d)& PC2, const Handle(Adaptor3d_TopolTool)& I2, Standard_Boolean& Decroch, Blend_SurfRstFunction& Func, Blend_FuncInv& FInv, Blend_SurfPointFuncInv& FInvP, Blend_SurfCurvFuncInv& FInvC, const Standard_Real PFirst, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const math_Vector& Soldep, const Standard_Integer NbSecMin, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst);
|
||||
Standard_EXPORT Standard_Boolean SimulData (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(ChFiDS_HElSpine)& HGuide,
|
||||
Handle(BRepBlend_Line)& Lin,
|
||||
const Handle(Adaptor3d_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(Adaptor3d_HSurface)& S2,
|
||||
const Handle(Adaptor2d_HCurve2d)& PC2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
Standard_Boolean& Decroch,
|
||||
Blend_SurfRstFunction& Func,
|
||||
Blend_FuncInv& FInv,
|
||||
Blend_SurfPointFuncInv& FInvP,
|
||||
Blend_SurfCurvFuncInv& FInvC,
|
||||
const Standard_Real PFirst,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const math_Vector& Soldep,
|
||||
const Standard_Integer NbSecMin,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP,
|
||||
const Standard_Boolean RecS,
|
||||
const Standard_Boolean RecRst);
|
||||
|
||||
Standard_EXPORT Standard_Boolean SimulData (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& HGuide, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor2d_HCurve2d)& PC1, const Handle(Adaptor3d_TopolTool)& I1, Standard_Boolean& Decroch1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Adaptor2d_HCurve2d)& PC2, const Handle(Adaptor3d_TopolTool)& I2, Standard_Boolean& Decroch2, Blend_RstRstFunction& Func, Blend_SurfCurvFuncInv& FInv1, Blend_CurvPointFuncInv& FInvP1, Blend_SurfCurvFuncInv& FInv2, Blend_CurvPointFuncInv& FInvP2, const Standard_Real PFirst, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const math_Vector& Soldep, const Standard_Integer NbSecMin, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP1, const Standard_Boolean RecRst1, const Standard_Boolean RecP2, const Standard_Boolean RecRst2);
|
||||
Standard_EXPORT Standard_Boolean SimulData (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(ChFiDS_HElSpine)& HGuide,
|
||||
Handle(BRepBlend_Line)& Lin,
|
||||
const Handle(Adaptor3d_HSurface)& S1,
|
||||
const Handle(Adaptor2d_HCurve2d)& PC1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
Standard_Boolean& Decroch1,
|
||||
const Handle(Adaptor3d_HSurface)& S2,
|
||||
const Handle(Adaptor2d_HCurve2d)& PC2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
Standard_Boolean& Decroch2,
|
||||
Blend_RstRstFunction& Func,
|
||||
Blend_SurfCurvFuncInv& FInv1,
|
||||
Blend_CurvPointFuncInv& FInvP1,
|
||||
Blend_SurfCurvFuncInv& FInv2,
|
||||
Blend_CurvPointFuncInv& FInvP2,
|
||||
const Standard_Real PFirst,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const math_Vector& Soldep,
|
||||
const Standard_Integer NbSecMin,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP1,
|
||||
const Standard_Boolean RecRst1,
|
||||
const Standard_Boolean RecP2,
|
||||
const Standard_Boolean RecRst2);
|
||||
|
||||
Standard_EXPORT virtual void SetRegul() = 0;
|
||||
|
||||
Standard_EXPORT Standard_Boolean PerformElement (const Handle(ChFiDS_Spine)& CElement);
|
||||
Standard_EXPORT Standard_Boolean PerformElement (const Handle(ChFiDS_Spine)& CElement,
|
||||
const Standard_Real Offset,
|
||||
const TopoDS_Face& theFirstFace);
|
||||
|
||||
Standard_EXPORT void PerformExtremity (const Handle(ChFiDS_Spine)& CElement);
|
||||
|
||||
Standard_EXPORT void PerformSetOfSurf (Handle(ChFiDS_Stripe)& S, const Standard_Boolean Simul = Standard_False);
|
||||
Standard_EXPORT void PerformSetOfSurf (Handle(ChFiDS_Stripe)& S,
|
||||
const Standard_Boolean Simul = Standard_False);
|
||||
|
||||
Standard_EXPORT void PerformSetOfKPart (Handle(ChFiDS_Stripe)& S, const Standard_Boolean Simul = Standard_False);
|
||||
Standard_EXPORT void PerformSetOfKPart (Handle(ChFiDS_Stripe)& S,
|
||||
const Standard_Boolean Simul = Standard_False);
|
||||
|
||||
Standard_EXPORT void PerformSetOfKGen (Handle(ChFiDS_Stripe)& S, const Standard_Boolean Simul = Standard_False);
|
||||
Standard_EXPORT void PerformSetOfKGen (Handle(ChFiDS_Stripe)& S,
|
||||
const Standard_Boolean Simul = Standard_False);
|
||||
|
||||
Standard_EXPORT void Trunc (const Handle(ChFiDS_SurfData)& SD, const Handle(ChFiDS_Spine)& Spine, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_HSurface)& S2, const Standard_Integer iedge, const Standard_Boolean isfirst, const Standard_Integer cntlFiOnS);
|
||||
Standard_EXPORT void Trunc (const Handle(ChFiDS_SurfData)& SD,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Handle(Adaptor3d_HSurface)& S1,
|
||||
const Handle(Adaptor3d_HSurface)& S2,
|
||||
const Standard_Integer iedge,
|
||||
const Standard_Boolean isfirst,
|
||||
const Standard_Integer cntlFiOnS);
|
||||
|
||||
Standard_EXPORT void CallPerformSurf (Handle(ChFiDS_Stripe)& Stripe, const Standard_Boolean Simul, ChFiDS_SequenceOfSurfData& SeqSD, Handle(ChFiDS_SurfData)& SD, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Handle(BRepAdaptor_HSurface)& HS1, const Handle(BRepAdaptor_HSurface)& HS3, const gp_Pnt2d& P1, const gp_Pnt2d& P3, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HSurface)& HS2, const Handle(BRepAdaptor_HSurface)& HS4, const gp_Pnt2d& P2, const gp_Pnt2d& P4, const Handle(Adaptor3d_TopolTool)& I2, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecOnS1, const Standard_Boolean RecOnS2, math_Vector& Soldep, Standard_Integer& Intf, Standard_Integer& Intl, Handle(BRepAdaptor_HSurface)& Surf1, Handle(BRepAdaptor_HSurface)& Surf2);
|
||||
Standard_EXPORT void CallPerformSurf (Handle(ChFiDS_Stripe)& Stripe,
|
||||
const Standard_Boolean Simul,
|
||||
ChFiDS_SequenceOfSurfData& SeqSD,
|
||||
Handle(ChFiDS_SurfData)& SD,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Handle(BRepAdaptor_HSurface)& HS1,
|
||||
const Handle(BRepAdaptor_HSurface)& HS3,
|
||||
const gp_Pnt2d& P1,
|
||||
const gp_Pnt2d& P3,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(BRepAdaptor_HSurface)& HS2,
|
||||
const Handle(BRepAdaptor_HSurface)& HS4,
|
||||
const gp_Pnt2d& P2, const gp_Pnt2d& P4,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecOnS1,
|
||||
const Standard_Boolean RecOnS2,
|
||||
math_Vector& Soldep,
|
||||
Standard_Integer& Intf,
|
||||
Standard_Integer& Intl,
|
||||
Handle(BRepAdaptor_HSurface)& Surf1,
|
||||
Handle(BRepAdaptor_HSurface)& Surf2);
|
||||
|
||||
//! Method, implemented in the inheritants, calculating
|
||||
//! elements of construction of the surface (fillet or
|
||||
//! chamfer).
|
||||
Standard_EXPORT virtual Standard_Boolean PerformSurf (ChFiDS_SequenceOfSurfData& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecOnS1, const Standard_Boolean RecOnS2, const math_Vector& Soldep, Standard_Integer& Intf, Standard_Integer& Intl) = 0;
|
||||
Standard_EXPORT virtual Standard_Boolean PerformSurf (ChFiDS_SequenceOfSurfData& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecOnS1,
|
||||
const Standard_Boolean RecOnS2,
|
||||
const math_Vector& Soldep,
|
||||
Standard_Integer& Intf,
|
||||
Standard_Integer& Intl) = 0;
|
||||
|
||||
//! Method, implemented in inheritants, calculates
|
||||
//! the elements of construction of the surface (fillet
|
||||
//! or chamfer) contact edge/face.
|
||||
Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HCurve2d)& PC1, const Handle(BRepAdaptor_HSurface)& Sref1, const Handle(BRepAdaptor_HCurve2d)& PCref1, Standard_Boolean& Decroch1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const TopAbs_Orientation Or2, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst, const math_Vector& Soldep);
|
||||
Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC1,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref1,
|
||||
Standard_Boolean& Decroch1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const TopAbs_Orientation Or2,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP,
|
||||
const Standard_Boolean RecS,
|
||||
const Standard_Boolean RecRst,
|
||||
const math_Vector& Soldep);
|
||||
|
||||
//! Method, implemented in inheritants, calculates
|
||||
//! the elements of construction of the surface (fillet
|
||||
//! or chamfer) contact edge/face.
|
||||
Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const TopAbs_Orientation Or1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Handle(BRepAdaptor_HCurve2d)& PC2, const Handle(BRepAdaptor_HSurface)& Sref2, const Handle(BRepAdaptor_HCurve2d)& PCref2, Standard_Boolean& Decroch2, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst, const math_Vector& Soldep);
|
||||
Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const TopAbs_Orientation Or1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC2,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref2,
|
||||
Standard_Boolean& Decroch2,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP,
|
||||
const Standard_Boolean RecS,
|
||||
const Standard_Boolean RecRst,
|
||||
const math_Vector& Soldep);
|
||||
|
||||
//! Method, implemented in inheritants, calculates
|
||||
//! the elements of construction of the surface (fillet
|
||||
//! or chamfer) contact edge/edge.
|
||||
Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HCurve2d)& PC1, const Handle(BRepAdaptor_HSurface)& Sref1, const Handle(BRepAdaptor_HCurve2d)& PCref1, Standard_Boolean& Decroch1, const TopAbs_Orientation Or1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Handle(BRepAdaptor_HCurve2d)& PC2, const Handle(BRepAdaptor_HSurface)& Sref2, const Handle(BRepAdaptor_HCurve2d)& PCref2, Standard_Boolean& Decroch2, const TopAbs_Orientation Or2, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP1, const Standard_Boolean RecRst1, const Standard_Boolean RecP2, const Standard_Boolean RecRst2, const math_Vector& Soldep);
|
||||
Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC1,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref1,
|
||||
Standard_Boolean& Decroch1,
|
||||
const TopAbs_Orientation Or1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC2,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref2,
|
||||
Standard_Boolean& Decroch2,
|
||||
const TopAbs_Orientation Or2,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP1,
|
||||
const Standard_Boolean RecRst1,
|
||||
const Standard_Boolean RecP2,
|
||||
const Standard_Boolean RecRst2,
|
||||
const math_Vector& Soldep);
|
||||
|
||||
Standard_EXPORT virtual void PerformTwoCorner (const Standard_Integer Index) = 0;
|
||||
|
||||
Standard_EXPORT virtual void PerformThreeCorner (const Standard_Integer Index) = 0;
|
||||
|
||||
Standard_EXPORT void PerformMoreThreeCorner (const Standard_Integer Index, const Standard_Integer nbcourb);
|
||||
Standard_EXPORT void PerformMoreThreeCorner (const Standard_Integer Index,
|
||||
const Standard_Integer nbcourb);
|
||||
|
||||
Standard_EXPORT virtual void ExtentOneCorner (const TopoDS_Vertex& V, const Handle(ChFiDS_Stripe)& S) = 0;
|
||||
Standard_EXPORT virtual void ExtentOneCorner (const TopoDS_Vertex& V,
|
||||
const Handle(ChFiDS_Stripe)& S) = 0;
|
||||
|
||||
Standard_EXPORT virtual void ExtentTwoCorner (const TopoDS_Vertex& V, const ChFiDS_ListOfStripe& LS) = 0;
|
||||
Standard_EXPORT virtual void ExtentTwoCorner (const TopoDS_Vertex& V,
|
||||
const ChFiDS_ListOfStripe& LS) = 0;
|
||||
|
||||
Standard_EXPORT virtual void ExtentThreeCorner (const TopoDS_Vertex& V, const ChFiDS_ListOfStripe& LS) = 0;
|
||||
Standard_EXPORT virtual void ExtentThreeCorner (const TopoDS_Vertex& V,
|
||||
const ChFiDS_ListOfStripe& LS) = 0;
|
||||
|
||||
Standard_EXPORT virtual Standard_Boolean PerformFirstSection (const Handle(ChFiDS_Spine)& S, const Handle(ChFiDS_HElSpine)& HGuide, const Standard_Integer Choix, Handle(BRepAdaptor_HSurface)& S1, Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I1, const Handle(Adaptor3d_TopolTool)& I2, const Standard_Real Par, math_Vector& SolDep, TopAbs_State& Pos1, TopAbs_State& Pos2) const = 0;
|
||||
Standard_EXPORT virtual Standard_Boolean PerformFirstSection (const Handle(ChFiDS_Spine)& S,
|
||||
const Handle(ChFiDS_HElSpine)& HGuide,
|
||||
const Standard_Integer Choix,
|
||||
Handle(BRepAdaptor_HSurface)& S1,
|
||||
Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Standard_Real Par,
|
||||
math_Vector& SolDep,
|
||||
TopAbs_State& Pos1,
|
||||
TopAbs_State& Pos2) const = 0;
|
||||
|
||||
Standard_EXPORT Standard_Boolean SearchFace (const Handle(ChFiDS_Spine)& Sp, const ChFiDS_CommonPoint& Pc, const TopoDS_Face& FRef, TopoDS_Face& FVoi) const;
|
||||
Standard_EXPORT Standard_Boolean SearchFace (const Handle(ChFiDS_Spine)& Sp,
|
||||
const ChFiDS_CommonPoint& Pc,
|
||||
const TopoDS_Face& FRef,
|
||||
TopoDS_Face& FVoi) const;
|
||||
|
||||
Standard_EXPORT Standard_Boolean StripeOrientations (const Handle(ChFiDS_Spine)& Sp, TopAbs_Orientation& Or1, TopAbs_Orientation& Or2, Standard_Integer& ChoixConge) const;
|
||||
Standard_EXPORT Standard_Boolean StripeOrientations (const Handle(ChFiDS_Spine)& Sp,
|
||||
TopAbs_Orientation& Or1,
|
||||
TopAbs_Orientation& Or2,
|
||||
Standard_Integer& ChoixConge) const;
|
||||
|
||||
//! Calculates a Line of contact face/face.
|
||||
Standard_EXPORT Standard_Boolean ComputeData (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, Blend_Function& Func, Blend_FuncInv& FInv, const Standard_Real PFirst, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const math_Vector& Soldep, Standard_Integer& Intf, Standard_Integer& Intl, Standard_Boolean& Gd1, Standard_Boolean& Gd2, Standard_Boolean& Gf1, Standard_Boolean& Gf2, const Standard_Boolean RecOnS1 = Standard_False, const Standard_Boolean RecOnS2 = Standard_False);
|
||||
Standard_EXPORT Standard_Boolean ComputeData (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
Handle(BRepBlend_Line)& Lin,
|
||||
const Handle(Adaptor3d_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(Adaptor3d_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
Blend_Function& Func,
|
||||
Blend_FuncInv& FInv,
|
||||
const Standard_Real PFirst,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const math_Vector& Soldep,
|
||||
Standard_Integer& Intf,
|
||||
Standard_Integer& Intl,
|
||||
Standard_Boolean& Gd1,
|
||||
Standard_Boolean& Gd2,
|
||||
Standard_Boolean& Gf1,
|
||||
Standard_Boolean& Gf2,
|
||||
const Standard_Boolean RecOnS1 = Standard_False,
|
||||
const Standard_Boolean RecOnS2 = Standard_False);
|
||||
|
||||
//! Calculates a Line of contact edge/face.
|
||||
Standard_EXPORT Standard_Boolean ComputeData (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& HGuide, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Adaptor2d_HCurve2d)& PC2, const Handle(Adaptor3d_TopolTool)& I2, Standard_Boolean& Decroch, Blend_SurfRstFunction& Func, Blend_FuncInv& FInv, Blend_SurfPointFuncInv& FInvP, Blend_SurfCurvFuncInv& FInvC, const Standard_Real PFirst, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const math_Vector& Soldep, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst);
|
||||
Standard_EXPORT Standard_Boolean ComputeData (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(ChFiDS_HElSpine)& HGuide,
|
||||
Handle(BRepBlend_Line)& Lin,
|
||||
const Handle(Adaptor3d_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(Adaptor3d_HSurface)& S2,
|
||||
const Handle(Adaptor2d_HCurve2d)& PC2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
Standard_Boolean& Decroch,
|
||||
Blend_SurfRstFunction& Func,
|
||||
Blend_FuncInv& FInv,
|
||||
Blend_SurfPointFuncInv& FInvP,
|
||||
Blend_SurfCurvFuncInv& FInvC,
|
||||
const Standard_Real PFirst,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const math_Vector& Soldep,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP,
|
||||
const Standard_Boolean RecS,
|
||||
const Standard_Boolean RecRst);
|
||||
|
||||
//! Calculates a Line of contact edge/edge.
|
||||
Standard_EXPORT Standard_Boolean ComputeData (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& HGuide, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor2d_HCurve2d)& PC1, const Handle(Adaptor3d_TopolTool)& I1, Standard_Boolean& Decroch1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Adaptor2d_HCurve2d)& PC2, const Handle(Adaptor3d_TopolTool)& I2, Standard_Boolean& Decroch2, Blend_RstRstFunction& Func, Blend_SurfCurvFuncInv& FInv1, Blend_CurvPointFuncInv& FInvP1, Blend_SurfCurvFuncInv& FInv2, Blend_CurvPointFuncInv& FInvP2, const Standard_Real PFirst, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const math_Vector& Soldep, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP1, const Standard_Boolean RecRst1, const Standard_Boolean RecP2, const Standard_Boolean RecRst2);
|
||||
Standard_EXPORT Standard_Boolean ComputeData (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(ChFiDS_HElSpine)& HGuide,
|
||||
Handle(BRepBlend_Line)& Lin,
|
||||
const Handle(Adaptor3d_HSurface)& S1,
|
||||
const Handle(Adaptor2d_HCurve2d)& PC1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
Standard_Boolean& Decroch1,
|
||||
const Handle(Adaptor3d_HSurface)& S2,
|
||||
const Handle(Adaptor2d_HCurve2d)& PC2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
Standard_Boolean& Decroch2,
|
||||
Blend_RstRstFunction& Func,
|
||||
Blend_SurfCurvFuncInv& FInv1,
|
||||
Blend_CurvPointFuncInv& FInvP1,
|
||||
Blend_SurfCurvFuncInv& FInv2,
|
||||
Blend_CurvPointFuncInv& FInvP2,
|
||||
const Standard_Real PFirst,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const math_Vector& Soldep,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP1,
|
||||
const Standard_Boolean RecRst1,
|
||||
const Standard_Boolean RecP2,
|
||||
const Standard_Boolean RecRst2);
|
||||
|
||||
Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data, Blend_Function& Func, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_HSurface)& S2, const TopAbs_Orientation Or1, const Standard_Boolean Gd1, const Standard_Boolean Gd2, const Standard_Boolean Gf1, const Standard_Boolean Gf2, const Standard_Boolean Reversed = Standard_False);
|
||||
Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data,
|
||||
Blend_Function& Func,
|
||||
Handle(BRepBlend_Line)& Lin,
|
||||
const Handle(Adaptor3d_HSurface)& S1,
|
||||
const Handle(Adaptor3d_HSurface)& S2,
|
||||
const TopAbs_Orientation Or1,
|
||||
const Standard_Boolean Gd1,
|
||||
const Standard_Boolean Gd2,
|
||||
const Standard_Boolean Gf1,
|
||||
const Standard_Boolean Gf2,
|
||||
const Standard_Boolean Reversed = Standard_False);
|
||||
|
||||
Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data, Blend_SurfRstFunction& Func, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_HSurface)& S2, const TopAbs_Orientation Or, const Standard_Boolean Reversed);
|
||||
Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data,
|
||||
Blend_SurfRstFunction& Func,
|
||||
Handle(BRepBlend_Line)& Lin,
|
||||
const Handle(Adaptor3d_HSurface)& S1,
|
||||
const Handle(Adaptor3d_HSurface)& S2,
|
||||
const TopAbs_Orientation Or,
|
||||
const Standard_Boolean Reversed);
|
||||
|
||||
Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data, Blend_RstRstFunction& Func, Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_HSurface)& S2, const TopAbs_Orientation Or);
|
||||
Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data,
|
||||
Blend_RstRstFunction& Func,
|
||||
Handle(BRepBlend_Line)& Lin,
|
||||
const Handle(Adaptor3d_HSurface)& S1,
|
||||
const Handle(Adaptor3d_HSurface)& S2,
|
||||
const TopAbs_Orientation Or);
|
||||
|
||||
Standard_EXPORT Standard_Boolean StoreData (Handle(ChFiDS_SurfData)& Data, const AppBlend_Approx& Approx, const Handle(BRepBlend_Line)& Lin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Adaptor3d_HSurface)& S2, const TopAbs_Orientation Or1, const Standard_Boolean Gd1, const Standard_Boolean Gd2, const Standard_Boolean Gf1, const Standard_Boolean Gf2, const Standard_Boolean Reversed = Standard_False);
|
||||
Standard_EXPORT Standard_Boolean StoreData (Handle(ChFiDS_SurfData)& Data,
|
||||
const AppBlend_Approx& Approx,
|
||||
const Handle(BRepBlend_Line)& Lin,
|
||||
const Handle(Adaptor3d_HSurface)& S1,
|
||||
const Handle(Adaptor3d_HSurface)& S2,
|
||||
const TopAbs_Orientation Or1,
|
||||
const Standard_Boolean Gd1,
|
||||
const Standard_Boolean Gd2,
|
||||
const Standard_Boolean Gf1,
|
||||
const Standard_Boolean Gf2,
|
||||
const Standard_Boolean Reversed = Standard_False);
|
||||
|
||||
Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data, const Handle(Geom_Surface)& Surfcoin, const Handle(Adaptor3d_HSurface)& S1, const Handle(Geom2d_Curve)& PC1, const Handle(Adaptor3d_HSurface)& S2, const Handle(Geom2d_Curve)& PC2, const TopAbs_Orientation Or, const Standard_Boolean On1, const Standard_Boolean Gd1, const Standard_Boolean Gd2, const Standard_Boolean Gf1, const Standard_Boolean Gf2);
|
||||
Standard_EXPORT Standard_Boolean CompleteData (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(Geom_Surface)& Surfcoin,
|
||||
const Handle(Adaptor3d_HSurface)& S1,
|
||||
const Handle(Geom2d_Curve)& PC1,
|
||||
const Handle(Adaptor3d_HSurface)& S2,
|
||||
const Handle(Geom2d_Curve)& PC2,
|
||||
const TopAbs_Orientation Or,
|
||||
const Standard_Boolean On1,
|
||||
const Standard_Boolean Gd1,
|
||||
const Standard_Boolean Gd2,
|
||||
const Standard_Boolean Gf1,
|
||||
const Standard_Boolean Gf2);
|
||||
|
||||
|
||||
Standard_Real tolappangle;
|
||||
@@ -311,6 +786,7 @@ protected:
|
||||
ChFiDS_ListOfStripe badstripes;
|
||||
TopTools_ListOfShape badvertices;
|
||||
TopTools_DataMapOfShapeListOfInteger myEVIMap;
|
||||
TopTools_DataMapOfShapeShape myEdgeFirstFace;
|
||||
Standard_Boolean done;
|
||||
Standard_Boolean hasresult;
|
||||
|
||||
@@ -318,15 +794,22 @@ protected:
|
||||
private:
|
||||
|
||||
|
||||
Standard_EXPORT Standard_Boolean FaceTangency (const TopoDS_Edge& E0, const TopoDS_Edge& E1, const TopoDS_Vertex& V) const;
|
||||
Standard_EXPORT Standard_Boolean FaceTangency (const TopoDS_Edge& E0,
|
||||
const TopoDS_Edge& E1,
|
||||
const TopoDS_Vertex& V) const;
|
||||
|
||||
Standard_EXPORT void PerformSetOfSurfOnElSpine (const Handle(ChFiDS_HElSpine)& ES, Handle(ChFiDS_Stripe)& St, Handle(BRepTopAdaptor_TopolTool)& It1, Handle(BRepTopAdaptor_TopolTool)& It2, const Standard_Boolean Simul = Standard_False);
|
||||
Standard_EXPORT void PerformSetOfSurfOnElSpine (const Handle(ChFiDS_HElSpine)& ES,
|
||||
Handle(ChFiDS_Stripe)& St,
|
||||
Handle(BRepTopAdaptor_TopolTool)& It1,
|
||||
Handle(BRepTopAdaptor_TopolTool)& It2,
|
||||
const Standard_Boolean Simul = Standard_False);
|
||||
|
||||
Standard_EXPORT void PerformFilletOnVertex (const Standard_Integer Index);
|
||||
|
||||
Standard_EXPORT void PerformSingularCorner (const Standard_Integer Index);
|
||||
|
||||
Standard_EXPORT void PerformOneCorner (const Standard_Integer Index, const Standard_Boolean PrepareOnSame = Standard_False);
|
||||
Standard_EXPORT void PerformOneCorner (const Standard_Integer Index,
|
||||
const Standard_Boolean PrepareOnSame = Standard_False);
|
||||
|
||||
Standard_EXPORT void IntersectMoreCorner (const Standard_Integer Index);
|
||||
|
||||
@@ -336,17 +819,52 @@ private:
|
||||
|
||||
Standard_EXPORT void ExtentAnalyse();
|
||||
|
||||
Standard_EXPORT Standard_Boolean FindFace (const TopoDS_Vertex& V, const ChFiDS_CommonPoint& P1, const ChFiDS_CommonPoint& P2, TopoDS_Face& Fv) const;
|
||||
Standard_EXPORT Standard_Boolean FindFace (const TopoDS_Vertex& V,
|
||||
const ChFiDS_CommonPoint& P1,
|
||||
const ChFiDS_CommonPoint& P2,
|
||||
TopoDS_Face& Fv) const;
|
||||
|
||||
Standard_EXPORT Standard_Boolean FindFace (const TopoDS_Vertex& V, const ChFiDS_CommonPoint& P1, const ChFiDS_CommonPoint& P2, TopoDS_Face& Fv, const TopoDS_Face& Favoid) const;
|
||||
Standard_EXPORT Standard_Boolean FindFace (const TopoDS_Vertex& V,
|
||||
const ChFiDS_CommonPoint& P1,
|
||||
const ChFiDS_CommonPoint& P2,
|
||||
TopoDS_Face& Fv,
|
||||
const TopoDS_Face& Favoid) const;
|
||||
|
||||
Standard_EXPORT Standard_Boolean MoreSurfdata (const Standard_Integer Index) const;
|
||||
|
||||
Standard_EXPORT Standard_Boolean StartSol (const Handle(ChFiDS_Spine)& Spine, Handle(BRepAdaptor_HSurface)& HS, gp_Pnt2d& P, Handle(BRepAdaptor_HCurve2d)& HC, Standard_Real& W, const Handle(ChFiDS_SurfData)& SD, const Standard_Boolean isFirst, const Standard_Integer OnS, Handle(BRepAdaptor_HSurface)& HSref, Handle(BRepAdaptor_HCurve2d)& HCref, Standard_Boolean& RecP, Standard_Boolean& RecS, Standard_Boolean& RecRst, Standard_Boolean& C1Obst, Handle(BRepAdaptor_HSurface)& HSbis, gp_Pnt2d& Pbis, const Standard_Boolean Decroch, const TopoDS_Vertex& Vref) const;
|
||||
Standard_EXPORT Standard_Boolean StartSol (const Handle(ChFiDS_Spine)& Spine,
|
||||
Handle(BRepAdaptor_HSurface)& HS,
|
||||
gp_Pnt2d& P,
|
||||
Handle(BRepAdaptor_HCurve2d)& HC,
|
||||
Standard_Real& W,
|
||||
const Handle(ChFiDS_SurfData)& SD,
|
||||
const Standard_Boolean isFirst,
|
||||
const Standard_Integer OnS,
|
||||
Handle(BRepAdaptor_HSurface)& HSref,
|
||||
Handle(BRepAdaptor_HCurve2d)& HCref,
|
||||
Standard_Boolean& RecP,
|
||||
Standard_Boolean& RecS,
|
||||
Standard_Boolean& RecRst,
|
||||
Standard_Boolean& C1Obst,
|
||||
Handle(BRepAdaptor_HSurface)& HSbis,
|
||||
gp_Pnt2d& Pbis,
|
||||
const Standard_Boolean Decroch,
|
||||
const TopoDS_Vertex& Vref) const;
|
||||
|
||||
Standard_EXPORT void StartSol (const Handle(ChFiDS_Stripe)& S, const Handle(ChFiDS_HElSpine)& HGuide, Handle(BRepAdaptor_HSurface)& HS1, Handle(BRepAdaptor_HSurface)& HS2, Handle(BRepTopAdaptor_TopolTool)& I1, Handle(BRepTopAdaptor_TopolTool)& I2, gp_Pnt2d& P1, gp_Pnt2d& P2, Standard_Real& First) const;
|
||||
Standard_EXPORT void StartSol (const Handle(ChFiDS_Stripe)& S,
|
||||
const Handle(ChFiDS_HElSpine)& HGuide,
|
||||
Handle(BRepAdaptor_HSurface)& HS1,
|
||||
Handle(BRepAdaptor_HSurface)& HS2,
|
||||
Handle(BRepTopAdaptor_TopolTool)& I1,
|
||||
Handle(BRepTopAdaptor_TopolTool)& I2,
|
||||
gp_Pnt2d& P1,
|
||||
gp_Pnt2d& P2,
|
||||
Standard_Real& First) const;
|
||||
|
||||
Standard_EXPORT void ConexFaces (const Handle(ChFiDS_Spine)& Sp, const Standard_Integer IEdge, const Standard_Integer RefChoix, Handle(BRepAdaptor_HSurface)& HS1, Handle(BRepAdaptor_HSurface)& HS2) const;
|
||||
Standard_EXPORT void ConexFaces (const Handle(ChFiDS_Spine)& Sp,
|
||||
const Standard_Integer IEdge,
|
||||
Handle(BRepAdaptor_HSurface)& HS1,
|
||||
Handle(BRepAdaptor_HSurface)& HS2) const;
|
||||
|
||||
|
||||
TopoDS_Shape myShape;
|
||||
|
@@ -1713,6 +1713,7 @@ void ChFi3d_ComputeArete(const ChFiDS_CommonPoint& P1,
|
||||
Standard_Real umin,umax,vmin,vmax;
|
||||
Surf->Bounds(umin,umax,vmin,vmax);
|
||||
bs.Update(umin,vmin,umax,vmax);
|
||||
bs.SetGap(Precision::PConfusion());
|
||||
Standard_Boolean aIN = Standard_True;
|
||||
for(Standard_Integer ii = 1; ii <= 4 && aIN; ii++) {
|
||||
if(bs.IsOut(Handle(Geom2d_BezierCurve)::DownCast (Pcurv)->Pole(ii))) {
|
||||
@@ -3282,18 +3283,24 @@ Standard_Boolean ChFi3d_ComputeCurves(const Handle(Adaptor3d_HSurface)& S1,
|
||||
Pc1 = new Geom2d_TrimmedCurve(Pc1,Uf,Ul);
|
||||
Pc2 = new Geom2d_TrimmedCurve(Pc2,Uf,Ul);
|
||||
//is it necesary to invert ?
|
||||
Standard_Real distdeb = ptestdeb.Distance(pdeb);
|
||||
Standard_Real distfin = ptestfin.Distance(pfin);
|
||||
if(distdeb > distref || distfin > distref) {
|
||||
Standard_Real DistDebToDeb = ptestdeb.Distance(pdeb);
|
||||
Standard_Real DistDebToFin = ptestdeb.Distance(pfin);
|
||||
Standard_Real DistFinToFin = ptestfin.Distance(pfin);
|
||||
Standard_Real DistFinToDeb = ptestfin.Distance(pdeb);
|
||||
|
||||
if (DistDebToDeb > DistDebToFin &&
|
||||
DistFinToFin > DistFinToDeb)
|
||||
{
|
||||
C3d->Reverse();
|
||||
Pc1->Reverse();
|
||||
Pc2->Reverse();
|
||||
ptestdeb = C3d->Value(C3d->FirstParameter());
|
||||
ptestfin = C3d->Value(C3d->LastParameter());
|
||||
distdeb = ptestdeb.Distance(pdeb);
|
||||
distfin = ptestfin.Distance(pfin);
|
||||
DistDebToDeb = ptestdeb.Distance(pdeb);
|
||||
DistFinToFin = ptestfin.Distance(pfin);
|
||||
}
|
||||
if(distdeb < distref && distfin < distref) {
|
||||
if(DistDebToDeb < distref && DistFinToFin < distref)
|
||||
{
|
||||
Uf = C3d->FirstParameter();
|
||||
Ul = C3d->LastParameter();
|
||||
ChFi3d_ReparamPcurv(Uf,Ul,Pc1);
|
||||
@@ -3910,10 +3917,11 @@ static Standard_Boolean GoodExt(const Handle(Geom_Curve)& C,
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Standard_EXPORT
|
||||
void ChFi3d_PerformElSpine(Handle(ChFiDS_HElSpine)& HES,
|
||||
Handle(ChFiDS_Spine)& Spine,
|
||||
const GeomAbs_Shape continuity,
|
||||
const Standard_Real tol)
|
||||
void ChFi3d_PerformElSpine(Handle(ChFiDS_HElSpine)& HES,
|
||||
Handle(ChFiDS_Spine)& Spine,
|
||||
const GeomAbs_Shape continuity,
|
||||
const Standard_Real tol,
|
||||
const Standard_Boolean IsOffset)
|
||||
{
|
||||
|
||||
Standard_Boolean periodic, Bof, checkdeb, cepadur,bIsSmooth;
|
||||
@@ -3965,8 +3973,8 @@ Standard_EXPORT
|
||||
// derniere arete.
|
||||
// Traitment de la premiere arete
|
||||
cepadur = 0;
|
||||
E=Spine->Edges(IF);
|
||||
Bof=BRepLib::BuildCurve3d(E);
|
||||
E = (IsOffset)? Spine->OffsetEdges(IF) : Spine->Edges(IF);
|
||||
Bof = BRepLib::BuildCurve3d(E);
|
||||
const BRepAdaptor_Curve& edc = Spine->CurrentElementarySpine(IF);
|
||||
tolpared = edc.Resolution(tol);
|
||||
Cv = BRep_Tool::Curve(E, First, Last);
|
||||
@@ -4089,7 +4097,7 @@ Standard_EXPORT
|
||||
iloc = (IEdge - 1)%nbed + 1;
|
||||
}
|
||||
//
|
||||
E = Spine->Edges(iloc);
|
||||
E = (IsOffset)? Spine->OffsetEdges(iloc) : Spine->Edges(iloc);
|
||||
if (BRep_Tool::Degenerated(E)) {
|
||||
continue;
|
||||
}
|
||||
@@ -4362,6 +4370,11 @@ Standard_EXPORT
|
||||
|
||||
// Le Resultat
|
||||
ES.SetCurve(BSpline);
|
||||
|
||||
//Temporary
|
||||
//gp_Pnt ptgui;
|
||||
//gp_Vec d1gui;
|
||||
//( HES->Curve() ).D1(HES->FirstParameter(),ptgui,d1gui);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
|
@@ -505,7 +505,8 @@ void ChFi3d_TrimCurve(const Handle(Geom_Curve)& gc,
|
||||
Standard_EXPORT void ChFi3d_PerformElSpine(Handle(ChFiDS_HElSpine)& HES,
|
||||
Handle(ChFiDS_Spine)& Spine,
|
||||
const GeomAbs_Shape continuity,
|
||||
const Standard_Real tol);
|
||||
const Standard_Real tol,
|
||||
const Standard_Boolean IsOffset = Standard_False);
|
||||
|
||||
TopoDS_Face ChFi3d_EnlargeFace(const Handle(ChFiDS_Spine)& Spine,
|
||||
const Handle(BRepAdaptor_HSurface)& HS,
|
||||
|
@@ -51,6 +51,12 @@
|
||||
#include <ChFiDS_SurfData.hxx>
|
||||
#include <Geom2d_Curve.hxx>
|
||||
#include <Geom_Surface.hxx>
|
||||
#include <Geom_OffsetSurface.hxx>
|
||||
#include <Geom_RectangularTrimmedSurface.hxx>
|
||||
#include <GeomInt_IntSS.hxx>
|
||||
#include <Extrema_ExtPC.hxx>
|
||||
#include <GeomConvert_CompCurveToBSplineCurve.hxx>
|
||||
#include <Geom_BSplineCurve.hxx>
|
||||
#include <gp_Pnt.hxx>
|
||||
#include <gp_Pnt2d.hxx>
|
||||
#include <gp_Vec.hxx>
|
||||
@@ -73,11 +79,226 @@
|
||||
#include <TopOpeBRepDS_Surface.hxx>
|
||||
#include <TopOpeBRepTool_TOOL.hxx>
|
||||
#include <TopTools_ListIteratorOfListOfShape.hxx>
|
||||
#include <BRepLib_MakeEdge.hxx>
|
||||
|
||||
#ifdef OCCT_DEBUG
|
||||
extern Standard_Boolean ChFi3d_GetcontextFORCEBLEND();
|
||||
#endif
|
||||
|
||||
static void ReorderFaces(TopoDS_Face& theF1,
|
||||
TopoDS_Face& theF2,
|
||||
const TopoDS_Face& theFirstFace,
|
||||
const TopoDS_Edge& thePrevEdge,
|
||||
const TopoDS_Vertex& theCommonVertex)
|
||||
{
|
||||
if (theF1.IsSame(theFirstFace))
|
||||
return;
|
||||
else if (theF2.IsSame(theFirstFace))
|
||||
{
|
||||
TopoDS_Face TmpFace = theF1; theF1 = theF2; theF2 = TmpFace;
|
||||
return;
|
||||
}
|
||||
|
||||
TopTools_IndexedDataMapOfShapeListOfShape VEmapFirst, VEmap;
|
||||
TopExp::MapShapesAndAncestors(theFirstFace, TopAbs_VERTEX, TopAbs_EDGE, VEmapFirst);
|
||||
TopExp::MapShapesAndAncestors(theF1, TopAbs_VERTEX, TopAbs_EDGE, VEmap);
|
||||
|
||||
const TopTools_ListOfShape& ElistFirst = VEmapFirst.FindFromKey(theCommonVertex);
|
||||
const TopTools_ListOfShape& Elist = VEmap.FindFromKey(theCommonVertex);
|
||||
TopTools_ListIteratorOfListOfShape itlfirst(ElistFirst);
|
||||
for (; itlfirst.More(); itlfirst.Next())
|
||||
{
|
||||
const TopoDS_Shape& anEdge = itlfirst.Value();
|
||||
if (anEdge.IsSame(thePrevEdge))
|
||||
continue;
|
||||
TopTools_ListIteratorOfListOfShape itl(Elist);
|
||||
for(; itl.More(); itl.Next())
|
||||
if (anEdge.IsSame(itl.Value()))
|
||||
return;
|
||||
}
|
||||
|
||||
TopoDS_Face TmpFace = theF1; theF1 = theF2; theF2 = TmpFace;
|
||||
}
|
||||
|
||||
static void ConcatCurves(TColGeom_SequenceOfCurve& theCurves,
|
||||
TColGeom_SequenceOfCurve& theNewCurves)
|
||||
{
|
||||
while (!theCurves.IsEmpty())
|
||||
{
|
||||
GeomConvert_CompCurveToBSplineCurve Concat;
|
||||
Standard_Boolean Success = Standard_False;
|
||||
for (Standard_Integer i = 1; i <= theCurves.Length(); i++)
|
||||
{
|
||||
const Handle(Geom_Curve)& aCurve = theCurves(i);
|
||||
Handle(Geom_BoundedCurve) aBoundedCurve = Handle(Geom_BoundedCurve)::DownCast(aCurve);
|
||||
Success = Concat.Add(aBoundedCurve, 1.e-5, Standard_True);
|
||||
if (!Success)
|
||||
Success = Concat.Add(aBoundedCurve, 1.e-5, Standard_False);
|
||||
if (Success)
|
||||
{
|
||||
theCurves.Remove(i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
Handle(Geom_Curve) aNewCurve = Concat.BSplineCurve();
|
||||
theNewCurves.Append(aNewCurve);
|
||||
}
|
||||
}
|
||||
|
||||
static TopoDS_Edge MakeOffsetEdge(const TopoDS_Edge& theEdge,
|
||||
const Standard_Real Distance,
|
||||
const BRepAdaptor_Surface& S1,
|
||||
const BRepAdaptor_Surface& S2)
|
||||
{
|
||||
TopoDS_Edge OffsetEdge;
|
||||
|
||||
TopoDS_Face F1 = S1.Face();
|
||||
TopoDS_Face F2 = S2.Face();
|
||||
Handle(Geom_Surface) GS1 = BRep_Tool::Surface(F1);
|
||||
Handle(Geom_Surface) TrGS1 =
|
||||
new Geom_RectangularTrimmedSurface(GS1,
|
||||
S1.FirstUParameter(), S1.LastUParameter(),
|
||||
S1.FirstVParameter(), S1.LastVParameter());
|
||||
Standard_Real Offset = -Distance;
|
||||
if (F1.Orientation() == TopAbs_REVERSED)
|
||||
Offset = Distance;
|
||||
Handle(Geom_OffsetSurface) MakeOffsetSurf = new Geom_OffsetSurface(TrGS1, Offset);
|
||||
Handle(Geom_Surface) OffsetTrGS1 = MakeOffsetSurf->Surface();
|
||||
if (OffsetTrGS1.IsNull())
|
||||
OffsetTrGS1 = MakeOffsetSurf;
|
||||
Handle(Geom_Surface) GS2 = BRep_Tool::Surface(F2);
|
||||
Handle(Geom_Surface) TrGS2 =
|
||||
new Geom_RectangularTrimmedSurface(GS2,
|
||||
S2.FirstUParameter(), S2.LastUParameter(),
|
||||
S2.FirstVParameter(), S2.LastVParameter());
|
||||
GeomInt_IntSS Intersector(OffsetTrGS1, TrGS2, Precision::Confusion());
|
||||
if (!Intersector.IsDone() || Intersector.NbLines() == 0)
|
||||
{
|
||||
return OffsetEdge;
|
||||
}
|
||||
|
||||
Handle(Geom_Curve) IntCurve = Intersector.Line(1);
|
||||
gp_Pnt Ends [2];
|
||||
BRepAdaptor_Curve aBAcurve(theEdge);
|
||||
Ends[0] = aBAcurve.Value(aBAcurve.FirstParameter());
|
||||
Ends[1] = aBAcurve.Value(aBAcurve.LastParameter());
|
||||
|
||||
if (Intersector.NbLines() > 1)
|
||||
{
|
||||
TColGeom_SequenceOfCurve Curves, NewCurves;
|
||||
for (Standard_Integer i = 1; i <= Intersector.NbLines(); i++)
|
||||
Curves.Append(Intersector.Line(i));
|
||||
|
||||
ConcatCurves(Curves, NewCurves);
|
||||
|
||||
Standard_Real MinDist = RealLast();
|
||||
Standard_Integer imin = 1;
|
||||
for (Standard_Integer i = 1; i <= NewCurves.Length(); i++)
|
||||
{
|
||||
GeomAdaptor_Curve GAcurve(NewCurves(i));
|
||||
Extrema_ExtPC Projector(Ends[0], GAcurve);
|
||||
if (!Projector.IsDone() || Projector.NbExt() == 0)
|
||||
continue;
|
||||
for (Standard_Integer iext = 1; iext <= Projector.NbExt(); iext++)
|
||||
{
|
||||
Standard_Real aDist = Projector.SquareDistance(iext);
|
||||
if (aDist < MinDist)
|
||||
{
|
||||
MinDist = aDist;
|
||||
imin = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
IntCurve = NewCurves(imin);
|
||||
}
|
||||
if (IntCurve.IsNull())
|
||||
{
|
||||
return OffsetEdge;
|
||||
}
|
||||
//Projection of extremities onto <IntCurve>
|
||||
GeomAdaptor_Curve GAcurve(IntCurve);
|
||||
Standard_Real Params [2];
|
||||
for (Standard_Integer ind_end = 0; ind_end < 2; ind_end++)
|
||||
{
|
||||
if (ind_end == 1 && aBAcurve.IsClosed()/*HGuide->IsPeriodic()*//*HGuide->IsClosed()*/)
|
||||
break;
|
||||
Extrema_ExtPC Projector(Ends[ind_end], GAcurve);
|
||||
Standard_Real param[4], dist[4];
|
||||
gp_Pnt Pnt[4];
|
||||
param[1] = GAcurve.FirstParameter();
|
||||
param[2] = GAcurve.LastParameter();
|
||||
Projector.TrimmedSquareDistances(dist[1], dist[2], Pnt[1], Pnt[2]);
|
||||
dist[3] = RealLast();
|
||||
if (Projector.IsDone() && Projector.NbExt() > 0)
|
||||
{
|
||||
Standard_Integer imin = 1;
|
||||
for (Standard_Integer i = 2; i <= Projector.NbExt(); i++)
|
||||
if (Projector.SquareDistance(i) < Projector.SquareDistance(imin))
|
||||
imin = i;
|
||||
param[3] = Projector.Point(imin).Parameter();
|
||||
dist[3] = Projector.SquareDistance(imin);
|
||||
Pnt[3] = Projector.Point(imin).Value();
|
||||
}
|
||||
|
||||
Standard_Integer imin = 1;
|
||||
for (Standard_Integer i = 2; i <= 3; i++)
|
||||
if (dist[i] < dist[imin])
|
||||
imin = i;
|
||||
|
||||
Params[ind_end] = param[imin]; //Projector.Point(imin).Parameter();
|
||||
}
|
||||
if (aBAcurve.IsClosed()/*HGuide->IsPeriodic()*//*HGuide->IsClosed()*/)
|
||||
Params[1] = GAcurve.LastParameter(); //temporary
|
||||
if (Params[0] > Params[1])
|
||||
{
|
||||
Standard_Boolean IsClosed = Standard_False;
|
||||
gp_Pnt fpnt = IntCurve->Value(IntCurve->FirstParameter());
|
||||
gp_Pnt lpnt = IntCurve->Value(IntCurve->LastParameter());
|
||||
if (fpnt.SquareDistance(lpnt) <= Precision::SquareConfusion())
|
||||
IsClosed = Standard_True;
|
||||
if (IsClosed)
|
||||
Params[1] = IntCurve->LastParameter();
|
||||
else
|
||||
{
|
||||
Standard_Real NewFirstPar = IntCurve->ReversedParameter(Params[0]);
|
||||
Standard_Real NewLastPar = IntCurve->ReversedParameter(Params[1]);
|
||||
IntCurve->Reverse();
|
||||
Params[0] = NewFirstPar;
|
||||
Params[1] = NewLastPar;
|
||||
}
|
||||
}
|
||||
if (aBAcurve.IsClosed()/*HGuide->IsPeriodic()*//*HGuide->IsClosed()*/) //check the direction of closed curve
|
||||
{
|
||||
gp_Pnt aPnt, anOffsetPnt;
|
||||
gp_Vec Tangent, OffsetTangent;
|
||||
aBAcurve.D1(aBAcurve.FirstParameter(), aPnt, Tangent);
|
||||
IntCurve->D1(Params[0], anOffsetPnt, OffsetTangent);
|
||||
if (Tangent*OffsetTangent < 0)
|
||||
IntCurve->Reverse();
|
||||
}
|
||||
|
||||
/*
|
||||
Standard_Real ParTol = 1.e-5;
|
||||
Standard_Real FirstDiff = aBAcurve.FirstParameter() - Params[0];
|
||||
Standard_Real LastDiff = aBAcurve.LastParameter() - Params[1];
|
||||
if (Abs(FirstDiff) > ParTol ||
|
||||
Abs(LastDiff) > ParTol)
|
||||
{
|
||||
Handle(Geom_BSplineCurve) BsplCurve = Handle(Geom_BSplineCurve)::DownCast(IntCurve);
|
||||
TColStd_Array1OfReal aKnots(1, BsplCurve->NbKnots());
|
||||
BsplCurve->Knots(aKnots);
|
||||
BSplCLib::Reparametrize(aBAcurve.FirstParameter(), aBAcurve.LastParameter(), aKnots);
|
||||
BsplCurve->SetKnots(aKnots);
|
||||
if (aBAcurve.IsPeriodic() && !BsplCurve->IsPeriodic())
|
||||
BsplCurve->SetPeriodic();
|
||||
IntCurve = BsplCurve;
|
||||
}
|
||||
*/
|
||||
|
||||
OffsetEdge = BRepLib_MakeEdge(IntCurve, Params[0], Params[1]);
|
||||
return OffsetEdge;
|
||||
}
|
||||
|
||||
static TopOpeBRepDS_BuildTool mkbuildtool()
|
||||
{
|
||||
TopOpeBRepTool_GeomTool GT2(TopOpeBRepTool_BSPLINE1,
|
||||
@@ -477,7 +698,7 @@ void ChFi3d_Builder::PerformExtremity (const Handle(ChFiDS_Spine)& Spine)
|
||||
}
|
||||
//Before all it is checked if the tangency is not dead.
|
||||
E[0] = Spine->Edges(iedge);
|
||||
ConexFaces (Spine,iedge,0,hs1,hs2);
|
||||
ConexFaces (Spine,iedge,hs1,hs2);
|
||||
if(TangentExtremity(V,E[0],hs1,hs2,angular)){
|
||||
Spine->SetTangencyExtremity(Standard_True, (ii == 1));
|
||||
}
|
||||
@@ -576,7 +797,9 @@ void ChFi3d_Builder::PerformExtremity (const Handle(ChFiDS_Spine)& Spine)
|
||||
// the opposing faces were tangent.
|
||||
//=======================================================================
|
||||
|
||||
Standard_Boolean ChFi3d_Builder::PerformElement(const Handle(ChFiDS_Spine)& Spine)
|
||||
Standard_Boolean ChFi3d_Builder::PerformElement(const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Real Offset,
|
||||
const TopoDS_Face& theFirstFace)
|
||||
{
|
||||
Standard_Real ta = angular;
|
||||
TopTools_ListIteratorOfListOfShape It;
|
||||
@@ -597,6 +820,23 @@ Standard_Boolean ChFi3d_Builder::PerformElement(const Handle(ChFiDS_Spine)& Spin
|
||||
//if(BRep_Tool::Continuity(Ec,ff1,ff2) != GeomAbs_C0) return 0;
|
||||
if (ChFi3d_isTangentFaces(Ec,ff1,ff2)) return 0;
|
||||
// Modified by Sergey KHROMOV - Fri Dec 21 17:46:24 2001 Begin
|
||||
|
||||
TopoDS_Face FirstFace = ff1;
|
||||
if (!theFirstFace.IsNull() && ff2.IsSame(theFirstFace))
|
||||
{
|
||||
FirstFace = ff2;
|
||||
ff2 = ff1; ff1 = FirstFace;
|
||||
}
|
||||
myEdgeFirstFace.Bind(Ec, FirstFace);
|
||||
Standard_Boolean ToRestrict = (Offset > 0)? Standard_True : Standard_False;
|
||||
BRepAdaptor_Surface Sb1(ff1, ToRestrict);
|
||||
BRepAdaptor_Surface Sb2(ff2, ToRestrict);
|
||||
if (Offset > 0)
|
||||
{
|
||||
TopoDS_Edge OffsetEdge = MakeOffsetEdge(Ec, Offset, Sb1, Sb2);
|
||||
OffsetEdge.Orientation(Ec.Orientation());
|
||||
Spine->SetOffsetEdges(OffsetEdge);
|
||||
}
|
||||
|
||||
BRepAdaptor_Curve CEc,CEv;
|
||||
TopAbs_Orientation curor = Ec.Orientation();
|
||||
@@ -668,11 +908,26 @@ Standard_Boolean ChFi3d_Builder::PerformElement(const Handle(ChFiDS_Spine)& Spin
|
||||
}
|
||||
if (OnAjoute) {
|
||||
Fini = Standard_False; // If this can be useful (Cf PRO14713)
|
||||
TopoDS_Vertex CommonVertex;
|
||||
TopExp::CommonVertex(Ec, Ev, CommonVertex);
|
||||
TopoDS_Edge PrevEdge = Ec;
|
||||
Ec = Ev;
|
||||
// Ec = TopoDS::Edge(Ev);
|
||||
Ec.Orientation(Or1);
|
||||
Wl = Wf; LVEc = LVEv;
|
||||
Spine->SetEdges(Ec);
|
||||
TopoDS_Face CurF1, CurF2;
|
||||
ChFi3d_conexfaces(Ec,CurF1,CurF2,myEFMap);
|
||||
ReorderFaces(CurF1, CurF2, FirstFace, PrevEdge, CommonVertex);
|
||||
myEdgeFirstFace.Bind(Ec, CurF1);
|
||||
if (Offset > 0)
|
||||
{
|
||||
BRepAdaptor_Surface CurSb1(CurF1), CurSb2(CurF2);
|
||||
TopoDS_Edge anOffsetEdge = MakeOffsetEdge(Ec, Offset, CurSb1, CurSb2);
|
||||
anOffsetEdge.Orientation(Or1);
|
||||
Spine->SetOffsetEdges(anOffsetEdge);
|
||||
}
|
||||
FirstFace = CurF1;
|
||||
curor = Or1;
|
||||
if (VStart.IsSame(LVEv)) {
|
||||
if (FaceTangency(Ev,Spine->Edges(1),LVEv)) {
|
||||
@@ -701,6 +956,7 @@ Standard_Boolean ChFi3d_Builder::PerformElement(const Handle(ChFiDS_Spine)& Spin
|
||||
else {// Upstream progression
|
||||
Fini = Standard_False;
|
||||
Ec = Spine->Edges(1);
|
||||
FirstFace = TopoDS::Face(myEdgeFirstFace(Ec));
|
||||
curor = Ec.Orientation();
|
||||
FVEc = VStart;
|
||||
while (!Fini) {
|
||||
@@ -738,11 +994,26 @@ Standard_Boolean ChFi3d_Builder::PerformElement(const Handle(ChFiDS_Spine)& Spin
|
||||
OnAjoute=((!rev && av1v2 < ta) || (rev && (M_PI-av1v2) < ta));
|
||||
}
|
||||
if (OnAjoute) {
|
||||
TopoDS_Vertex CommonVertex;
|
||||
TopExp::CommonVertex(Ec, Ev, CommonVertex);
|
||||
TopoDS_Edge PrevEdge = Ec;
|
||||
Ec = Ev;
|
||||
// Ec = TopoDS::Edge(Ev);
|
||||
Ec.Orientation(Or1);
|
||||
Wl = Wf; FVEc = FVEv;
|
||||
Spine->PutInFirst(Ec);
|
||||
TopoDS_Face CurF1, CurF2;
|
||||
ChFi3d_conexfaces(Ec,CurF1,CurF2,myEFMap);
|
||||
ReorderFaces(CurF1, CurF2, FirstFace, PrevEdge, CommonVertex);
|
||||
myEdgeFirstFace.Bind(Ec, CurF1);
|
||||
if (Offset > 0)
|
||||
{
|
||||
BRepAdaptor_Surface CurSb1(CurF1), CurSb2(CurF2);
|
||||
TopoDS_Edge anOffsetEdge = MakeOffsetEdge(Ec, Offset, CurSb1, CurSb2);
|
||||
anOffsetEdge.Orientation(Or1);
|
||||
Spine->PutInFirstOffset(anOffsetEdge);
|
||||
}
|
||||
FirstFace = CurF1;
|
||||
curor = Or1;
|
||||
break;
|
||||
}
|
||||
|
@@ -724,7 +724,11 @@ Standard_Boolean ChFi3d_Builder::StripeOrientations
|
||||
BRepAdaptor_Surface Sb1,Sb2;
|
||||
TopAbs_Orientation Of1,Of2;
|
||||
TopoDS_Face ff1,ff2;
|
||||
ChFi3d_conexfaces(Spine->Edges(1),ff1,ff2,myEFMap);
|
||||
TopoDS_Edge anEdge = Spine->Edges(1);
|
||||
TopoDS_Face FirstFace = TopoDS::Face(myEdgeFirstFace(anEdge));
|
||||
ChFi3d_conexfaces(anEdge,ff1,ff2,myEFMap);
|
||||
if (ff2.IsSame(FirstFace))
|
||||
{ TopoDS_Face TmpFace = ff1; ff1 = ff2; ff2 = TmpFace; }
|
||||
Of1 = ff1.Orientation();
|
||||
ff1.Orientation(TopAbs_FORWARD);
|
||||
Sb1.Initialize(ff1);
|
||||
@@ -747,7 +751,6 @@ Standard_Boolean ChFi3d_Builder::StripeOrientations
|
||||
|
||||
void ChFi3d_Builder::ConexFaces (const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer IEdge,
|
||||
const Standard_Integer RC,
|
||||
Handle(BRepAdaptor_HSurface)& HS1,
|
||||
Handle(BRepAdaptor_HSurface)& HS2) const
|
||||
{
|
||||
@@ -756,19 +759,16 @@ void ChFi3d_Builder::ConexFaces (const Handle(ChFiDS_Spine)& Spine,
|
||||
BRepAdaptor_Surface& Sb1 = HS1->ChangeSurface();
|
||||
BRepAdaptor_Surface& Sb2 = HS2->ChangeSurface();
|
||||
|
||||
TopoDS_Face ff1,ff2;
|
||||
TopoDS_Face ff1,ff2;
|
||||
TopoDS_Edge anEdge = Spine->Edges(IEdge);
|
||||
ChFi3d_conexfaces(Spine->Edges(IEdge),ff1,ff2,myEFMap);
|
||||
|
||||
TopoDS_Face FirstFace = TopoDS::Face(myEdgeFirstFace(anEdge));
|
||||
if (ff2.IsSame(FirstFace))
|
||||
{ TopoDS_Face TmpFace = ff1; ff1 = ff2; ff2 = TmpFace; }
|
||||
|
||||
Sb1.Initialize(ff1);
|
||||
Sb2.Initialize(ff2);
|
||||
|
||||
TopAbs_Orientation Or1,Or2;
|
||||
Standard_Integer Choix = ChFi3d::ConcaveSide(Sb1,Sb2,Spine->Edges(IEdge),
|
||||
Or1,Or2);
|
||||
if (RC%2 != Choix%2) {
|
||||
Sb1.Initialize(ff2);
|
||||
Sb2.Initialize(ff1);
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
@@ -829,7 +829,7 @@ void ChFi3d_Builder::StartSol(const Handle(ChFiDS_Stripe)& Stripe,
|
||||
iedge = ie;
|
||||
cured = Spine->Edges(iedge);
|
||||
TolE = BRep_Tool::Tolerance(cured);
|
||||
ConexFaces(Spine,iedge,RC,HS1,HS2);
|
||||
ConexFaces(Spine,iedge,HS1,HS2);
|
||||
f1 = HS1->ChangeSurface().Face();
|
||||
f2 = HS2->ChangeSurface().Face();
|
||||
Or1 = f1.Orientation();
|
||||
@@ -896,7 +896,7 @@ void ChFi3d_Builder::StartSol(const Handle(ChFiDS_Stripe)& Stripe,
|
||||
Standard_Real w = wf * (1. -t) + wl * t;
|
||||
iedge = Spine->Index(w);
|
||||
cured = Spine->Edges(iedge);
|
||||
ConexFaces(Spine,iedge,RC,HS1,HS2);
|
||||
ConexFaces(Spine,iedge,HS1,HS2);
|
||||
f1 = HS1->ChangeSurface().Face();
|
||||
f2 = HS2->ChangeSurface().Face();
|
||||
Or1 = f1.Orientation();
|
||||
@@ -1864,8 +1864,29 @@ void ChFi3d_Builder::PerformSetOfSurfOnElSpine
|
||||
#ifdef OCCT_DEBUG
|
||||
OSD_Chronometer ch1;
|
||||
#endif
|
||||
|
||||
//Temporary
|
||||
//gp_Pnt ptgui;
|
||||
//gp_Vec d1gui;
|
||||
//( HGuide->Curve() ).D1(HGuide->FirstParameter(),ptgui,d1gui);
|
||||
|
||||
ChFiDS_ElSpine& Guide = HGuide->ChangeCurve();
|
||||
|
||||
Handle(ChFiDS_HElSpine) OffsetHGuide;
|
||||
Handle(ChFiDS_Spine)& Spine = Stripe->ChangeSpine();
|
||||
if (Spine->Mode() == ChFiDS_ConstThroatWithPenetrationChamfer)
|
||||
{
|
||||
ChFiDS_ListOfHElSpine& ll = Spine->ChangeElSpines();
|
||||
ChFiDS_ListOfHElSpine& ll_offset = Spine->ChangeOffsetElSpines();
|
||||
ChFiDS_ListIteratorOfListOfHElSpine ILES(ll), ILES_offset(ll_offset);
|
||||
for ( ; ILES.More(); ILES.Next(),ILES_offset.Next())
|
||||
{
|
||||
const Handle(ChFiDS_HElSpine)& aHElSpine = ILES.Value();
|
||||
if (aHElSpine == HGuide)
|
||||
OffsetHGuide = ILES_offset.Value();
|
||||
}
|
||||
}
|
||||
|
||||
Standard_Real wf = Guide.FirstParameter();
|
||||
Standard_Real wl = Guide.LastParameter();
|
||||
Standard_Real locfleche = (wl - wf) * fleche;
|
||||
@@ -1876,8 +1897,13 @@ void ChFi3d_Builder::PerformSetOfSurfOnElSpine
|
||||
Standard_Real prab = 0.01;
|
||||
Guide.FirstParameter(wf-prab*(wl-wf));
|
||||
Guide.LastParameter (wl+prab*(wl-wf));
|
||||
if (!OffsetHGuide.IsNull())
|
||||
{
|
||||
OffsetHGuide->ChangeCurve().FirstParameter(wf-prab*(wl-wf));
|
||||
OffsetHGuide->ChangeCurve().LastParameter (wl+prab*(wl-wf));
|
||||
}
|
||||
}
|
||||
Handle(ChFiDS_Spine)& Spine = Stripe->ChangeSpine();
|
||||
//Handle(ChFiDS_Spine)& Spine = Stripe->ChangeSpine();
|
||||
Standard_Integer ii, nbed = Spine->NbEdges();
|
||||
Standard_Real lastedlastp = Spine->LastParameter(nbed);
|
||||
|
||||
@@ -1935,6 +1961,13 @@ void ChFi3d_Builder::PerformSetOfSurfOnElSpine
|
||||
Guide.FirstParameter(Last);
|
||||
Guide.SaveLastParameter();
|
||||
Guide.LastParameter (First * 1.1);//Extension to help rsnld.
|
||||
if (!OffsetHGuide.IsNull())
|
||||
{
|
||||
OffsetHGuide->ChangeCurve().SaveFirstParameter();
|
||||
OffsetHGuide->ChangeCurve().FirstParameter(Last);
|
||||
OffsetHGuide->ChangeCurve().SaveLastParameter();
|
||||
OffsetHGuide->ChangeCurve().LastParameter (First * 1.1);//Extension to help rsnld.
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
@@ -1970,8 +2003,18 @@ void ChFi3d_Builder::PerformSetOfSurfOnElSpine
|
||||
|
||||
|
||||
if(Ok1 == 1 && Ok2 == 1) {
|
||||
if(forward) Guide.FirstParameter(wf);
|
||||
else Guide.LastParameter(wl);
|
||||
if(forward)
|
||||
{
|
||||
Guide.FirstParameter(wf);
|
||||
if (!OffsetHGuide.IsNull())
|
||||
OffsetHGuide->ChangeCurve().FirstParameter(wf);
|
||||
}
|
||||
else
|
||||
{
|
||||
Guide.LastParameter(wl);
|
||||
if (!OffsetHGuide.IsNull())
|
||||
OffsetHGuide->ChangeCurve().LastParameter(wl);
|
||||
}
|
||||
}
|
||||
}
|
||||
Standard_Boolean fini = Standard_False;
|
||||
@@ -2009,6 +2052,8 @@ void ChFi3d_Builder::PerformSetOfSurfOnElSpine
|
||||
if(Spine->IsTangencyExtremity(Standard_True)){
|
||||
intf = 4;
|
||||
Guide.FirstParameter(wfsav);
|
||||
if (!OffsetHGuide.IsNull())
|
||||
OffsetHGuide->ChangeCurve().FirstParameter(wfsav);
|
||||
}
|
||||
if(wl - lastedlastp > -tolesp){
|
||||
if(Spine->LastStatus() == ChFiDS_OnSame) intl = 2;
|
||||
@@ -2017,6 +2062,8 @@ void ChFi3d_Builder::PerformSetOfSurfOnElSpine
|
||||
if(Spine->IsTangencyExtremity(Standard_False)){
|
||||
intl = 4;
|
||||
Guide.LastParameter(wlsav);
|
||||
if (!OffsetHGuide.IsNull())
|
||||
OffsetHGuide->ChangeCurve().LastParameter(wlsav);
|
||||
}
|
||||
}
|
||||
if(intf && !forward) Vref = Spine->FirstVertex();
|
||||
@@ -2048,8 +2095,18 @@ void ChFi3d_Builder::PerformSetOfSurfOnElSpine
|
||||
if (!Ok2) ChFi3d_BuildPlane (DStr,HS2,pp2,ref,!forward,2);
|
||||
if(intf) intf = 5;
|
||||
else if(intl) intl = 5;
|
||||
if(forward) Guide.FirstParameter(wf);
|
||||
else Guide.LastParameter(wl);
|
||||
if(forward)
|
||||
{
|
||||
Guide.FirstParameter(wf);
|
||||
if (!OffsetHGuide.IsNull())
|
||||
OffsetHGuide->ChangeCurve().FirstParameter(wf);
|
||||
}
|
||||
else
|
||||
{
|
||||
Guide.LastParameter(wl);
|
||||
if (!OffsetHGuide.IsNull())
|
||||
OffsetHGuide->ChangeCurve().LastParameter(wl);
|
||||
}
|
||||
}
|
||||
else throw Standard_Failure("PerformSetOfSurfOnElSpine : Chaining is impossible.");
|
||||
}
|
||||
@@ -2284,6 +2341,11 @@ void ChFi3d_Builder::PerformSetOfSurfOnElSpine
|
||||
if(!Guide.IsPeriodic()){
|
||||
Guide.FirstParameter(wfsav);
|
||||
Guide.LastParameter (wlsav);
|
||||
if (!OffsetHGuide.IsNull())
|
||||
{
|
||||
OffsetHGuide->ChangeCurve().FirstParameter(wfsav);
|
||||
OffsetHGuide->ChangeCurve().LastParameter (wlsav);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2321,10 +2383,14 @@ void ChFi3d_Builder::PerformSetOfKPart(Handle(ChFiDS_Stripe)& Stripe,
|
||||
gp_Pnt PFirst,PLast,PEndPeriodic;
|
||||
Standard_Boolean intf = Standard_False, intl = Standard_False;
|
||||
|
||||
Handle(ChFiDS_HElSpine) CurrentHE = new ChFiDS_HElSpine();
|
||||
ChFiDS_ElSpine anElSpine, anOffsetElSpine;
|
||||
Handle(ChFiDS_HElSpine) CurrentHE = new ChFiDS_HElSpine(anElSpine);
|
||||
Handle(ChFiDS_HElSpine) CurrentOffsetHE = new ChFiDS_HElSpine(anOffsetElSpine);
|
||||
Spine->D1(Spine->FirstParameter(),PFirst,TFirst);
|
||||
CurrentHE->ChangeCurve().FirstParameter(Spine->FirstParameter());
|
||||
CurrentHE->ChangeCurve().SetFirstPointAndTgt(PFirst,TFirst);
|
||||
CurrentOffsetHE->ChangeCurve().FirstParameter(Spine->FirstParameter());
|
||||
CurrentOffsetHE->ChangeCurve().SetFirstPointAndTgt(PFirst,TFirst);
|
||||
|
||||
Standard_Boolean YaKPart = Standard_False;
|
||||
Standard_Integer iedgelastkpart = 0;
|
||||
@@ -2337,7 +2403,7 @@ void ChFi3d_Builder::PerformSetOfKPart(Handle(ChFiDS_Stripe)& Stripe,
|
||||
|
||||
for (Standard_Integer iedge = 1; iedge <= Spine->NbEdges(); iedge++){
|
||||
|
||||
ConexFaces(Spine,iedge,RefChoix,HS1,HS2);
|
||||
ConexFaces(Spine,iedge,HS1,HS2);
|
||||
|
||||
if (ChFi3d_KParticular(Spine,iedge,HS1->ChangeSurface(),HS2->ChangeSurface())) {
|
||||
intf = ((iedge == 1) && !Spine->IsPeriodic());
|
||||
@@ -2434,10 +2500,19 @@ void ChFi3d_Builder::PerformSetOfKPart(Handle(ChFiDS_Stripe)& Stripe,
|
||||
Spine->AppendElSpine(CurrentHE);
|
||||
CurrentHE->ChangeCurve().ChangeNext() = LSD.Value(j);
|
||||
CurrentHE = new ChFiDS_HElSpine();
|
||||
|
||||
CurrentOffsetHE->ChangeCurve().LastParameter (WFirst);
|
||||
CurrentOffsetHE->ChangeCurve().SetLastPointAndTgt(PFirst,TFirst);
|
||||
Spine->AppendOffsetElSpine(CurrentOffsetHE);
|
||||
CurrentOffsetHE->ChangeCurve().ChangeNext() = LSD.Value(j);
|
||||
CurrentOffsetHE = new ChFiDS_HElSpine();
|
||||
}
|
||||
CurrentHE->ChangeCurve().FirstParameter(WLast);
|
||||
CurrentHE->ChangeCurve().SetFirstPointAndTgt(PLast,TLast);
|
||||
CurrentHE->ChangeCurve().ChangePrevious() = LSD.Value(j);
|
||||
CurrentOffsetHE->ChangeCurve().FirstParameter(WLast);
|
||||
CurrentOffsetHE->ChangeCurve().SetFirstPointAndTgt(PLast,TLast);
|
||||
CurrentOffsetHE->ChangeCurve().ChangePrevious() = LSD.Value(j);
|
||||
YaKPart = Standard_True;
|
||||
}
|
||||
else {
|
||||
@@ -2448,10 +2523,19 @@ void ChFi3d_Builder::PerformSetOfKPart(Handle(ChFiDS_Stripe)& Stripe,
|
||||
Spine->AppendElSpine(CurrentHE);
|
||||
CurrentHE->ChangeCurve().ChangeNext() = LSD.Value(j);
|
||||
CurrentHE = new ChFiDS_HElSpine();
|
||||
|
||||
CurrentOffsetHE->ChangeCurve().LastParameter(WFirst);
|
||||
CurrentOffsetHE->ChangeCurve().SetLastPointAndTgt(PFirst,TFirst);
|
||||
Spine->AppendOffsetElSpine(CurrentOffsetHE);
|
||||
CurrentOffsetHE->ChangeCurve().ChangeNext() = LSD.Value(j);
|
||||
CurrentOffsetHE = new ChFiDS_HElSpine();
|
||||
}
|
||||
CurrentHE->ChangeCurve().FirstParameter(WLast);
|
||||
CurrentHE->ChangeCurve().SetFirstPointAndTgt(PLast,TLast);
|
||||
CurrentHE->ChangeCurve().ChangePrevious() = LSD.Value(j);
|
||||
CurrentOffsetHE->ChangeCurve().FirstParameter(WLast);
|
||||
CurrentOffsetHE->ChangeCurve().SetFirstPointAndTgt(PLast,TLast);
|
||||
CurrentOffsetHE->ChangeCurve().ChangePrevious() = LSD.Value(j);
|
||||
}
|
||||
}
|
||||
if(!li.IsEmpty()) myEVIMap.Bind(Spine->Edges(iedge),li);
|
||||
@@ -2468,6 +2552,11 @@ void ChFi3d_Builder::PerformSetOfKPart(Handle(ChFiDS_Stripe)& Stripe,
|
||||
CurrentHE->ChangeCurve().SetLastPointAndTgt(PEndPeriodic,TEndPeriodic);
|
||||
if(!YaKPart) CurrentHE->ChangeCurve().SetPeriodic(Standard_True);
|
||||
Spine->AppendElSpine(CurrentHE);
|
||||
|
||||
CurrentOffsetHE->ChangeCurve().LastParameter(WEndPeriodic);
|
||||
CurrentOffsetHE->ChangeCurve().SetLastPointAndTgt(PEndPeriodic,TEndPeriodic);
|
||||
if(!YaKPart) CurrentOffsetHE->ChangeCurve().SetPeriodic(Standard_True);
|
||||
Spine->AppendOffsetElSpine(CurrentOffsetHE);
|
||||
}
|
||||
}
|
||||
else{
|
||||
@@ -2478,6 +2567,10 @@ void ChFi3d_Builder::PerformSetOfKPart(Handle(ChFiDS_Stripe)& Stripe,
|
||||
CurrentHE->ChangeCurve().LastParameter(Spine->LastParameter());
|
||||
CurrentHE->ChangeCurve().SetLastPointAndTgt(PLast,TLast);
|
||||
Spine->AppendElSpine(CurrentHE);
|
||||
|
||||
CurrentOffsetHE->ChangeCurve().LastParameter(Spine->LastParameter());
|
||||
CurrentOffsetHE->ChangeCurve().SetLastPointAndTgt(PLast,TLast);
|
||||
Spine->AppendOffsetElSpine(CurrentOffsetHE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2493,6 +2586,12 @@ void ChFi3d_Builder::PerformSetOfKPart(Handle(ChFiDS_Stripe)& Stripe,
|
||||
if(ChFi3d_GettraceCHRON()) { elspine.Stop(); }
|
||||
#endif
|
||||
}
|
||||
if (Spine->Mode() == ChFiDS_ConstThroatWithPenetrationChamfer)
|
||||
{
|
||||
ChFiDS_ListOfHElSpine& offsetll = Spine->ChangeOffsetElSpines();
|
||||
for (ILES.Initialize(offsetll); ILES.More(); ILES.Next())
|
||||
ChFi3d_PerformElSpine(ILES.Value(),Spine,myConti,tolesp,Standard_True);
|
||||
}
|
||||
Spine->SplitDone(Standard_True);
|
||||
}
|
||||
|
||||
|
@@ -1488,6 +1488,22 @@ Standard_Boolean ChFi3d_Builder::ComputeData
|
||||
const Standard_Boolean RecOnS1,
|
||||
const Standard_Boolean RecOnS2)
|
||||
{
|
||||
//Get offset guide if exists
|
||||
Handle(ChFiDS_HElSpine) OffsetHGuide;
|
||||
if (!Spine.IsNull() &&
|
||||
Spine->Mode() == ChFiDS_ConstThroatWithPenetrationChamfer)
|
||||
{
|
||||
ChFiDS_ListOfHElSpine& ll = Spine->ChangeElSpines();
|
||||
ChFiDS_ListOfHElSpine& ll_offset = Spine->ChangeOffsetElSpines();
|
||||
ChFiDS_ListIteratorOfListOfHElSpine ILES(ll), ILES_offset(ll_offset);
|
||||
for ( ; ILES.More(); ILES.Next(),ILES_offset.Next())
|
||||
{
|
||||
const Handle(ChFiDS_HElSpine)& aHElSpine = ILES.Value();
|
||||
if (aHElSpine == HGuide)
|
||||
OffsetHGuide = ILES_offset.Value();
|
||||
}
|
||||
}
|
||||
|
||||
//The extrensions are created in case of output of two domains
|
||||
//directly and not by path ( too hasardous ).
|
||||
Data->FirstExtensionValue(0);
|
||||
@@ -1617,6 +1633,12 @@ Standard_Boolean ChFi3d_Builder::ComputeData
|
||||
HGuide->ChangeCurve().FirstParameter(SpFirst);
|
||||
HGuide->ChangeCurve().LastParameter (SpLast );
|
||||
HGuide->ChangeCurve().SetOrigin(SpFirst);
|
||||
if (!OffsetHGuide.IsNull())
|
||||
{
|
||||
OffsetHGuide->ChangeCurve().FirstParameter(SpFirst);
|
||||
OffsetHGuide->ChangeCurve().LastParameter (SpLast );
|
||||
OffsetHGuide->ChangeCurve().SetOrigin(SpFirst);
|
||||
}
|
||||
}
|
||||
Standard_Boolean complmnt = Standard_True;
|
||||
if (Inside) complmnt = TheWalk.Complete(Func,FInv,SpLast);
|
||||
@@ -2076,6 +2098,7 @@ Standard_Boolean ChFi3d_Builder::ComputeData
|
||||
Standard_Boolean ChFi3d_Builder::SimulData
|
||||
(Handle(ChFiDS_SurfData)& /*Data*/,
|
||||
const Handle(ChFiDS_HElSpine)& HGuide,
|
||||
const Handle(ChFiDS_HElSpine)& AdditionalHGuide,
|
||||
Handle(BRepBlend_Line)& Lin,
|
||||
const Handle(Adaptor3d_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
@@ -2158,6 +2181,11 @@ Standard_Boolean ChFi3d_Builder::SimulData
|
||||
SpLast = SpFirst + HGuide->Period();
|
||||
HGuide->ChangeCurve().FirstParameter(SpFirst);
|
||||
HGuide->ChangeCurve().LastParameter (SpLast );
|
||||
if (!AdditionalHGuide.IsNull())
|
||||
{
|
||||
AdditionalHGuide->ChangeCurve().FirstParameter(SpFirst);
|
||||
AdditionalHGuide->ChangeCurve().LastParameter (SpLast );
|
||||
}
|
||||
}
|
||||
Standard_Boolean complmnt = Standard_True;
|
||||
if (Inside) complmnt = TheWalk.Complete(Func,FInv,SpLast);
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -26,6 +26,7 @@
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <ChFiDS_ChamfMethod.hxx>
|
||||
#include <ChFiDS_ChamfMode.hxx>
|
||||
#include <ChFiDS_SecHArray1.hxx>
|
||||
#include <math_Vector.hxx>
|
||||
#include <TopAbs_Orientation.hxx>
|
||||
@@ -70,13 +71,15 @@ public:
|
||||
//! (the next are found by propagation ), and the
|
||||
//! distance <Dis>
|
||||
//! if the edge <E> has more than 2 adjacent faces
|
||||
Standard_EXPORT void Add (const Standard_Real Dis, const TopoDS_Edge& E, const TopoDS_Face& F);
|
||||
Standard_EXPORT void Add (const Standard_Real Dis, const TopoDS_Edge& E);
|
||||
|
||||
//! set the distance <Dis> of the fillet
|
||||
//! contour of index <IC> in the DS with <Dis> on <F>.
|
||||
//! if the face <F> is not one of common faces
|
||||
//! of an edge of the contour <IC>
|
||||
Standard_EXPORT void SetDist (const Standard_Real Dis, const Standard_Integer IC, const TopoDS_Face& F);
|
||||
Standard_EXPORT void SetDist (const Standard_Real Dis,
|
||||
const Standard_Integer IC,
|
||||
const TopoDS_Face& F);
|
||||
|
||||
//! gives the distances <Dis> of the fillet
|
||||
//! contour of index <IC> in the DS
|
||||
@@ -86,37 +89,59 @@ public:
|
||||
//! (the next are found by propagation ), and the
|
||||
//! distance <Dis1> and <Dis2>
|
||||
//! if the edge <E> has more than 2 adjacent faces
|
||||
Standard_EXPORT void Add (const Standard_Real Dis1, const Standard_Real Dis2, const TopoDS_Edge& E, const TopoDS_Face& F);
|
||||
Standard_EXPORT void Add (const Standard_Real Dis1,
|
||||
const Standard_Real Dis2,
|
||||
const TopoDS_Edge& E,
|
||||
const TopoDS_Face& F);
|
||||
|
||||
//! set the distances <Dis1> and <Dis2> of the fillet
|
||||
//! contour of index <IC> in the DS with <Dis1> on <F>.
|
||||
//! if the face <F> is not one of common faces
|
||||
//! of an edge of the contour <IC>
|
||||
Standard_EXPORT void SetDists (const Standard_Real Dis1, const Standard_Real Dis2, const Standard_Integer IC, const TopoDS_Face& F);
|
||||
Standard_EXPORT void SetDists (const Standard_Real Dis1,
|
||||
const Standard_Real Dis2,
|
||||
const Standard_Integer IC,
|
||||
const TopoDS_Face& F);
|
||||
|
||||
//! gives the distances <Dis1> and <Dis2> of the fillet
|
||||
//! contour of index <IC> in the DS
|
||||
Standard_EXPORT void Dists (const Standard_Integer IC, Standard_Real& Dis1, Standard_Real& Dis2) const;
|
||||
Standard_EXPORT void Dists (const Standard_Integer IC,
|
||||
Standard_Real& Dis1,
|
||||
Standard_Real& Dis2) const;
|
||||
|
||||
//! initializes a new contour with the edge <E> as first
|
||||
//! (the next are found by propagation ), and the
|
||||
//! distance <Dis1> and <Angle>
|
||||
//! if the edge <E> has more than 2 adjacent faces
|
||||
Standard_EXPORT void AddDA (const Standard_Real Dis, const Standard_Real Angle, const TopoDS_Edge& E, const TopoDS_Face& F);
|
||||
Standard_EXPORT void AddDA (const Standard_Real Dis,
|
||||
const Standard_Real Angle,
|
||||
const TopoDS_Edge& E,
|
||||
const TopoDS_Face& F);
|
||||
|
||||
//! set the distance <Dis> and <Angle> of the fillet
|
||||
//! contour of index <IC> in the DS with <Dis> on <F>.
|
||||
//! if the face <F> is not one of common faces
|
||||
//! of an edge of the contour <IC>
|
||||
Standard_EXPORT void SetDistAngle (const Standard_Real Dis, const Standard_Real Angle, const Standard_Integer IC, const TopoDS_Face& F);
|
||||
Standard_EXPORT void SetDistAngle (const Standard_Real Dis,
|
||||
const Standard_Real Angle,
|
||||
const Standard_Integer IC,
|
||||
const TopoDS_Face& F);
|
||||
|
||||
//! gives the distances <Dis> and <Angle> of the fillet
|
||||
//! contour of index <IC> in the DS
|
||||
Standard_EXPORT void GetDistAngle (const Standard_Integer IC, Standard_Real& Dis, Standard_Real& Angle, Standard_Boolean& DisOnFace1) const;
|
||||
Standard_EXPORT void GetDistAngle (const Standard_Integer IC,
|
||||
Standard_Real& Dis,
|
||||
Standard_Real& Angle) const;
|
||||
|
||||
//! set the mode of shamfer
|
||||
Standard_EXPORT void SetMode (const ChFiDS_ChamfMode theMode);
|
||||
|
||||
//! renvoi la methode des chanfreins utilisee
|
||||
Standard_EXPORT ChFiDS_ChamfMethod IsChamfer (const Standard_Integer IC) const;
|
||||
|
||||
//! returns the mode of chamfer used
|
||||
Standard_EXPORT ChFiDS_ChamfMode Mode () const;
|
||||
|
||||
//! Reset tous rayons du contour IC.
|
||||
Standard_EXPORT void ResetContour (const Standard_Integer IC);
|
||||
|
||||
@@ -124,36 +149,208 @@ public:
|
||||
|
||||
Standard_EXPORT Standard_Integer NbSurf (const Standard_Integer IC) const;
|
||||
|
||||
Standard_EXPORT Handle(ChFiDS_SecHArray1) Sect (const Standard_Integer IC, const Standard_Integer IS) const;
|
||||
Standard_EXPORT Handle(ChFiDS_SecHArray1) Sect (const Standard_Integer IC,
|
||||
const Standard_Integer IS) const;
|
||||
|
||||
Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HCurve2d)& PC1, const Handle(BRepAdaptor_HSurface)& Sref1, const Handle(BRepAdaptor_HCurve2d)& PCref1, Standard_Boolean& Decroch1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const TopAbs_Orientation Or2, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst, const math_Vector& Soldep) Standard_OVERRIDE;
|
||||
Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC1,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref1,
|
||||
Standard_Boolean& Decroch1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const TopAbs_Orientation Or2,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP,
|
||||
const Standard_Boolean RecS,
|
||||
const Standard_Boolean RecRst,
|
||||
const math_Vector& Soldep) Standard_OVERRIDE;
|
||||
|
||||
Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const TopAbs_Orientation Or1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Handle(BRepAdaptor_HCurve2d)& PC2, const Handle(BRepAdaptor_HSurface)& Sref2, const Handle(BRepAdaptor_HCurve2d)& PCref2, Standard_Boolean& Decroch2, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst, const math_Vector& Soldep) Standard_OVERRIDE;
|
||||
Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const TopAbs_Orientation Or1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC2,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref2,
|
||||
Standard_Boolean& Decroch2,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP,
|
||||
const Standard_Boolean RecS,
|
||||
const Standard_Boolean RecRst,
|
||||
const math_Vector& Soldep) Standard_OVERRIDE;
|
||||
|
||||
Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HCurve2d)& PC1, const Handle(BRepAdaptor_HSurface)& Sref1, const Handle(BRepAdaptor_HCurve2d)& PCref1, Standard_Boolean& Decroch1, const TopAbs_Orientation Or1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Handle(BRepAdaptor_HCurve2d)& PC2, const Handle(BRepAdaptor_HSurface)& Sref2, const Handle(BRepAdaptor_HCurve2d)& PCref2, Standard_Boolean& Decroch2, const TopAbs_Orientation Or2, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP1, const Standard_Boolean RecRst1, const Standard_Boolean RecP2, const Standard_Boolean RecRst2, const math_Vector& Soldep) Standard_OVERRIDE;
|
||||
Standard_EXPORT virtual void SimulSurf (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC1,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref1,
|
||||
Standard_Boolean& Decroch1,
|
||||
const TopAbs_Orientation Or1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC2,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref2,
|
||||
Standard_Boolean& Decroch2,
|
||||
const TopAbs_Orientation Or2,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP1,
|
||||
const Standard_Boolean RecRst1,
|
||||
const Standard_Boolean RecP2,
|
||||
const Standard_Boolean RecRst2,
|
||||
const math_Vector& Soldep) Standard_OVERRIDE;
|
||||
|
||||
//! Methode, implemented in inheritants, calculates
|
||||
//! the elements of construction of the surface (fillet
|
||||
//! or chamfer).
|
||||
Standard_EXPORT virtual Standard_Boolean PerformSurf (ChFiDS_SequenceOfSurfData& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecOnS1, const Standard_Boolean RecOnS2, const math_Vector& Soldep, Standard_Integer& Intf, Standard_Integer& Intl) Standard_OVERRIDE;
|
||||
Standard_EXPORT virtual Standard_Boolean PerformSurf (ChFiDS_SequenceOfSurfData& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecOnS1,
|
||||
const Standard_Boolean RecOnS2,
|
||||
const math_Vector& Soldep,
|
||||
Standard_Integer& Intf,
|
||||
Standard_Integer& Intl) Standard_OVERRIDE;
|
||||
|
||||
//! Method, implemented in the inheritants, calculates
|
||||
//! the elements of construction of the surface (fillet
|
||||
//! or chamfer) contact edge/face.
|
||||
Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HCurve2d)& PC1, const Handle(BRepAdaptor_HSurface)& Sref1, const Handle(BRepAdaptor_HCurve2d)& PCref1, Standard_Boolean& Decroch1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const TopAbs_Orientation Or2, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst, const math_Vector& Soldep) Standard_OVERRIDE;
|
||||
Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC1,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref1,
|
||||
Standard_Boolean& Decroch1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const TopAbs_Orientation Or2,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP,
|
||||
const Standard_Boolean RecS,
|
||||
const Standard_Boolean RecRst,
|
||||
const math_Vector& Soldep) Standard_OVERRIDE;
|
||||
|
||||
//! Method, implemented in inheritants, calculates
|
||||
//! the elements of construction of the surface (fillet
|
||||
//! or chamfer) contact edge/face.
|
||||
Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const TopAbs_Orientation Or1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Handle(BRepAdaptor_HCurve2d)& PC2, const Handle(BRepAdaptor_HSurface)& Sref2, const Handle(BRepAdaptor_HCurve2d)& PCref2, Standard_Boolean& Decroch2, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP, const Standard_Boolean RecS, const Standard_Boolean RecRst, const math_Vector& Soldep) Standard_OVERRIDE;
|
||||
Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const TopAbs_Orientation Or1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC2,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref2,
|
||||
Standard_Boolean& Decroch2,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP,
|
||||
const Standard_Boolean RecS,
|
||||
const Standard_Boolean RecRst,
|
||||
const math_Vector& Soldep) Standard_OVERRIDE;
|
||||
|
||||
//! Method, implemented in inheritants, calculates
|
||||
//! the elements of construction of the surface (fillet
|
||||
//! or chamfer) contact edge/edge.
|
||||
Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HCurve2d)& PC1, const Handle(BRepAdaptor_HSurface)& Sref1, const Handle(BRepAdaptor_HCurve2d)& PCref1, Standard_Boolean& Decroch1, const TopAbs_Orientation Or1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Handle(BRepAdaptor_HCurve2d)& PC2, const Handle(BRepAdaptor_HSurface)& Sref2, const Handle(BRepAdaptor_HCurve2d)& PCref2, Standard_Boolean& Decroch2, const TopAbs_Orientation Or2, const Standard_Real MaxStep, const Standard_Real Fleche, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecP1, const Standard_Boolean RecRst1, const Standard_Boolean RecP2, const Standard_Boolean RecRst2, const math_Vector& Soldep) Standard_OVERRIDE;
|
||||
Standard_EXPORT virtual void PerformSurf (ChFiDS_SequenceOfSurfData& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC1,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref1,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref1,
|
||||
Standard_Boolean& Decroch1,
|
||||
const TopAbs_Orientation Or1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PC2,
|
||||
const Handle(BRepAdaptor_HSurface)& Sref2,
|
||||
const Handle(BRepAdaptor_HCurve2d)& PCref2,
|
||||
Standard_Boolean& Decroch2,
|
||||
const TopAbs_Orientation Or2,
|
||||
const Standard_Real MaxStep,
|
||||
const Standard_Real Fleche,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecP1,
|
||||
const Standard_Boolean RecRst1,
|
||||
const Standard_Boolean RecP2,
|
||||
const Standard_Boolean RecRst2,
|
||||
const math_Vector& Soldep) Standard_OVERRIDE;
|
||||
|
||||
Standard_EXPORT Standard_Integer FindChoiceDistAngle (const Standard_Integer Choice, const Standard_Boolean DisOnF1) const;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -162,9 +359,37 @@ protected:
|
||||
|
||||
Standard_EXPORT void SimulKPart (const Handle(ChFiDS_SurfData)& SD) const Standard_OVERRIDE;
|
||||
|
||||
Standard_EXPORT Standard_Boolean SimulSurf (Handle(ChFiDS_SurfData)& Data, const Handle(ChFiDS_HElSpine)& Guide, const Handle(ChFiDS_Spine)& Spine, const Standard_Integer Choix, const Handle(BRepAdaptor_HSurface)& S1, const Handle(Adaptor3d_TopolTool)& I1, const Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I2, const Standard_Real TolGuide, Standard_Real& First, Standard_Real& Last, const Standard_Boolean Inside, const Standard_Boolean Appro, const Standard_Boolean Forward, const Standard_Boolean RecOnS1, const Standard_Boolean RecOnS2, const math_Vector& Soldep, Standard_Integer& Intf, Standard_Integer& Intl) Standard_OVERRIDE;
|
||||
Standard_EXPORT Standard_Boolean SimulSurf (Handle(ChFiDS_SurfData)& Data,
|
||||
const Handle(ChFiDS_HElSpine)& Guide,
|
||||
const Handle(ChFiDS_Spine)& Spine,
|
||||
const Standard_Integer Choix,
|
||||
const Handle(BRepAdaptor_HSurface)& S1,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Standard_Real TolGuide,
|
||||
Standard_Real& First,
|
||||
Standard_Real& Last,
|
||||
const Standard_Boolean Inside,
|
||||
const Standard_Boolean Appro,
|
||||
const Standard_Boolean Forward,
|
||||
const Standard_Boolean RecOnS1,
|
||||
const Standard_Boolean RecOnS2,
|
||||
const math_Vector& Soldep,
|
||||
Standard_Integer& Intf,
|
||||
Standard_Integer& Intl) Standard_OVERRIDE;
|
||||
|
||||
Standard_EXPORT Standard_Boolean PerformFirstSection (const Handle(ChFiDS_Spine)& S, const Handle(ChFiDS_HElSpine)& HGuide, const Standard_Integer Choix, Handle(BRepAdaptor_HSurface)& S1, Handle(BRepAdaptor_HSurface)& S2, const Handle(Adaptor3d_TopolTool)& I1, const Handle(Adaptor3d_TopolTool)& I2, const Standard_Real Par, math_Vector& SolDep, TopAbs_State& Pos1, TopAbs_State& Pos2) const Standard_OVERRIDE;
|
||||
Standard_EXPORT Standard_Boolean PerformFirstSection (const Handle(ChFiDS_Spine)& S,
|
||||
const Handle(ChFiDS_HElSpine)& HGuide,
|
||||
const Standard_Integer Choix,
|
||||
Handle(BRepAdaptor_HSurface)& S1,
|
||||
Handle(BRepAdaptor_HSurface)& S2,
|
||||
const Handle(Adaptor3d_TopolTool)& I1,
|
||||
const Handle(Adaptor3d_TopolTool)& I2,
|
||||
const Standard_Real Par,
|
||||
math_Vector& SolDep,
|
||||
TopAbs_State& Pos1,
|
||||
TopAbs_State& Pos2) const Standard_OVERRIDE;
|
||||
|
||||
//! computes the intersection of two chamfers on
|
||||
//! the vertex of index <Index> in myVDataMap.
|
||||
@@ -176,15 +401,18 @@ protected:
|
||||
|
||||
//! extends the spine of the Stripe <S> at the
|
||||
//! extremity of the vertex <V>.
|
||||
Standard_EXPORT void ExtentOneCorner (const TopoDS_Vertex& V, const Handle(ChFiDS_Stripe)& S) Standard_OVERRIDE;
|
||||
Standard_EXPORT void ExtentOneCorner (const TopoDS_Vertex& V,
|
||||
const Handle(ChFiDS_Stripe)& S) Standard_OVERRIDE;
|
||||
|
||||
//! extends the spine of the 2 stripes of <LS> at the
|
||||
//! extremity of the vertex <V>
|
||||
Standard_EXPORT void ExtentTwoCorner (const TopoDS_Vertex& V, const ChFiDS_ListOfStripe& LS) Standard_OVERRIDE;
|
||||
Standard_EXPORT void ExtentTwoCorner (const TopoDS_Vertex& V,
|
||||
const ChFiDS_ListOfStripe& LS) Standard_OVERRIDE;
|
||||
|
||||
//! extends the spine of the 2 stripes of <LS> at the
|
||||
//! extremity of the vertex <V>
|
||||
Standard_EXPORT void ExtentThreeCorner (const TopoDS_Vertex& V, const ChFiDS_ListOfStripe& LS) Standard_OVERRIDE;
|
||||
Standard_EXPORT void ExtentThreeCorner (const TopoDS_Vertex& V,
|
||||
const ChFiDS_ListOfStripe& LS) Standard_OVERRIDE;
|
||||
|
||||
//! set the regularities
|
||||
Standard_EXPORT void SetRegul() Standard_OVERRIDE;
|
||||
@@ -195,9 +423,12 @@ protected:
|
||||
private:
|
||||
|
||||
|
||||
Standard_EXPORT void ConexFaces (const Handle(ChFiDS_Spine)& Sp, const Standard_Integer IEdge, TopoDS_Face& F1, TopoDS_Face& F2) const;
|
||||
|
||||
Standard_EXPORT void ConexFaces (const Handle(ChFiDS_Spine)& Sp,
|
||||
const Standard_Integer IEdge,
|
||||
TopoDS_Face& F1,
|
||||
TopoDS_Face& F2) const;
|
||||
|
||||
ChFiDS_ChamfMode myMode;
|
||||
|
||||
|
||||
};
|
||||
|
@@ -199,6 +199,8 @@ ChFi3d_FilletShape ChFi3d_FilBuilder::GetFilletShape() const
|
||||
|
||||
void ChFi3d_FilBuilder::Add(const TopoDS_Edge& E)
|
||||
{
|
||||
TopoDS_Face dummy;
|
||||
|
||||
if(!Contains(E) && myEFMap.Contains(E)){
|
||||
Handle(ChFiDS_Stripe) Stripe = new ChFiDS_Stripe();
|
||||
Handle(ChFiDS_Spine)& Sp = Stripe->ChangeSpine();
|
||||
@@ -208,7 +210,7 @@ void ChFi3d_FilBuilder::Add(const TopoDS_Edge& E)
|
||||
TopoDS_Edge E_wnt = E;
|
||||
E_wnt.Orientation(TopAbs_FORWARD);
|
||||
Spine->SetEdges(E_wnt);
|
||||
if(PerformElement(Spine)){
|
||||
if(PerformElement(Spine, -1, dummy)){
|
||||
PerformExtremity(Spine);
|
||||
Spine->Load();
|
||||
myListStripe.Append(Stripe);
|
||||
@@ -631,6 +633,8 @@ ChFi3d_FilBuilder::SimulSurf(Handle(ChFiDS_SurfData)& Data,
|
||||
Handle(ChFiDS_SecHArray1) sec;
|
||||
gp_Pnt2d pf1,pl1,pf2,pl2;
|
||||
|
||||
Handle(ChFiDS_HElSpine) EmptyHGuide;
|
||||
|
||||
Standard_Real PFirst = First;
|
||||
if(intf) First = fsp->FirstParameter(1);
|
||||
if(intl) Last = fsp->LastParameter(fsp->NbEdges());
|
||||
@@ -640,7 +644,7 @@ ChFi3d_FilBuilder::SimulSurf(Handle(ChFiDS_SurfData)& Data,
|
||||
Func.Set(fsp->Radius(),Choix);
|
||||
FInv.Set(fsp->Radius(),Choix);
|
||||
Func.Set(myShape);
|
||||
done = SimulData(Data,HGuide,lin,S1,I1 ,
|
||||
done = SimulData(Data,HGuide,EmptyHGuide,lin,S1,I1 ,
|
||||
S2,I2,Func,FInv,PFirst,MaxStep,locfleche,
|
||||
TolGuide,First,Last,Inside,Appro,Forward,
|
||||
Soldep,4,RecOnS1,RecOnS2);
|
||||
@@ -667,7 +671,7 @@ ChFi3d_FilBuilder::SimulSurf(Handle(ChFiDS_SurfData)& Data,
|
||||
Func.Set(Choix);
|
||||
FInv.Set(Choix);
|
||||
Func.Set(myShape);
|
||||
done = SimulData(Data,HGuide,lin,S1,I1 ,
|
||||
done = SimulData(Data,HGuide,EmptyHGuide,lin,S1,I1 ,
|
||||
S2,I2,Func,FInv,PFirst,MaxStep,locfleche,
|
||||
TolGuide,First,Last,Inside,Appro,Forward,
|
||||
Soldep,4,RecOnS1,RecOnS2);
|
||||
|
Reference in New Issue
Block a user