commit 55496e24f8a6e32635c3d177a4e54e0d04605f0f
parent 901a5293163b8083d2594ed84b7e9cafad791f9b
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Fri, 25 Nov 2022 16:28:21 +0100
Clean code
Diffstat:
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));