File indexing completed on 2026-09-21 09:17:20
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _HLRAlgo_PolyData_HeaderFile
0018 #define _HLRAlgo_PolyData_HeaderFile
0019
0020 #include <Bnd_Box.hxx>
0021 #include <HLRAlgo_BiPoint.hxx>
0022 #include <HLRAlgo_PolyHidingData.hxx>
0023 #include <NCollection_Array1.hxx>
0024 #include <NCollection_HArray1.hxx>
0025 #include <HLRAlgo_TriangleData.hxx>
0026 #include <Standard.hxx>
0027 #include <Standard_Boolean.hxx>
0028 #include <Standard_Integer.hxx>
0029 #include <Standard_Transient.hxx>
0030 #include <Standard_Type.hxx>
0031 #include <gp_XYZ.hxx>
0032
0033 class HLRAlgo_EdgeStatus;
0034
0035
0036 class HLRAlgo_PolyData : public Standard_Transient
0037 {
0038
0039 public:
0040 struct FaceIndices
0041 {
0042
0043 FaceIndices()
0044 : Index(0),
0045 Min(0),
0046 Max(0)
0047 {
0048 }
0049
0050 int Index, Min, Max;
0051 };
0052
0053 struct Triangle
0054 {
0055 gp_XY V1, V2, V3;
0056 double Param, TolParam, TolAng, Tolerance;
0057 };
0058
0059 Standard_EXPORT HLRAlgo_PolyData();
0060
0061 Standard_EXPORT void HNodes(const occ::handle<NCollection_HArray1<gp_XYZ>>& HNodes);
0062
0063 Standard_EXPORT void HTData(const occ::handle<NCollection_HArray1<HLRAlgo_TriangleData>>& HTData);
0064
0065 Standard_EXPORT void HPHDat(
0066 const occ::handle<NCollection_HArray1<HLRAlgo_PolyHidingData>>& HPHDat);
0067
0068 void FaceIndex(const int I);
0069
0070 int FaceIndex() const;
0071
0072 NCollection_Array1<gp_XYZ>& Nodes() const;
0073
0074 NCollection_Array1<HLRAlgo_TriangleData>& TData() const;
0075
0076 NCollection_Array1<HLRAlgo_PolyHidingData>& PHDat() const;
0077
0078 Standard_EXPORT void UpdateGlobalMinMax(Bnd_Box& theBox);
0079
0080 bool Hiding() const;
0081
0082
0083 Standard_EXPORT void HideByPolyData(const HLRAlgo_BiPoint::PointsT& thePoints,
0084 Triangle& theTriangle,
0085 HLRAlgo_BiPoint::IndicesT& theIndices,
0086 const bool HidingShell,
0087 HLRAlgo_EdgeStatus& status);
0088
0089 FaceIndices& Indices() { return myFaceIndices; }
0090
0091 DEFINE_STANDARD_RTTIEXT(HLRAlgo_PolyData, Standard_Transient)
0092
0093 private:
0094
0095 void hideByOneTriangle(const HLRAlgo_BiPoint::PointsT& thePoints,
0096 Triangle& theTriangle,
0097 const bool Crossing,
0098 const bool HideBefore,
0099 const int TrFlags,
0100 HLRAlgo_EdgeStatus& status);
0101
0102 FaceIndices myFaceIndices;
0103 occ::handle<NCollection_HArray1<gp_XYZ>> myHNodes;
0104 occ::handle<NCollection_HArray1<HLRAlgo_TriangleData>> myHTData;
0105 occ::handle<NCollection_HArray1<HLRAlgo_PolyHidingData>> myHPHDat;
0106 };
0107
0108 #include <HLRAlgo_PolyData.lxx>
0109
0110 #endif