1 // Created on: 1993-07-23
2 // Created by: Remi LEQUETTE
3 // Copyright (c) 1993-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
6 // This file is part of Open CASCADE Technology software library.
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
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.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
18 #include <BRepBuilderAPI_MakeEdge.hxx>
19 #include <Geom2d_Curve.hxx>
20 #include <Geom_Curve.hxx>
21 #include <Geom_Surface.hxx>
22 #include <gp_Circ.hxx>
23 #include <gp_Elips.hxx>
24 #include <gp_Hypr.hxx>
26 #include <gp_Parab.hxx>
28 #include <StdFail_NotDone.hxx>
29 #include <TopoDS_Edge.hxx>
30 #include <TopoDS_Vertex.hxx>
32 //=======================================================================
33 //function : BRepBuilderAPI_MakeEdge
35 //=======================================================================
36 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge()
39 //=======================================================================
40 //function : BRepBuilderAPI_MakeEdge
42 //=======================================================================
44 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const TopoDS_Vertex& V1,
45 const TopoDS_Vertex& V2)
48 if ( myMakeEdge.IsDone()) {
50 myShape = myMakeEdge.Shape();
55 //=======================================================================
56 //function : BRepBuilderAPI_MakeEdge
58 //=======================================================================
60 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Pnt& P1,
64 if ( myMakeEdge.IsDone()) {
66 myShape = myMakeEdge.Shape();
71 //=======================================================================
72 //function : BRepBuilderAPI_MakeEdge
74 //=======================================================================
76 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Lin& L)
79 if ( myMakeEdge.IsDone()) {
81 myShape = myMakeEdge.Shape();
86 //=======================================================================
87 //function : BRepBuilderAPI_MakeEdge
89 //=======================================================================
91 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Lin& L,
92 const Standard_Real p1,
93 const Standard_Real p2)
96 if ( myMakeEdge.IsDone()) {
98 myShape = myMakeEdge.Shape();
103 //=======================================================================
104 //function : BRepBuilderAPI_MakeEdge
106 //=======================================================================
108 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Lin& L,
111 : myMakeEdge(L,P1,P2)
113 if ( myMakeEdge.IsDone()) {
115 myShape = myMakeEdge.Shape();
120 //=======================================================================
121 //function : BRepBuilderAPI_MakeEdge
123 //=======================================================================
125 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Lin& L,
126 const TopoDS_Vertex& V1,
127 const TopoDS_Vertex& V2)
128 : myMakeEdge(L,V1,V2)
130 if ( myMakeEdge.IsDone()) {
132 myShape = myMakeEdge.Shape();
137 //=======================================================================
138 //function : BRepBuilderAPI_MakeEdge
140 //=======================================================================
142 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Circ& C)
145 if ( myMakeEdge.IsDone()) {
147 myShape = myMakeEdge.Shape();
152 //=======================================================================
153 //function : BRepBuilderAPI_MakeEdge
155 //=======================================================================
157 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Circ& C,
158 const Standard_Real p1,
159 const Standard_Real p2)
160 : myMakeEdge(C,p1,p2)
162 if ( myMakeEdge.IsDone()) {
164 myShape = myMakeEdge.Shape();
169 //=======================================================================
170 //function : BRepBuilderAPI_MakeEdge
172 //=======================================================================
174 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Circ& C ,
177 : myMakeEdge(C,P1,P2)
179 if ( myMakeEdge.IsDone()) {
181 myShape = myMakeEdge.Shape();
186 //=======================================================================
187 //function : BRepBuilderAPI_MakeEdge
189 //=======================================================================
191 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Circ& C,
192 const TopoDS_Vertex& V1,
193 const TopoDS_Vertex& V2)
194 : myMakeEdge(C,V1,V2)
196 if ( myMakeEdge.IsDone()) {
198 myShape = myMakeEdge.Shape();
203 //=======================================================================
204 //function : BRepBuilderAPI_MakeEdge
206 //=======================================================================
208 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Elips& E)
211 if ( myMakeEdge.IsDone()) {
213 myShape = myMakeEdge.Shape();
218 //=======================================================================
219 //function : BRepBuilderAPI_MakeEdge
221 //=======================================================================
223 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Elips& E,
224 const Standard_Real p1,
225 const Standard_Real p2)
226 : myMakeEdge(E,p1,p2)
228 if ( myMakeEdge.IsDone()) {
230 myShape = myMakeEdge.Shape();
235 //=======================================================================
236 //function : BRepBuilderAPI_MakeEdge
238 //=======================================================================
240 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Elips& E,
243 : myMakeEdge(E,P1,P2)
245 if ( myMakeEdge.IsDone()) {
247 myShape = myMakeEdge.Shape();
252 //=======================================================================
253 //function : BRepBuilderAPI_MakeEdge
255 //=======================================================================
257 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Elips& E,
258 const TopoDS_Vertex& V1,
259 const TopoDS_Vertex& V2)
260 : myMakeEdge(E,V1,V2)
262 if ( myMakeEdge.IsDone()) {
264 myShape = myMakeEdge.Shape();
269 //=======================================================================
270 //function : BRepBuilderAPI_MakeEdge
272 //=======================================================================
274 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Hypr& H)
277 if ( myMakeEdge.IsDone()) {
279 myShape = myMakeEdge.Shape();
284 //=======================================================================
285 //function : BRepBuilderAPI_MakeEdge
287 //=======================================================================
289 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Hypr& H,
290 const Standard_Real p1,
291 const Standard_Real p2)
292 : myMakeEdge(H,p1,p2)
294 if ( myMakeEdge.IsDone()) {
296 myShape = myMakeEdge.Shape();
301 //=======================================================================
302 //function : BRepBuilderAPI_MakeEdge
304 //=======================================================================
306 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Hypr& H,
309 : myMakeEdge(H,P1,P2)
311 if ( myMakeEdge.IsDone()) {
313 myShape = myMakeEdge.Shape();
318 //=======================================================================
319 //function : BRepBuilderAPI_MakeEdge
321 //=======================================================================
323 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Hypr& H,
324 const TopoDS_Vertex& V1,
325 const TopoDS_Vertex& V2)
326 : myMakeEdge(H,V1,V2)
328 if ( myMakeEdge.IsDone()) {
330 myShape = myMakeEdge.Shape();
335 //=======================================================================
336 //function : BRepBuilderAPI_MakeEdge
338 //=======================================================================
340 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Parab& P)
343 if ( myMakeEdge.IsDone()) {
345 myShape = myMakeEdge.Shape();
350 //=======================================================================
351 //function : BRepBuilderAPI_MakeEdge
353 //=======================================================================
355 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Parab& P,
356 const Standard_Real p1,
357 const Standard_Real p2)
358 : myMakeEdge(P,p1,p2)
360 if ( myMakeEdge.IsDone()) {
362 myShape = myMakeEdge.Shape();
367 //=======================================================================
368 //function : BRepBuilderAPI_MakeEdge
370 //=======================================================================
372 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Parab& P,
375 : myMakeEdge(P,P1,P2)
377 if ( myMakeEdge.IsDone()) {
379 myShape = myMakeEdge.Shape();
384 //=======================================================================
385 //function : BRepBuilderAPI_MakeEdge
387 //=======================================================================
389 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Parab& P,
390 const TopoDS_Vertex& V1,
391 const TopoDS_Vertex& V2)
392 : myMakeEdge(P,V1,V2)
394 if ( myMakeEdge.IsDone()) {
396 myShape = myMakeEdge.Shape();
401 //=======================================================================
402 //function : BRepBuilderAPI_MakeEdge
404 //=======================================================================
406 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L)
409 if ( myMakeEdge.IsDone()) {
411 myShape = myMakeEdge.Shape();
416 //=======================================================================
417 //function : BRepBuilderAPI_MakeEdge
419 //=======================================================================
421 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L,
422 const Standard_Real p1,
423 const Standard_Real p2)
424 : myMakeEdge(L,p1,p2)
426 if ( myMakeEdge.IsDone()) {
428 myShape = myMakeEdge.Shape();
433 //=======================================================================
434 //function : BRepBuilderAPI_MakeEdge
436 //=======================================================================
438 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L,
441 : myMakeEdge(L,P1,P2)
443 if ( myMakeEdge.IsDone()) {
445 myShape = myMakeEdge.Shape();
449 //=======================================================================
450 //function : BRepBuilderAPI_MakeEdge
452 //=======================================================================
454 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L,
455 const TopoDS_Vertex& V1,
456 const TopoDS_Vertex& V2)
457 : myMakeEdge(L,V1,V2)
459 if ( myMakeEdge.IsDone()) {
461 myShape = myMakeEdge.Shape();
466 //=======================================================================
467 //function : BRepBuilderAPI_MakeEdge
469 //=======================================================================
471 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L,
474 const Standard_Real p1,
475 const Standard_Real p2)
476 : myMakeEdge(L,P1,P2,p1,p2)
478 if ( myMakeEdge.IsDone()) {
480 myShape = myMakeEdge.Shape();
485 //=======================================================================
486 //function : BRepBuilderAPI_MakeEdge
488 //=======================================================================
490 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L,
491 const TopoDS_Vertex& V1,
492 const TopoDS_Vertex& V2,
493 const Standard_Real p1,
494 const Standard_Real p2)
495 : myMakeEdge(L,V1,V2,p1,p2)
497 if ( myMakeEdge.IsDone()) {
499 myShape = myMakeEdge.Shape();
504 //=======================================================================
505 //function : BRepBuilderAPI_MakeEdge
507 //=======================================================================
509 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L,
510 const Handle(Geom_Surface)& S)
513 if ( myMakeEdge.IsDone()) {
515 myShape = myMakeEdge.Shape();
520 //=======================================================================
521 //function : BRepBuilderAPI_MakeEdge
523 //=======================================================================
525 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L,
526 const Handle(Geom_Surface)& S,
527 const Standard_Real p1,
528 const Standard_Real p2)
529 : myMakeEdge(L,S,p1,p2)
531 if ( myMakeEdge.IsDone()) {
533 myShape = myMakeEdge.Shape();
538 //=======================================================================
539 //function : BRepBuilderAPI_MakeEdge
541 //=======================================================================
543 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L,
544 const Handle(Geom_Surface)& S,
547 : myMakeEdge(L,S,P1,P2)
549 if ( myMakeEdge.IsDone()) {
551 myShape = myMakeEdge.Shape();
555 //=======================================================================
556 //function : BRepBuilderAPI_MakeEdge
558 //=======================================================================
560 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L,
561 const Handle(Geom_Surface)& S,
562 const TopoDS_Vertex& V1,
563 const TopoDS_Vertex& V2)
564 : myMakeEdge(L,S,V1,V2)
566 if ( myMakeEdge.IsDone()) {
568 myShape = myMakeEdge.Shape();
573 //=======================================================================
574 //function : BRepBuilderAPI_MakeEdge
576 //=======================================================================
578 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L,
579 const Handle(Geom_Surface)& S,
582 const Standard_Real p1,
583 const Standard_Real p2)
584 : myMakeEdge(L,S,P1,P2,p1,p2)
586 if ( myMakeEdge.IsDone()) {
588 myShape = myMakeEdge.Shape();
593 //=======================================================================
594 //function : BRepBuilderAPI_MakeEdge
596 //=======================================================================
598 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L,
599 const Handle(Geom_Surface)& S,
600 const TopoDS_Vertex& V1,
601 const TopoDS_Vertex& V2,
602 const Standard_Real p1,
603 const Standard_Real p2)
604 : myMakeEdge(L,S,V1,V2,p1,p2)
606 if ( myMakeEdge.IsDone()) {
608 myShape = myMakeEdge.Shape();
613 //=======================================================================
616 //=======================================================================
618 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom_Curve)& C)
621 if ( myMakeEdge.IsDone()) {
623 myShape = myMakeEdge.Shape();
628 //=======================================================================
631 //=======================================================================
633 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom_Curve)& C,
634 const Standard_Real p1,
635 const Standard_Real p2)
637 myMakeEdge.Init(C,p1,p2);
638 if ( myMakeEdge.IsDone()) {
640 myShape = myMakeEdge.Shape();
645 //=======================================================================
648 //=======================================================================
650 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom_Curve)& C,
654 myMakeEdge.Init(C,P1,P2);
655 if ( myMakeEdge.IsDone()) {
657 myShape = myMakeEdge.Shape();
662 //=======================================================================
665 //=======================================================================
667 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom_Curve)& C,
668 const TopoDS_Vertex& V1,
669 const TopoDS_Vertex& V2)
671 myMakeEdge.Init(C,V1,V2);
672 if ( myMakeEdge.IsDone()) {
674 myShape = myMakeEdge.Shape();
679 //=======================================================================
682 //=======================================================================
684 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom_Curve)& C,
687 const Standard_Real p1,
688 const Standard_Real p2)
690 myMakeEdge.Init(C,P1,P2,p1,p2);
691 if ( myMakeEdge.IsDone()) {
693 myShape = myMakeEdge.Shape();
698 //=======================================================================
701 //=======================================================================
703 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom_Curve)& CC,
704 const TopoDS_Vertex& VV1,
705 const TopoDS_Vertex& VV2,
706 const Standard_Real pp1,
707 const Standard_Real pp2)
709 myMakeEdge.Init(CC,VV1,VV2,pp1,pp2);
710 if ( myMakeEdge.IsDone()) {
712 myShape = myMakeEdge.Shape();
716 //=======================================================================
719 //=======================================================================
721 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom2d_Curve)& C,
722 const Handle(Geom_Surface)& S)
724 myMakeEdge.Init(C,S);
725 if ( myMakeEdge.IsDone()) {
727 myShape = myMakeEdge.Shape();
732 //=======================================================================
735 //=======================================================================
737 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom2d_Curve)& C,
738 const Handle(Geom_Surface)& S,
739 const Standard_Real p1,
740 const Standard_Real p2)
742 myMakeEdge.Init(C,S,p1,p2);
743 if ( myMakeEdge.IsDone()) {
745 myShape = myMakeEdge.Shape();
750 //=======================================================================
753 //=======================================================================
755 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom2d_Curve)& C,
756 const Handle(Geom_Surface)& S,
760 myMakeEdge.Init(C,S,P1,P2);
761 if ( myMakeEdge.IsDone()) {
763 myShape = myMakeEdge.Shape();
768 //=======================================================================
771 //=======================================================================
773 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom2d_Curve)& C,
774 const Handle(Geom_Surface)& S,
775 const TopoDS_Vertex& V1,
776 const TopoDS_Vertex& V2)
778 myMakeEdge.Init(C,S,V1,V2);
779 if ( myMakeEdge.IsDone()) {
781 myShape = myMakeEdge.Shape();
786 //=======================================================================
789 //=======================================================================
791 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom2d_Curve)& C,
792 const Handle(Geom_Surface)& S,
795 const Standard_Real p1,
796 const Standard_Real p2)
798 myMakeEdge.Init(C,S,P1,P2,p1,p2);
799 if ( myMakeEdge.IsDone()) {
801 myShape = myMakeEdge.Shape();
806 //=======================================================================
809 //=======================================================================
811 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom2d_Curve)& CC,
812 const Handle(Geom_Surface)& S,
813 const TopoDS_Vertex& VV1,
814 const TopoDS_Vertex& VV2,
815 const Standard_Real pp1,
816 const Standard_Real pp2)
818 myMakeEdge.Init(CC,S,VV1,VV2,pp1,pp2);
819 if ( myMakeEdge.IsDone()) {
821 myShape = myMakeEdge.Shape();
826 //=======================================================================
829 //=======================================================================
831 Standard_Boolean BRepBuilderAPI_MakeEdge::IsDone() const
833 return myMakeEdge.IsDone();
837 //=======================================================================
840 //=======================================================================
842 BRepBuilderAPI_EdgeError BRepBuilderAPI_MakeEdge::Error() const
844 switch ( myMakeEdge.Error()) {
846 case BRepLib_EdgeDone:
847 return BRepBuilderAPI_EdgeDone;
849 case BRepLib_PointProjectionFailed:
850 return BRepBuilderAPI_PointProjectionFailed;
852 case BRepLib_ParameterOutOfRange:
853 return BRepBuilderAPI_ParameterOutOfRange;
855 case BRepLib_DifferentPointsOnClosedCurve:
856 return BRepBuilderAPI_DifferentPointsOnClosedCurve;
858 case BRepLib_PointWithInfiniteParameter:
859 return BRepBuilderAPI_PointWithInfiniteParameter;
861 case BRepLib_DifferentsPointAndParameter:
862 return BRepBuilderAPI_DifferentsPointAndParameter;
864 case BRepLib_LineThroughIdenticPoints:
865 return BRepBuilderAPI_LineThroughIdenticPoints;
870 return BRepBuilderAPI_EdgeDone;
873 //=======================================================================
876 //=======================================================================
878 const TopoDS_Edge& BRepBuilderAPI_MakeEdge::Edge()
880 return myMakeEdge.Edge();
884 //=======================================================================
887 //=======================================================================
889 const TopoDS_Vertex& BRepBuilderAPI_MakeEdge::Vertex1()const
891 return myMakeEdge.Vertex1();
895 //=======================================================================
898 //=======================================================================
900 const TopoDS_Vertex& BRepBuilderAPI_MakeEdge::Vertex2()const
902 return myMakeEdge.Vertex2();
907 //=======================================================================
908 //function : operator
910 //=======================================================================
912 BRepBuilderAPI_MakeEdge::operator TopoDS_Edge()