File indexing completed on 2026-09-09 09:17:17
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _TopOpeBRep_FacesFiller_HeaderFile
0018 #define _TopOpeBRep_FacesFiller_HeaderFile
0019
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 #include <Standard_Handle.hxx>
0023
0024 #include <TopAbs_Orientation.hxx>
0025 #include <TopOpeBRep_PFacesIntersector.hxx>
0026 #include <TopOpeBRepDS_PDataStructure.hxx>
0027 #include <Standard_Integer.hxx>
0028 #include <TopOpeBRep_PLineInter.hxx>
0029 #include <TopTools_DataMapOfShapeListOfShape.hxx>
0030 #include <TopOpeBRep_PointClassifier.hxx>
0031 #include <TopOpeBRepTool_PShapeClassifier.hxx>
0032 #include <TopOpeBRepDS_ListIteratorOfListOfInterference.hxx>
0033 #include <TopAbs_State.hxx>
0034 class TopOpeBRepDS_HDataStructure;
0035 class TopOpeBRep_FFDumper;
0036 class TopoDS_Shape;
0037 class TopOpeBRep_VPointInter;
0038 class TopOpeBRep_VPointInterClassifier;
0039 class TopOpeBRep_VPointInterIterator;
0040 class TopOpeBRepDS_Interference;
0041 class TopOpeBRepDS_Point;
0042 class gp_Pnt;
0043
0044
0045
0046
0047
0048
0049 class TopOpeBRep_FacesFiller
0050 {
0051 public:
0052 DEFINE_STANDARD_ALLOC
0053
0054 Standard_EXPORT TopOpeBRep_FacesFiller();
0055
0056
0057 Standard_EXPORT void Insert(const TopoDS_Shape& F1,
0058 const TopoDS_Shape& F2,
0059 TopOpeBRep_FacesIntersector& FACINT,
0060 const Handle(TopOpeBRepDS_HDataStructure)& HDS);
0061
0062 Standard_EXPORT void ProcessSectionEdges();
0063
0064 Standard_EXPORT TopOpeBRep_PointClassifier& ChangePointClassifier();
0065
0066
0067 Standard_EXPORT TopOpeBRepTool_PShapeClassifier PShapeClassifier() const;
0068
0069
0070 Standard_EXPORT void SetPShapeClassifier(const TopOpeBRepTool_PShapeClassifier& PSC);
0071
0072 Standard_EXPORT void LoadLine(TopOpeBRep_LineInter& L);
0073
0074 Standard_EXPORT Standard_Boolean CheckLine(TopOpeBRep_LineInter& L) const;
0075
0076
0077 Standard_EXPORT void VP_Position(TopOpeBRep_FacesIntersector& FACINT);
0078
0079
0080 Standard_EXPORT void VP_Position(TopOpeBRep_LineInter& L);
0081
0082
0083 Standard_EXPORT void VP_PositionOnL(TopOpeBRep_LineInter& L);
0084
0085
0086 Standard_EXPORT void VP_PositionOnR(TopOpeBRep_LineInter& L);
0087
0088
0089
0090 Standard_EXPORT void VP_Position(TopOpeBRep_VPointInter& VP,
0091 TopOpeBRep_VPointInterClassifier& VPC);
0092
0093
0094 Standard_EXPORT void ProcessLine();
0095
0096 Standard_EXPORT void ResetDSC();
0097
0098
0099
0100 Standard_EXPORT void ProcessRLine();
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111 Standard_EXPORT void FillLineVPonR();
0112
0113 Standard_EXPORT void FillLine();
0114
0115
0116
0117 Standard_EXPORT void AddShapesLine();
0118
0119
0120
0121 Standard_EXPORT void GetESL(TopTools_ListOfShape& LES);
0122
0123
0124 Standard_EXPORT void ProcessVPR(TopOpeBRep_FacesFiller& FF, const TopOpeBRep_VPointInter& VP);
0125
0126
0127 Standard_EXPORT void ProcessVPIonR(TopOpeBRep_VPointInterIterator& VPI,
0128 const TopOpeBRepDS_Transition& trans1,
0129 const TopoDS_Shape& F1,
0130 const Standard_Integer ShapeIndex);
0131
0132
0133
0134 Standard_EXPORT void ProcessVPonR(const TopOpeBRep_VPointInter& VP,
0135 const TopOpeBRepDS_Transition& trans1,
0136 const TopoDS_Shape& F1,
0137 const Standard_Integer ShapeIndex);
0138
0139
0140 Standard_EXPORT void ProcessVPonclosingR(const TopOpeBRep_VPointInter& VP,
0141 const TopoDS_Shape& F1,
0142 const Standard_Integer ShapeIndex,
0143 const TopOpeBRepDS_Transition& transEdge,
0144 const TopOpeBRepDS_Kind PVKind,
0145 const Standard_Integer PVIndex,
0146 const Standard_Boolean EPIfound,
0147 const Handle(TopOpeBRepDS_Interference)& IEPI);
0148
0149
0150 Standard_EXPORT Standard_Boolean ProcessVPondgE(const TopOpeBRep_VPointInter& VP,
0151 const Standard_Integer ShapeIndex,
0152 TopOpeBRepDS_Kind& PVKind,
0153 Standard_Integer& PVIndex,
0154 Standard_Boolean& EPIfound,
0155 Handle(TopOpeBRepDS_Interference)& IEPI,
0156 Standard_Boolean& CPIfound,
0157 Handle(TopOpeBRepDS_Interference)& ICPI);
0158
0159
0160 Standard_EXPORT void ProcessVPInotonR(TopOpeBRep_VPointInterIterator& VPI);
0161
0162
0163
0164 Standard_EXPORT void ProcessVPnotonR(const TopOpeBRep_VPointInter& VP);
0165
0166
0167
0168
0169
0170
0171
0172 Standard_EXPORT Standard_Boolean GetGeometry(TopOpeBRepDS_ListIteratorOfListOfInterference& IT,
0173 const TopOpeBRep_VPointInter& VP,
0174 Standard_Integer& G,
0175 TopOpeBRepDS_Kind& K);
0176
0177 Standard_EXPORT Standard_Integer MakeGeometry(const TopOpeBRep_VPointInter& VP,
0178 const Standard_Integer ShapeIndex,
0179 TopOpeBRepDS_Kind& K);
0180
0181
0182
0183 Standard_EXPORT void StoreCurveInterference(const Handle(TopOpeBRepDS_Interference)& I);
0184
0185
0186
0187
0188 Standard_EXPORT Standard_Boolean GetFFGeometry(const TopOpeBRepDS_Point& DSP,
0189 TopOpeBRepDS_Kind& K,
0190 Standard_Integer& G) const;
0191
0192
0193
0194
0195 Standard_EXPORT Standard_Boolean GetFFGeometry(const TopOpeBRep_VPointInter& VP,
0196 TopOpeBRepDS_Kind& K,
0197 Standard_Integer& G) const;
0198
0199 Standard_EXPORT TopOpeBRep_FacesIntersector& ChangeFacesIntersector();
0200
0201 Standard_EXPORT Handle(TopOpeBRepDS_HDataStructure) HDataStructure();
0202
0203 Standard_EXPORT TopOpeBRepDS_DataStructure& ChangeDataStructure();
0204
0205 Standard_EXPORT const TopoDS_Face& Face(const Standard_Integer I) const;
0206
0207 Standard_EXPORT const TopOpeBRepDS_Transition& FaceFaceTransition(const TopOpeBRep_LineInter& L,
0208 const Standard_Integer I) const;
0209
0210 Standard_EXPORT const TopOpeBRepDS_Transition& FaceFaceTransition(const Standard_Integer I) const;
0211
0212 Standard_EXPORT TopOpeBRep_PFacesIntersector PFacesIntersectorDummy() const;
0213
0214 Standard_EXPORT TopOpeBRepDS_PDataStructure PDataStructureDummy() const;
0215
0216 Standard_EXPORT TopOpeBRep_PLineInter PLineInterDummy() const;
0217
0218 Standard_EXPORT void SetTraceIndex(const Standard_Integer exF1, const Standard_Integer exF2);
0219
0220 Standard_EXPORT void GetTraceIndex(Standard_Integer& exF1, Standard_Integer& exF2) const;
0221
0222
0223
0224 Standard_EXPORT static void Lminmax(const TopOpeBRep_LineInter& L,
0225 Standard_Real& pmin,
0226 Standard_Real& pmax);
0227
0228
0229
0230 Standard_EXPORT static Standard_Boolean LSameDomainERL(const TopOpeBRep_LineInter& L,
0231 const TopTools_ListOfShape& ERL);
0232
0233
0234
0235 Standard_EXPORT static Standard_Boolean IsVPtransLok(const TopOpeBRep_LineInter& L,
0236 const Standard_Integer iVP,
0237 const Standard_Integer SI12,
0238 TopOpeBRepDS_Transition& T);
0239
0240
0241
0242
0243
0244 Standard_EXPORT static Standard_Boolean TransvpOK(const TopOpeBRep_LineInter& L,
0245 const Standard_Integer iVP,
0246 const Standard_Integer SI,
0247 const Standard_Boolean isINOUT);
0248
0249
0250 Standard_EXPORT static Standard_Real VPParamOnER(const TopOpeBRep_VPointInter& vp,
0251 const TopOpeBRep_LineInter& Lrest);
0252
0253 Standard_EXPORT static Standard_Boolean EqualpPonR(const TopOpeBRep_LineInter& Lrest,
0254 const TopOpeBRep_VPointInter& VP1,
0255 const TopOpeBRep_VPointInter& VP2);
0256
0257 protected:
0258 private:
0259 Standard_EXPORT Standard_Boolean KeepRLine(const TopOpeBRep_LineInter& Lrest,
0260 const Standard_Boolean checkkeep) const;
0261
0262 Standard_EXPORT TopOpeBRepDS_Transition GetEdgeTrans(const TopOpeBRep_VPointInter& VP,
0263 const TopOpeBRepDS_Kind PVKind,
0264 const Standard_Integer PVIndex,
0265 const Standard_Integer Sind,
0266 const TopoDS_Face& F);
0267
0268
0269
0270 Standard_EXPORT TopAbs_State StateVPonFace(const TopOpeBRep_VPointInter& VP) const;
0271
0272
0273
0274
0275 Standard_EXPORT Standard_Boolean PequalVPonR(const gp_Pnt& P3D,
0276 const Standard_Integer VPshapeindex,
0277 TopOpeBRep_VPointInter& VP,
0278 TopOpeBRep_LineInter& Lrest) const;
0279
0280
0281 Standard_EXPORT TopAbs_State StBipVPonF(const TopOpeBRep_VPointInter& IVPf,
0282 const TopOpeBRep_VPointInter& IVPl,
0283 const TopOpeBRep_LineInter& Lrest,
0284 const Standard_Boolean isonedge1) const;
0285
0286 TopoDS_Face myF1;
0287 TopoDS_Face myF2;
0288 TopAbs_Orientation myF1ori;
0289 TopAbs_Orientation myF2ori;
0290 TopOpeBRep_PFacesIntersector myFacesIntersector;
0291 Handle(TopOpeBRepDS_HDataStructure) myHDS;
0292 TopOpeBRepDS_PDataStructure myDS;
0293 Standard_Integer myFFfirstDSP;
0294 TopOpeBRep_PLineInter myLine;
0295 Standard_Boolean myLineOK;
0296 Standard_Boolean myLineINL;
0297 TopOpeBRepDS_Transition myLineTonF1;
0298 TopOpeBRepDS_Transition myLineTonF2;
0299 Standard_Boolean myLineIsonEdge;
0300 TopTools_ListOfShape myERL;
0301 TopTools_DataMapOfShapeListOfShape myDataforDegenEd;
0302 Standard_Boolean myLastVPison0;
0303 Standard_Integer mykeptVPnbr;
0304 Standard_Integer myDSCIndex;
0305 TopOpeBRepDS_ListOfInterference myDSCIL;
0306 TopOpeBRep_PointClassifier myPointClassifier;
0307 TopOpeBRepTool_PShapeClassifier myPShapeClassifier;
0308 Standard_Integer myexF1;
0309 Standard_Integer myexF2;
0310 Handle(TopOpeBRep_FFDumper) myHFFD;
0311 };
0312
0313 #endif