Back to home page

EIC code displayed by LXR

 
 

    


Warning, /include/opencascade/IntTools_EdgeEdge.lxx is written in an unsupported language. File is not indexed.

0001 // Created by: Eugeny MALTCHIKOV
0002 // Copyright (c) 2013-2014 OPEN CASCADE SAS
0003 //
0004 // This file is part of Open CASCADE Technology software library.
0005 //
0006 // This library is free software; you can redistribute it and/or modify it under
0007 // the terms of the GNU Lesser General Public License version 2.1 as published
0008 // by the Free Software Foundation, with special exception defined in the file
0009 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0010 // distribution for complete text of the license and disclaimer of any warranty.
0011 //
0012 // Alternatively, this file may be used under the terms of Open CASCADE
0013 // commercial license or contractual agreement.
0014 
0015 #include <Precision.hxx>
0016 #include <BRep_Tool.hxx>
0017 
0018 //=======================================================================
0019 //function : IntTools_EdgeEdge
0020 //purpose  : 
0021 //=======================================================================
0022 inline IntTools_EdgeEdge::IntTools_EdgeEdge()
0023 : 
0024   myTol1(0.),
0025   myTol2(0.),
0026   myTol(0.),
0027   myFuzzyValue(Precision::Confusion()),
0028   myRes1(0.),
0029   myRes2(0.),
0030   myResCoeff1(0.),
0031   myResCoeff2(0.),
0032   myPTol1(0.),
0033   myPTol2(0.),
0034   myRange1(0., 0.),
0035   myRange2(0., 0.),
0036   mySwap(Standard_False),
0037   myErrorStatus(0),
0038   myQuickCoincidenceCheck(Standard_False)
0039 {
0040 }
0041 //=======================================================================
0042 //function : IntTools_EdgeEdge
0043 //purpose  : 
0044 //=======================================================================
0045 inline IntTools_EdgeEdge::IntTools_EdgeEdge(const TopoDS_Edge&  theEdge1,
0046                                             const TopoDS_Edge&  theEdge2)
0047 : 
0048   myEdge1(theEdge1), 
0049   myEdge2(theEdge2),
0050   myTol1(0.),
0051   myTol2(0.),
0052   myTol(0.),
0053   myFuzzyValue(Precision::Confusion()),
0054   myRes1(0.),
0055   myRes2(0.),
0056   myResCoeff1(0.),
0057   myResCoeff2(0.),
0058   myPTol1(0.),
0059   myPTol2(0.),
0060   myRange1(0., 0.),
0061   myRange2(0., 0.),
0062   mySwap(Standard_False),
0063   myErrorStatus(0),
0064   myQuickCoincidenceCheck(Standard_False)
0065 {
0066 }
0067 //=======================================================================
0068 //function : IntTools_EdgeEdge
0069 //purpose  : 
0070 //=======================================================================
0071 inline IntTools_EdgeEdge::IntTools_EdgeEdge(const TopoDS_Edge&  theEdge1,
0072                                             const Standard_Real aT11,
0073                                             const Standard_Real aT12,
0074                                             const TopoDS_Edge&  theEdge2,
0075                                             const Standard_Real aT21,
0076                                             const Standard_Real aT22)
0077 : 
0078   myEdge1(theEdge1), 
0079   myEdge2(theEdge2),
0080   myTol1(0.),
0081   myTol2(0.),
0082   myTol(0.),
0083   myFuzzyValue(Precision::Confusion()),
0084   myRes1(0.),
0085   myRes2(0.),
0086   myResCoeff1(0.),
0087   myResCoeff2(0.),
0088   myPTol1(0.),
0089   myPTol2(0.),
0090   myRange1(aT11, aT12),
0091   myRange2(aT21, aT22),
0092   mySwap(Standard_False),
0093   myErrorStatus(0),
0094   myQuickCoincidenceCheck(Standard_False)
0095 {
0096 }
0097 //=======================================================================
0098 //function : IntTools_EdgeEdge
0099 //purpose  : 
0100 //=======================================================================
0101 inline IntTools_EdgeEdge::~IntTools_EdgeEdge()
0102 {
0103 }
0104 //=======================================================================
0105 //function : SetEdge1
0106 //purpose  : 
0107 //=======================================================================
0108 inline void IntTools_EdgeEdge::SetEdge1(const TopoDS_Edge& theEdge)
0109 {
0110   myEdge1 = theEdge;
0111 }
0112 //=======================================================================
0113 //function : SetRange1
0114 //purpose  : 
0115 //=======================================================================
0116 inline void IntTools_EdgeEdge::SetRange1(const IntTools_Range& theRange)
0117 {
0118   myRange1 = theRange;
0119 }
0120 //=======================================================================
0121 //function : SetRange1
0122 //purpose  : 
0123 //=======================================================================
0124 inline void IntTools_EdgeEdge::SetRange1(const Standard_Real aT1,
0125                                          const Standard_Real aT2)
0126 {
0127   myRange1.SetFirst(aT1);
0128   myRange1.SetLast(aT2);
0129 }
0130 //=======================================================================
0131 //function : SetEdge1
0132 //purpose  : 
0133 //=======================================================================
0134 inline void IntTools_EdgeEdge::SetEdge1(const TopoDS_Edge&  theEdge,
0135                                         const Standard_Real aT1,
0136                                         const Standard_Real aT2)
0137 {
0138   SetEdge1(theEdge);
0139   SetRange1(aT1, aT2);
0140 }
0141 //=======================================================================
0142 //function : SetEdge2
0143 //purpose  : 
0144 //=======================================================================
0145 inline void IntTools_EdgeEdge::SetEdge2(const TopoDS_Edge& theEdge)
0146 {
0147   myEdge2 = theEdge;
0148 }
0149 //=======================================================================
0150 //function : SetRange1
0151 //purpose  : 
0152 //=======================================================================
0153 inline void IntTools_EdgeEdge::SetRange2(const IntTools_Range& theRange)
0154 {
0155   myRange2 = theRange;
0156 }
0157 //=======================================================================
0158 //function : SetRange1
0159 //purpose  : 
0160 //=======================================================================
0161 inline void IntTools_EdgeEdge::SetRange2(const Standard_Real aT1,
0162                                          const Standard_Real aT2)
0163 {
0164   myRange2.SetFirst(aT1);
0165   myRange2.SetLast(aT2);
0166 }
0167 //=======================================================================
0168 //function : SetEdge1
0169 //purpose  : 
0170 //=======================================================================
0171 inline void IntTools_EdgeEdge::SetEdge2(const TopoDS_Edge&  theEdge,
0172                                         const Standard_Real aT1,
0173                                         const Standard_Real aT2)
0174 {
0175   SetEdge2(theEdge);
0176   SetRange2(aT1, aT2);
0177 }
0178 //=======================================================================
0179 //function : SetFuzzyValue
0180 //purpose  : 
0181 //=======================================================================
0182 inline void IntTools_EdgeEdge::SetFuzzyValue(const Standard_Real theFuzz)
0183 {
0184   myFuzzyValue = Max(theFuzz, Precision::Confusion());
0185 }
0186 //=======================================================================
0187 //function : FuzzyValue
0188 //purpose  : 
0189 //=======================================================================
0190 inline Standard_Real IntTools_EdgeEdge::FuzzyValue() const
0191 {
0192   return myFuzzyValue;
0193 }
0194 
0195 //=======================================================================
0196 //function : CommonParts
0197 //purpose  : 
0198 //=======================================================================
0199 inline const IntTools_SequenceOfCommonPrts& IntTools_EdgeEdge::CommonParts() const
0200 {
0201   return myCommonParts;
0202 }
0203 //=======================================================================
0204 //function : IsDone
0205 //purpose  : 
0206 //=======================================================================
0207 inline Standard_Boolean IntTools_EdgeEdge::IsDone() const
0208 {
0209   return (myErrorStatus == 0);
0210 }
0211 //=======================================================================
0212 //function : CheckData
0213 //purpose  : 
0214 //=======================================================================
0215 inline void IntTools_EdgeEdge::CheckData()
0216 {
0217   if (myEdge1.IsNull() || myEdge2.IsNull()) {
0218     myErrorStatus = 1;
0219     return;
0220   }
0221   //
0222   if (BRep_Tool::Degenerated(myEdge1) || BRep_Tool::Degenerated(myEdge2)) {
0223     myErrorStatus = 2;
0224     return;
0225   }
0226   //
0227   if (!BRep_Tool::IsGeometric(myEdge1) || !BRep_Tool::IsGeometric(myEdge2)) { 
0228     myErrorStatus = 3;
0229     return;
0230   }
0231 }
0232