0030582: Coding - avoid defining references to properties of NULL objects
[occt.git] / src / GeomAdaptor / GeomAdaptor_SurfaceOfRevolution.cxx
CommitLineData
b311480e 1// Created on: 1993-04-21
2// Created by: Bruno DUMORTIER
3// Copyright (c) 1993-1999 Matra Datavision
973c2be1 4// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 5//
973c2be1 6// This file is part of Open CASCADE Technology software library.
b311480e 7//
d5f74e42 8// This library is free software; you can redistribute it and/or modify it under
9// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 10// by the Free Software Foundation, with special exception defined in the file
11// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12// distribution for complete text of the license and disclaimer of any warranty.
b311480e 13//
973c2be1 14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
7fd59977 16
6b84c3f7 17#include <GeomAdaptor_SurfaceOfRevolution.hxx>
7fd59977 18
42cf5bc1 19#include <Adaptor3d_HCurve.hxx>
7fd59977 20#include <ElCLib.hxx>
6b84c3f7 21#include <GeomAdaptor_HSurfaceOfRevolution.hxx>
22#include <GeomEvaluator_SurfaceOfRevolution.hxx>
42cf5bc1 23#include <Standard_NoSuchObject.hxx>
7fd59977 24
25//=======================================================================
6b84c3f7 26//function : GeomAdaptor_SurfaceOfRevolution
7fd59977 27//purpose :
28//=======================================================================
6b84c3f7 29GeomAdaptor_SurfaceOfRevolution::GeomAdaptor_SurfaceOfRevolution()
30 : myHaveAxis(Standard_False)
7fd59977 31{}
32
33//=======================================================================
6b84c3f7 34//function : GeomAdaptor_SurfaceOfRevolution
7fd59977 35//purpose :
36//=======================================================================
37
6b84c3f7 38GeomAdaptor_SurfaceOfRevolution::GeomAdaptor_SurfaceOfRevolution(
39 const Handle(Adaptor3d_HCurve)& C)
40 : myHaveAxis(Standard_False)
7fd59977 41{
6b84c3f7 42 Load(C);
7fd59977 43}
44
45//=======================================================================
6b84c3f7 46//function : GeomAdaptor_SurfaceOfRevolution
7fd59977 47//purpose :
48//=======================================================================
49
6b84c3f7 50GeomAdaptor_SurfaceOfRevolution::GeomAdaptor_SurfaceOfRevolution(
51 const Handle(Adaptor3d_HCurve)& C,
52 const gp_Ax1& V)
53 : myHaveAxis(Standard_False)
7fd59977 54{
6b84c3f7 55 Load(C);
56 Load(V);
7fd59977 57}
58
59//=======================================================================
60//function : Load
61//purpose :
62//=======================================================================
63
6b84c3f7 64void GeomAdaptor_SurfaceOfRevolution::Load(const Handle(Adaptor3d_HCurve)& C)
7fd59977 65{
66 myBasisCurve = C;
6b84c3f7 67 if (myHaveAxis)
68 Load(myAxis); // to evaluate the new myAxeRev.
7fd59977 69}
70
71//=======================================================================
72//function : Load
73//purpose :
74//=======================================================================
75
6b84c3f7 76void GeomAdaptor_SurfaceOfRevolution::Load(const gp_Ax1& V)
7fd59977 77{
78 myHaveAxis = Standard_True;
79 myAxis = V;
6b84c3f7 80
81 mySurfaceType = GeomAbs_SurfaceOfRevolution;
82 myNestedEvaluator = new GeomEvaluator_SurfaceOfRevolution(myBasisCurve,
83 myAxis.Direction(), myAxis.Location());
84
7fd59977 85 // Eval myAxeRev : axe of revolution ( Determination de Ox).
86 gp_Pnt P,Q;
87 gp_Pnt O = myAxis.Location();
88 gp_Dir Ox;
89 gp_Dir Oz = myAxis.Direction();
90 Standard_Boolean yrev = Standard_False;
91 if (myBasisCurve->GetType() == GeomAbs_Line) {
92 if((myBasisCurve->Line().Direction()).Dot(Oz) < 0.){
93 yrev = Standard_True;
94 Oz.Reverse();
95 }
96 }
97
98 if (myBasisCurve->GetType() == GeomAbs_Circle) {
99 Q = P = (myBasisCurve->Circle()).Location();
100 }
101 else {
102 Standard_Real First = myBasisCurve->FirstParameter();
103 P = Value( 0., 0.);// ce qui ne veut pas dire grand chose
104 if ( GetType() == GeomAbs_Cone) {
105 if ( gp_Lin(myAxis).Distance(P) <= Precision::Confusion())
6b84c3f7 106 Q = ElCLib::Value(1.,myBasisCurve->Line());
7fd59977 107 else
6b84c3f7 108 Q = P;
7fd59977 109 }
110 else if (Precision::IsInfinite(First))
111 Q = P;
112 else
113 Q = Value( 0., First);
114 }
115
116 gp_Dir DZ = myAxis.Direction();
117 O.SetXYZ( O.XYZ() + ( gp_Vec(O,P) * DZ) * DZ.XYZ());
118 if ( gp_Lin(myAxis).Distance(Q) > Precision::Confusion()) {
119 Ox = gp_Dir(Q.XYZ() - O.XYZ());
120 }
121 else {
122 Standard_Real First = myBasisCurve->FirstParameter();
123 Standard_Real Last = myBasisCurve->LastParameter();
124 Standard_Integer Ratio = 1;
125 Standard_Real Dist;
126 gp_Pnt PP;
127 do {
128 PP = myBasisCurve->Value(First+(Last-First)/Ratio);
129 Dist = gp_Lin(myAxis).Distance(PP);
130 Ratio++;
131 }
132 while ( Dist < Precision::Confusion() && Ratio < 100);
133
134 if ( Ratio >= 100 ) {
9775fa61 135 throw Standard_ConstructionError("Adaptor3d_SurfaceOfRevolution : Axe and meridian are confused");
7fd59977 136 }
137 Ox = ( (Oz^gp_Vec(PP.XYZ()-O.XYZ()))^Oz);
138 }
139
140 myAxeRev = gp_Ax3(O,Oz,Ox);
141
142 if (yrev) {
143 myAxeRev.YReverse();
144 }
145 else if (myBasisCurve->GetType() == GeomAbs_Circle) {
146 gp_Dir DC = (myBasisCurve->Circle()).Axis().Direction();
147 if ((Ox.Crossed(Oz)).Dot(DC) < 0.) myAxeRev.ZReverse();
148 }
149}
150
151//=======================================================================
152//function : AxeOfRevolution
153//purpose :
154//=======================================================================
155
6b84c3f7 156gp_Ax1 GeomAdaptor_SurfaceOfRevolution::AxeOfRevolution() const
7fd59977 157{
158 return myAxis;
159}
160
161//=======================================================================
162//function : FirstUParameter
163//purpose :
164//=======================================================================
165
6b84c3f7 166Standard_Real GeomAdaptor_SurfaceOfRevolution::FirstUParameter() const
7fd59977 167{
168 return 0.;
169}
170
171//=======================================================================
172//function : LastUParameter
173//purpose :
174//=======================================================================
175
6b84c3f7 176Standard_Real GeomAdaptor_SurfaceOfRevolution::LastUParameter() const
7fd59977 177{
c6541a0c 178 return 2*M_PI;
7fd59977 179}
180
181//=======================================================================
182//function : FirstVParameter
183//purpose :
184//=======================================================================
185
6b84c3f7 186Standard_Real GeomAdaptor_SurfaceOfRevolution::FirstVParameter() const
7fd59977 187{
188 return myBasisCurve->FirstParameter();
189}
190
191//=======================================================================
192//function : LastVParameter
193//purpose :
194//=======================================================================
195
6b84c3f7 196Standard_Real GeomAdaptor_SurfaceOfRevolution::LastVParameter() const
7fd59977 197{
198 return myBasisCurve->LastParameter();
199}
200
201//=======================================================================
202//function : UContinuity
203//purpose :
204//=======================================================================
205
6b84c3f7 206GeomAbs_Shape GeomAdaptor_SurfaceOfRevolution::UContinuity() const
7fd59977 207{
208 return GeomAbs_CN;
209}
210
211//=======================================================================
212//function : VContinuity
213//purpose :
214//=======================================================================
215
6b84c3f7 216GeomAbs_Shape GeomAdaptor_SurfaceOfRevolution::VContinuity() const
7fd59977 217{
218 return myBasisCurve->Continuity();
219}
220
221//=======================================================================
222//function : NbUIntervals
223//purpose :
224//=======================================================================
225
6b84c3f7 226Standard_Integer GeomAdaptor_SurfaceOfRevolution::NbUIntervals(const GeomAbs_Shape ) const
7fd59977 227{
228 return 1;
229}
230
231//=======================================================================
232//function : NbVIntervals
233//purpose :
234//=======================================================================
235
6b84c3f7 236Standard_Integer GeomAdaptor_SurfaceOfRevolution::NbVIntervals(const GeomAbs_Shape S) const
7fd59977 237{
238 return myBasisCurve->NbIntervals(S);
239}
240
241//=======================================================================
242//function : UIntervals
243//purpose :
244//=======================================================================
245
6b84c3f7 246void GeomAdaptor_SurfaceOfRevolution::UIntervals(TColStd_Array1OfReal& T,
247 const GeomAbs_Shape ) const
7fd59977 248{
249 T(T.Lower() ) = 0.;
c6541a0c 250 T(T.Lower()+1) = 2*M_PI;
7fd59977 251}
252
253
254//=======================================================================
255//function : VIntervals
256//purpose :
257//=======================================================================
258
6b84c3f7 259void GeomAdaptor_SurfaceOfRevolution::VIntervals(TColStd_Array1OfReal& T,
260 const GeomAbs_Shape S) const
7fd59977 261{
262 myBasisCurve->Intervals(T,S);
263}
264
265
266//=======================================================================
267//function : UTrim
268//purpose :
269//=======================================================================
270
aff73fd5 271Handle(Adaptor3d_HSurface) GeomAdaptor_SurfaceOfRevolution::UTrim (const Standard_Real First, const Standard_Real Last, const Standard_Real Tol) const
7fd59977 272{
aff73fd5 273 const Standard_Real Eps = Precision::PConfusion();
274 (void )Eps; (void )First; (void )Last; (void )Tol;
7fd59977 275 Standard_OutOfRange_Raise_if
c6541a0c 276 ( Abs(First) > Eps || Abs(Last - 2.*M_PI) > Eps,
6b84c3f7 277 "GeomAdaptor_SurfaceOfRevolution : UTrim : Parameters out of range");
7fd59977 278
6b84c3f7 279 Handle(GeomAdaptor_HSurfaceOfRevolution) HR = new GeomAdaptor_HSurfaceOfRevolution(
280 GeomAdaptor_SurfaceOfRevolution(myBasisCurve, myAxis));
7fd59977 281 return HR;
282}
283
284
285//=======================================================================
286//function : VTrim
287//purpose :
288//=======================================================================
289
6b84c3f7 290Handle(Adaptor3d_HSurface) GeomAdaptor_SurfaceOfRevolution::VTrim
7fd59977 291(const Standard_Real First,
292 const Standard_Real Last,
293 const Standard_Real Tol) const
294{
7fd59977 295 Handle(Adaptor3d_HCurve) HC = BasisCurve()->Trim(First,Last,Tol);
6b84c3f7 296 Handle(GeomAdaptor_HSurfaceOfRevolution) HR = new GeomAdaptor_HSurfaceOfRevolution(
297 GeomAdaptor_SurfaceOfRevolution(HC, myAxis));
7fd59977 298 return HR;
299}
300
301
302//=======================================================================
303//function : IsUClosed
304//purpose :
305//=======================================================================
306
6b84c3f7 307Standard_Boolean GeomAdaptor_SurfaceOfRevolution::IsUClosed() const
7fd59977 308{
309 return Standard_True;
310}
311
312//=======================================================================
313//function : IsVClosed
314//purpose :
315//=======================================================================
316
6b84c3f7 317Standard_Boolean GeomAdaptor_SurfaceOfRevolution::IsVClosed() const
7fd59977 318{
319 return myBasisCurve->IsClosed();
320}
321
322//=======================================================================
323//function : IsUPeriodic
324//purpose :
325//=======================================================================
326
6b84c3f7 327Standard_Boolean GeomAdaptor_SurfaceOfRevolution::IsUPeriodic() const
7fd59977 328{
329 return Standard_True;
330}
331
332//=======================================================================
333//function : UPeriod
334//purpose :
335//=======================================================================
336
6b84c3f7 337Standard_Real GeomAdaptor_SurfaceOfRevolution::UPeriod() const
7fd59977 338{
c6541a0c 339 return 2*M_PI;
7fd59977 340}
341
342//=======================================================================
343//function : IsVPeriodic
344//purpose :
345//=======================================================================
346
6b84c3f7 347Standard_Boolean GeomAdaptor_SurfaceOfRevolution::IsVPeriodic() const
7fd59977 348{
349 return myBasisCurve->IsPeriodic();
350}
351
352//=======================================================================
353//function : VPeriod
354//purpose :
355//=======================================================================
356
6b84c3f7 357Standard_Real GeomAdaptor_SurfaceOfRevolution::VPeriod() const
7fd59977 358{
359 return myBasisCurve->Period();
360}
361
7fd59977 362//=======================================================================
363//function : UResolution
364//purpose :
365//=======================================================================
366
6b84c3f7 367Standard_Real GeomAdaptor_SurfaceOfRevolution::UResolution
7fd59977 368(const Standard_Real R3d) const
369{
370 return Precision::Parametric(R3d);
371}
372
373//=======================================================================
374//function : VResolution
375//purpose :
376//=======================================================================
377
6b84c3f7 378Standard_Real GeomAdaptor_SurfaceOfRevolution::VResolution
7fd59977 379(const Standard_Real R3d) const
380{
381 return myBasisCurve->Resolution(R3d);
382}
383
384//=======================================================================
385//function : GetType
386//purpose :
387//=======================================================================
388
6b84c3f7 389GeomAbs_SurfaceType GeomAdaptor_SurfaceOfRevolution::GetType() const
7fd59977 390{
6b84c3f7 391 Standard_Real TolConf = Precision::Confusion();
392 Standard_Real TolAng = Precision::Angular();
9f2d9736 393 Standard_Real TolConeSemiAng = Precision::Confusion();
6b84c3f7 394
395 switch (myBasisCurve->GetType()) {
bd05fabf 396 case GeomAbs_Line: {
53dda4e9 397 gp_Ax1 Axe = myBasisCurve->Line().Position();
7fd59977 398
6b84c3f7 399 if (myAxis.IsParallel(Axe, TolAng))
9f2d9736 400 {
401 gp_Pnt P = Value(0., 0.);
402 Standard_Real R = gp_Vec(myAxeRev.Location(), P) * myAxeRev.XDirection();
403 if (R > TolConf)
404 {
405 return GeomAbs_Cylinder;
406 }
407 }
6b84c3f7 408 else if (myAxis.IsNormal(Axe, TolAng))
409 return GeomAbs_Plane;
410 else
411 {
bd05fabf
S
412 Standard_Real uf = myBasisCurve->FirstParameter();
413 Standard_Real ul = myBasisCurve->LastParameter();
414 Standard_Boolean istrim = (!Precision::IsInfinite(uf) &&
6b84c3f7 415 !Precision::IsInfinite(ul));
416 if(istrim)
417 {
418 gp_Pnt pf = myBasisCurve->Value(uf);
419 gp_Pnt pl = myBasisCurve->Value(ul);
420 Standard_Real len = pf.Distance(pl);
421 //on calcule la distance projetee sur l axe.
422 gp_Vec vlin(pf,pl);
423 gp_Vec vaxe(myAxis.Direction());
424 Standard_Real projlen = Abs(vaxe.Dot(vlin));
9f2d9736 425 if ((len - projlen) <= TolConf)
426 {
427 gp_Pnt P = Value(0., 0.);
428 Standard_Real R = gp_Vec(myAxeRev.Location(), P) * myAxeRev.XDirection();
429 if (R > TolConf)
430 {
431 return GeomAbs_Cylinder;
432 }
433 }
434 else if (projlen <= TolConf)
6b84c3f7 435 return GeomAbs_Plane;
7fd59977 436 }
6b84c3f7 437 gp_Vec V(myAxis.Location(), myBasisCurve->Line().Location());
bd05fabf 438 gp_Vec W(Axe.Direction());
9f2d9736 439 gp_Vec AxisDir(myAxis.Direction());
440 Standard_Real proj = Abs(W.Dot(AxisDir));
441 if (Abs(V.DotCross(AxisDir, W)) <= TolConf &&
442 (proj >= TolConeSemiAng && proj <= 1. - TolConeSemiAng))
443 {
6b84c3f7 444 return GeomAbs_Cone;
9f2d9736 445 }
7fd59977 446 }
6b84c3f7 447 break;
bd05fabf 448 }//case GeomAbs_Line:
6b84c3f7 449 //
bd05fabf 450 case GeomAbs_Circle: {
bd05fabf
S
451 Standard_Real MajorRadius, aR;
452 gp_Lin aLin(myAxis);
453 //
53dda4e9 454 gp_Circ C = myBasisCurve->Circle();
455 const gp_Pnt& aLC = C.Location();
bd05fabf
S
456 aR=C.Radius();
457 //
458
6b84c3f7 459 if (!C.Position().IsCoplanar(myAxis, TolConf, TolAng))
460 return GeomAbs_SurfaceOfRevolution;
461 else if(aLin.Distance(aLC) <= TolConf)
462 return GeomAbs_Sphere;
463 else
464 {
bd05fabf 465 MajorRadius = aLin.Distance(aLC);
6b84c3f7 466 if(MajorRadius > aR)
467 {
468 Standard_Real aT = 0., aDx, dX;
469 gp_Pnt aPx;
470
471 aPx = ElCLib::Value(aT, C);
472 aDx = aLin.Distance(aPx);
473 dX = aDx - MajorRadius - aR;
474 if (dX < 0.)
475 dX = -dX;
476 if (dX < TolConf)
477 return GeomAbs_Torus;
bd05fabf 478 }
bd05fabf 479 }
6b84c3f7 480 break;
bd05fabf
S
481 }
482 //
7fd59977 483 default:
bd05fabf 484 break;
7fd59977 485 }
486
6b84c3f7 487 return GeomAbs_SurfaceOfRevolution;
7fd59977 488}
489
490//=======================================================================
491//function : Plane
492//purpose :
493//=======================================================================
494
6b84c3f7 495gp_Pln GeomAdaptor_SurfaceOfRevolution::Plane() const
7fd59977 496{
497 Standard_NoSuchObject_Raise_if
6b84c3f7 498 (GetType() != GeomAbs_Plane, "GeomAdaptor_SurfaceOfRevolution:Plane");
7fd59977 499
500 gp_Ax3 Axe = myAxeRev;
6b84c3f7 501 gp_Pnt aPonCurve = Value(0., 0.);
502 Standard_Real aDot = (aPonCurve.XYZ() - myAxis.Location().XYZ()).Dot(myAxis.Direction().XYZ());
503
504 gp_Pnt P(myAxis.Location().XYZ() + aDot * myAxis.Direction().XYZ());
505 Axe.SetLocation(P);
506 if (Axe.XDirection().Dot(myBasisCurve->Line().Direction()) >= -Precision::Confusion())
7fd59977 507 Axe.XReverse();
7fd59977 508
509 return gp_Pln( Axe);
510}
511
512//=======================================================================
513//function : Cylinder
514//purpose :
515//=======================================================================
516
6b84c3f7 517gp_Cylinder GeomAdaptor_SurfaceOfRevolution::Cylinder() const
7fd59977 518{
519 Standard_NoSuchObject_Raise_if
6b84c3f7 520 (GetType() != GeomAbs_Cylinder, "GeomAdaptor_SurfaceOfRevolution::Cylinder");
7fd59977 521
6b84c3f7 522 gp_Pnt P = Value(0., 0.);
523 Standard_Real R = gp_Vec(myAxeRev.Location(), P) * myAxeRev.XDirection();
524 return gp_Cylinder(myAxeRev, R);
7fd59977 525}
526
527//=======================================================================
528//function : Cone
529//purpose :
530//=======================================================================
531
6b84c3f7 532gp_Cone GeomAdaptor_SurfaceOfRevolution::Cone() const
7fd59977 533{
534 Standard_NoSuchObject_Raise_if
6b84c3f7 535 ( GetType() != GeomAbs_Cone, "GeomAdaptor_SurfaceOfRevolution:Cone");
7fd59977 536
537 gp_Ax3 Axe = myAxeRev;
538 gp_Dir ldir = (myBasisCurve->Line()).Direction();
539 Standard_Real Angle = (Axe.Direction()).Angle(ldir);
540 gp_Pnt P0 = Value(0., 0.);
541 Standard_Real R = (Axe.Location()).Distance(P0);
542 if ( R >= Precision::Confusion()) {
543 gp_Pnt O = Axe.Location();
544 gp_Vec OP0(O,P0);
545 Standard_Real t = OP0.Dot(Axe.XDirection());
546 t /= ldir.Dot(Axe.XDirection());
547 OP0.Add(-t * gp_Vec(ldir));
548 if ( OP0.Dot(Axe.Direction()) > 0.) Angle = -Angle;
549 }
550 return gp_Cone( Axe, Angle, R);
551}
552
553
554//=======================================================================
555//function : Sphere
556//purpose :
557//=======================================================================
558
6b84c3f7 559gp_Sphere GeomAdaptor_SurfaceOfRevolution::Sphere() const
7fd59977 560{
561 Standard_NoSuchObject_Raise_if
6b84c3f7 562 ( GetType() != GeomAbs_Sphere, "GeomAdaptor_SurfaceOfRevolution:Sphere");
7fd59977 563
564 gp_Circ C = myBasisCurve->Circle();
565 gp_Ax3 Axe = myAxeRev;
6b84c3f7 566 Axe.SetLocation(C.Location());
567 return gp_Sphere(Axe, C.Radius());
7fd59977 568}
569
570
571//=======================================================================
572//function : Torus
573//purpose :
574//=======================================================================
575
6b84c3f7 576gp_Torus GeomAdaptor_SurfaceOfRevolution::Torus() const
7fd59977 577{
578 Standard_NoSuchObject_Raise_if
6b84c3f7 579 (GetType() != GeomAbs_Torus, "GeomAdaptor_SurfaceOfRevolution:Torus");
7fd59977 580
581 gp_Circ C = myBasisCurve->Circle();
582 Standard_Real MajorRadius = gp_Lin(myAxis).Distance(C.Location());
6b84c3f7 583 return gp_Torus(myAxeRev, MajorRadius, C.Radius());
7fd59977 584}
585
586//=======================================================================
587//function : VDegree
588//purpose :
589//=======================================================================
590
6b84c3f7 591Standard_Integer GeomAdaptor_SurfaceOfRevolution::VDegree() const
7fd59977 592{
593 return myBasisCurve->Degree();
594}
595
596//=======================================================================
597//function : NbVPoles
598//purpose :
599//=======================================================================
600
6b84c3f7 601Standard_Integer GeomAdaptor_SurfaceOfRevolution::NbVPoles() const
7fd59977 602{
6b84c3f7 603 return myBasisCurve->NbPoles();
7fd59977 604}
605
7fd59977 606//=======================================================================
607//function : NbVKnots
608//purpose :
609//=======================================================================
610
6b84c3f7 611Standard_Integer GeomAdaptor_SurfaceOfRevolution::NbVKnots() const
7fd59977 612{
9775fa61 613 throw Standard_NoSuchObject("GeomAdaptor_SurfaceOfRevolution::NbVKnots");
7fd59977 614}
615
616
617
618//=======================================================================
619//function : IsURational
620//purpose :
621//=======================================================================
622
6b84c3f7 623Standard_Boolean GeomAdaptor_SurfaceOfRevolution::IsURational() const
7fd59977 624{
9775fa61 625 throw Standard_NoSuchObject("GeomAdaptor_SurfaceOfRevolution::IsURational");
7fd59977 626}
627
628//=======================================================================
629//function : IsVRational
630//purpose :
631//=======================================================================
632
6b84c3f7 633Standard_Boolean GeomAdaptor_SurfaceOfRevolution::IsVRational() const
7fd59977 634{
9775fa61 635 throw Standard_NoSuchObject("GeomAdaptor_SurfaceOfRevolution::IsVRational");
7fd59977 636}
637
638
639//=======================================================================
640//function : Bezier
641//purpose :
642//=======================================================================
643
6b84c3f7 644Handle(Geom_BezierSurface) GeomAdaptor_SurfaceOfRevolution::Bezier() const
7fd59977 645{
9775fa61 646 throw Standard_NoSuchObject("GeomAdaptor_SurfaceOfRevolution::Bezier");
7fd59977 647}
648
649
650//=======================================================================
651//function : BSpline
652//purpose :
653//=======================================================================
654
6b84c3f7 655Handle(Geom_BSplineSurface) GeomAdaptor_SurfaceOfRevolution::BSpline() const
7fd59977 656{
9775fa61 657 throw Standard_NoSuchObject("GeomAdaptor_SurfaceOfRevolution::BSpline");
7fd59977 658}
659
7fd59977 660//=======================================================================
661//function : Axis
662//purpose :
663//=======================================================================
664
6b84c3f7 665const gp_Ax3& GeomAdaptor_SurfaceOfRevolution::Axis() const
7fd59977 666{
667 return myAxeRev;
668}
669
7fd59977 670//=======================================================================
671//function : BasisCurve
672//purpose :
673//=======================================================================
674
6b84c3f7 675Handle(Adaptor3d_HCurve) GeomAdaptor_SurfaceOfRevolution::BasisCurve() const
7fd59977 676{
677 return myBasisCurve;
678}