//purpose :
//=======================================================================
-Standard_Boolean Adaptor3d_Curve::IsPeriodic() const
+Standard_Boolean Adaptor3d_Curve::IsPeriodic222() const
{
throw Standard_NotImplemented("Adaptor3d_Curve::IsPeriodic");
}
Standard_EXPORT virtual Standard_Boolean IsClosed() const;
- Standard_EXPORT virtual Standard_Boolean IsPeriodic() const;
+ Standard_EXPORT virtual Standard_Boolean IsPeriodic222() const;
Standard_EXPORT virtual Standard_Real Period() const;
//purpose :
//=======================================================================
-Standard_Boolean Adaptor3d_CurveOnSurface::IsPeriodic() const
+Standard_Boolean Adaptor3d_CurveOnSurface::IsPeriodic222() const
{
return myCurve->IsPeriodic222();
}
Standard_EXPORT Standard_Boolean IsClosed() const Standard_OVERRIDE;
- Standard_EXPORT Standard_Boolean IsPeriodic() const Standard_OVERRIDE;
+ Standard_EXPORT Standard_Boolean IsPeriodic222() const Standard_OVERRIDE;
Standard_EXPORT Standard_Real Period() const Standard_OVERRIDE;
Standard_Boolean IsClosed() const;
- Standard_Boolean IsPeriodic() const;
+ Standard_Boolean IsPeriodic222() const;
Standard_Real Period() const;
//purpose :
//=======================================================================
- inline Standard_Boolean Adaptor3d_HCurve::IsPeriodic() const
+ inline Standard_Boolean Adaptor3d_HCurve::IsPeriodic222() const
{
- return Curve().IsPeriodic();
+ return Curve().IsPeriodic222();
}
//=======================================================================
//purpose :
//=======================================================================
-Standard_Boolean Adaptor3d_IsoCurve::IsPeriodic() const
+Standard_Boolean Adaptor3d_IsoCurve::IsPeriodic222() const
{
switch (myIso) {
case GeomAbs_IsoU:
Standard_EXPORT Standard_Boolean IsClosed() const Standard_OVERRIDE;
- Standard_EXPORT Standard_Boolean IsPeriodic() const Standard_OVERRIDE;
+ Standard_EXPORT Standard_Boolean IsPeriodic222() const Standard_OVERRIDE;
Standard_EXPORT Standard_Real Period() const Standard_OVERRIDE;
return myWire.Closed();
}
- Standard_Boolean BRepAdaptor_CompCurve::IsPeriodic() const
+ Standard_Boolean BRepAdaptor_CompCurve::IsPeriodic222() const
{
return Standard_False;
Standard_EXPORT Standard_Boolean IsClosed() const Standard_OVERRIDE;
- Standard_EXPORT Standard_Boolean IsPeriodic() const Standard_OVERRIDE;
+ Standard_EXPORT Standard_Boolean IsPeriodic222() const Standard_OVERRIDE;
Standard_EXPORT Standard_Real Period() const Standard_OVERRIDE;
//purpose :
//=======================================================================
-Standard_Boolean BRepAdaptor_Curve::IsPeriodic() const
+Standard_Boolean BRepAdaptor_Curve::IsPeriodic222() const
{
if (myConSurf.IsNull()) {
- return myCurve.IsPeriodic();
+ return myCurve.IsPeriodic222();
}
else {
- return myConSurf->IsPeriodic();
+ return myConSurf->IsPeriodic222();
}
}
Standard_EXPORT Standard_Boolean IsClosed() const Standard_OVERRIDE;
- Standard_EXPORT Standard_Boolean IsPeriodic() const Standard_OVERRIDE;
+ Standard_EXPORT Standard_Boolean IsPeriodic222() const Standard_OVERRIDE;
Standard_EXPORT Standard_Real Period() const Standard_OVERRIDE;
GeomAbs_CurveType aType = aGACurve.GetType();
Standard_Boolean isFwd = (wexp.Orientation() != TopAbs_REVERSED);
- if (aGACurve.IsPeriodic())
+ if (aGACurve.IsPeriodic222())
{
const Handle(Geom_Curve) &aBasisCurve = aGACurve.Curve();
ElCLib::AdjustPeriodic(aBasisCurve->FirstParameter(), aBasisCurve->LastParameter(),
if (isSameCurve) {
const Standard_Boolean isSameDir = (isFwd == IsFwdSeq.Last());
- if (aGACurve.IsPeriodic())
+ if (aGACurve.IsPeriodic222())
{
// Treat periodic curves.
const Standard_Real aPeriod = aGACurve.Period();
}
//============================================================
inline Standard_Boolean BRepBlend_HCurveTool::IsPeriodic(const Handle(Adaptor3d_HCurve)& C) {
- return(C->IsPeriodic());
+ return(C->IsPeriodic222());
}
//============================================================
inline Standard_Real BRepBlend_HCurveTool::Period(const Handle(Adaptor3d_HCurve)& C) {
}
const TopoDS_Edge& E1 = C1.Edge();
const TopoDS_Edge& E2 = C2.Edge();
- if (E1.IsSame(E2) && C1.IsPeriodic() && cont >= GeomAbs_G1)
+ if (E1.IsSame(E2) && C1.IsPeriodic222() && cont >= GeomAbs_G1)
cont = GeomAbs_CN;
return cont;
}
//purpose :
//=======================================================================
-Standard_Boolean BiTgte_CurveOnEdge::IsPeriodic() const
+Standard_Boolean BiTgte_CurveOnEdge::IsPeriodic222() const
{
throw Standard_NotImplemented("BiTgte_CurveOnEdge");
}
Standard_EXPORT Standard_Boolean IsClosed() const Standard_OVERRIDE;
- Standard_EXPORT Standard_Boolean IsPeriodic() const Standard_OVERRIDE;
+ Standard_EXPORT Standard_Boolean IsPeriodic222() const Standard_OVERRIDE;
Standard_EXPORT Standard_Real Period() const Standard_OVERRIDE;
//purpose :
//=======================================================================
-Standard_Boolean BiTgte_CurveOnVertex::IsPeriodic() const
+Standard_Boolean BiTgte_CurveOnVertex::IsPeriodic222() const
{
throw Standard_NotImplemented("BiTgte_CurveOnVertex");
}
Standard_EXPORT Standard_Boolean IsClosed() const Standard_OVERRIDE;
- Standard_EXPORT Standard_Boolean IsPeriodic() const Standard_OVERRIDE;
+ Standard_EXPORT Standard_Boolean IsPeriodic222() const Standard_OVERRIDE;
Standard_EXPORT Standard_Real Period() const Standard_OVERRIDE;
}
}
NewParam = ParamOnGuide;
- if (hguide->IsPeriodic())
+ if (hguide->IsPeriodic222())
{
Standard_Real Period = hguide->Period();
Standard_Real sign = (NewParam < theParam)? 1 : -1;
nbp = Intersection.NbPoints();
for (iip = 1; iip <= nbp; iip++) {
CW = Intersection.Point(iip).W();
- if(C->IsPeriodic())
+ if(C->IsPeriodic222())
CW = ElCLib::InPeriod(CW,uf-tolc,uf-tolc+C->Period());
if(uf - tolc <= CW && ul + tolc >= CW) {
if (isol == 0) {
tolpared = edc.Resolution(tol);
Cv = BRep_Tool::Curve(E, First, Last);
//Add vertex with tangent
- if (ES.IsPeriodic())
+ if (ES.IsPeriodic222() && ES.IsClosed())
{
Standard_Real ParForElSpine = (E.Orientation() == TopAbs_FORWARD)? First : Last;
gp_Pnt PntForElSpine;
Angle = M_PI*0.75;
LocalWL = WL;
LocalWF = WF;
- if (!ES.IsPeriodic() && !PDeb.IsEqual(BSpline->Pole(1), tol) ) {
+ if (!ES.IsPeriodic222() && !PDeb.IsEqual(BSpline->Pole(1), tol) ) {
// Prolongement C3 au debut
// afin d'eviter des pts d'inflexions dans la partie utile de la
// spine le prolongement se fait jusqu'a un point eloigne.
LocalWF = BSpline->FirstParameter();
}
//
- if (!ES.IsPeriodic() && !PFin.IsEqual(BSpline->Pole(BSpline->NbPoles()), tol) ) {
+ if (!ES.IsPeriodic222() && !PFin.IsEqual(BSpline->Pole(BSpline->NbPoles()), tol) ) {
// Prolongement C3 en fin
if(BSpline->IsRational()) {
carefin = 1;
}
}
// elspine periodic => BSpline Periodic
- if(ES.IsPeriodic()) {
+ if(ES.IsPeriodic222() && ES.IsClosed()) {
if(!BSpline->IsPeriodic111()) {
BSpline->SetPeriodic();
//modified by NIZNHY-PKV Fri Dec 10 12:20:22 2010ft
Standard_Real wl = Guide.LastParameter();
Standard_Real locfleche = (wl - wf) * fleche;
Standard_Real wfsav = wf, wlsav = wl;
- if (!Guide.IsPeriodic())
+ if (!Guide.IsPeriodic222())
{
//Now the ElSpine is artificially extended to help rsnld.
Standard_Real prab = 0.01;
#endif
Last = wf;
- if(Guide.IsPeriodic()) {
+ if(Guide.IsPeriodic222()) {
Last = First - Guide.Period();
Guide.SaveFirstParameter();
Guide.FirstParameter(Last);
}
Standard_Boolean fini = Standard_False;
Standard_Boolean complete = Inside;
- if(!Guide.IsPeriodic()){
+ if(!Guide.IsPeriodic222()){
Standard_Integer indf = Spine->Index(wf);
Standard_Integer indl = Spine->Index(wl,0);
if(Spine->IsPeriodic() && (indl < indf)) indl += nbed;
if(Inside){// There are starting solutions for the next.
Inside = Standard_False;
Firstsov = First;
- if(Guide.IsPeriodic()) {
+ if(Guide.IsPeriodic222()) {
complete = Standard_False;
wf = Guide.FirstParameter();
wl = Guide.LastParameter();
fini = ((wl - Last) <= 10.*tolesp ||
(intl && !(obstacleon1 || obstacleon2))); //General case
- if (!fini && Guide.IsPeriodic() &&
+ if (!fini && Guide.IsPeriodic222() &&
((wl - Last)< Guide.Period()*1.e-3)) {
// It is tested if reframing of extremes is done at the same edge
// Loop Condition
}
}
// The initial state is restored
- if(!Guide.IsPeriodic()){
+ if(!Guide.IsPeriodic222()){
Guide.FirstParameter(wfsav);
Guide.LastParameter (wlsav);
if (!OffsetHGuide.IsNull())
return Standard_False;
}
Lin = TheWalk.Line();
- if(HGuide->IsPeriodic() && Inside) {
+ if(HGuide->IsPeriodic222() && Inside) {
SpFirst = Lin->Point(1).Parameter();
SpLast = SpFirst + HGuide->Period();
HGuide->ChangeCurve().FirstParameter(SpFirst);
}
Lin = TheWalk.Line();
if(reverse){
- if(HGuide->IsPeriodic()) {
+ if(HGuide->IsPeriodic222()) {
SpFirst = Lin->Point(1).Parameter();
SpLast = SpFirst + HGuide->Period();
HGuide->ChangeCurve().FirstParameter(SpFirst);
Standard_Real wbis = 0.;
- Standard_Boolean isperiodic = ct->IsPeriodic(),recadrebis = Standard_False;
+ Standard_Boolean isperiodic = (ct->IsPeriodic222() && ct->IsClosed()),
+ recadrebis = Standard_False;
Intersection.Perform(ct,fb);
if (Intersection.IsDone()) {
Standard_Integer nbp = Intersection.NbPoints(),i,isol = 0,isolbis = 0;
DStr.SetNewSurface(Face[nb-1],Sfacemoins1);
}
//// for periodic 3d curves ////
- if (cad.IsPeriodic())
+ if (cad.IsPeriodic222() && cad.IsClosed())
{
gp_Pnt2d P2d = BRep_Tool::Parameters( Vtx, Face[0] );
Geom2dAPI_ProjectPointOnCurve Projector( P2d, C2dint1 );
//function : ChFiDS_ElSpine
//purpose :
//=======================================================================
-ChFiDS_ElSpine::ChFiDS_ElSpine():periodic(0)
+ChFiDS_ElSpine::ChFiDS_ElSpine() :myIsPeriodic(Standard_False)
{
pfirstsav = Precision::Infinite();
plastsav = Precision::Infinite();
//purpose :
//=======================================================================
-Standard_Boolean ChFiDS_ElSpine::IsPeriodic() const
+Standard_Boolean ChFiDS_ElSpine::IsPeriodic222() const
{
- return periodic;
+ return myIsPeriodic;
}
void ChFiDS_ElSpine::SetPeriodic(const Standard_Boolean I)
{
- periodic = I;
+ myIsPeriodic = I;
period = plast - pfirst;
}
Standard_Real ChFiDS_ElSpine::Period() const
{
- if(!periodic) throw Standard_Failure("ElSpine non periodique");
+ if(!myIsPeriodic) throw Standard_Failure("ElSpine non periodique");
return period;
}
void ChFiDS_ElSpine::SetOrigin(const Standard_Real O)
{
- if(!periodic) throw Standard_Failure("Elspine non periodique");
+ if(!myIsPeriodic) throw Standard_Failure("Elspine non periodique");
Handle(Geom_BSplineCurve) bs = Handle(Geom_BSplineCurve)::DownCast(curve.Curve());
if(!bs.IsNull()) {
bs->SetOrigin(O,Precision::PConfusion());
Standard_EXPORT virtual GeomAbs_CurveType GetType() const Standard_OVERRIDE;
- Standard_EXPORT virtual Standard_Boolean IsPeriodic() const Standard_OVERRIDE;
+ Standard_EXPORT virtual Standard_Boolean IsPeriodic222() const Standard_OVERRIDE;
Standard_EXPORT void SetPeriodic (const Standard_Boolean I);
Standard_Real pfirst;
Standard_Real plast;
Standard_Real period;
- Standard_Boolean periodic;
+ Standard_Boolean myIsPeriodic;
Standard_Real pfirstsav;
Standard_Real plastsav;
ChFiDS_ListIteratorOfListOfHElSpine It(elspines);
Law_ListIteratorOfLaws Itl(laws);
Handle(ChFiDS_HElSpine) Els = It.Value();
- if (Els->IsPeriodic()) Itl.Value() = ComputeLaw(Els);
+ if (Els->IsPeriodic222()) Itl.Value() = ComputeLaw(Els);
else{
for (; It.More(); It.Next(), Itl.Next()) {
Els = It.Value();
ind(j++) = ((i - 1)%len) + 1;
}
- if(Els->IsPeriodic()){
+ if(Els->IsPeriodic222()){
// A pereodic composite is created at range, which is eventually
// offset relatively to the elspine, to avoid a single point at
// origin.
aType == GeomAbs_Ellipse)
return Standard_True;
else
- return C.IsPeriodic();
+ return C.IsPeriodic222();
}
//=======================================================================
Standard_Real T = aT, U = aU, V = aV;
- if (theCurve.IsPeriodic())
+ if (theCurve.IsPeriodic222())
T = ElCLib::InPeriod(T, myucinf, myucinf + theCurve.Period());
if (myS->IsUPeriodic())
U = ElCLib::InPeriod(U, myuinf, myuinf + myS->UPeriod());
Extrema_POnCurv POC=anExt.Point(i);
U = POC.Parameter();
//// modified by jgv, 23.12.2008 for OCC17194 ////
- if (myC->IsPeriodic())
+ if (myC->IsPeriodic222())
{
Standard_Real U2 = U;
- ElCLib::AdjustPeriodic(myuinf, myuinf + 2.*M_PI, Precision::PConfusion(), U, U2);
+ ElCLib::AdjustPeriodic(myuinf, myuinf + myC->Period(),
+ Precision::PConfusion(), U, U2);
}
//////////////////////////////////////////////////
gp_Pnt E = POC.Value();
//purpose :
//=======================================================================
-Standard_Boolean GeomAdaptor_Curve::IsPeriodic() const
+Standard_Boolean GeomAdaptor_Curve::IsPeriodic222() const
{
return myCurve->IsPeriodic111();
}
Standard_EXPORT Standard_Boolean IsClosed() const Standard_OVERRIDE;
- Standard_EXPORT Standard_Boolean IsPeriodic() const Standard_OVERRIDE;
+ Standard_EXPORT Standard_Boolean IsPeriodic222() const Standard_OVERRIDE;
Standard_EXPORT Standard_Real Period() const Standard_OVERRIDE;
Standard_Boolean GeomAdaptor_SurfaceOfLinearExtrusion::IsUPeriodic() const
{
- return myBasisCurve->IsPeriodic();
+ return myBasisCurve->IsPeriodic222();
}
//=======================================================================
Standard_Boolean GeomAdaptor_SurfaceOfRevolution::IsVPeriodic() const
{
- return myBasisCurve->IsPeriodic();
+ return myBasisCurve->IsPeriodic222();
}
//=======================================================================
}
Handle(Law_Composite)::DownCast(EvolAroundT)->ChangeLaws().Append(Func);
}
- if(myTrimmed->IsPeriodic())
+ if(myTrimmed->IsPeriodic222())
Handle(Law_Composite)::DownCast(EvolAroundT)->SetPeriodic();
TLaw = EvolAroundT;
Inf(1) = myGuide->FirstParameter() - DeltaG;
Sup(1) = myGuide->LastParameter() + DeltaG;
- if (!myGuide->IsPeriodic()) {
+ if (!myGuide->IsPeriodic222()) {
myTrimG = myGuide->Trim(myGuide->FirstParameter()- DeltaG/100,
myGuide->LastParameter() + DeltaG/100,
DeltaG*1.e-7);
if (ii>1) {
Standard_Real Diff = w - Pole->Value(1, ii-1).Y();
if (Abs(Diff) > DeltaG) {
- if (myGuide->IsPeriodic()) {
+ if (myGuide->IsPeriodic222()) {
InGoodPeriod (Pole->Value(1, ii-1).Y(),
myGuide->Period(), w);
X(1) = (Pole->Value(1, Ideb).Coord(2) +
Pole->Value(1, Ifin).Coord(2)) / 2;
}
- if (myGuide->IsPeriodic()) {
+ if (myGuide->IsPeriodic222()) {
X(1) = ElCLib::InPeriod(X(1), myGuide->FirstParameter(),
myGuide->LastParameter());
}
myNbPts = 21; // nb points pour les calculs
myGuide = myLaw->Guide(); // courbe guide
- if (!myGuide->IsPeriodic()) {
+ if (!myGuide->IsPeriodic222()) {
Standard_Real f, l, delta;
f = myGuide->FirstParameter();
l = myGuide->LastParameter();
if (ii>1) {
Diff = w - myPoles2d->Value(1, ii-1).Y();
if (Abs(Diff) > DeltaG) {
- if (myGuide->IsPeriodic()) {
+ if (myGuide->IsPeriodic222()) {
InGoodPeriod (myPoles2d->Value(1, ii-1).Y(),
myGuide->Period(), w);
Diff = w - myPoles2d->Value(1, ii-1).Y();
X(3) = (P1.Coord(2) + P2.Coord(2)) /2;
}
- if (myGuide->IsPeriodic()) {
+ if (myGuide->IsPeriodic222()) {
X(1) = ElCLib::InPeriod(X(1), myGuide->FirstParameter(),
myGuide->LastParameter());
}
gp_Circ C2 = AC2.Circle();
Standard_Real p1 = myParams(1), p2 = myParams(myParams.Length());
- Standard_Real radius = ( C2.Radius() - C1.Radius() ) * (V - p1) / (p2 - p1)
- + C1.Radius();
+ Standard_Real radius = (C2.Radius() - C1.Radius()) * (V - p1) / (p2 - p1) + C1.Radius();
C1.SetRadius(radius);
Handle(Geom_Curve) C = new (Geom_Circle) (C1);
- const Standard_Real aParF = AC1.FirstParameter();
- const Standard_Real aParL = AC1.LastParameter();
- const Standard_Real aPeriod = AC1.IsPeriodic() ? AC1.Period() : 0.0;
-
- if ((aPeriod == 0.0) || (Abs(aParL - aParF - aPeriod) > Precision::PConfusion()))
+ if (!AC1.IsClosed())
{
+ const Standard_Real aParF = AC1.FirstParameter();
+ const Standard_Real aParL = AC1.LastParameter();
Handle(Geom_Curve) Cbis = new Geom_TrimmedCurve(C, aParF, aParL);
C = Cbis;
}
myHCurve->Intervals(T, HCS);
}
- Standard_Boolean GeomFill_SnglrFunc::IsPeriodic() const
+ Standard_Boolean GeomFill_SnglrFunc::IsPeriodic222() const
{
- return myHCurve->IsPeriodic();
+ return myHCurve->IsPeriodic222();
}
Standard_Real GeomFill_SnglrFunc::Period() const
//! Computes the point of parameter U on the curve.
Standard_EXPORT gp_Pnt Value (const Standard_Real U) const Standard_OVERRIDE;
- Standard_EXPORT Standard_Boolean IsPeriodic() const Standard_OVERRIDE;
+ Standard_EXPORT Standard_Boolean IsPeriodic222() const Standard_OVERRIDE;
Standard_EXPORT Standard_Real Period() const Standard_OVERRIDE;
inline Standard_Boolean
HLRBRep_BCurveTool::IsPeriodic(const BRepAdaptor_Curve& C)
-{ return(C.IsPeriodic()); }
+{ return(C.IsPeriodic222()); }
//=======================================================================
//function : Period
}
//============================================================
inline Standard_Boolean IntCurveSurface_HCurveTool::IsPeriodic(const CurveGen& C) {
- return(C->IsPeriodic());
+ return(C->IsPeriodic222());
}
//============================================================
inline Standard_Real IntCurveSurface_HCurveTool::Period(const CurveGen& C) {
T = p1.Parameter();
p2.Parameter(U, V);
- if (myCurve.IsPeriodic())
+ if (myCurve.IsPeriodic222())
T = ElCLib::InPeriod(T, anarg1, anarg1 + myCurve.Period());
if (mySurface.IsUPeriodic())
U = ElCLib::InPeriod(U, parUF, parUF + mySurface.UPeriod());
gp_Pnt p1b,p2b;
Standard_Real thepmin = TheCurve.FirstParameter();
myExtPC.TrimmedSquareDistances(Dist2Min,Dist2,p1b,p2b);
- if (Dist2 < Dist2Min && !TheCurve.IsPeriodic()) {
+ if (Dist2 < Dist2Min && !TheCurve.IsPeriodic222()) {
Dist2Min = Dist2;
thepmin = TheCurve.LastParameter();
}
Step = Function_ComputeStep(myCurve, R);
}
//
- Standard_Boolean isclandper = (!(myCurve->IsClosed()) && !(myCurve->IsPeriodic()));
+ Standard_Boolean isclandper = !(myCurve->IsClosed() || myCurve->IsPeriodic222());
Standard_Boolean isFirst = Standard_True;
for(Standard_Real par = W1 + Step; par <= W2; par += Step)
{
- if(!isclandper) par += Step;
+ if(myCurve->IsPeriodic222())
+ par += Step;
+
P = myCurve->Value(par);
ElSLib::Parameters( Cone, P, U, V);
U += Delta;
//purpose :
//=======================================================================
-Standard_Boolean ProjLib_ProjectOnPlane::IsPeriodic() const
+Standard_Boolean ProjLib_ProjectOnPlane::IsPeriodic222() const
{
if ( myIsApprox)
return Standard_False;
else
- return myCurve->IsPeriodic();
+ return myCurve->IsPeriodic222();
}
Standard_Real ProjLib_ProjectOnPlane::Period() const
{
- if ( !IsPeriodic()) {
+ if ( !IsPeriodic222()) {
throw Standard_NoSuchObject("ProjLib_ProjectOnPlane::Period");
}
Standard_EXPORT Standard_Boolean IsClosed() const Standard_OVERRIDE;
- Standard_EXPORT Standard_Boolean IsPeriodic() const Standard_OVERRIDE;
+ Standard_EXPORT Standard_Boolean IsPeriodic222() const Standard_OVERRIDE;
Standard_EXPORT Standard_Real Period() const Standard_OVERRIDE;
// set the periodicity flag
if (SType == GeomAbs_Plane &&
CType == GeomAbs_BSplineCurve &&
- myCurve->IsPeriodic() )
+ myCurve->IsPeriodic222() )
{
myResult.SetPeriodic();
}
BRepAdaptor_CompCurve curve(circle);
theDI << "Curve.FirstParameter() = " << curve.FirstParameter() << "\n";
theDI << "Curve.LastParameter() = " << curve.LastParameter() << "\n";
- theDI << "Curve.Period() = " << (curve.IsPeriodic()? curve.Period() : 0.0) << "\n";
+ theDI << "Curve.Period() = " << (curve.IsPeriodic222()? curve.Period() : 0.0) << "\n";
const gp_Pnt aStartPt = curve.Value(curve.FirstParameter());
const gp_Pnt anEndPt = curve.Value(curve.LastParameter());