@@ -42,7 +42,7 @@ struct PyTetgen {
4242 return points_arr;
4343 }
4444
45- NDArray<int , 2 > return_tets () {
45+ NDArray<int , 2 > return_tets (bool vtk_indexing = false ) {
4646 int n_nodes = io_out.numberofcorners ;
4747 int n_cells = io_out.numberoftetrahedra ;
4848 auto arr = MakeNDArray<int , 2 >({n_cells, n_nodes});
@@ -57,6 +57,26 @@ struct PyTetgen {
5757 }
5858 }
5959
60+ // Convert to VTK style indexing when requested
61+ if (n_nodes == 10 && vtk_indexing) {
62+ for (int i = 0 ; i < n_cells; ++i) {
63+ int *r = &arr (i, 0 );
64+
65+ int t4 = r[4 ];
66+ int t5 = r[5 ];
67+ int t6 = r[6 ];
68+ int t7 = r[7 ];
69+ int t9 = r[9 ];
70+
71+ r[4 ] = t6;
72+ r[5 ] = t7;
73+ r[6 ] = t9;
74+ r[7 ] = t5;
75+ // r[8] unchanged
76+ r[9 ] = t4;
77+ }
78+ }
79+
6080 return arr;
6181 }
6282
@@ -521,7 +541,7 @@ NB_MODULE(_tetgen, m) { // "_tetgen" must match library name from CMakeLists.txt
521541 .def (" return_input_points" , &PyTetgen::return_input_points)
522542 .def (" return_nodes" , &PyTetgen::return_nodes)
523543 .def (" return_tetrahedron_attributes" , &PyTetgen::return_tetrahedron_attributes)
524- .def (" return_tets" , &PyTetgen::return_tets)
544+ .def (" return_tets" , &PyTetgen::return_tets, nb::arg ( " vtk_indexing " ) = false )
525545 .def (" return_triface_markers" , &PyTetgen::return_triface_markers)
526546 .def (" return_trifaces" , &PyTetgen::return_trifaces)
527547 .def_prop_ro (" n_bg_nodes" , &PyTetgen::n_bg_nodes)
0 commit comments