From c29e93dd2b24d55fde0f8ee2a8c6456fe507a2df Mon Sep 17 00:00:00 2001 From: Joachim Schoeberl Date: Tue, 12 Apr 2022 07:05:32 +0200 Subject: [PATCH] mesh point coordinates as numpy - array --- libsrc/meshing/python_mesh.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/libsrc/meshing/python_mesh.cpp b/libsrc/meshing/python_mesh.cpp index 216119f3..d2c85f11 100644 --- a/libsrc/meshing/python_mesh.cpp +++ b/libsrc/meshing/python_mesh.cpp @@ -854,6 +854,26 @@ DLL_HEADER void ExportNetgenMeshing(py::module &m) static_cast (&Mesh::Points), py::return_value_policy::reference) + .def("Coordinates", [](Mesh & self) { + size_t shape[2] = { self.Points().Size(), size_t(self.GetDimension()) }; + size_t stride[2] = { sizeof(self.Points()[0]), sizeof(double) }; + + return py::memoryview::from_buffer + (&self.Points()[PointIndex::BASE](0), sizeof(double), + py::format_descriptor::value, + { self.Points().Size(), size_t(self.GetDimension()) }, + { sizeof(self.Points()[1]), sizeof(double) } ); + + /* + // how to avoid copying array ? + return py::array + ( + shape, stride, + &self.Points()[PointIndex::BASE](0) // , borrowed_t{} // how to use borrow ? + ); + */ + }) + .def("FaceDescriptor", static_cast (&Mesh::GetFaceDescriptor), py::return_value_policy::reference) .def("GetNFaceDescriptors", &Mesh::GetNFD)