From 34bde0b8473ec11a3c224a1fda138d85fd6b3b50 Mon Sep 17 00:00:00 2001 From: Erick Ahmed Date: Sat, 8 Nov 2025 19:00:33 +0100 Subject: [PATCH] refactor: use BRep topological entity instead of gp_Pnt for Rust encapsulation --- src/occt/include/point.hpp | 11 ++--------- src/occt/point.cpp | 25 ++++++++++++++----------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/occt/include/point.hpp b/src/occt/include/point.hpp index d012da6..76daf23 100644 --- a/src/occt/include/point.hpp +++ b/src/occt/include/point.hpp @@ -3,13 +3,6 @@ #include extern "C" { - struct Point { - double x; - double y; - double z; - }; - -Point* make_point(double x, double y, double z); -void free_point(Point* p); -void coord_point(const Point* p, double* x, double* y, double* z); + TopoDS_Shape make_point(double x, double y, double z); + void coord_point(const TopoDS_Shape& shape, double* x, double* y, double* z); } diff --git a/src/occt/point.cpp b/src/occt/point.cpp index f685408..a9150db 100644 --- a/src/occt/point.cpp +++ b/src/occt/point.cpp @@ -1,17 +1,20 @@ +#include +#include +#include +#include +#include #include -Point* make_point(double x, double y, double z) { - gp_Pnt* p = new gp_Pnt(x, y, z); - return reinterpret_cast(p); +TopoDS_Shape make_point(double x, double y, double z) { + gp_Pnt point(x, y, z); + return BRepBuilderAPI_MakeVertex(point).Vertex(); } -void free_point(Point* p) { - delete reinterpret_cast(p); -} +void coord_point(const TopoDS_Shape& shape, double* x, double* y, double* z) { + TopoDS_Vertex vertex = TopoDS::Vertex(shape); + gp_Pnt point = BRep_Tool::Pnt(vertex); -void coord_point(const Point* p, double* x, double* y, double* z) { - const gp_Pnt* gp = reinterpret_cast(p); - *x = gp->X(); - *y = gp->Y(); - *z = gp->Z(); + *x = point.X(); + *y = point.Y(); + *z = point.Z(); }