1 // Created on: 1993-11-10
2 // Created by: Jean Yves LEBEY
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.
17 #ifndef _TopOpeBRep_LineInter_HeaderFile
18 #define _TopOpeBRep_LineInter_HeaderFile
20 #include <Standard.hxx>
21 #include <Standard_DefineAlloc.hxx>
22 #include <Standard_Handle.hxx>
24 #include <Standard_Boolean.hxx>
25 #include <Standard_Integer.hxx>
26 #include <TopOpeBRep_TypeLineCurve.hxx>
27 #include <TopOpeBRep_WPointInter.hxx>
28 #include <TopOpeBRep_HArray1OfVPointInter.hxx>
29 #include <TopoDS_Face.hxx>
30 #include <TopOpeBRepDS_Transition.hxx>
31 #include <TopoDS_Shape.hxx>
32 #include <Standard_Real.hxx>
33 #include <IntSurf_TypeTrans.hxx>
34 #include <IntSurf_Situation.hxx>
35 #include <Standard_OStream.hxx>
41 class BRepAdaptor_Surface;
42 class TopOpeBRep_VPointInter;
44 class TCollection_AsciiString;
45 class TopOpeBRep_Bipoint;
49 class TopOpeBRep_LineInter
56 TopOpeBRep_LineInter();
58 Standard_EXPORT void SetLine (const Handle(IntPatch_Line)& L, const BRepAdaptor_Surface& S1, const BRepAdaptor_Surface& S2);
60 void SetFaces (const TopoDS_Face& F1, const TopoDS_Face& F2);
62 TopOpeBRep_TypeLineCurve TypeLineCurve() const;
64 Standard_Integer NbVPoint() const;
66 Standard_EXPORT const TopOpeBRep_VPointInter& VPoint (const Standard_Integer I) const;
68 Standard_EXPORT TopOpeBRep_VPointInter& ChangeVPoint (const Standard_Integer I);
70 Standard_EXPORT void SetINL();
72 Standard_Boolean INL() const;
74 Standard_EXPORT void SetIsVClosed();
76 Standard_Boolean IsVClosed() const;
78 Standard_EXPORT void SetOK (const Standard_Boolean B);
80 Standard_Boolean OK() const;
82 Standard_EXPORT void SetHasVPonR();
84 Standard_Boolean HasVPonR() const;
86 Standard_EXPORT void SetVPBounds();
88 Standard_EXPORT void VPBounds (Standard_Integer& f, Standard_Integer& l, Standard_Integer& n) const;
90 Standard_EXPORT Standard_Boolean IsPeriodic() const;
92 Standard_EXPORT Standard_Real Period() const;
94 Standard_EXPORT void Bounds (Standard_Real& f, Standard_Real& l) const;
96 Standard_EXPORT Standard_Boolean HasVInternal();
98 Standard_EXPORT Standard_Integer NbWPoint() const;
100 Standard_EXPORT const TopOpeBRep_WPointInter& WPoint (const Standard_Integer I);
102 IntSurf_TypeTrans TransitionOnS1() const;
104 IntSurf_TypeTrans TransitionOnS2() const;
106 IntSurf_Situation SituationS1() const;
108 IntSurf_Situation SituationS2() const;
110 Standard_EXPORT Handle(Geom_Curve) Curve() const;
112 Standard_EXPORT Handle(Geom_Curve) Curve (const Standard_Real parmin, const Standard_Real parmax) const;
114 //! returns the edge of a RESTRICTION line (or a null edge).
115 Standard_EXPORT const TopoDS_Shape& Arc() const;
117 //! returns true if Arc() edge (of a RESTRICTION line) is
118 //! an edge of the original face <Index> (1 or 2).
119 Standard_EXPORT Standard_Boolean ArcIsEdge (const Standard_Integer I) const;
121 const Handle(IntPatch_WLine)& LineW() const;
123 const Handle(IntPatch_GLine)& LineG() const;
125 const Handle(IntPatch_RLine)& LineR() const;
127 Standard_EXPORT Standard_Boolean HasFirstPoint() const;
129 Standard_EXPORT Standard_Boolean HasLastPoint() const;
131 Standard_EXPORT void ComputeFaceFaceTransition();
133 Standard_EXPORT const TopOpeBRepDS_Transition& FaceFaceTransition (const Standard_Integer I) const;
135 void Index (const Standard_Integer I);
137 Standard_Integer Index() const;
139 Standard_EXPORT void DumpType() const;
141 Standard_EXPORT void DumpVPoint (const Standard_Integer I, const TCollection_AsciiString& s1, const TCollection_AsciiString& s2) const;
143 Standard_EXPORT void DumpBipoint (const TopOpeBRep_Bipoint& B, const TCollection_AsciiString& s1, const TCollection_AsciiString& s2) const;
145 Standard_EXPORT void SetTraceIndex (const Standard_Integer exF1, const Standard_Integer exF2);
147 Standard_EXPORT void GetTraceIndex (Standard_Integer& exF1, Standard_Integer& exF2) const;
149 Standard_EXPORT Standard_OStream& DumpLineTransitions (Standard_OStream& OS) const;
164 Standard_Boolean myOK;
165 Standard_Integer myIndex;
166 Standard_Integer myNbVPoint;
167 Standard_Boolean myIsVClosed;
168 Standard_Boolean myHasVPonR;
169 Standard_Boolean myINL;
170 Standard_Boolean myVPBDefined;
171 Standard_Integer myVPF;
172 Standard_Integer myVPL;
173 Standard_Integer myVPN;
174 TopOpeBRep_TypeLineCurve myTypeLineCurve;
175 Handle(IntPatch_Line) myIL;
176 Handle(IntPatch_ALine) myILA;
177 Handle(IntPatch_RLine) myILR;
178 Handle(IntPatch_WLine) myILW;
179 Handle(IntPatch_GLine) myILG;
180 TopOpeBRep_WPointInter myCurrentWP;
181 Handle(TopOpeBRep_HArray1OfVPointInter) myHAVP;
184 TopOpeBRepDS_Transition myLineTonF1;
185 TopOpeBRepDS_Transition myLineTonF2;
186 TopoDS_Shape myNullShape;
187 Standard_Integer myexF1;
188 Standard_Integer myexF2;
194 #include <TopOpeBRep_LineInter.lxx>
200 #endif // _TopOpeBRep_LineInter_HeaderFile