Open CASCADE Technology  6.9.1
Public Member Functions | Protected Member Functions | Protected Attributes
FairCurve_Batten Class Reference

Constructs curves with a constant or linearly increasing section to be used in the design of wooden or plastic battens. These curves are two-dimensional, and simulate physical splines or battens. More...

#include <FairCurve_Batten.hxx>

Inheritance diagram for FairCurve_Batten:
Inheritance graph
[legend]

Public Member Functions

 FairCurve_Batten (const gp_Pnt2d &P1, const gp_Pnt2d &P2, const Standard_Real Height, const Standard_Real Slope=0)
 Constructor with the two points and the geometrical characteristics of the batten (elastic beam) Height is the height of the deformation, and Slope is the slope value, initialized at 0. The user can then supply the desired slope value by the method, SetSlope. Other parameters are initialized as follow : More...
 
virtual void Delete ()
 
virtual ~FairCurve_Batten ()
 
void SetFreeSliding (const Standard_Boolean FreeSliding)
 Freesliding is initialized with the default setting false. When Freesliding is set to true and, as a result, sliding is free, the sliding factor is automatically computed to satisfy the equilibrium of the batten. More...
 
void SetConstraintOrder1 (const Standard_Integer ConstraintOrder)
 Allows you to change the order of the constraint on the first point. ConstraintOrder has the default setting of 1. The following settings are available: More...
 
void SetConstraintOrder2 (const Standard_Integer ConstraintOrder)
 Allows you to change the order of the constraint on the second point. ConstraintOrder is initialized with the default setting of 1. The following settings are available: More...
 
void SetP1 (const gp_Pnt2d &P1)
 Allows you to change the location of the point, P1, and in doing so, modify the curve. Warning This method changes the angle as well as the point. Exceptions NullValue if the distance between P1 and P2 is less than or equal to the tolerance value for distance in Precision::Confusion: P1.IsEqual(P2, Precision::Confusion()). The function gp_Pnt2d::IsEqual tests to see if this is the case. More...
 
void SetP2 (const gp_Pnt2d &P2)
 Allows you to change the location of the point, P1, and in doing so, modify the curve. Warning This method changes the angle as well as the point. Exceptions NullValue if the distance between P1 and P2 is less than or equal to the tolerance value for distance in Precision::Confusion: P1.IsEqual(P2, Precision::Confusion()). The function gp_Pnt2d::IsEqual tests to see if this is the case. More...
 
void SetAngle1 (const Standard_Real Angle1)
 Allows you to change the angle Angle1 at the first point, P1. The default setting is 0. More...
 
void SetAngle2 (const Standard_Real Angle2)
 Allows you to change the angle Angle2 at the second point, P2. The default setting is 0. More...
 
void SetHeight (const Standard_Real Height)
 Allows you to change the height of the deformation. Raises NegativeValue; – if Height <= 0 if Height <= 0. More...
 
void SetSlope (const Standard_Real Slope)
 Allows you to set the slope value, Slope. More...
 
void SetSlidingFactor (const Standard_Real SlidingFactor)
 Allows you to change the ratio SlidingFactor. This compares the length of the batten and the reference length, which is, in turn, a function of the constraints. This modification has one of the following two effects: More...
 
virtual Standard_Boolean Compute (FairCurve_AnalysisCode &Code, const Standard_Integer NbIterations=50, const Standard_Real Tolerance=1.0e-3)
 Performs the algorithm, using the arguments Code, NbIterations and Tolerance and computes the curve with respect to the constraints. Code will have one of the following values: More...
 
Standard_Real SlidingOfReference () const
 Computes the real number value for length Sliding of Reference for new constraints. If you want to give a specific length to a batten curve, use the following syntax: b.SetSlidingFactor(L / b.SlidingOfReference()) where b is the name of the batten curve object. More...
 
Standard_Boolean GetFreeSliding () const
 Returns the initial free sliding value, false by default. Free sliding is generally more aesthetically pleasing than constrained sliding. However, the computation can fail with values such as angles greater than PI/2. This is because the resulting batten length is theoretically infinite. More...
 
Standard_Integer GetConstraintOrder1 () const
 Returns the established first constraint order. More...
 
Standard_Integer GetConstraintOrder2 () const
 Returns the established second constraint order. More...
 
const gp_Pnt2dGetP1 () const
 Returns the established location of the point P1. More...
 
const gp_Pnt2dGetP2 () const
 Returns the established location of the point P2. More...
 
Standard_Real GetAngle1 () const
 Returns the established first angle. More...
 
Standard_Real GetAngle2 () const
 Returns the established second angle. More...
 
Standard_Real GetHeight () const
 Returns the thickness of the lathe. More...
 
Standard_Real GetSlope () const
 Returns the established slope value. More...
 
Standard_Real GetSlidingFactor () const
 Returns the initial sliding factor. More...
 
Handle< Geom2d_BSplineCurveCurve () const
 Returns the computed curve a 2d BSpline. More...
 
virtual void Dump (Standard_OStream &o) const
 Prints on the stream o information on the current state of the object. More...
 

Protected Member Functions

Standard_Real SlidingOfReference (const Standard_Real D, const Standard_Real A1, const Standard_Real A2) const
 
Standard_Real Compute (const Standard_Real D, const Standard_Real A1, const Standard_Real A2) const
 
Standard_Real Compute (const Standard_Real D, const Standard_Real A) const
 Returns the effective geometrical constraints at the last batten computation. This effectives values may be not equal with the wanted values if. More...
 

Protected Attributes

FairCurve_AnalysisCode myCode
 
gp_Pnt2d OldP1
 
gp_Pnt2d OldP2
 
Standard_Real OldAngle1
 
Standard_Real OldAngle2
 
Standard_Real OldHeight
 
Standard_Real OldSlope
 
Standard_Real OldSlidingFactor
 
Standard_Boolean OldFreeSliding
 
Standard_Integer OldConstraintOrder1
 
Standard_Integer OldConstraintOrder2
 
gp_Pnt2d NewP1
 
gp_Pnt2d NewP2
 
Standard_Real NewAngle1
 
Standard_Real NewAngle2
 
Standard_Real NewHeight
 
Standard_Real NewSlope
 
Standard_Real NewSlidingFactor
 
Standard_Boolean NewFreeSliding
 
Standard_Integer NewConstraintOrder1
 
Standard_Integer NewConstraintOrder2
 
Standard_Integer Degree
 
Handle< TColgp_HArray1OfPnt2dPoles
 
Handle< TColStd_HArray1OfRealFlatknots
 
Handle< TColStd_HArray1OfRealKnots
 
Handle< TColStd_HArray1OfIntegerMults
 

Detailed Description

Constructs curves with a constant or linearly increasing section to be used in the design of wooden or plastic battens. These curves are two-dimensional, and simulate physical splines or battens.

Constructor & Destructor Documentation

FairCurve_Batten::FairCurve_Batten ( const gp_Pnt2d P1,
const gp_Pnt2d P2,
const Standard_Real  Height,
const Standard_Real  Slope = 0 
)

Constructor with the two points and the geometrical characteristics of the batten (elastic beam) Height is the height of the deformation, and Slope is the slope value, initialized at 0. The user can then supply the desired slope value by the method, SetSlope. Other parameters are initialized as follow :

  • FreeSliding = False
  • ConstraintOrder1 = 1
  • ConstraintOrder2 = 1
  • Angle1 = 0
  • Angle2 = 0
  • SlidingFactor = 1 Exceptions NegativeValue if Height is less than or equal to 0. NullValue if the distance between P1 and P2 is less than or equal to the tolerance value for distance in Precision::Confusion: P1.IsEqual(P2, Precision::Confusion()). The function gp_Pnt2d::IsEqual tests to see if this is the case.
virtual FairCurve_Batten::~FairCurve_Batten ( )
inlinevirtual

Member Function Documentation

virtual Standard_Boolean FairCurve_Batten::Compute ( FairCurve_AnalysisCode Code,
const Standard_Integer  NbIterations = 50,
const Standard_Real  Tolerance = 1.0e-3 
)
virtual

Performs the algorithm, using the arguments Code, NbIterations and Tolerance and computes the curve with respect to the constraints. Code will have one of the following values:

  • OK
  • NotConverged
  • InfiniteSliding
  • NullHeight The parameters Tolerance and NbIterations control how precise the computation is, and how long it will take.

Reimplemented in FairCurve_MinimalVariation.

Standard_Real FairCurve_Batten::Compute ( const Standard_Real  D,
const Standard_Real  A1,
const Standard_Real  A2 
) const
protected
Standard_Real FairCurve_Batten::Compute ( const Standard_Real  D,
const Standard_Real  A 
) const
protected

Returns the effective geometrical constraints at the last batten computation. This effectives values may be not equal with the wanted values if.

  • if the value is "free"
  • in the case of incomplete computation : collapse, infinite sliding, height of batten will be negative at end points
Handle< Geom2d_BSplineCurve > FairCurve_Batten::Curve ( ) const

Returns the computed curve a 2d BSpline.

virtual void FairCurve_Batten::Delete ( )
virtual
virtual void FairCurve_Batten::Dump ( Standard_OStream o) const
virtual

Prints on the stream o information on the current state of the object.

Private methodes -----------------------------------—

Reimplemented in FairCurve_MinimalVariation.

Standard_Real FairCurve_Batten::GetAngle1 ( ) const

Returns the established first angle.

Standard_Real FairCurve_Batten::GetAngle2 ( ) const

Returns the established second angle.

Standard_Integer FairCurve_Batten::GetConstraintOrder1 ( ) const

Returns the established first constraint order.

Standard_Integer FairCurve_Batten::GetConstraintOrder2 ( ) const

Returns the established second constraint order.

Standard_Boolean FairCurve_Batten::GetFreeSliding ( ) const

Returns the initial free sliding value, false by default. Free sliding is generally more aesthetically pleasing than constrained sliding. However, the computation can fail with values such as angles greater than PI/2. This is because the resulting batten length is theoretically infinite.

Standard_Real FairCurve_Batten::GetHeight ( ) const

Returns the thickness of the lathe.

const gp_Pnt2d& FairCurve_Batten::GetP1 ( ) const

Returns the established location of the point P1.

const gp_Pnt2d& FairCurve_Batten::GetP2 ( ) const

Returns the established location of the point P2.

Standard_Real FairCurve_Batten::GetSlidingFactor ( ) const

Returns the initial sliding factor.

Standard_Real FairCurve_Batten::GetSlope ( ) const

Returns the established slope value.

void FairCurve_Batten::SetAngle1 ( const Standard_Real  Angle1)

Allows you to change the angle Angle1 at the first point, P1. The default setting is 0.

void FairCurve_Batten::SetAngle2 ( const Standard_Real  Angle2)

Allows you to change the angle Angle2 at the second point, P2. The default setting is 0.

void FairCurve_Batten::SetConstraintOrder1 ( const Standard_Integer  ConstraintOrder)

Allows you to change the order of the constraint on the first point. ConstraintOrder has the default setting of 1. The following settings are available:

  • 0-the curve must pass through a point
  • 1-the curve must pass through a point and have a given tangent
  • 2-the curve must pass through a point, have a given tangent and a given curvature. The third setting is only valid for FairCurve_MinimalVariation curves. These constraints, though geometric, represent the mechanical constraints due, for example, to the resistance of the material the actual physical batten is made of.
void FairCurve_Batten::SetConstraintOrder2 ( const Standard_Integer  ConstraintOrder)

Allows you to change the order of the constraint on the second point. ConstraintOrder is initialized with the default setting of 1. The following settings are available:

  • 0-the curve must pass through a point
  • 1-the curve must pass through a point and have a given tangent
  • 2-the curve must pass through a point, have a given tangent and a given curvature. The third setting is only valid for FairCurve_MinimalVariation curves. These constraints, though geometric, represent the mechanical constraints due, for example, to the resistance of the material the actual physical batten is made of.
void FairCurve_Batten::SetFreeSliding ( const Standard_Boolean  FreeSliding)

Freesliding is initialized with the default setting false. When Freesliding is set to true and, as a result, sliding is free, the sliding factor is automatically computed to satisfy the equilibrium of the batten.

void FairCurve_Batten::SetHeight ( const Standard_Real  Height)

Allows you to change the height of the deformation. Raises NegativeValue; – if Height <= 0 if Height <= 0.

void FairCurve_Batten::SetP1 ( const gp_Pnt2d P1)

Allows you to change the location of the point, P1, and in doing so, modify the curve. Warning This method changes the angle as well as the point. Exceptions NullValue if the distance between P1 and P2 is less than or equal to the tolerance value for distance in Precision::Confusion: P1.IsEqual(P2, Precision::Confusion()). The function gp_Pnt2d::IsEqual tests to see if this is the case.

void FairCurve_Batten::SetP2 ( const gp_Pnt2d P2)

Allows you to change the location of the point, P1, and in doing so, modify the curve. Warning This method changes the angle as well as the point. Exceptions NullValue if the distance between P1 and P2 is less than or equal to the tolerance value for distance in Precision::Confusion: P1.IsEqual(P2, Precision::Confusion()). The function gp_Pnt2d::IsEqual tests to see if this is the case.

void FairCurve_Batten::SetSlidingFactor ( const Standard_Real  SlidingFactor)

Allows you to change the ratio SlidingFactor. This compares the length of the batten and the reference length, which is, in turn, a function of the constraints. This modification has one of the following two effects:

  • if you increase the value, it inflates the batten
  • if you decrease the value, it flattens the batten. When sliding is free, the sliding factor is automatically computed to satisfy the equilibrium of the batten. When sliding is imposed, a value is required for the sliding factor. SlidingFactor is initialized with the default setting of 1.
void FairCurve_Batten::SetSlope ( const Standard_Real  Slope)

Allows you to set the slope value, Slope.

Standard_Real FairCurve_Batten::SlidingOfReference ( ) const

Computes the real number value for length Sliding of Reference for new constraints. If you want to give a specific length to a batten curve, use the following syntax: b.SetSlidingFactor(L / b.SlidingOfReference()) where b is the name of the batten curve object.

Standard_Real FairCurve_Batten::SlidingOfReference ( const Standard_Real  D,
const Standard_Real  A1,
const Standard_Real  A2 
) const
protected

Field Documentation

Standard_Integer FairCurve_Batten::Degree
protected
Handle< TColStd_HArray1OfReal > FairCurve_Batten::Flatknots
protected
Handle< TColStd_HArray1OfReal > FairCurve_Batten::Knots
protected
Handle< TColStd_HArray1OfInteger > FairCurve_Batten::Mults
protected
FairCurve_AnalysisCode FairCurve_Batten::myCode
protected
Standard_Real FairCurve_Batten::NewAngle1
protected
Standard_Real FairCurve_Batten::NewAngle2
protected
Standard_Integer FairCurve_Batten::NewConstraintOrder1
protected
Standard_Integer FairCurve_Batten::NewConstraintOrder2
protected
Standard_Boolean FairCurve_Batten::NewFreeSliding
protected
Standard_Real FairCurve_Batten::NewHeight
protected
gp_Pnt2d FairCurve_Batten::NewP1
protected
gp_Pnt2d FairCurve_Batten::NewP2
protected
Standard_Real FairCurve_Batten::NewSlidingFactor
protected
Standard_Real FairCurve_Batten::NewSlope
protected
Standard_Real FairCurve_Batten::OldAngle1
protected
Standard_Real FairCurve_Batten::OldAngle2
protected
Standard_Integer FairCurve_Batten::OldConstraintOrder1
protected
Standard_Integer FairCurve_Batten::OldConstraintOrder2
protected
Standard_Boolean FairCurve_Batten::OldFreeSliding
protected
Standard_Real FairCurve_Batten::OldHeight
protected
gp_Pnt2d FairCurve_Batten::OldP1
protected
gp_Pnt2d FairCurve_Batten::OldP2
protected
Standard_Real FairCurve_Batten::OldSlidingFactor
protected
Standard_Real FairCurve_Batten::OldSlope
protected
Handle< TColgp_HArray1OfPnt2d > FairCurve_Batten::Poles
protected

The documentation for this class was generated from the following file: