0031682: Visualization - Prs3d_ShadingAspect::SetTransparency() has no effect with...
[occt.git] / src / IntTools / IntTools_EdgeEdge.lxx
CommitLineData
ec0cdc0e 1// Created by: Eugeny MALTCHIKOV
d5f74e42 2// Copyright (c) 2013-2014 OPEN CASCADE SAS
ec0cdc0e 3//
4// This file is part of Open CASCADE Technology software library.
5//
d5f74e42 6// This library is free software; you can redistribute it and/or modify it under
7// the terms of the GNU Lesser General Public License version 2.1 as published
ec0cdc0e 8// by the Free Software Foundation, with special exception defined in the file
9// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10// distribution for complete text of the license and disclaimer of any warranty.
11//
12// Alternatively, this file may be used under the terms of Open CASCADE
13// commercial license or contractual agreement.
14
15#include <Precision.hxx>
16#include <BRep_Tool.hxx>
17
18//=======================================================================
19//function : IntTools_EdgeEdge
20//purpose :
21//=======================================================================
22inline IntTools_EdgeEdge::IntTools_EdgeEdge()
23:
24 myTol1(0.),
25 myTol2(0.),
26 myTol(0.),
0d0481c7 27 myFuzzyValue(Precision::Confusion()),
ec0cdc0e 28 myRes1(0.),
29 myRes2(0.),
a4e383e1 30 myResCoeff1(0.),
31 myResCoeff2(0.),
a743e2e5 32 myPTol1(0.),
33 myPTol2(0.),
ec0cdc0e 34 myRange1(0., 0.),
35 myRange2(0., 0.),
36 mySwap(Standard_False),
6dc83e21 37 myErrorStatus(0),
38 myQuickCoincidenceCheck(Standard_False)
ec0cdc0e 39{
40}
41//=======================================================================
42//function : IntTools_EdgeEdge
43//purpose :
44//=======================================================================
45inline IntTools_EdgeEdge::IntTools_EdgeEdge(const TopoDS_Edge& theEdge1,
46 const TopoDS_Edge& theEdge2)
47:
48 myEdge1(theEdge1),
49 myEdge2(theEdge2),
50 myTol1(0.),
51 myTol2(0.),
52 myTol(0.),
0d0481c7 53 myFuzzyValue(Precision::Confusion()),
ec0cdc0e 54 myRes1(0.),
55 myRes2(0.),
a4e383e1 56 myResCoeff1(0.),
57 myResCoeff2(0.),
a743e2e5 58 myPTol1(0.),
59 myPTol2(0.),
ec0cdc0e 60 myRange1(0., 0.),
61 myRange2(0., 0.),
62 mySwap(Standard_False),
6dc83e21 63 myErrorStatus(0),
64 myQuickCoincidenceCheck(Standard_False)
ec0cdc0e 65{
66}
67//=======================================================================
68//function : IntTools_EdgeEdge
69//purpose :
70//=======================================================================
71inline IntTools_EdgeEdge::IntTools_EdgeEdge(const TopoDS_Edge& theEdge1,
72 const Standard_Real aT11,
73 const Standard_Real aT12,
74 const TopoDS_Edge& theEdge2,
75 const Standard_Real aT21,
76 const Standard_Real aT22)
77:
78 myEdge1(theEdge1),
79 myEdge2(theEdge2),
80 myTol1(0.),
81 myTol2(0.),
82 myTol(0.),
0d0481c7 83 myFuzzyValue(Precision::Confusion()),
ec0cdc0e 84 myRes1(0.),
85 myRes2(0.),
a4e383e1 86 myResCoeff1(0.),
87 myResCoeff2(0.),
a743e2e5 88 myPTol1(0.),
89 myPTol2(0.),
ec0cdc0e 90 myRange1(aT11, aT12),
91 myRange2(aT21, aT22),
92 mySwap(Standard_False),
6dc83e21 93 myErrorStatus(0),
94 myQuickCoincidenceCheck(Standard_False)
ec0cdc0e 95{
96}
97//=======================================================================
98//function : IntTools_EdgeEdge
99//purpose :
100//=======================================================================
101inline IntTools_EdgeEdge::~IntTools_EdgeEdge()
102{
103}
104//=======================================================================
105//function : SetEdge1
106//purpose :
107//=======================================================================
108inline void IntTools_EdgeEdge::SetEdge1(const TopoDS_Edge& theEdge)
109{
110 myEdge1 = theEdge;
111}
112//=======================================================================
113//function : SetRange1
114//purpose :
115//=======================================================================
116inline void IntTools_EdgeEdge::SetRange1(const IntTools_Range& theRange)
117{
118 myRange1 = theRange;
119}
120//=======================================================================
121//function : SetRange1
122//purpose :
123//=======================================================================
124inline void IntTools_EdgeEdge::SetRange1(const Standard_Real aT1,
125 const Standard_Real aT2)
126{
127 myRange1.SetFirst(aT1);
128 myRange1.SetLast(aT2);
129}
130//=======================================================================
131//function : SetEdge1
132//purpose :
133//=======================================================================
134inline void IntTools_EdgeEdge::SetEdge1(const TopoDS_Edge& theEdge,
135 const Standard_Real aT1,
136 const Standard_Real aT2)
137{
138 SetEdge1(theEdge);
139 SetRange1(aT1, aT2);
140}
141//=======================================================================
142//function : SetEdge2
143//purpose :
144//=======================================================================
145inline void IntTools_EdgeEdge::SetEdge2(const TopoDS_Edge& theEdge)
146{
147 myEdge2 = theEdge;
148}
149//=======================================================================
150//function : SetRange1
151//purpose :
152//=======================================================================
153inline void IntTools_EdgeEdge::SetRange2(const IntTools_Range& theRange)
154{
155 myRange2 = theRange;
156}
157//=======================================================================
158//function : SetRange1
159//purpose :
160//=======================================================================
161inline void IntTools_EdgeEdge::SetRange2(const Standard_Real aT1,
162 const Standard_Real aT2)
163{
164 myRange2.SetFirst(aT1);
165 myRange2.SetLast(aT2);
166}
167//=======================================================================
168//function : SetEdge1
169//purpose :
170//=======================================================================
171inline void IntTools_EdgeEdge::SetEdge2(const TopoDS_Edge& theEdge,
172 const Standard_Real aT1,
173 const Standard_Real aT2)
174{
175 SetEdge2(theEdge);
176 SetRange2(aT1, aT2);
177}
0d0481c7 178//=======================================================================
179//function : SetFuzzyValue
180//purpose :
181//=======================================================================
182inline void IntTools_EdgeEdge::SetFuzzyValue(const Standard_Real theFuzz)
183{
184 myFuzzyValue = Max(theFuzz, Precision::Confusion());
185}
186//=======================================================================
187//function : FuzzyValue
188//purpose :
189//=======================================================================
190inline Standard_Real IntTools_EdgeEdge::FuzzyValue() const
191{
192 return myFuzzyValue;
193}
194
ec0cdc0e 195//=======================================================================
196//function : CommonParts
197//purpose :
198//=======================================================================
199inline const IntTools_SequenceOfCommonPrts& IntTools_EdgeEdge::CommonParts() const
200{
201 return myCommonParts;
202}
203//=======================================================================
204//function : IsDone
205//purpose :
206//=======================================================================
207inline Standard_Boolean IntTools_EdgeEdge::IsDone() const
208{
209 return (myErrorStatus == 0);
210}
211//=======================================================================
212//function : CheckData
213//purpose :
214//=======================================================================
215inline void IntTools_EdgeEdge::CheckData()
216{
217 if (myEdge1.IsNull() || myEdge2.IsNull()) {
218 myErrorStatus = 1;
219 return;
220 }
221 //
222 if (BRep_Tool::Degenerated(myEdge1) || BRep_Tool::Degenerated(myEdge2)) {
223 myErrorStatus = 2;
224 return;
225 }
226 //
227 if (!BRep_Tool::IsGeometric(myEdge1) || !BRep_Tool::IsGeometric(myEdge2)) {
228 myErrorStatus = 3;
229 return;
230 }
231}
232