From 8bd22178f7f754ef583f86948136b6651b0b14c1 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Mon, 29 Jun 2026 10:22:02 +0200 Subject: [PATCH] OCC_VER Compatibility --- src/ifcgeom/kernels/opencascade/IfcGeomTree.h | 9 +++++++++ src/serializers/SvgSerializer.cpp | 11 ++++++++++- src/serializers/TtlWktSerializer.cpp | 13 +++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/ifcgeom/kernels/opencascade/IfcGeomTree.h b/src/ifcgeom/kernels/opencascade/IfcGeomTree.h index a2d85597a8..cafd5deaa6 100644 --- a/src/ifcgeom/kernels/opencascade/IfcGeomTree.h +++ b/src/ifcgeom/kernels/opencascade/IfcGeomTree.h @@ -38,6 +38,7 @@ #include #include +#include #include #include #include @@ -1932,7 +1933,11 @@ namespace IfcGeom { BVH_Triangulation triangulation(builder); for (int i = 0; i < elem_verts.size(); i += 3) { +#if OCC_VERSION_HEX >= 0x80000 triangulation.Vertices.Append(BVH_Vec3d(elem_verts[i], elem_verts[i + 1], elem_verts[i + 2])); +#else + triangulation.Vertices.push_back(BVH_Vec3d(elem_verts[i], elem_verts[i + 1], elem_verts[i + 2])); +#endif verts.push_back(gp_Pnt(elem_verts[i], elem_verts[i + 1], elem_verts[i + 2])); } @@ -1944,7 +1949,11 @@ namespace IfcGeom { gp_Vec dir2(v1_pnt, v3_pnt); gp_Vec cross_product = dir1.Crossed(dir2); if (cross_product.Magnitude() > Precision::Confusion()) { +#if OCC_VERSION_HEX >= 0x80000 triangulation.Elements.Append(BVH_Vec4i( +#else + triangulation.Elements.push_back(BVH_Vec4i( +#endif elem_faces[i], elem_faces[i + 1], elem_faces[i + 2], original_tris_index )); original_tris_index++; diff --git a/src/serializers/SvgSerializer.cpp b/src/serializers/SvgSerializer.cpp index e3ce6ea4b2..16659587ac 100644 --- a/src/serializers/SvgSerializer.cpp +++ b/src/serializers/SvgSerializer.cpp @@ -42,9 +42,14 @@ #include #include +#include +#if OCC_VERSION_HEX >= 0x80000 #include #include #include +#else +#include +#endif #include @@ -57,7 +62,6 @@ #include #include #include -#include #include #include @@ -1438,8 +1442,13 @@ void SvgSerializer::write(const geometry_data& data) { result = make_transform_mirror_.Shape(); } +#if OCC_VERSION_HEX >= 0x80000 opencascade::handle> edges = new NCollection_HSequence(); opencascade::handle> wires = new NCollection_HSequence(); +#else + Handle(TopTools_HSequenceOfShape) edges = new TopTools_HSequenceOfShape(); + Handle(TopTools_HSequenceOfShape) wires = new TopTools_HSequenceOfShape(); +#endif { TopExp_Explorer exp(result, TopAbs_EDGE); for (; exp.More(); exp.Next()) { diff --git a/src/serializers/TtlWktSerializer.cpp b/src/serializers/TtlWktSerializer.cpp index ea4f7f3b74..b9c521c776 100644 --- a/src/serializers/TtlWktSerializer.cpp +++ b/src/serializers/TtlWktSerializer.cpp @@ -22,9 +22,14 @@ #ifdef IFOPSH_WITH_OPENCASCADE #include "../ifcgeom/kernels/opencascade/OpenCascadeConversionResult.h" +#include +#if OCC_VERSION_HEX >= 0x80000 #include #include #include +#else +#include +#endif #include #include @@ -411,13 +416,21 @@ void TtlWktSerializer::write(const IfcGeom::BRepElement* brep_obj) { for (int iter = 0; iter < 10; ++iter) { gp_Pln pln(gp_Pnt(0, 0, zmin + section_height + iter * (height - 1.) / 10.), gp::DZ()); +#if OCC_VERSION_HEX >= 0x80000 opencascade::handle> wires = new NCollection_HSequence(); +#else + Handle(TopTools_HSequenceOfShape) wires = new TopTools_HSequenceOfShape(); +#endif size_t N = 0; TopoDS_Iterator it(compound); // Iterate over components of compound to have better chance of matching section edges to closed wires for (; it.More(); it.Next()) { +#if OCC_VERSION_HEX >= 0x80000 opencascade::handle> edges = new NCollection_HSequence(); +#else + Handle(TopTools_HSequenceOfShape) edges = new TopTools_HSequenceOfShape(); +#endif TopoDS_Shape result = BRepAlgoAPI_Section(it.Value(), pln); {