Warning, file /include/opencascade/TopOpeBRepBuild_Builder.hxx was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _TopOpeBRepBuild_Builder_HeaderFile
0018 #define _TopOpeBRepBuild_Builder_HeaderFile
0019
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 #include <Standard_Handle.hxx>
0023
0024 #include <TopAbs_State.hxx>
0025 #include <TopoDS_Shape.hxx>
0026 #include <TopOpeBRepDS_BuildTool.hxx>
0027 #include <NCollection_Array1.hxx>
0028 #include <NCollection_HArray1.hxx>
0029 #include <Standard_Integer.hxx>
0030 #include <NCollection_List.hxx>
0031 #include <NCollection_DataMap.hxx>
0032 #include <TopOpeBRepDS_ListOfShapeOn1State.hxx>
0033 #include <TopTools_ShapeMapHasher.hxx>
0034 #include <TopoDS_Solid.hxx>
0035 #include <TopoDS_Face.hxx>
0036 #include <TopoDS_Edge.hxx>
0037 #include <NCollection_IndexedMap.hxx>
0038 #include <TopOpeBRepTool_ShapeClassifier.hxx>
0039 #include <NCollection_Map.hxx>
0040 #include <TCollection_AsciiString.hxx>
0041 #include <NCollection_IndexedDataMap.hxx>
0042 #include <TopAbs_ShapeEnum.hxx>
0043 #include <TopAbs_Orientation.hxx>
0044 #include <TopOpeBRepDS_Config.hxx>
0045 class TopOpeBRepDS_HDataStructure;
0046 class TopOpeBRepTool_ShapeExplorer;
0047 class TopOpeBRepBuild_ShapeSet;
0048 class TopOpeBRepBuild_EdgeBuilder;
0049 class TopOpeBRepBuild_FaceBuilder;
0050 class TopOpeBRepBuild_SolidBuilder;
0051 class TopOpeBRepBuild_WireEdgeSet;
0052 class TopOpeBRepDS_PointIterator;
0053 class TopOpeBRepBuild_PaveSet;
0054 class TopOpeBRepBuild_GTopo;
0055 class TopOpeBRepBuild_ShellFaceSet;
0056 class TopOpeBRepDS_SurfaceIterator;
0057 class TopOpeBRepDS_CurveIterator;
0058 class TopoDS_Vertex;
0059 class gp_Pnt;
0060
0061
0062 #ifdef FillSolid
0063 #undef FillSolid
0064 #endif
0065
0066
0067
0068
0069
0070
0071
0072
0073 class TopOpeBRepBuild_Builder
0074 {
0075 public:
0076 DEFINE_STANDARD_ALLOC
0077
0078 Standard_EXPORT TopOpeBRepBuild_Builder(const TopOpeBRepDS_BuildTool& BT);
0079
0080 Standard_EXPORT virtual ~TopOpeBRepBuild_Builder();
0081
0082 Standard_EXPORT TopOpeBRepDS_BuildTool& ChangeBuildTool();
0083
0084 Standard_EXPORT const TopOpeBRepDS_BuildTool& BuildTool() const;
0085
0086
0087
0088 Standard_EXPORT virtual void Perform(const occ::handle<TopOpeBRepDS_HDataStructure>& HDS);
0089
0090
0091
0092
0093
0094 Standard_EXPORT virtual void Perform(const occ::handle<TopOpeBRepDS_HDataStructure>& HDS,
0095 const TopoDS_Shape& S1,
0096 const TopoDS_Shape& S2);
0097
0098
0099 Standard_EXPORT occ::handle<TopOpeBRepDS_HDataStructure> DataStructure() const;
0100
0101
0102
0103 Standard_EXPORT virtual void Clear();
0104
0105
0106
0107
0108
0109
0110 Standard_EXPORT void MergeEdges(const NCollection_List<TopoDS_Shape>& L1,
0111 const TopAbs_State TB1,
0112 const NCollection_List<TopoDS_Shape>& L2,
0113 const TopAbs_State TB2,
0114 const bool onA = false,
0115 const bool onB = false,
0116 const bool onAB = false);
0117
0118
0119
0120 Standard_EXPORT void MergeFaces(const NCollection_List<TopoDS_Shape>& S1,
0121 const TopAbs_State TB1,
0122 const NCollection_List<TopoDS_Shape>& S2,
0123 const TopAbs_State TB2,
0124 const bool onA = false,
0125 const bool onB = false,
0126 const bool onAB = false);
0127
0128
0129
0130 Standard_EXPORT void MergeSolids(const TopoDS_Shape& S1,
0131 const TopAbs_State TB1,
0132 const TopoDS_Shape& S2,
0133 const TopAbs_State TB2);
0134
0135
0136
0137 Standard_EXPORT void MergeShapes(const TopoDS_Shape& S1,
0138 const TopAbs_State TB1,
0139 const TopoDS_Shape& S2,
0140 const TopAbs_State TB2);
0141
0142 Standard_EXPORT void End();
0143
0144 Standard_EXPORT bool Classify() const;
0145
0146 Standard_EXPORT void ChangeClassify(const bool B);
0147
0148
0149
0150 Standard_EXPORT void MergeSolid(const TopoDS_Shape& S, const TopAbs_State TB);
0151
0152
0153 Standard_EXPORT const TopoDS_Shape& NewVertex(const int I) const;
0154
0155
0156 Standard_EXPORT const NCollection_List<TopoDS_Shape>& NewEdges(const int I) const;
0157
0158
0159 Standard_EXPORT const NCollection_List<TopoDS_Shape>& NewFaces(const int I) const;
0160
0161
0162 Standard_EXPORT bool IsSplit(const TopoDS_Shape& S, const TopAbs_State TB) const;
0163
0164
0165 Standard_EXPORT const NCollection_List<TopoDS_Shape>& Splits(const TopoDS_Shape& S,
0166 const TopAbs_State TB) const;
0167
0168
0169 Standard_EXPORT bool IsMerged(const TopoDS_Shape& S, const TopAbs_State TB) const;
0170
0171
0172 Standard_EXPORT const NCollection_List<TopoDS_Shape>& Merged(const TopoDS_Shape& S,
0173 const TopAbs_State TB) const;
0174
0175 Standard_EXPORT void InitSection();
0176
0177
0178 Standard_EXPORT void SplitSectionEdges();
0179
0180
0181 Standard_EXPORT virtual void SplitSectionEdge(const TopoDS_Shape& E);
0182
0183
0184 Standard_EXPORT void SectionCurves(NCollection_List<TopoDS_Shape>& L);
0185
0186
0187
0188 Standard_EXPORT void SectionEdges(NCollection_List<TopoDS_Shape>& L);
0189
0190
0191
0192
0193 Standard_EXPORT void FillSecEdgeAncestorMap(
0194 const int aShapeRank,
0195 const NCollection_Map<TopoDS_Shape, TopTools_ShapeMapHasher>& aMapON,
0196 NCollection_DataMap<TopoDS_Shape, TopoDS_Shape, TopTools_ShapeMapHasher>& anAncMap) const;
0197
0198
0199 Standard_EXPORT void Section(NCollection_List<TopoDS_Shape>& L);
0200
0201 Standard_EXPORT const NCollection_List<TopoDS_Shape>& Section();
0202
0203
0204
0205 Standard_EXPORT void BuildVertices(const occ::handle<TopOpeBRepDS_HDataStructure>& DS);
0206
0207
0208
0209 Standard_EXPORT void BuildEdges(const occ::handle<TopOpeBRepDS_HDataStructure>& DS);
0210
0211 Standard_EXPORT const NCollection_DataMap<TopoDS_Shape,
0212 TopOpeBRepDS_ListOfShapeOn1State,
0213 TopTools_ShapeMapHasher>&
0214 MSplit(const TopAbs_State s) const;
0215
0216 Standard_EXPORT NCollection_DataMap<TopoDS_Shape,
0217 TopOpeBRepDS_ListOfShapeOn1State,
0218 TopTools_ShapeMapHasher>&
0219 ChangeMSplit(const TopAbs_State s);
0220
0221 Standard_EXPORT void MakeEdges(const TopoDS_Shape& E,
0222 TopOpeBRepBuild_EdgeBuilder& B,
0223 NCollection_List<TopoDS_Shape>& L);
0224
0225 Standard_EXPORT void MakeFaces(const TopoDS_Shape& F,
0226 TopOpeBRepBuild_FaceBuilder& B,
0227 NCollection_List<TopoDS_Shape>& L);
0228
0229 Standard_EXPORT void MakeSolids(TopOpeBRepBuild_SolidBuilder& B,
0230 NCollection_List<TopoDS_Shape>& L);
0231
0232 Standard_EXPORT void MakeShells(TopOpeBRepBuild_SolidBuilder& B,
0233 NCollection_List<TopoDS_Shape>& L);
0234
0235
0236
0237
0238 Standard_EXPORT NCollection_List<TopoDS_Shape>& ChangeSplit(const TopoDS_Shape& S,
0239 const TopAbs_State TB);
0240
0241 Standard_EXPORT bool Opec12() const;
0242
0243 Standard_EXPORT bool Opec21() const;
0244
0245 Standard_EXPORT bool Opecom() const;
0246
0247 Standard_EXPORT bool Opefus() const;
0248
0249 Standard_EXPORT TopAbs_State ShapePosition(const TopoDS_Shape& S,
0250 const NCollection_List<TopoDS_Shape>& LS);
0251
0252 Standard_EXPORT bool KeepShape(const TopoDS_Shape& S,
0253 const NCollection_List<TopoDS_Shape>& LS,
0254 const TopAbs_State T);
0255
0256 Standard_EXPORT static TopAbs_ShapeEnum TopType(const TopoDS_Shape& S);
0257
0258 Standard_EXPORT static bool Reverse(const TopAbs_State T1, const TopAbs_State T2);
0259
0260 Standard_EXPORT static TopAbs_Orientation Orient(const TopAbs_Orientation O, const bool R);
0261
0262 Standard_EXPORT void FindSameDomain(NCollection_List<TopoDS_Shape>& L1,
0263 NCollection_List<TopoDS_Shape>& L2) const;
0264
0265 Standard_EXPORT void FindSameDomainSameOrientation(NCollection_List<TopoDS_Shape>& LSO,
0266 NCollection_List<TopoDS_Shape>& LDO) const;
0267
0268 Standard_EXPORT void MapShapes(const TopoDS_Shape& S1, const TopoDS_Shape& S2);
0269
0270 Standard_EXPORT void ClearMaps();
0271
0272 Standard_EXPORT void FindSameRank(const NCollection_List<TopoDS_Shape>& L1,
0273 const int R,
0274 NCollection_List<TopoDS_Shape>& L2) const;
0275
0276 Standard_EXPORT int ShapeRank(const TopoDS_Shape& S) const;
0277
0278 Standard_EXPORT bool IsShapeOf(const TopoDS_Shape& S, const int I12) const;
0279
0280 Standard_EXPORT static bool Contains(const TopoDS_Shape& S,
0281 const NCollection_List<TopoDS_Shape>& L);
0282
0283 Standard_EXPORT int FindIsKPart();
0284
0285 Standard_EXPORT int IsKPart() const;
0286
0287 Standard_EXPORT virtual void MergeKPart();
0288
0289 Standard_EXPORT virtual void MergeKPart(const TopAbs_State TB1, const TopAbs_State TB2);
0290
0291 Standard_EXPORT void MergeKPartiskole();
0292
0293 Standard_EXPORT void MergeKPartiskoletge();
0294
0295 Standard_EXPORT void MergeKPartisdisj();
0296
0297 Standard_EXPORT void MergeKPartisfafa();
0298
0299 Standard_EXPORT void MergeKPartissoso();
0300
0301 Standard_EXPORT int KPiskole();
0302
0303 Standard_EXPORT int KPiskoletge();
0304
0305 Standard_EXPORT int KPisdisj();
0306
0307 Standard_EXPORT int KPisfafa();
0308
0309 Standard_EXPORT int KPissoso();
0310
0311 Standard_EXPORT void KPClearMaps();
0312
0313 Standard_EXPORT int KPlhg(const TopoDS_Shape& S,
0314 const TopAbs_ShapeEnum T,
0315 NCollection_List<TopoDS_Shape>& L) const;
0316
0317 Standard_EXPORT int KPlhg(const TopoDS_Shape& S, const TopAbs_ShapeEnum T) const;
0318
0319 Standard_EXPORT int KPlhsd(const TopoDS_Shape& S,
0320 const TopAbs_ShapeEnum T,
0321 NCollection_List<TopoDS_Shape>& L) const;
0322
0323 Standard_EXPORT int KPlhsd(const TopoDS_Shape& S, const TopAbs_ShapeEnum T) const;
0324
0325 Standard_EXPORT TopAbs_State KPclasSS(const TopoDS_Shape& S1,
0326 const NCollection_List<TopoDS_Shape>& exceptLS1,
0327 const TopoDS_Shape& S2);
0328
0329 Standard_EXPORT TopAbs_State KPclasSS(const TopoDS_Shape& S1,
0330 const TopoDS_Shape& exceptS1,
0331 const TopoDS_Shape& S2);
0332
0333 Standard_EXPORT TopAbs_State KPclasSS(const TopoDS_Shape& S1, const TopoDS_Shape& S2);
0334
0335 Standard_EXPORT bool KPiskolesh(const TopoDS_Shape& S,
0336 NCollection_List<TopoDS_Shape>& LS,
0337 NCollection_List<TopoDS_Shape>& LF) const;
0338
0339 Standard_EXPORT bool KPiskoletgesh(const TopoDS_Shape& S,
0340 NCollection_List<TopoDS_Shape>& LS,
0341 NCollection_List<TopoDS_Shape>& LF) const;
0342
0343 Standard_EXPORT void KPSameDomain(NCollection_List<TopoDS_Shape>& L1,
0344 NCollection_List<TopoDS_Shape>& L2) const;
0345
0346 Standard_EXPORT int KPisdisjsh(const TopoDS_Shape& S) const;
0347
0348 Standard_EXPORT int KPisfafash(const TopoDS_Shape& S) const;
0349
0350 Standard_EXPORT int KPissososh(const TopoDS_Shape& S) const;
0351
0352 Standard_EXPORT void KPiskoleanalyse(const TopAbs_State FT1,
0353 const TopAbs_State FT2,
0354 const TopAbs_State ST1,
0355 const TopAbs_State ST2,
0356 int& I,
0357 int& I1,
0358 int& I2) const;
0359
0360 Standard_EXPORT void KPiskoletgeanalyse(const TopOpeBRepDS_Config Conf,
0361 const TopAbs_State ST1,
0362 const TopAbs_State ST2,
0363 int& I) const;
0364
0365 Standard_EXPORT void KPisdisjanalyse(const TopAbs_State ST1,
0366 const TopAbs_State ST2,
0367 int& I,
0368 int& IC1,
0369 int& IC2) const;
0370
0371 Standard_EXPORT static int KPls(const TopoDS_Shape& S,
0372 const TopAbs_ShapeEnum T,
0373 NCollection_List<TopoDS_Shape>& L);
0374
0375 Standard_EXPORT static int KPls(const TopoDS_Shape& S, const TopAbs_ShapeEnum T);
0376
0377 Standard_EXPORT TopAbs_State KPclassF(const TopoDS_Shape& F1, const TopoDS_Shape& F2);
0378
0379 Standard_EXPORT void KPclassFF(const TopoDS_Shape& F1,
0380 const TopoDS_Shape& F2,
0381 TopAbs_State& T1,
0382 TopAbs_State& T2);
0383
0384 Standard_EXPORT bool KPiskoleFF(const TopoDS_Shape& F1,
0385 const TopoDS_Shape& F2,
0386 TopAbs_State& T1,
0387 TopAbs_State& T2);
0388
0389 Standard_EXPORT static bool KPContains(const TopoDS_Shape& S,
0390 const NCollection_List<TopoDS_Shape>& L);
0391
0392 Standard_EXPORT TopoDS_Shape KPmakeface(const TopoDS_Shape& F1,
0393 const NCollection_List<TopoDS_Shape>& LF2,
0394 const TopAbs_State T1,
0395 const TopAbs_State T2,
0396 const bool R1,
0397 const bool R2);
0398
0399 Standard_EXPORT static int KPreturn(const int KP);
0400
0401 Standard_EXPORT void SplitEvisoONperiodicF();
0402
0403 Standard_EXPORT void GMergeSolids(const NCollection_List<TopoDS_Shape>& LSO1,
0404 const NCollection_List<TopoDS_Shape>& LSO2,
0405 const TopOpeBRepBuild_GTopo& G);
0406
0407 Standard_EXPORT void GFillSolidsSFS(const NCollection_List<TopoDS_Shape>& LSO1,
0408 const NCollection_List<TopoDS_Shape>& LSO2,
0409 const TopOpeBRepBuild_GTopo& G,
0410 TopOpeBRepBuild_ShellFaceSet& SFS);
0411
0412 Standard_EXPORT virtual void GFillSolidSFS(const TopoDS_Shape& SO1,
0413 const NCollection_List<TopoDS_Shape>& LSO2,
0414 const TopOpeBRepBuild_GTopo& G,
0415 TopOpeBRepBuild_ShellFaceSet& SFS);
0416
0417 Standard_EXPORT void GFillSurfaceTopologySFS(const TopoDS_Shape& SO1,
0418 const TopOpeBRepBuild_GTopo& G,
0419 TopOpeBRepBuild_ShellFaceSet& SFS);
0420
0421 Standard_EXPORT void GFillSurfaceTopologySFS(const TopOpeBRepDS_SurfaceIterator& IT,
0422 const TopOpeBRepBuild_GTopo& G,
0423 TopOpeBRepBuild_ShellFaceSet& SFS) const;
0424
0425 Standard_EXPORT virtual void GFillShellSFS(const TopoDS_Shape& SH1,
0426 const NCollection_List<TopoDS_Shape>& LSO2,
0427 const TopOpeBRepBuild_GTopo& G,
0428 TopOpeBRepBuild_ShellFaceSet& SFS);
0429
0430 Standard_EXPORT void GFillFaceSFS(const TopoDS_Shape& F1,
0431 const NCollection_List<TopoDS_Shape>& LSO2,
0432 const TopOpeBRepBuild_GTopo& G,
0433 TopOpeBRepBuild_ShellFaceSet& SFS);
0434
0435 Standard_EXPORT void GSplitFaceSFS(const TopoDS_Shape& F1,
0436 const NCollection_List<TopoDS_Shape>& LSclass,
0437 const TopOpeBRepBuild_GTopo& G,
0438 TopOpeBRepBuild_ShellFaceSet& SFS);
0439
0440 Standard_EXPORT void GMergeFaceSFS(const TopoDS_Shape& F,
0441 const TopOpeBRepBuild_GTopo& G,
0442 TopOpeBRepBuild_ShellFaceSet& SFS);
0443
0444 Standard_EXPORT void GSplitFace(const TopoDS_Shape& F,
0445 const TopOpeBRepBuild_GTopo& G,
0446 const NCollection_List<TopoDS_Shape>& LSclass);
0447
0448 Standard_EXPORT void AddONPatchesSFS(const TopOpeBRepBuild_GTopo& G,
0449 TopOpeBRepBuild_ShellFaceSet& SFS);
0450
0451 Standard_EXPORT void FillOnPatches(const NCollection_List<TopoDS_Shape>& anEdgesON,
0452 const TopoDS_Shape& aBaseFace,
0453 const NCollection_IndexedMap<TopoDS_Shape>& avoidMap);
0454
0455 Standard_EXPORT void FindFacesTouchingEdge(const TopoDS_Shape& aFace,
0456 const TopoDS_Shape& anEdge,
0457 const int aShRank,
0458 NCollection_List<TopoDS_Shape>& aFaces) const;
0459
0460 Standard_EXPORT void GMergeFaces(const NCollection_List<TopoDS_Shape>& LF1,
0461 const NCollection_List<TopoDS_Shape>& LF2,
0462 const TopOpeBRepBuild_GTopo& G);
0463
0464 Standard_EXPORT void GFillFacesWES(const NCollection_List<TopoDS_Shape>& LF1,
0465 const NCollection_List<TopoDS_Shape>& LF2,
0466 const TopOpeBRepBuild_GTopo& G,
0467 TopOpeBRepBuild_WireEdgeSet& WES);
0468
0469 Standard_EXPORT void GFillFacesWESK(const NCollection_List<TopoDS_Shape>& LF1,
0470 const NCollection_List<TopoDS_Shape>& LF2,
0471 const TopOpeBRepBuild_GTopo& G,
0472 TopOpeBRepBuild_WireEdgeSet& WES,
0473 const int K);
0474
0475 Standard_EXPORT void GFillFacesWESMakeFaces(const NCollection_List<TopoDS_Shape>& LF1,
0476 const NCollection_List<TopoDS_Shape>& LF2,
0477 const NCollection_List<TopoDS_Shape>& LSO,
0478 const TopOpeBRepBuild_GTopo& G);
0479
0480 Standard_EXPORT void GFillFaceWES(const TopoDS_Shape& F,
0481 const NCollection_List<TopoDS_Shape>& LF2,
0482 const TopOpeBRepBuild_GTopo& G,
0483 TopOpeBRepBuild_WireEdgeSet& WES);
0484
0485 Standard_EXPORT void GFillCurveTopologyWES(const TopoDS_Shape& F,
0486 const TopOpeBRepBuild_GTopo& G,
0487 TopOpeBRepBuild_WireEdgeSet& WES);
0488
0489 Standard_EXPORT void GFillCurveTopologyWES(const TopOpeBRepDS_CurveIterator& IT,
0490 const TopOpeBRepBuild_GTopo& G,
0491 TopOpeBRepBuild_WireEdgeSet& WES) const;
0492
0493 Standard_EXPORT void GFillONPartsWES(const TopoDS_Shape& F,
0494 const TopOpeBRepBuild_GTopo& G,
0495 const NCollection_List<TopoDS_Shape>& LSclass,
0496 TopOpeBRepBuild_WireEdgeSet& WES);
0497
0498 Standard_EXPORT void GFillWireWES(const TopoDS_Shape& W,
0499 const NCollection_List<TopoDS_Shape>& LF2,
0500 const TopOpeBRepBuild_GTopo& G,
0501 TopOpeBRepBuild_WireEdgeSet& WES);
0502
0503 Standard_EXPORT void GFillEdgeWES(const TopoDS_Shape& E,
0504 const NCollection_List<TopoDS_Shape>& LF2,
0505 const TopOpeBRepBuild_GTopo& G,
0506 TopOpeBRepBuild_WireEdgeSet& WES);
0507
0508 Standard_EXPORT void GSplitEdgeWES(const TopoDS_Shape& E,
0509 const NCollection_List<TopoDS_Shape>& LF2,
0510 const TopOpeBRepBuild_GTopo& G,
0511 TopOpeBRepBuild_WireEdgeSet& WES);
0512
0513 Standard_EXPORT void GMergeEdgeWES(const TopoDS_Shape& E,
0514 const TopOpeBRepBuild_GTopo& G,
0515 TopOpeBRepBuild_WireEdgeSet& WES);
0516
0517 Standard_EXPORT void GSplitEdge(const TopoDS_Shape& E,
0518 const TopOpeBRepBuild_GTopo& G,
0519 const NCollection_List<TopoDS_Shape>& LSclass);
0520
0521 Standard_EXPORT void GMergeEdges(const NCollection_List<TopoDS_Shape>& LE1,
0522 const NCollection_List<TopoDS_Shape>& LE2,
0523 const TopOpeBRepBuild_GTopo& G);
0524
0525 Standard_EXPORT void GFillEdgesPVS(const NCollection_List<TopoDS_Shape>& LE1,
0526 const NCollection_List<TopoDS_Shape>& LE2,
0527 const TopOpeBRepBuild_GTopo& G,
0528 TopOpeBRepBuild_PaveSet& PVS);
0529
0530 Standard_EXPORT void GFillEdgePVS(const TopoDS_Shape& E,
0531 const NCollection_List<TopoDS_Shape>& LE2,
0532 const TopOpeBRepBuild_GTopo& G,
0533 TopOpeBRepBuild_PaveSet& PVS);
0534
0535 Standard_EXPORT void GFillPointTopologyPVS(const TopoDS_Shape& E,
0536 const TopOpeBRepBuild_GTopo& G,
0537 TopOpeBRepBuild_PaveSet& PVS);
0538
0539 Standard_EXPORT void GFillPointTopologyPVS(const TopoDS_Shape& E,
0540 const TopOpeBRepDS_PointIterator& IT,
0541 const TopOpeBRepBuild_GTopo& G,
0542 TopOpeBRepBuild_PaveSet& PVS) const;
0543
0544 Standard_EXPORT bool GParamOnReference(const TopoDS_Vertex& V,
0545 const TopoDS_Edge& E,
0546 double& P) const;
0547
0548 Standard_EXPORT bool GKeepShape(const TopoDS_Shape& S,
0549 const NCollection_List<TopoDS_Shape>& Lref,
0550 const TopAbs_State T);
0551
0552
0553 Standard_EXPORT bool GKeepShape1(const TopoDS_Shape& S,
0554 const NCollection_List<TopoDS_Shape>& Lref,
0555 const TopAbs_State T,
0556 TopAbs_State& pos);
0557
0558
0559
0560 Standard_EXPORT void GKeepShapes(const TopoDS_Shape& S,
0561 const NCollection_List<TopoDS_Shape>& Lref,
0562 const TopAbs_State T,
0563 const NCollection_List<TopoDS_Shape>& Lin,
0564 NCollection_List<TopoDS_Shape>& Lou);
0565
0566 Standard_EXPORT void GSFSMakeSolids(const TopoDS_Shape& SOF,
0567 TopOpeBRepBuild_ShellFaceSet& SFS,
0568 NCollection_List<TopoDS_Shape>& LOSO);
0569
0570 Standard_EXPORT void GSOBUMakeSolids(const TopoDS_Shape& SOF,
0571 TopOpeBRepBuild_SolidBuilder& SOBU,
0572 NCollection_List<TopoDS_Shape>& LOSO);
0573
0574 Standard_EXPORT virtual void GWESMakeFaces(const TopoDS_Shape& FF,
0575 TopOpeBRepBuild_WireEdgeSet& WES,
0576 NCollection_List<TopoDS_Shape>& LOF);
0577
0578 Standard_EXPORT void GFABUMakeFaces(
0579 const TopoDS_Shape& FF,
0580 TopOpeBRepBuild_FaceBuilder& FABU,
0581 NCollection_List<TopoDS_Shape>& LOF,
0582 NCollection_DataMap<TopoDS_Shape, int, TopTools_ShapeMapHasher>& MWisOld);
0583
0584 Standard_EXPORT void RegularizeFaces(const TopoDS_Shape& FF,
0585 const NCollection_List<TopoDS_Shape>& lnewFace,
0586 NCollection_List<TopoDS_Shape>& LOF);
0587
0588 Standard_EXPORT void RegularizeFace(const TopoDS_Shape& FF,
0589 const TopoDS_Shape& newFace,
0590 NCollection_List<TopoDS_Shape>& LOF);
0591
0592 Standard_EXPORT void RegularizeSolids(const TopoDS_Shape& SS,
0593 const NCollection_List<TopoDS_Shape>& lnewSolid,
0594 NCollection_List<TopoDS_Shape>& LOS);
0595
0596 Standard_EXPORT void RegularizeSolid(const TopoDS_Shape& SS,
0597 const TopoDS_Shape& newSolid,
0598 NCollection_List<TopoDS_Shape>& LOS);
0599
0600 Standard_EXPORT void GPVSMakeEdges(const TopoDS_Shape& EF,
0601 TopOpeBRepBuild_PaveSet& PVS,
0602 NCollection_List<TopoDS_Shape>& LOE) const;
0603
0604 Standard_EXPORT void GEDBUMakeEdges(const TopoDS_Shape& EF,
0605 TopOpeBRepBuild_EdgeBuilder& EDBU,
0606 NCollection_List<TopoDS_Shape>& LOE) const;
0607
0608 Standard_EXPORT bool GToSplit(const TopoDS_Shape& S, const TopAbs_State TB) const;
0609
0610 Standard_EXPORT bool GToMerge(const TopoDS_Shape& S) const;
0611
0612 Standard_EXPORT static bool GTakeCommonOfSame(const TopOpeBRepBuild_GTopo& G);
0613
0614 Standard_EXPORT static bool GTakeCommonOfDiff(const TopOpeBRepBuild_GTopo& G);
0615
0616 Standard_EXPORT void GFindSamDom(const TopoDS_Shape& S,
0617 NCollection_List<TopoDS_Shape>& L1,
0618 NCollection_List<TopoDS_Shape>& L2) const;
0619
0620 Standard_EXPORT void GFindSamDom(NCollection_List<TopoDS_Shape>& L1,
0621 NCollection_List<TopoDS_Shape>& L2) const;
0622
0623 Standard_EXPORT void GFindSamDomSODO(const TopoDS_Shape& S,
0624 NCollection_List<TopoDS_Shape>& LSO,
0625 NCollection_List<TopoDS_Shape>& LDO) const;
0626
0627 Standard_EXPORT void GFindSamDomSODO(NCollection_List<TopoDS_Shape>& LSO,
0628 NCollection_List<TopoDS_Shape>& LDO) const;
0629
0630 Standard_EXPORT void GMapShapes(const TopoDS_Shape& S1, const TopoDS_Shape& S2);
0631
0632 Standard_EXPORT void GClearMaps();
0633
0634 Standard_EXPORT void GFindSameRank(const NCollection_List<TopoDS_Shape>& L1,
0635 const int R,
0636 NCollection_List<TopoDS_Shape>& L2) const;
0637
0638 Standard_EXPORT int GShapeRank(const TopoDS_Shape& S) const;
0639
0640 Standard_EXPORT bool GIsShapeOf(const TopoDS_Shape& S, const int I12) const;
0641
0642 Standard_EXPORT static bool GContains(const TopoDS_Shape& S,
0643 const NCollection_List<TopoDS_Shape>& L);
0644
0645 Standard_EXPORT static void GCopyList(const NCollection_List<TopoDS_Shape>& Lin,
0646 const int i1,
0647 const int i2,
0648 NCollection_List<TopoDS_Shape>& Lou);
0649
0650 Standard_EXPORT static void GCopyList(const NCollection_List<TopoDS_Shape>& Lin,
0651 NCollection_List<TopoDS_Shape>& Lou);
0652
0653 Standard_EXPORT void GdumpLS(const NCollection_List<TopoDS_Shape>& L) const;
0654
0655 Standard_EXPORT static void GdumpPNT(const gp_Pnt& P);
0656
0657 Standard_EXPORT static void GdumpORIPARPNT(const TopAbs_Orientation o,
0658 const double p,
0659 const gp_Pnt& Pnt);
0660
0661 Standard_EXPORT void GdumpSHA(const TopoDS_Shape& S, void* const str = nullptr) const;
0662
0663 Standard_EXPORT void GdumpSHAORI(const TopoDS_Shape& S, void* const str = nullptr) const;
0664
0665 Standard_EXPORT void GdumpSHAORIGEO(const TopoDS_Shape& S, void* const str = nullptr) const;
0666
0667 Standard_EXPORT void GdumpSHASTA(const int iS,
0668 const TopAbs_State T,
0669 const TCollection_AsciiString& a = "",
0670 const TCollection_AsciiString& b = "") const;
0671
0672 Standard_EXPORT void GdumpSHASTA(const TopoDS_Shape& S,
0673 const TopAbs_State T,
0674 const TCollection_AsciiString& a = "",
0675 const TCollection_AsciiString& b = "") const;
0676
0677 Standard_EXPORT void GdumpSHASTA(const int iS,
0678 const TopAbs_State T,
0679 const TopOpeBRepBuild_ShapeSet& SS,
0680 const TCollection_AsciiString& a = "",
0681 const TCollection_AsciiString& b = "",
0682 const TCollection_AsciiString& c = "\n") const;
0683
0684 Standard_EXPORT void GdumpEDG(const TopoDS_Shape& S, void* const str = nullptr) const;
0685
0686 Standard_EXPORT void GdumpEDGVER(const TopoDS_Shape& E,
0687 const TopoDS_Shape& V,
0688 void* const str = nullptr) const;
0689
0690 Standard_EXPORT void GdumpSAMDOM(const NCollection_List<TopoDS_Shape>& L,
0691 void* const str = nullptr) const;
0692
0693 Standard_EXPORT void GdumpEXP(const TopOpeBRepTool_ShapeExplorer& E) const;
0694
0695 Standard_EXPORT void GdumpSOBU(TopOpeBRepBuild_SolidBuilder& SB) const;
0696
0697 Standard_EXPORT void GdumpFABU(TopOpeBRepBuild_FaceBuilder& FB) const;
0698
0699 Standard_EXPORT void GdumpEDBU(TopOpeBRepBuild_EdgeBuilder& EB) const;
0700
0701 Standard_EXPORT bool GtraceSPS(const int iS) const;
0702
0703 Standard_EXPORT bool GtraceSPS(const int iS, const int jS) const;
0704
0705 Standard_EXPORT bool GtraceSPS(const TopoDS_Shape& S) const;
0706
0707 Standard_EXPORT bool GtraceSPS(const TopoDS_Shape& S, int& IS) const;
0708
0709 Standard_EXPORT void GdumpSHASETreset();
0710
0711 Standard_EXPORT int GdumpSHASETindex();
0712
0713 Standard_EXPORT static void PrintGeo(const TopoDS_Shape& S);
0714
0715 Standard_EXPORT static void PrintSur(const TopoDS_Face& F);
0716
0717 Standard_EXPORT static void PrintCur(const TopoDS_Edge& E);
0718
0719 Standard_EXPORT static void PrintPnt(const TopoDS_Vertex& V);
0720
0721 Standard_EXPORT static void PrintOri(const TopoDS_Shape& S);
0722
0723 Standard_EXPORT static TCollection_AsciiString StringState(const TopAbs_State S);
0724
0725 Standard_EXPORT static bool GcheckNBOUNDS(const TopoDS_Shape& E);
0726
0727 friend class TopOpeBRepBuild_HBuilder;
0728
0729 protected:
0730
0731
0732 Standard_EXPORT void BuildEdges(const int iC, const occ::handle<TopOpeBRepDS_HDataStructure>& DS);
0733
0734
0735
0736 Standard_EXPORT void BuildFaces(const int iS, const occ::handle<TopOpeBRepDS_HDataStructure>& DS);
0737
0738
0739
0740 Standard_EXPORT void BuildFaces(const occ::handle<TopOpeBRepDS_HDataStructure>& DS);
0741
0742
0743 Standard_EXPORT void SplitEdge(const TopoDS_Shape& E1,
0744 const TopAbs_State TB1,
0745 const TopAbs_State TB2);
0746
0747
0748 Standard_EXPORT void SplitEdge1(const TopoDS_Shape& E1,
0749 const TopAbs_State TB1,
0750 const TopAbs_State TB2);
0751
0752
0753 Standard_EXPORT void SplitEdge2(const TopoDS_Shape& E1,
0754 const TopAbs_State TB1,
0755 const TopAbs_State TB2);
0756
0757
0758
0759
0760 Standard_EXPORT void SplitFace(const TopoDS_Shape& F1,
0761 const TopAbs_State TB1,
0762 const TopAbs_State TB2);
0763
0764 Standard_EXPORT void SplitFace1(const TopoDS_Shape& F1,
0765 const TopAbs_State TB1,
0766 const TopAbs_State TB2);
0767
0768 Standard_EXPORT void SplitFace2(const TopoDS_Shape& F1,
0769 const TopAbs_State TB1,
0770 const TopAbs_State TB2);
0771
0772
0773 Standard_EXPORT void SplitSolid(const TopoDS_Shape& S1,
0774 const TopAbs_State TB1,
0775 const TopAbs_State TB2);
0776
0777
0778
0779
0780 Standard_EXPORT void SplitShapes(TopOpeBRepTool_ShapeExplorer& Ex,
0781 const TopAbs_State TB1,
0782 const TopAbs_State TB2,
0783 TopOpeBRepBuild_ShapeSet& SS,
0784 const bool RevOri);
0785
0786
0787
0788 Standard_EXPORT void FillFace(const TopoDS_Shape& F1,
0789 const TopAbs_State TB1,
0790 const NCollection_List<TopoDS_Shape>& LF2,
0791 const TopAbs_State TB2,
0792 TopOpeBRepBuild_WireEdgeSet& WES,
0793 const bool RevOri);
0794
0795
0796
0797 Standard_EXPORT void FillSolid(const TopoDS_Shape& S1,
0798 const TopAbs_State TB1,
0799 const NCollection_List<TopoDS_Shape>& LS2,
0800 const TopAbs_State TB2,
0801 TopOpeBRepBuild_ShapeSet& SS,
0802 const bool RevOri);
0803
0804
0805
0806 Standard_EXPORT void FillShape(const TopoDS_Shape& S1,
0807 const TopAbs_State TB1,
0808 const NCollection_List<TopoDS_Shape>& LS2,
0809 const TopAbs_State TB2,
0810 TopOpeBRepBuild_ShapeSet& SS,
0811 const bool RevOri);
0812
0813
0814
0815
0816
0817 Standard_EXPORT void FillVertexSet(TopOpeBRepDS_PointIterator& IT,
0818 const TopAbs_State TB,
0819 TopOpeBRepBuild_PaveSet& PVS) const;
0820
0821
0822
0823
0824 Standard_EXPORT void FillVertexSetOnValue(const TopOpeBRepDS_PointIterator& IT,
0825 const TopAbs_State TB,
0826 TopOpeBRepBuild_PaveSet& PVS) const;
0827
0828
0829 Standard_EXPORT bool ToSplit(const TopoDS_Shape& S, const TopAbs_State TB) const;
0830
0831
0832
0833 Standard_EXPORT void MarkSplit(const TopoDS_Shape& S, const TopAbs_State TB, const bool B = true);
0834
0835
0836
0837 Standard_EXPORT NCollection_List<TopoDS_Shape>& ChangeMerged(const TopoDS_Shape& S,
0838 const TopAbs_State TB);
0839
0840
0841 Standard_EXPORT TopoDS_Shape& ChangeNewVertex(const int I);
0842
0843
0844 Standard_EXPORT NCollection_List<TopoDS_Shape>& ChangeNewEdges(const int I);
0845
0846
0847 Standard_EXPORT NCollection_List<TopoDS_Shape>& ChangeNewFaces(const int I);
0848
0849 Standard_EXPORT void AddIntersectionEdges(TopoDS_Shape& F,
0850 const TopAbs_State TB,
0851 const bool RevOri,
0852 TopOpeBRepBuild_ShapeSet& ES) const;
0853
0854 Standard_EXPORT void UpdateSplitAndMerged(
0855 const NCollection_DataMap<int, NCollection_List<TopoDS_Shape>>& mle,
0856 const NCollection_DataMap<int, TopoDS_Shape>& mre,
0857 const NCollection_DataMap<TopoDS_Shape, TopoDS_Shape, TopTools_ShapeMapHasher>& mlf,
0858 const TopAbs_State state);
0859
0860 TopAbs_State myState1;
0861 TopAbs_State myState2;
0862 TopoDS_Shape myShape1;
0863 TopoDS_Shape myShape2;
0864 occ::handle<TopOpeBRepDS_HDataStructure> myDataStructure;
0865 TopOpeBRepDS_BuildTool myBuildTool;
0866 occ::handle<NCollection_HArray1<TopoDS_Shape>> myNewVertices;
0867 NCollection_DataMap<int, NCollection_List<TopoDS_Shape>> myNewEdges;
0868 occ::handle<NCollection_HArray1<NCollection_List<TopoDS_Shape>>> myNewFaces;
0869 NCollection_DataMap<TopoDS_Shape, TopOpeBRepDS_ListOfShapeOn1State, TopTools_ShapeMapHasher>
0870 mySplitIN;
0871 NCollection_DataMap<TopoDS_Shape, TopOpeBRepDS_ListOfShapeOn1State, TopTools_ShapeMapHasher>
0872 mySplitON;
0873 NCollection_DataMap<TopoDS_Shape, TopOpeBRepDS_ListOfShapeOn1State, TopTools_ShapeMapHasher>
0874 mySplitOUT;
0875 NCollection_DataMap<TopoDS_Shape, TopOpeBRepDS_ListOfShapeOn1State, TopTools_ShapeMapHasher>
0876 myMergedIN;
0877 NCollection_DataMap<TopoDS_Shape, TopOpeBRepDS_ListOfShapeOn1State, TopTools_ShapeMapHasher>
0878 myMergedON;
0879 NCollection_DataMap<TopoDS_Shape, TopOpeBRepDS_ListOfShapeOn1State, TopTools_ShapeMapHasher>
0880 myMergedOUT;
0881 NCollection_List<TopoDS_Shape> myEmptyShapeList;
0882 NCollection_List<TopoDS_Shape> myListOfSolid;
0883 NCollection_List<TopoDS_Shape> myListOfFace;
0884 NCollection_List<TopoDS_Shape> myListOfEdge;
0885 NCollection_DataMap<TopoDS_Shape, NCollection_List<TopoDS_Shape>, TopTools_ShapeMapHasher>
0886 myFSplits;
0887 NCollection_DataMap<TopoDS_Shape, NCollection_List<TopoDS_Shape>, TopTools_ShapeMapHasher>
0888 myESplits;
0889 bool mySectionDone;
0890 bool mySplitSectionEdgesDone;
0891 NCollection_List<TopoDS_Shape> mySection;
0892 TopoDS_Solid mySolidReference;
0893 TopoDS_Solid mySolidToFill;
0894 NCollection_List<TopoDS_Shape> myFaceAvoid;
0895 TopoDS_Face myFaceReference;
0896 TopoDS_Face myFaceToFill;
0897 NCollection_List<TopoDS_Shape> myEdgeAvoid;
0898 TopoDS_Edge myEdgeReference;
0899 TopoDS_Edge myEdgeToFill;
0900 NCollection_List<TopoDS_Shape> myVertexAvoid;
0901 NCollection_IndexedMap<TopoDS_Shape, TopTools_ShapeMapHasher> myMAP1;
0902 NCollection_IndexedMap<TopoDS_Shape, TopTools_ShapeMapHasher> myMAP2;
0903 int myIsKPart;
0904 NCollection_DataMap<TopoDS_Shape, NCollection_List<TopoDS_Shape>, TopTools_ShapeMapHasher>
0905 myKPMAPf1f2;
0906 int mySHASETindex;
0907 bool myClassifyDef;
0908 bool myClassifyVal;
0909 TopOpeBRepTool_ShapeClassifier myShapeClassifier;
0910 NCollection_Map<TopoDS_Shape, TopTools_ShapeMapHasher> myMemoSplit;
0911 TCollection_AsciiString myEmptyAS;
0912 bool myProcessON;
0913 NCollection_IndexedDataMap<TopoDS_Shape, TopoDS_Shape, TopTools_ShapeMapHasher> myONFacesMap;
0914 NCollection_IndexedMap<TopoDS_Shape> myONElemMap;
0915 };
0916
0917 #endif