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(); }