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