star-cad

Geometric operators for computer-aided design
git clone git://git.meso-star.fr/star-cad.git
Log | Files | Refs | README | LICENSE

commit 55496e24f8a6e32635c3d177a4e54e0d04605f0f
parent 901a5293163b8083d2594ed84b7e9cafad791f9b
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Fri, 25 Nov 2022 16:28:21 +0100

Clean code

Diffstat:
Msrc/scad.c | 27++++++---------------------
1 file changed, 6 insertions(+), 21 deletions(-)

diff --git a/src/scad.c b/src/scad.c @@ -267,7 +267,7 @@ scad_stl_export const int binary) { struct str filename; - int* allocated_dimTags = NULL; + int* dimTags_to_free = NULL; int* faces_dimTags = NULL; size_t faces_dimTags_n; size_t** nodeTags = NULL; @@ -276,7 +276,6 @@ scad_stl_export size_t* coord_n = NULL; double** pCoord = NULL; size_t* pCoord_n = NULL; - int* dimTags = NULL; size_t i, tcount; int dim_ctrl; int ierr = 0; @@ -315,10 +314,7 @@ scad_stl_export dim_ctrl = data[0]; if(dim_ctrl == 3) { /* geometry is 3D */ - size_t dimTags_n; - ERR(scad_synchronize()); - gmshModelOccGetEntities(&dimTags, &dimTags_n, 3, &ierr); ERR(gmsh_err_to_res_T(ierr)); /* TODO: use options to set inward/outward orientation??? @@ -330,11 +326,8 @@ scad_stl_export } /* Get tags to be written (boundary of geometry) */ - gmshModelGetBoundary(data, sz, &allocated_dimTags, &faces_dimTags_n, 1, 0, - 0, &ierr); - /* Need this trick to avoid geometry->gmsh_dimTags to be freed in the 2D - * case */ - faces_dimTags = allocated_dimTags; + gmshModelGetBoundary(data, sz, &faces_dimTags, &faces_dimTags_n, 1, 0, 0, &ierr); + dimTags_to_free = faces_dimTags; ERR(gmsh_err_to_res_T(ierr)); ASSERT(faces_dimTags_n % 2 == 0); } else { /* Geometry is 2D */ @@ -376,7 +369,7 @@ scad_stl_export exit: if(str_initialized) str_release(&filename); - free(allocated_dimTags); + free(dimTags_to_free); if(nodeTags) { for(i = 0; i < faces_dimTags_n/2; i++) free(nodeTags[i]); free(nodeTags); @@ -392,7 +385,6 @@ exit: free(pCoord); } free(pCoord_n); - free(dimTags); return res; error: log_error(get_device(), "%s: could not export to STL -- %s\n", @@ -531,7 +523,6 @@ scad_scene_partition (void) { int* dimTags = NULL; - size_t dimTags_n; int ierr = 0; res_T res = RES_OK; @@ -540,15 +531,9 @@ scad_scene_partition ERR(scad_synchronize()); } - gmshModelOccGetEntities(&dimTags, &dimTags_n, 3, &ierr); + gmshModelOccRemoveAllDuplicates(&ierr); ERR(gmsh_err_to_res_T(ierr)); - if(dimTags_n > 2) { - /* Remove all duplicate entities in the OpenCASCADE CAD representation - * (different entities at the same geometrical location) after intersecting - * (using boolean fragments) all highest dimensional entities. */ - gmshModelOccRemoveAllDuplicates(&ierr); - ERR(gmsh_err_to_res_T(ierr)); - } + gmshModelOccSynchronize(&ierr); ERR(gmsh_err_to_res_T(ierr));