commit 850dbd9ec9290f7a7cc6607c7e7311dbe9cc8d69
parent 0a837e6c6ec2a95fa4ad6f816c456b10cb51f265
Author: Benjamin Piaud <benjamin.piaud@meso-star.com>
Date: Tue, 20 Sep 2022 10:09:50 +0200
Add global scene partition function (maybe temporary)
Diffstat:
2 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/src/scad.c b/src/scad.c
@@ -519,3 +519,36 @@ exit:
error:
goto exit;
}
+
+res_T
+scad_scene_partition
+ (void)
+{
+ int* dimTags = NULL;
+ size_t dimTags_n;
+ int ierr = 0;
+ res_T res = RES_OK;
+
+ ERR(check_device(FUNC_NAME));
+ if(get_device()->need_synchro) {
+ ERR(scad_synchronize());
+ }
+
+ gmshModelOccGetEntities(&dimTags, &dimTags_n, 3, &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));
+
+exit:
+ if(dimTags) free(dimTags);
+ return res;
+error:
+ goto exit;
+}
diff --git a/src/scad.h b/src/scad.h
@@ -328,6 +328,10 @@ SCAD_API res_T /* FIXME remove this */
scad_run_ui
(void);
+SCAD_API res_T /* FIXME TEMPORARY */
+scad_scene_partition
+ (void);
+
END_DECLS
#endif /* SCAD_H */