diff --git a/CMakeLists.txt b/CMakeLists.txt index e6b3d07..f90e126 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -379,25 +379,20 @@ if (USE_OCC) TKGeomAlgo TKGeomBase TKHLR - TKIGES TKLCAF TKMath TKMesh TKOffset TKPrim - TKSTEP - TKSTEP209 - TKSTEPAttr - TKSTEPBase - TKSTL + TKDESTL TKService TKShHealing TKTopAlgo TKV3d TKVCAF TKXCAF - TKXDEIGES - TKXDESTEP + TKDEIGES + TKDESTEP TKXSBase TKernel ) diff --git a/libsrc/occ/Partition_Inter2d.cxx b/libsrc/occ/Partition_Inter2d.cxx index 88b6f7d..9dc4e13 100644 --- a/libsrc/occ/Partition_Inter2d.cxx +++ b/libsrc/occ/Partition_Inter2d.cxx @@ -46,10 +46,9 @@ #include #include #include -#include #include -#include #include +#include #include #include #include diff --git a/libsrc/occ/Partition_Inter2d.hxx b/libsrc/occ/Partition_Inter2d.hxx index c018bac..afbdfd2 100644 --- a/libsrc/occ/Partition_Inter2d.hxx +++ b/libsrc/occ/Partition_Inter2d.hxx @@ -38,6 +38,7 @@ #else #include #include + #include #endif #ifndef _Standard_Real_HeaderFile diff --git a/libsrc/occ/Partition_Inter3d.cxx b/libsrc/occ/Partition_Inter3d.cxx index 3fc97b4..4b7db82 100644 --- a/libsrc/occ/Partition_Inter3d.cxx +++ b/libsrc/occ/Partition_Inter3d.cxx @@ -46,9 +46,9 @@ #include #include -#include -#include +#include #include +#include #include #include #include @@ -74,6 +74,7 @@ #include #include #include +#include #include #include #include @@ -85,7 +86,7 @@ #include #include #include -#include +#include #include //======================================================================= diff --git a/libsrc/occ/Partition_Loop.cxx b/libsrc/occ/Partition_Loop.cxx index efaf77f..483a5ae 100644 --- a/libsrc/occ/Partition_Loop.cxx +++ b/libsrc/occ/Partition_Loop.cxx @@ -44,12 +44,11 @@ #include #include -#include +#include #include -#include #include #include -#include +#include #include #include diff --git a/libsrc/occ/Partition_Loop2d.cxx b/libsrc/occ/Partition_Loop2d.cxx index 1c3d795..81f106a 100644 --- a/libsrc/occ/Partition_Loop2d.cxx +++ b/libsrc/occ/Partition_Loop2d.cxx @@ -34,14 +34,12 @@ #include #include #include -#include -#include +#include #include #include // V6.5 #include #include -#include -#include +#include #include #include #include diff --git a/libsrc/occ/Partition_Loop3d.cxx b/libsrc/occ/Partition_Loop3d.cxx index 3e9acc3..d975ee4 100644 --- a/libsrc/occ/Partition_Loop3d.cxx +++ b/libsrc/occ/Partition_Loop3d.cxx @@ -17,11 +17,10 @@ #include #include #include -#include +#include #include #include #include -#include #include #include #include diff --git a/libsrc/occ/Partition_Loop3d.hxx b/libsrc/occ/Partition_Loop3d.hxx index e171669..fe77b90 100644 --- a/libsrc/occ/Partition_Loop3d.hxx +++ b/libsrc/occ/Partition_Loop3d.hxx @@ -10,27 +10,17 @@ #ifndef _Partition_Loop3d_HeaderFile #define _Partition_Loop3d_HeaderFile -#ifndef _TopTools_ListOfShape_HeaderFile -#include -#endif -#ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile -#include -#endif -#ifndef _Standard_Boolean_HeaderFile +#include #include -#endif -#ifndef _Standard_Real_HeaderFile #include -#endif -#ifndef _Standard_Version_HeaderFile #include -#endif +#include +#include -#if OCC_VERSION_HEX < 0x070000 +#if OCC_VERSION_HEX < 0x070000 || OCC_VERSION_HEX > 0x070799 #else #include #include - #include #endif class TopoDS_Shape; @@ -38,6 +28,8 @@ class TopoDS_Shape; #if OCC_VERSION_HEX < 0x070000 class TopTools_ListOfShape; class TopTools_MapOfOrientedShape; +#else +#include #endif class TopoDS_Edge; diff --git a/libsrc/occ/Partition_Spliter.cxx b/libsrc/occ/Partition_Spliter.cxx index 7a1d913..7a0a87c 100644 --- a/libsrc/occ/Partition_Spliter.cxx +++ b/libsrc/occ/Partition_Spliter.cxx @@ -43,13 +43,11 @@ #include #include -#include #include #include #include -#include #include -#include +#include #include #include diff --git a/libsrc/occ/occ_edge.cpp b/libsrc/occ/occ_edge.cpp index 4805bb1..e8b272f 100644 --- a/libsrc/occ/occ_edge.cpp +++ b/libsrc/occ/occ_edge.cpp @@ -55,7 +55,11 @@ namespace netgen size_t OCCEdge::GetHash() const { +#if OCC_VERSION_HEX < 0x070800 return edge.HashCode(std::numeric_limits::max()); +#else + return std::hash{}(edge); +#endif } void OCCEdge::ProjectPoint(Point<3>& p, EdgePointGeomInfo* gi) const diff --git a/libsrc/occ/occ_face.cpp b/libsrc/occ/occ_face.cpp index 239982a..ec6dee3 100644 --- a/libsrc/occ/occ_face.cpp +++ b/libsrc/occ/occ_face.cpp @@ -32,7 +32,11 @@ namespace netgen size_t OCCFace::GetHash() const { +#if OCC_VERSION_HEX < 0x070800 return face.HashCode(std::numeric_limits::max()); +#else + return std::hash{}(face); +#endif } Point<3> OCCFace::GetCenter() const diff --git a/libsrc/occ/occ_solid.hpp b/libsrc/occ/occ_solid.hpp index d598de4..416c1eb 100644 --- a/libsrc/occ/occ_solid.hpp +++ b/libsrc/occ/occ_solid.hpp @@ -17,7 +17,11 @@ namespace netgen : solid(TopoDS::Solid(dshape)) { } +#if OCC_VERSION_HEX < 0x070800 size_t GetHash() const override { return solid.HashCode(std::numeric_limits::max()); } +#else + size_t GetHash() const override { return std::hash{}(solid); } +#endif }; } diff --git a/libsrc/occ/occ_vertex.cpp b/libsrc/occ/occ_vertex.cpp index 6e83c89..982992a 100644 --- a/libsrc/occ/occ_vertex.cpp +++ b/libsrc/occ/occ_vertex.cpp @@ -19,6 +19,10 @@ namespace netgen size_t OCCVertex::GetHash() const { +#if OCC_VERSION_HEX < 0x070800 return vertex.HashCode(std::numeric_limits::max()); +#else + return std::hash{}(vertex); +#endif } } diff --git a/libsrc/occ/occgeom.cpp b/libsrc/occ/occgeom.cpp index 00ed0d0..dbbe921 100644 --- a/libsrc/occ/occgeom.cpp +++ b/libsrc/occ/occgeom.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -54,6 +55,7 @@ #include #include #include +#include #include #include #include @@ -1717,8 +1719,12 @@ namespace netgen /* // enumerate shapes and archive only integers auto my_hash = [](const TopoDS_Shape & key) { +#if OCC_VERSION_HEX < 0x070800 auto occ_hash = key.HashCode(1<<31UL); return std::hash()(occ_hash); +#else + return std::hash{}(key); +#endif }; */ TopTools_IndexedMapOfShape shape_map; diff --git a/libsrc/occ/occgeom.hpp b/libsrc/occ/occgeom.hpp index c7118ce..e098f14 100644 --- a/libsrc/occ/occgeom.hpp +++ b/libsrc/occ/occgeom.hpp @@ -24,11 +24,13 @@ #include #include #include +#include #include #include #include #include #include +#include #include #if OCC_VERSION_MAJOR>=7 && OCC_VERSION_MINOR>=4 diff --git a/libsrc/occ/python_occ.cpp b/libsrc/occ/python_occ.cpp index 4808957..3f93834 100644 --- a/libsrc/occ/python_occ.cpp +++ b/libsrc/occ/python_occ.cpp @@ -70,10 +70,9 @@ DLL_HEADER void ExportNgOCC(py::module &m) // suppress info messages from occ (like statistics on Transfer) Message_Gravity aGravity = Message_Alarm; - for (Message_SequenceOfPrinters::Iterator aPrinterIter (Message::DefaultMessenger()->Printers()); - aPrinterIter.More(); aPrinterIter.Next()) + for (const auto& aPrinter : Message::DefaultMessenger()->Printers()) { - aPrinterIter.Value()->SetTraceLevel (aGravity); + aPrinter->SetTraceLevel (aGravity); } ExportNgOCCBasic(m); @@ -85,7 +84,11 @@ DLL_HEADER void ExportNgOCC(py::module &m) try { if(p) std::rethrow_exception(p); } catch (const Standard_Failure& e) { +#if OCC_VERSION_HEX < 0x080000 exc((string(e.DynamicType()->Name()) + ": " + e.GetMessageString()).c_str()); +#else + exc((string(e.ExceptionType()) + ": " + e.what()).c_str()); +#endif } }); diff --git a/libsrc/occ/python_occ_shapes.cpp b/libsrc/occ/python_occ_shapes.cpp index bd265ca..4c64735 100644 --- a/libsrc/occ/python_occ_shapes.cpp +++ b/libsrc/occ/python_occ_shapes.cpp @@ -13,6 +13,16 @@ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -76,6 +86,8 @@ #include #include #include +#include +#include #pragma clang diagnostic pop @@ -2221,9 +2233,10 @@ tangents : Dict[int, gp_Vec2d] m.def("BSplineCurve", [](std::vector vpoles, int degree) { // not yet working ???? - TColgp_Array1OfPnt poles(0, vpoles.size()-1); - TColStd_Array1OfReal knots(0, vpoles.size()+degree); - TColStd_Array1OfInteger mult(0, vpoles.size()+degree); + // Avoid C2666 overload ambiguity in OCCT collection constructors. + TColgp_Array1OfPnt poles(0, static_cast(vpoles.size())-1); + TColStd_Array1OfReal knots(0, static_cast(vpoles.size())+degree); + TColStd_Array1OfInteger mult(0, static_cast(vpoles.size())+degree); // int cnt = 0; for (int i = 0; i < vpoles.size(); i++) @@ -2243,7 +2256,8 @@ tangents : Dict[int, gp_Vec2d] }); m.def("BezierCurve", [](std::vector vpoles) { - TColgp_Array1OfPnt poles(0, vpoles.size()-1); + // Avoid C2666 overload ambiguity in OCCT collection constructors. + TColgp_Array1OfPnt poles(0, static_cast(vpoles.size())-1); for (int i = 0; i < vpoles.size(); i++) poles.SetValue(i, vpoles[i]);