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_Surface.hxx>
21 #include <gp_Circ.hxx>
22 #include <gp_Elips.hxx>
23 #include <gp_Hypr.hxx>
24 #include <gp_Parab.hxx>
26 #include <TopoDS_Edge.hxx>
27 #include <TopoDS_Vertex.hxx>
29 //=======================================================================
30 //function : BRepBuilderAPI_MakeEdge
32 //=======================================================================
33 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge()
36 //=======================================================================
37 //function : BRepBuilderAPI_MakeEdge
39 //=======================================================================
41 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const TopoDS_Vertex& V1,
42 const TopoDS_Vertex& V2)
45 if ( myMakeEdge.IsDone()) {
47 myShape = myMakeEdge.Shape();
52 //=======================================================================
53 //function : BRepBuilderAPI_MakeEdge
55 //=======================================================================
57 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Pnt& P1,
61 if ( myMakeEdge.IsDone()) {
63 myShape = myMakeEdge.Shape();
68 //=======================================================================
69 //function : BRepBuilderAPI_MakeEdge
71 //=======================================================================
73 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Lin& L)
76 if ( myMakeEdge.IsDone()) {
78 myShape = myMakeEdge.Shape();
83 //=======================================================================
84 //function : BRepBuilderAPI_MakeEdge
86 //=======================================================================
88 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Lin& L,
89 const Standard_Real p1,
90 const Standard_Real p2)
93 if ( myMakeEdge.IsDone()) {
95 myShape = myMakeEdge.Shape();
100 //=======================================================================
101 //function : BRepBuilderAPI_MakeEdge
103 //=======================================================================
105 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Lin& L,
108 : myMakeEdge(L,P1,P2)
110 if ( myMakeEdge.IsDone()) {
112 myShape = myMakeEdge.Shape();
117 //=======================================================================
118 //function : BRepBuilderAPI_MakeEdge
120 //=======================================================================
122 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Lin& L,
123 const TopoDS_Vertex& V1,
124 const TopoDS_Vertex& V2)
125 : myMakeEdge(L,V1,V2)
127 if ( myMakeEdge.IsDone()) {
129 myShape = myMakeEdge.Shape();
134 //=======================================================================
135 //function : BRepBuilderAPI_MakeEdge
137 //=======================================================================
139 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Circ& C)
142 if ( myMakeEdge.IsDone()) {
144 myShape = myMakeEdge.Shape();
149 //=======================================================================
150 //function : BRepBuilderAPI_MakeEdge
152 //=======================================================================
154 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Circ& C,
155 const Standard_Real p1,
156 const Standard_Real p2)
157 : myMakeEdge(C,p1,p2)
159 if ( myMakeEdge.IsDone()) {
161 myShape = myMakeEdge.Shape();
166 //=======================================================================
167 //function : BRepBuilderAPI_MakeEdge
169 //=======================================================================
171 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Circ& C ,
174 : myMakeEdge(C,P1,P2)
176 if ( myMakeEdge.IsDone()) {
178 myShape = myMakeEdge.Shape();
183 //=======================================================================
184 //function : BRepBuilderAPI_MakeEdge
186 //=======================================================================
188 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Circ& C,
189 const TopoDS_Vertex& V1,
190 const TopoDS_Vertex& V2)
191 : myMakeEdge(C,V1,V2)
193 if ( myMakeEdge.IsDone()) {
195 myShape = myMakeEdge.Shape();
200 //=======================================================================
201 //function : BRepBuilderAPI_MakeEdge
203 //=======================================================================
205 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Elips& E)
208 if ( myMakeEdge.IsDone()) {
210 myShape = myMakeEdge.Shape();
215 //=======================================================================
216 //function : BRepBuilderAPI_MakeEdge
218 //=======================================================================
220 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Elips& E,
221 const Standard_Real p1,
222 const Standard_Real p2)
223 : myMakeEdge(E,p1,p2)
225 if ( myMakeEdge.IsDone()) {
227 myShape = myMakeEdge.Shape();
232 //=======================================================================
233 //function : BRepBuilderAPI_MakeEdge
235 //=======================================================================
237 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Elips& E,
240 : myMakeEdge(E,P1,P2)
242 if ( myMakeEdge.IsDone()) {
244 myShape = myMakeEdge.Shape();
249 //=======================================================================
250 //function : BRepBuilderAPI_MakeEdge
252 //=======================================================================
254 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Elips& E,
255 const TopoDS_Vertex& V1,
256 const TopoDS_Vertex& V2)
257 : myMakeEdge(E,V1,V2)
259 if ( myMakeEdge.IsDone()) {
261 myShape = myMakeEdge.Shape();
266 //=======================================================================
267 //function : BRepBuilderAPI_MakeEdge
269 //=======================================================================
271 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Hypr& H)
274 if ( myMakeEdge.IsDone()) {
276 myShape = myMakeEdge.Shape();
281 //=======================================================================
282 //function : BRepBuilderAPI_MakeEdge
284 //=======================================================================
286 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Hypr& H,
287 const Standard_Real p1,
288 const Standard_Real p2)
289 : myMakeEdge(H,p1,p2)
291 if ( myMakeEdge.IsDone()) {
293 myShape = myMakeEdge.Shape();
298 //=======================================================================
299 //function : BRepBuilderAPI_MakeEdge
301 //=======================================================================
303 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Hypr& H,
306 : myMakeEdge(H,P1,P2)
308 if ( myMakeEdge.IsDone()) {
310 myShape = myMakeEdge.Shape();
315 //=======================================================================
316 //function : BRepBuilderAPI_MakeEdge
318 //=======================================================================
320 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Hypr& H,
321 const TopoDS_Vertex& V1,
322 const TopoDS_Vertex& V2)
323 : myMakeEdge(H,V1,V2)
325 if ( myMakeEdge.IsDone()) {
327 myShape = myMakeEdge.Shape();
332 //=======================================================================
333 //function : BRepBuilderAPI_MakeEdge
335 //=======================================================================
337 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Parab& P)
340 if ( myMakeEdge.IsDone()) {
342 myShape = myMakeEdge.Shape();
347 //=======================================================================
348 //function : BRepBuilderAPI_MakeEdge
350 //=======================================================================
352 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Parab& P,
353 const Standard_Real p1,
354 const Standard_Real p2)
355 : myMakeEdge(P,p1,p2)
357 if ( myMakeEdge.IsDone()) {
359 myShape = myMakeEdge.Shape();
364 //=======================================================================
365 //function : BRepBuilderAPI_MakeEdge
367 //=======================================================================
369 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Parab& P,
372 : myMakeEdge(P,P1,P2)
374 if ( myMakeEdge.IsDone()) {
376 myShape = myMakeEdge.Shape();
381 //=======================================================================
382 //function : BRepBuilderAPI_MakeEdge
384 //=======================================================================
386 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const gp_Parab& P,
387 const TopoDS_Vertex& V1,
388 const TopoDS_Vertex& V2)
389 : myMakeEdge(P,V1,V2)
391 if ( myMakeEdge.IsDone()) {
393 myShape = myMakeEdge.Shape();
398 //=======================================================================
399 //function : BRepBuilderAPI_MakeEdge
401 //=======================================================================
403 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L)
406 if ( myMakeEdge.IsDone()) {
408 myShape = myMakeEdge.Shape();
413 //=======================================================================
414 //function : BRepBuilderAPI_MakeEdge
416 //=======================================================================
418 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L,
419 const Standard_Real p1,
420 const Standard_Real p2)
421 : myMakeEdge(L,p1,p2)
423 if ( myMakeEdge.IsDone()) {
425 myShape = myMakeEdge.Shape();
430 //=======================================================================
431 //function : BRepBuilderAPI_MakeEdge
433 //=======================================================================
435 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L,
438 : myMakeEdge(L,P1,P2)
440 if ( myMakeEdge.IsDone()) {
442 myShape = myMakeEdge.Shape();
446 //=======================================================================
447 //function : BRepBuilderAPI_MakeEdge
449 //=======================================================================
451 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L,
452 const TopoDS_Vertex& V1,
453 const TopoDS_Vertex& V2)
454 : myMakeEdge(L,V1,V2)
456 if ( myMakeEdge.IsDone()) {
458 myShape = myMakeEdge.Shape();
463 //=======================================================================
464 //function : BRepBuilderAPI_MakeEdge
466 //=======================================================================
468 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L,
471 const Standard_Real p1,
472 const Standard_Real p2)
473 : myMakeEdge(L,P1,P2,p1,p2)
475 if ( myMakeEdge.IsDone()) {
477 myShape = myMakeEdge.Shape();
482 //=======================================================================
483 //function : BRepBuilderAPI_MakeEdge
485 //=======================================================================
487 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom_Curve)& L,
488 const TopoDS_Vertex& V1,
489 const TopoDS_Vertex& V2,
490 const Standard_Real p1,
491 const Standard_Real p2)
492 : myMakeEdge(L,V1,V2,p1,p2)
494 if ( myMakeEdge.IsDone()) {
496 myShape = myMakeEdge.Shape();
501 //=======================================================================
502 //function : BRepBuilderAPI_MakeEdge
504 //=======================================================================
506 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L,
507 const Handle(Geom_Surface)& S)
510 if ( myMakeEdge.IsDone()) {
512 myShape = myMakeEdge.Shape();
517 //=======================================================================
518 //function : BRepBuilderAPI_MakeEdge
520 //=======================================================================
522 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L,
523 const Handle(Geom_Surface)& S,
524 const Standard_Real p1,
525 const Standard_Real p2)
526 : myMakeEdge(L,S,p1,p2)
528 if ( myMakeEdge.IsDone()) {
530 myShape = myMakeEdge.Shape();
535 //=======================================================================
536 //function : BRepBuilderAPI_MakeEdge
538 //=======================================================================
540 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L,
541 const Handle(Geom_Surface)& S,
544 : myMakeEdge(L,S,P1,P2)
546 if ( myMakeEdge.IsDone()) {
548 myShape = myMakeEdge.Shape();
552 //=======================================================================
553 //function : BRepBuilderAPI_MakeEdge
555 //=======================================================================
557 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L,
558 const Handle(Geom_Surface)& S,
559 const TopoDS_Vertex& V1,
560 const TopoDS_Vertex& V2)
561 : myMakeEdge(L,S,V1,V2)
563 if ( myMakeEdge.IsDone()) {
565 myShape = myMakeEdge.Shape();
570 //=======================================================================
571 //function : BRepBuilderAPI_MakeEdge
573 //=======================================================================
575 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L,
576 const Handle(Geom_Surface)& S,
579 const Standard_Real p1,
580 const Standard_Real p2)
581 : myMakeEdge(L,S,P1,P2,p1,p2)
583 if ( myMakeEdge.IsDone()) {
585 myShape = myMakeEdge.Shape();
590 //=======================================================================
591 //function : BRepBuilderAPI_MakeEdge
593 //=======================================================================
595 BRepBuilderAPI_MakeEdge::BRepBuilderAPI_MakeEdge(const Handle(Geom2d_Curve)& L,
596 const Handle(Geom_Surface)& S,
597 const TopoDS_Vertex& V1,
598 const TopoDS_Vertex& V2,
599 const Standard_Real p1,
600 const Standard_Real p2)
601 : myMakeEdge(L,S,V1,V2,p1,p2)
603 if ( myMakeEdge.IsDone()) {
605 myShape = myMakeEdge.Shape();
610 //=======================================================================
613 //=======================================================================
615 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom_Curve)& C)
618 if ( myMakeEdge.IsDone()) {
620 myShape = myMakeEdge.Shape();
625 //=======================================================================
628 //=======================================================================
630 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom_Curve)& C,
631 const Standard_Real p1,
632 const Standard_Real p2)
634 myMakeEdge.Init(C,p1,p2);
635 if ( myMakeEdge.IsDone()) {
637 myShape = myMakeEdge.Shape();
642 //=======================================================================
645 //=======================================================================
647 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom_Curve)& C,
651 myMakeEdge.Init(C,P1,P2);
652 if ( myMakeEdge.IsDone()) {
654 myShape = myMakeEdge.Shape();
659 //=======================================================================
662 //=======================================================================
664 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom_Curve)& C,
665 const TopoDS_Vertex& V1,
666 const TopoDS_Vertex& V2)
668 myMakeEdge.Init(C,V1,V2);
669 if ( myMakeEdge.IsDone()) {
671 myShape = myMakeEdge.Shape();
676 //=======================================================================
679 //=======================================================================
681 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom_Curve)& C,
684 const Standard_Real p1,
685 const Standard_Real p2)
687 myMakeEdge.Init(C,P1,P2,p1,p2);
688 if ( myMakeEdge.IsDone()) {
690 myShape = myMakeEdge.Shape();
695 //=======================================================================
698 //=======================================================================
700 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom_Curve)& CC,
701 const TopoDS_Vertex& VV1,
702 const TopoDS_Vertex& VV2,
703 const Standard_Real pp1,
704 const Standard_Real pp2)
706 myMakeEdge.Init(CC,VV1,VV2,pp1,pp2);
707 if ( myMakeEdge.IsDone()) {
709 myShape = myMakeEdge.Shape();
713 //=======================================================================
716 //=======================================================================
718 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom2d_Curve)& C,
719 const Handle(Geom_Surface)& S)
721 myMakeEdge.Init(C,S);
722 if ( myMakeEdge.IsDone()) {
724 myShape = myMakeEdge.Shape();
729 //=======================================================================
732 //=======================================================================
734 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom2d_Curve)& C,
735 const Handle(Geom_Surface)& S,
736 const Standard_Real p1,
737 const Standard_Real p2)
739 myMakeEdge.Init(C,S,p1,p2);
740 if ( myMakeEdge.IsDone()) {
742 myShape = myMakeEdge.Shape();
747 //=======================================================================
750 //=======================================================================
752 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom2d_Curve)& C,
753 const Handle(Geom_Surface)& S,
757 myMakeEdge.Init(C,S,P1,P2);
758 if ( myMakeEdge.IsDone()) {
760 myShape = myMakeEdge.Shape();
765 //=======================================================================
768 //=======================================================================
770 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom2d_Curve)& C,
771 const Handle(Geom_Surface)& S,
772 const TopoDS_Vertex& V1,
773 const TopoDS_Vertex& V2)
775 myMakeEdge.Init(C,S,V1,V2);
776 if ( myMakeEdge.IsDone()) {
778 myShape = myMakeEdge.Shape();
783 //=======================================================================
786 //=======================================================================
788 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom2d_Curve)& C,
789 const Handle(Geom_Surface)& S,
792 const Standard_Real p1,
793 const Standard_Real p2)
795 myMakeEdge.Init(C,S,P1,P2,p1,p2);
796 if ( myMakeEdge.IsDone()) {
798 myShape = myMakeEdge.Shape();
803 //=======================================================================
806 //=======================================================================
808 void BRepBuilderAPI_MakeEdge::Init(const Handle(Geom2d_Curve)& CC,
809 const Handle(Geom_Surface)& S,
810 const TopoDS_Vertex& VV1,
811 const TopoDS_Vertex& VV2,
812 const Standard_Real pp1,
813 const Standard_Real pp2)
815 myMakeEdge.Init(CC,S,VV1,VV2,pp1,pp2);
816 if ( myMakeEdge.IsDone()) {
818 myShape = myMakeEdge.Shape();
823 //=======================================================================
826 //=======================================================================
828 Standard_Boolean BRepBuilderAPI_MakeEdge::IsDone() const
830 return myMakeEdge.IsDone();
834 //=======================================================================
837 //=======================================================================
839 BRepBuilderAPI_EdgeError BRepBuilderAPI_MakeEdge::Error() const
841 switch ( myMakeEdge.Error()) {
843 case BRepLib_EdgeDone:
844 return BRepBuilderAPI_EdgeDone;
846 case BRepLib_PointProjectionFailed:
847 return BRepBuilderAPI_PointProjectionFailed;
849 case BRepLib_ParameterOutOfRange:
850 return BRepBuilderAPI_ParameterOutOfRange;
852 case BRepLib_DifferentPointsOnClosedCurve:
853 return BRepBuilderAPI_DifferentPointsOnClosedCurve;
855 case BRepLib_PointWithInfiniteParameter:
856 return BRepBuilderAPI_PointWithInfiniteParameter;
858 case BRepLib_DifferentsPointAndParameter:
859 return BRepBuilderAPI_DifferentsPointAndParameter;
861 case BRepLib_LineThroughIdenticPoints:
862 return BRepBuilderAPI_LineThroughIdenticPoints;
867 return BRepBuilderAPI_EdgeDone;
870 //=======================================================================
873 //=======================================================================
875 const TopoDS_Edge& BRepBuilderAPI_MakeEdge::Edge()
877 return myMakeEdge.Edge();
881 //=======================================================================
884 //=======================================================================
886 const TopoDS_Vertex& BRepBuilderAPI_MakeEdge::Vertex1()const
888 return myMakeEdge.Vertex1();
892 //=======================================================================
895 //=======================================================================
897 const TopoDS_Vertex& BRepBuilderAPI_MakeEdge::Vertex2()const
899 return myMakeEdge.Vertex2();
904 //=======================================================================
905 //function : operator
907 //=======================================================================
909 BRepBuilderAPI_MakeEdge::operator TopoDS_Edge()