star-cad

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

commit 8e1bb60c82bd3ef91ba6250f94d67770149277af
parent 48f01e731ec88835935c3e250fb5ca8da91015bb
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Fri, 13 Jun 2025 15:27:49 +0200

Remove arg 'name' from most geometry creation API calls

As it can be done using scad_geometry_rename, it was not necessary to
add an optional arg to these API calls.
Only names used as a base name when creating a list of geometries have
been kept (scad_geometry_explode, ...).

Diffstat:
Msrc/scad.h | 108++++++++++++++++++++++++++++---------------------------------------------------
Msrc/scad_geometry.c | 181+++++++++++++++++++++++++++++++++++--------------------------------------------
Msrc/test_api.c | 184++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/test_export.c | 11+++++++----
Msrc/test_export2.c | 9++++++---
Msrc/test_lifetime.c | 20++++++++++----------
Msrc/test_partition.c | 4++--
Msrc/test_periodic.c | 6+++---
8 files changed, 239 insertions(+), 284 deletions(-)

diff --git a/src/scad.h b/src/scad.h @@ -214,7 +214,6 @@ scad_scene_mesh /******************************************************************************* * Geometry API - A geometry is a primitive, a group of primitives, or the * result of an operation on geometries. - * If provided, names must be unique. ******************************************************************************/ /* Ref counting of geometries: get a new reference to goemetry `geom'. */ @@ -249,7 +248,7 @@ scad_geometry_get_custom_data (struct scad_geometry* geom, void** data); -/* Get a pointer to `geom's name. +/* Get a pointer to `geom's name, NULL if unnamed. * Note that this reference is only valid during the lifetime of `geom' (don't * use name after deleting `geom'). */ SCAD_API res_T @@ -301,67 +300,55 @@ scad_geometry_get_bounding_box double max[3]); /* Add a rectangle to the scene, defined by a point `xyz' and - * `dxdy' the extents along the x-, y-axes. - * If provided, `name' must be unique. */ + * `dxdy' the extents along the x-, y-axes. */ SCAD_API res_T scad_add_rectangle - (const char* name, /* Can be NULL */ - const double xyz[3], + (const double xyz[3], const double dxdy[2], struct scad_geometry** rectangle); /* Add a disk in (xy) plane to the scene, defined by a the center `xyz' and - * `radius'. - * If provided, `name' must be unique. */ + * `radius'. */ SCAD_API res_T scad_add_disk - (const char* name, /* Can be NULL */ - const double xyz[3], + (const double xyz[3], const double radius, struct scad_geometry** disk); /* Add a polygon in the (xy) plane to the scene. * The `polygon' has `count' vertice and is at elevation `z', the vertice are - * defined by calls to user-provided function `get_position'. - * If provided, `name' must be unique. */ + * defined by calls to user-provided function `get_position'. */ SCAD_API res_T scad_add_polygon - (const char* name, /* Can be NULL */ - void (*get_position)(const size_t ivert, double pos[2], void* data), + (void (*get_position)(const size_t ivert, double pos[2], void* data), void* data, /* Custom data; can be NULL if get_position don't use it */ const double z, const size_t count, struct scad_geometry** polygon); /* Add a parallelepipedic `box' to the scene, defined by a point `xyz' and - * `dxdydz' the extents along the x-, y- and z-axes. - * If provided, `name' must be unique. */ + * `dxdydz' the extents along the x-, y- and z-axes. */ SCAD_API res_T scad_add_box - (const char* name, /* Can be NULL */ - const double xyz[3], + (const double xyz[3], const double dxdydz[3], struct scad_geometry** box); /* Add a `cylinder' to the scene, defined by the center `xyz' of its first * circular face, the vector `axis' defining its axis and its radius `rad'. The - * `angle' argument defines the angular opening (from 0 to 2*PI). - * If provided, `name' must be unique. */ + * `angle' argument defines the angular opening (from 0 to 2*PI). */ SCAD_API res_T scad_add_cylinder - (const char* name, /* Can be NULL */ - const double xyz[3], + (const double xyz[3], const double axis[3], const double radius, const double angle, struct scad_geometry** cylinder); -/* Add a `sphere' of center `xyz' and radius `rad' to the scene. - * If provided, `name' must be unique. */ +/* Add a `sphere' of center `xyz' and radius `rad' to the scene. */ SCAD_API res_T scad_add_sphere - (const char* name, /* Can be NULL */ - const double xyz[3], + (const double xyz[3], const double radius, struct scad_geometry** sphere); @@ -386,46 +373,38 @@ scad_geometry_is_included int* included); /* Create a new geometry `out_geometry' made from all the entities from - * `geometries'. - * If provided, `name' must be unique. */ + * `geometries'. */ SCAD_API res_T scad_geometries_collect - (const char* name, /* Can be NULL */ - struct scad_geometry** geometries, + (struct scad_geometry** geometries, const size_t geometries_count, struct scad_geometry** out_geometry); /* Compute the boolean union (the fusion) of the geometries in `geometries' and - * `tools'. - * If provided, `name' must be unique. */ + * `tools'. */ SCAD_API res_T scad_geometries_fuse - (const char* name, /* Can be NULL */ - struct scad_geometry** geometries, + (struct scad_geometry** geometries, const size_t geometries_count, struct scad_geometry** tools, const size_t tools_count, struct scad_geometry** out_geometry); /* Compute the boolean difference between the geometries in `geometries' and - * `tools'. - * If provided, `name' must be unique. */ + * `tools'. */ SCAD_API res_T scad_geometries_cut - (const char* name, /* Can be NULL */ - struct scad_geometry** geometries, + (struct scad_geometry** geometries, const size_t geometries_count, struct scad_geometry** tools, const size_t tools_count, struct scad_geometry** out_geometry); /* Compute the boolean intersection (the common parts) of the geometries - * in `geometries' and `tools'. - * If provided, `name' must be unique. */ + * in `geometries' and `tools'. */ SCAD_API res_T scad_geometries_intersect - (const char* name, /* Can be NULL */ - struct scad_geometry** geometries, + (struct scad_geometry** geometries, const size_t geometries_count, struct scad_geometry** tools, const size_t tools_count, @@ -482,12 +461,11 @@ scad_geometries_boundary struct scad_geometry*** out_boundaries, size_t *out_count); -/* Copy the geometry `geom'. - * If provided, `name' must be unique. */ +/* Copy the geometry `geom', except for its name. + * The new geometry remains unnamed. */ SCAD_API res_T scad_geometry_copy - (const char* name, /* Can be NULL */ - const struct scad_geometry* geom, + (const struct scad_geometry* geom, struct scad_geometry** out_copy); /* Change the visibility of the geometry `geom'. @@ -501,58 +479,49 @@ scad_geometry_set_visibility int recursive); /* Rename geometry `geom'. - * If provided, `name' must be unique. */ + * If not NULL, names must be unique. */ SCAD_API res_T scad_geometry_rename (struct scad_geometry* geom, const char* name); /* Can be NULL */ /* Scale the geometry `geom' by factors `scale' along the three coordinate axes; - * Use `center', as the center of the homothetic transformation. - * If provided, `name' must be unique. */ + * Use `center', as the center of the homothetic transformation. */ SCAD_API res_T scad_geometry_dilate - (const char* name, /* Can be NULL */ - const struct scad_geometry* geom, + (const struct scad_geometry* geom, const double center[3], const double scale[3], struct scad_geometry** out_geometry); -/* Translate the geometry `geom' along (`dx', `dy', `dz'). - * If provided, `name' must be unique. */ +/* Translate the geometry `geom' along (`dx', `dy', `dz'). */ SCAD_API res_T scad_geometry_translate - (const char* name, /* Can be NULL */ - const struct scad_geometry* geom, + (const struct scad_geometry* geom, const double dxdydz[3], struct scad_geometry** out_geometry); /* Rotate the geometry `geom' by `angle' radians around the axis of revolution - * defined by the point `pt' and the direction `dir'. - * If provided, `name' must be unique. */ + * defined by the point `pt' and the direction `dir'. */ SCAD_API res_T scad_geometry_rotate - (const char* name, /* Can be NULL */ - const struct scad_geometry* geom, + (const struct scad_geometry* geom, const double pt[3], const double dir[3], const double angle, struct scad_geometry** out_geometry); -/* Extrude the geometry `geom' using a translation along (`dx', `dy', `dz'). - * If provided, `name' must be unique. */ +/* Extrude the geometry `geom' using a translation along (`dx', `dy', `dz'). */ SCAD_API res_T scad_geometry_extrude - (const char* name, /* Can be NULL */ - const struct scad_geometry* geom, + (const struct scad_geometry* geom, const double dxdydz[3], struct scad_geometry** out_geometry); /* Return a list of geometries which form the geometry `geom'. * The output geometries are named <base>_<rank>, where <base> is either - * prefix_name (first choice) or geom's name, and <rank> * counting from 0. - * If neither `prefix_name' nor `geom's name are defined, the geometries are - * created unnamed. + * prefix_name (first choice) or geom's name, <rank> counting from 0. Otherwise + * they remain unnamed. * Whatever the names, if defined they must be unique. * The result `out_geometries' being allocated using the allocator provided when * initializing star-cad, it should be freed accordingly. */ @@ -616,8 +585,7 @@ scad_geometries_clear_mesh * returned as a new geometry in `out_geometry'. */ SCAD_API res_T scad_geometry_normal - (const char* name, /* Can be NULL */ - struct scad_geometry* geom, + (struct scad_geometry* geom, double p[3], double N[3], struct scad_geometry** out_geometry); @@ -665,8 +633,8 @@ scad_stl_export_partial const int binary); /* Export the geometry `geom' in as many files than its count. - * The files are named <base>_<rank>.stl, where <base> is either filename or - * geom's name, and <rank> counting from 0. */ + * The files are named <base>_<rank>.stl, where <base> is either filename (first + * choice) or geom's name, <rank> counting from 0. */ SCAD_API res_T scad_stl_export_split (struct scad_geometry* geom, diff --git a/src/scad_geometry.c b/src/scad_geometry.c @@ -55,42 +55,35 @@ struct coord_pair { static res_T geom_set_name (struct scad_geometry* geom, - const char* name) + const struct str* name) { struct scad_device* dev = get_device(); - struct mem_allocator* allocator = dev->allocator; - struct str str_name; - int name_initialized = 0; int same_name; res_T res = RES_OK; ASSERT(geom); - if(name) { - if(strlen(name) == 0) { + if(!str_is_empty(name)) { + if(str_len(name) == 0) { res = RES_BAD_ARG; log_error(get_device(), "Geometry name \"\" is invalid.\n"); goto error; } - str_init(allocator, &str_name); - name_initialized = 1; - ERR(str_set(&str_name, name)); - if(htable_names_find(&dev->geometry_names, &str_name)) { + if(htable_names_find(&dev->geometry_names, name)) { /* if defined, names must be unique */ res = RES_BAD_ARG; log_error(get_device(), "Geometry name '%s' is allready in use.\n", - name); + str_cget(name)); goto error; } } - same_name = (!name && str_is_empty(&geom->name)) - || (name && 0 == strcmp(name, str_cget(&geom->name))); + same_name = (0 == str_cmp(name, &geom->name)); if(!same_name) { size_t n = htable_names_erase(&dev->geometry_names, &geom->name); ASSERT((n == 1) == !str_is_empty(&geom->name)); (void)n; - ERR(str_set(&geom->name, name)); + ERR(str_copy(&geom->name, name)); } if(name) { ERR(htable_names_set(&dev->geometry_names, &geom->name, &geom)); @@ -99,7 +92,6 @@ geom_set_name } exit: - if(name_initialized) str_release(&str_name); return res; error: goto exit; @@ -107,8 +99,7 @@ error: static int mixed_dim_err_msg - (const char* name, /* Can be NULL */ - const char* op, + (const char* op, struct scad_geometry** geometries, const size_t geometries_count, int* dim) @@ -122,8 +113,7 @@ mixed_dim_err_msg if(*dim == INT_MAX) *dim = d; else if (*dim != d) { log_error(dev, - "Dimension mismatch in %s operation creating '%s' geometry.\n", - op, (name ? name : "unnamed")); + "Dimension mismatch in %s operation creating geometry.\n", op); return 1; } } @@ -133,8 +123,7 @@ mixed_dim_err_msg static res_T geometry_create - (const char* name, - struct scad_geometry** out_geometry) + (struct scad_geometry** out_geometry) { res_T res = RES_OK; struct scad_geometry* geom = NULL; @@ -153,7 +142,6 @@ geometry_create ref_init(&geom->ref); str_init(allocator, &geom->name); ERR(htable_geometries_set(&dev->allgeom, &geom, &one)); - ERR(geom_set_name(geom, name)); dev->need_synchro = 1; if(dev->options.Misc.LogRefCounting & SCAD_LOG_GEOMETRY) { @@ -859,8 +847,7 @@ error: res_T scad_add_rectangle - (const char* name, - const double xyz[3], + (const double xyz[3], const double dxdy[2], struct scad_geometry** out_geometry) { @@ -881,7 +868,7 @@ scad_add_rectangle gmsh_ID = gmshModelOccAddRectangle(SPLIT3(xyz), SPLIT2(dxdy), -1, 0, &ierr); ERR(gmsh_err_to_res_T(ierr)); - ERR(geometry_create(name, &geom)); + ERR(geometry_create(&geom)); geom->gmsh_dimTags_n = 2; geom->gmsh_dimTags = MEM_ALLOC(allocator, geom->gmsh_dimTags_n * sizeof(*geom->gmsh_dimTags)); @@ -907,8 +894,7 @@ error: res_T scad_add_disk - (const char* name, - const double xyz[3], + (const double xyz[3], const double radius, struct scad_geometry** out_geometry) { @@ -930,7 +916,7 @@ scad_add_disk NULL, 0, &ierr); ERR(gmsh_err_to_res_T(ierr)); - ERR(geometry_create(name, &geom)); + ERR(geometry_create(&geom)); geom->gmsh_dimTags_n = 2; geom->gmsh_dimTags = MEM_ALLOC(allocator, geom->gmsh_dimTags_n * sizeof(*geom->gmsh_dimTags)); @@ -956,8 +942,7 @@ error: res_T scad_add_polygon - (const char* name, - void (*get_position)(const size_t ivert, double pos[2], void* data), + (void (*get_position)(const size_t ivert, double pos[2], void* data), void* data, const double z, const size_t count, @@ -1007,7 +992,7 @@ scad_add_polygon gmsh_ID = gmshModelOccAddPlaneSurface(&loop, 1, -1, &ierr); ERR(gmsh_err_to_res_T(ierr)); - ERR(geometry_create(name, &geom)); + ERR(geometry_create(&geom)); geom->gmsh_dimTags_n = 2; geom->gmsh_dimTags = MEM_ALLOC(allocator, 2 * sizeof(*geom->gmsh_dimTags)); if(!geom->gmsh_dimTags) { @@ -1036,8 +1021,7 @@ error: res_T scad_add_box - (const char* name, - const double xyz[3], + (const double xyz[3], const double dxdydz[3], struct scad_geometry** out_geometry) { @@ -1058,7 +1042,7 @@ scad_add_box gmsh_ID = gmshModelOccAddBox(SPLIT3(xyz), SPLIT3(dxdydz), -1, &ierr); ERR(gmsh_err_to_res_T(ierr)); - ERR(geometry_create(name, &geom)); + ERR(geometry_create(&geom)); geom->gmsh_dimTags_n = 2; geom->gmsh_dimTags = MEM_ALLOC(allocator, 2 * sizeof(*geom->gmsh_dimTags)); if(!geom->gmsh_dimTags) { @@ -1083,8 +1067,7 @@ error: res_T scad_add_cylinder - (const char* name, - const double xyz[3], + (const double xyz[3], const double axis[3], const double radius, const double angle, @@ -1108,7 +1091,7 @@ scad_add_cylinder angle, &ierr); ERR(gmsh_err_to_res_T(ierr)); - ERR(geometry_create(name, &geom)); + ERR(geometry_create(&geom)); geom->gmsh_dimTags_n = 2; geom->gmsh_dimTags = MEM_ALLOC(allocator, 2 * sizeof(*geom->gmsh_dimTags)); if(!geom->gmsh_dimTags) { @@ -1133,8 +1116,7 @@ error: int scad_add_sphere - (const char* name, - const double xyz[3], + (const double xyz[3], const double radius, struct scad_geometry** out_geometry) { @@ -1156,7 +1138,7 @@ scad_add_sphere gmshModelOccAddSphere(SPLIT3(xyz), radius, -1, -PI/2, PI/2, 2*PI, &ierr); ERR(gmsh_err_to_res_T(ierr)); - ERR(geometry_create(name, &geom)); + ERR(geometry_create(&geom)); geom->gmsh_dimTags_n = 2; geom->gmsh_dimTags = MEM_ALLOC(allocator, 2 * sizeof(*geom->gmsh_dimTags)); if(!geom->gmsh_dimTags) { @@ -1319,8 +1301,7 @@ error: res_T scad_geometries_fuse - (const char* name, - struct scad_geometry** geometries, + (struct scad_geometry** geometries, const size_t geometries_count, struct scad_geometry** tools, const size_t tools_count, @@ -1355,7 +1336,7 @@ scad_geometries_fuse &mapnn, -1, 0, 0, &ierr); ERR(gmsh_err_to_res_T(ierr)); - ERR(geometry_create(name, &geom)); + ERR(geometry_create(&geom)); geom->gmsh_dimTags_n = tagoutn; geom->gmsh_dimTags = MEM_ALLOC(allocator, tagoutn * sizeof(*tagout)); if(!geom->gmsh_dimTags) { @@ -1387,8 +1368,7 @@ error: res_T scad_geometries_collect - (const char* name, - struct scad_geometry** geometries, + (struct scad_geometry** geometries, const size_t geometries_count, struct scad_geometry** out_geometry) { @@ -1406,7 +1386,7 @@ scad_geometries_collect ERR(gather_tags(geometries, geometries_count, &data, &sz)); - ERR(geometry_create(name, &geom)); + ERR(geometry_create(&geom)); geom->gmsh_dimTags_n = sz; geom->gmsh_dimTags = data; @@ -1425,8 +1405,7 @@ error: res_T scad_geometries_cut - (const char* name, /* Can be NULL */ - struct scad_geometry** geometries, + (struct scad_geometry** geometries, const size_t geometries_count, struct scad_geometry** tools, const size_t tools_count, @@ -1461,7 +1440,7 @@ scad_geometries_cut &mapnn, -1, 0, 0, &ierr); ERR(gmsh_err_to_res_T(ierr)); - ERR(geometry_create(name, &geom)); + ERR(geometry_create(&geom)); geom->gmsh_dimTags_n = tagoutn; geom->gmsh_dimTags = MEM_ALLOC(allocator, tagoutn * sizeof(*tagout)); if(!geom->gmsh_dimTags) { @@ -1485,8 +1464,8 @@ exit: error: if(ierr) { int dim = INT_MAX; - if(!mixed_dim_err_msg(name, "cut", geometries, geometries_count, &dim)) - mixed_dim_err_msg(name, "cut", tools, tools_count, &dim); + if(!mixed_dim_err_msg("cut", geometries, geometries_count, &dim)) + mixed_dim_err_msg("cut", tools, tools_count, &dim); if(geom) { SCAD(geometry_ref_put(geom)); geom = NULL; @@ -1498,8 +1477,7 @@ error: res_T scad_geometries_intersect - (const char* name, /* Can be NULL */ - struct scad_geometry** geometries, + (struct scad_geometry** geometries, const size_t geometries_count, struct scad_geometry** tools, const size_t tools_count, @@ -1534,7 +1512,7 @@ scad_geometries_intersect &mapnn, -1, 0, 0, &ierr); ERR(gmsh_err_to_res_T(ierr)); - ERR(geometry_create(name, &geom)); + ERR(geometry_create(&geom)); geom->gmsh_dimTags_n = tagoutn; if (tagoutn == 0){ geom->gmsh_dimTags = NULL; @@ -1669,12 +1647,11 @@ scad_geometries_common_boundaries int tag = tagout[i+1]; struct tag_desc* desc; ASSERT(dim == 2); + ERR(geometry_create(out_geom+n)); if(prefix_name) { ERR(str_set(&name, prefix_name)); ERR(str_append_printf(&name,"_%lu", (unsigned long)i)); - ERR(geometry_create(str_cget(&name), out_geom+n)); - } else { - ERR(geometry_create(NULL, out_geom+n)); + ERR(geom_set_name(out_geom[n], &name)); } out_geom[n]->gmsh_dimTags_n = 2; out_geom[n]->gmsh_dimTags = MEM_ALLOC(allocator, 2 * sizeof(*tagout)); @@ -1714,8 +1691,8 @@ exit: error: if(ierr) { int dim = INT_MAX; - if(!mixed_dim_err_msg(prefix_name, "common boundary", geometries, geometries_count, &dim)) - mixed_dim_err_msg(prefix_name, "common boundary", tools, tools_count, &dim); + if(!mixed_dim_err_msg("common boundary", geometries, geometries_count, &dim)) + mixed_dim_err_msg("common boundary", tools, tools_count, &dim); } if(out_geom) { for(i = 0; i < c; i++) { @@ -1731,8 +1708,7 @@ error: res_T scad_geometry_rotate - (const char* name, /* Can be NULL */ - const struct scad_geometry* geom, + (const struct scad_geometry* geom, const double pt[3], const double axis[3], const double angle, @@ -1749,7 +1725,7 @@ scad_geometry_rotate ERR(check_device(FUNC_NAME)); - ERR(scad_geometry_copy(name, geom, &out)); + ERR(scad_geometry_copy(geom, &out)); gmshModelOccRotate(out->gmsh_dimTags, out->gmsh_dimTags_n, SPLIT3(pt), SPLIT3(axis), angle, &ierr); @@ -1767,8 +1743,7 @@ error: res_T scad_geometry_extrude - (const char* name, - const struct scad_geometry* geom, + (const struct scad_geometry* geom, const double dxdydz[3], struct scad_geometry** out_geometry) { @@ -1830,7 +1805,7 @@ scad_geometry_extrude } } - ERR(geometry_create(name, &extrude_geom)); + ERR(geometry_create(&extrude_geom)); extrude_geom->gmsh_dimTags_n = extrude_sz; extrude_geom->gmsh_dimTags = extrude_data; @@ -1895,7 +1870,7 @@ scad_geometry_explode { res_T res = RES_OK; int* data = NULL; - size_t i, sz = 0; + size_t i, n, sz = 0; struct scad_geometry** geom_array = NULL; struct str name; int name_initialized = 0; @@ -1927,25 +1902,26 @@ scad_geometry_explode name_initialized = 1; } - for(i = 0; i < sz/2; ++i) { + for(i = 0, n = 0; i < sz; i += 2, n++) { + const int dim = data[i]; + const int tag = data[i+1]; + ERR(geometry_create(geom_array+n)); if(base_name) { ERR(str_set(&name, base_name)); - ERR(str_append_printf(&name,"_%lu", (unsigned long)i)); - ERR(geometry_create(str_cget(&name), geom_array+i)); - } else { - ERR(geometry_create(NULL, geom_array+i)); + ERR(str_append_printf(&name,"_%lu", (unsigned long)n)); + ERR(geom_set_name(geom_array[n], &name)); } - geom_array[i]->gmsh_dimTags_n = 2; - geom_array[i]->gmsh_dimTags - = MEM_ALLOC(allocator, 2 * sizeof(*geom_array[i]->gmsh_dimTags)); - if(!geom_array[i]->gmsh_dimTags) { + geom_array[n]->gmsh_dimTags_n = 2; + geom_array[n]->gmsh_dimTags + = MEM_ALLOC(allocator, 2 * sizeof(*geom_array[0]->gmsh_dimTags)); + if(!geom_array[n]->gmsh_dimTags) { res = RES_MEM_ERR; goto error; } - geom_array[i]->gmsh_dimTags[0] = data[2*i]; - geom_array[i]->gmsh_dimTags[1] = data[2*i+1]; + geom_array[n]->gmsh_dimTags[0] = dim; + geom_array[n]->gmsh_dimTags[1] = tag; - ERR(device_register_tags(geom_array[i])); + ERR(device_register_tags(geom_array[n])); } exit: @@ -1955,8 +1931,8 @@ exit: return res; error: if(geom_array) { - for(i = 0; i < sz/2; i++) { - if(geom_array[i]) SCAD(geometry_ref_put(geom_array[i])); + for(i = 0, n = 0; i < sz; i += 2, n++) { + if(geom_array[n]) SCAD(geometry_ref_put(geom_array[n])); } MEM_RM(allocator, geom_array); geom_array = NULL; @@ -1967,8 +1943,7 @@ error: res_T scad_geometry_copy - (const char* name, /* Can be NULL */ - const struct scad_geometry* geom, + (const struct scad_geometry* geom, struct scad_geometry** out_geometry) { res_T res = RES_OK; @@ -1994,7 +1969,7 @@ scad_geometry_copy get_device()->need_synchro = 1; ERR(gmsh_err_to_res_T(ierr)); - ERR(geometry_create(name, &copy)); + ERR(geometry_create(&copy)); copy->gmsh_dimTags_n = tagoutn; copy->gmsh_dimTags = MEM_ALLOC(allocator, tagoutn * sizeof(*tagout)); if(!copy->gmsh_dimTags) { @@ -2024,6 +1999,9 @@ scad_geometry_rename const char* name) /* Can be NULL */ { res_T res = RES_OK; + struct str tmp; + int initialized = 0; + struct mem_allocator* allocator = NULL; if(!geom) { res = RES_BAD_ARG; @@ -2032,9 +2010,17 @@ scad_geometry_rename ERR(check_device(FUNC_NAME)); - ERR(geom_set_name(geom, name)); + if(name) { + str_init(allocator, &tmp); + initialized = 1; + ERR(str_set(&tmp, name)); + ERR(geom_set_name(geom, &tmp)); + } else { + str_clear(&geom->name); + } exit: + if(initialized) str_release(&tmp); return res; error: goto exit; @@ -2042,8 +2028,7 @@ error: res_T scad_geometry_translate - (const char* name, /* Can be NULL */ - const struct scad_geometry* geom, + (const struct scad_geometry* geom, const double dxdydz[3], struct scad_geometry** out_geometry) { @@ -2058,7 +2043,7 @@ scad_geometry_translate ERR(check_device(FUNC_NAME)); - ERR(scad_geometry_copy(name, geom, &out)); + ERR(scad_geometry_copy(geom, &out)); gmshModelOccTranslate(out->gmsh_dimTags, out->gmsh_dimTags_n, SPLIT3(dxdydz), &ierr); @@ -2313,7 +2298,7 @@ scad_geometries_partition ASSERT(c == 2*n); /* Create geometry */ - ERR(geometry_create(NULL, geoms+i)); + ERR(geometry_create(geoms+i)); geoms[i]->gmsh_dimTags_n = c; geoms[i]->gmsh_dimTags = dt; ERR(device_register_tags(geoms[i])); @@ -2556,12 +2541,11 @@ scad_geometries_boundary int tag = tagout[i+1]; struct tag_desc* desc = NULL; ASSERT(dim == 2); + ERR(geometry_create(out_geom+n)); if(prefix_name) { ERR(str_set(&name, prefix_name)); ERR(str_append_printf(&name,"_%lu", (unsigned long)i)); - ERR(geometry_create(str_cget(&name), out_geom+n)); - } else { - ERR(geometry_create(NULL, out_geom+n)); + ERR(geom_set_name(out_geom[n], &name)); } out_geom[n]->gmsh_dimTags_n = 2; out_geom[n]->gmsh_dimTags = MEM_ALLOC(allocator, 2 * sizeof(*tagout)); @@ -2646,12 +2630,11 @@ scad_step_import str_init(allocator, &strname); name_initialized = 1; for(i=0; i<ga_sz; ++i) { + ERR(geometry_create(geom_array+i)); if (prefix_name) { ERR(str_set(&strname, prefix_name)); ERR(str_append_printf(&strname,"_%lu", (unsigned long)i)); - ERR(geometry_create(str_cget(&strname), geom_array+i)); - } else { - ERR(geometry_create(NULL, geom_array+i)); + ERR(geom_set_name(geom_array[i], &strname)); } geom_array[i]->gmsh_dimTags_n = 2; @@ -2688,8 +2671,7 @@ error: res_T scad_geometry_normal - (const char* name, /* Can be NULL */ - struct scad_geometry* geom, + (struct scad_geometry* geom, double p[3], double N[3], struct scad_geometry** out_geometry) @@ -2743,7 +2725,7 @@ scad_geometry_normal ERR(gmsh_err_to_res_T(ierr)); ASSERT(normals_n == 3); - ERR(geometry_create(name, &out)); + ERR(geometry_create(&out)); out->gmsh_dimTags = MEM_ALLOC(allocator, 2 * sizeof(*out->gmsh_dimTags)); if(!out->gmsh_dimTags) { res = RES_MEM_ERR; @@ -2805,8 +2787,7 @@ error: res_T scad_geometry_dilate - (const char* name, - const struct scad_geometry* geom, + (const struct scad_geometry* geom, const double center[3], const double scale[3], struct scad_geometry** out_geometry) @@ -2822,7 +2803,7 @@ scad_geometry_dilate ERR(check_device(FUNC_NAME)); - ERR(scad_geometry_copy(name, geom, &out)); + ERR(scad_geometry_copy(geom, &out)); gmshModelOccDilate(out->gmsh_dimTags, out->gmsh_dimTags_n, SPLIT3(center), SPLIT3(scale), &ierr); diff --git a/src/test_api.c b/src/test_api.c @@ -67,12 +67,12 @@ main(int argc, char* argv[]) BAD(scad_set_options(NULL)); BAD(scad_synchronize()); BAD(scad_scene_clear()); - BAD(scad_add_rectangle(NULL, p1, d1, &geom)); - BAD(scad_add_disk(NULL, p1, 1, &geom)); - BAD(scad_add_polygon(NULL, get_position, coord, 0, 3, &geom)); - BAD(scad_add_box(NULL, p1, d1, &geom)); - BAD(scad_add_cylinder(NULL, p1, d1, 2, 1, &geom)); - BAD(scad_add_sphere(NULL, p1, 1, &geom)); + BAD(scad_add_rectangle(p1, d1, &geom)); + BAD(scad_add_disk(p1, 1, &geom)); + BAD(scad_add_polygon(get_position, coord, 0, 3, &geom)); + BAD(scad_add_box(p1, d1, &geom)); + BAD(scad_add_cylinder(p1, d1, 2, 1, &geom)); + BAD(scad_add_sphere(p1, 1, &geom)); BAD(scad_step_import("test.step", NULL, &geom_array, &c)); BAD(scad_scene_mesh()); BAD(scad_run_ui()); @@ -86,12 +86,12 @@ main(int argc, char* argv[]) BAD(scad_set_options(NULL)); BAD(scad_synchronize()); BAD(scad_scene_clear()); - BAD(scad_add_rectangle(NULL, p1, d1, &geom)); - BAD(scad_add_disk(NULL, p1, 1, &geom)); - BAD(scad_add_polygon(NULL, get_position, coord, 0, 3, &geom)); - BAD(scad_add_box(NULL, p1, d1, &geom)); - BAD(scad_add_cylinder(NULL, p1, d1, 2, 1, &geom)); - BAD(scad_add_sphere(NULL, p1, 1, &geom)); + BAD(scad_add_rectangle(p1, d1, &geom)); + BAD(scad_add_disk(p1, 1, &geom)); + BAD(scad_add_polygon(get_position, coord, 0, 3, &geom)); + BAD(scad_add_box(p1, d1, &geom)); + BAD(scad_add_cylinder(p1, d1, 2, 1, &geom)); + BAD(scad_add_sphere(p1, 1, &geom)); BAD(scad_step_import("test.step", NULL, &geom_array, &c)); BAD(scad_scene_mesh()); BAD(scad_run_ui()); @@ -105,12 +105,12 @@ main(int argc, char* argv[]) OK(scad_set_options(NULL)); OK(scad_set_options(&options)); - OK(scad_add_sphere("sphere 1", p1, .1, &geom1)); - OK(scad_add_sphere(NULL, p2, .2, &geom2)); + OK(scad_add_sphere(p1, .1, &geom1)); + OK(scad_add_sphere(p2, .2, &geom2)); geoms[0] = geom1; geoms[1] = geom2; - OK(scad_add_sphere(NULL, p1, .1, &geom)); + OK(scad_add_sphere(p1, .1, &geom)); BAD(scad_geometry_ref_get(NULL)); OK(scad_geometry_ref_get(geom)); BAD(scad_geometry_ref_put(NULL)); @@ -121,68 +121,67 @@ main(int argc, char* argv[]) BAD(scad_geometry_get_count(geom1, NULL)); OK(scad_geometry_get_count(geom1, &c)); - BAD(scad_add_rectangle(NULL, NULL, d1, &geom)); - BAD(scad_add_rectangle(NULL, p1, NULL, &geom)); - BAD(scad_add_rectangle(NULL, p1, d1, NULL)); - BAD(scad_add_rectangle("sphere 1", p1, d1, &geom)); /* Name already used */ - OK(scad_add_rectangle(NULL, p1, d1, &geom)); + BAD(scad_add_rectangle(NULL, d1, &geom)); + BAD(scad_add_rectangle(p1, NULL, &geom)); + BAD(scad_add_rectangle(p1, d1, NULL)); + OK(scad_add_rectangle(p1, d1, &geom)); OK(scad_geometry_ref_put(geom)); - BAD(scad_add_disk(NULL, NULL, 1, &geom)); - BAD(scad_add_disk(NULL, p1, 0, &geom)); - BAD(scad_add_disk(NULL, p1, 1, NULL)); - OK(scad_add_disk(NULL, p1, 1, &geom)); + BAD(scad_add_disk(NULL, 1, &geom)); + BAD(scad_add_disk(p1, 0, &geom)); + BAD(scad_add_disk(p1, 1, NULL)); + OK(scad_add_disk(p1, 1, &geom)); OK(scad_geometry_ref_put(geom)); - BAD(scad_add_polygon(NULL, NULL, coord, 0, 3, &poly)); - BAD(scad_add_polygon(NULL, get_position, coord, 0, 2, &poly)); - BAD(scad_add_polygon(NULL, get_position, coord, 0, 2, &poly)); - BAD(scad_add_polygon(NULL, get_position, coord, 0, 3, NULL)); - OK(scad_add_polygon(NULL, get_position, coord, 0, 3, &poly)); + BAD(scad_add_polygon(NULL, coord, 0, 3, &poly)); + BAD(scad_add_polygon(get_position, coord, 0, 2, &poly)); + BAD(scad_add_polygon(get_position, coord, 0, 2, &poly)); + BAD(scad_add_polygon(get_position, coord, 0, 3, NULL)); + OK(scad_add_polygon(get_position, coord, 0, 3, &poly)); - BAD(scad_add_box(NULL, NULL, d1, &geom)); - BAD(scad_add_box(NULL, p1, NULL, &geom)); - BAD(scad_add_box(NULL, p1, d1, NULL)); - OK(scad_add_box(NULL, p1, d1, &geom)); + BAD(scad_add_box(NULL, d1, &geom)); + BAD(scad_add_box(p1, NULL, &geom)); + BAD(scad_add_box(p1, d1, NULL)); + OK(scad_add_box(p1, d1, &geom)); OK(scad_geometry_ref_put(geom)); - BAD(scad_add_cylinder(NULL, NULL, d1, 2, 1, &geom)); - BAD(scad_add_cylinder(NULL, p1, NULL, 2, 1, &geom)); - BAD(scad_add_cylinder(NULL, p1, d1, 0, 1, &geom)); - BAD(scad_add_cylinder(NULL, p1, d1, 2, -1, &geom)); - BAD(scad_add_cylinder(NULL, p1, d1, 2, 3*PI, &geom)); - BAD(scad_add_cylinder(NULL, p1, d1, 2, 1, NULL)); - OK(scad_add_cylinder(NULL, p1, d1, 2, 1, &geom)); + BAD(scad_add_cylinder(NULL, d1, 2, 1, &geom)); + BAD(scad_add_cylinder(p1, NULL, 2, 1, &geom)); + BAD(scad_add_cylinder(p1, d1, 0, 1, &geom)); + BAD(scad_add_cylinder(p1, d1, 2, -1, &geom)); + BAD(scad_add_cylinder(p1, d1, 2, 3*PI, &geom)); + BAD(scad_add_cylinder(p1, d1, 2, 1, NULL)); + OK(scad_add_cylinder(p1, d1, 2, 1, &geom)); OK(scad_geometry_ref_put(geom)); - BAD(scad_add_sphere(NULL, NULL, 1, &geom)); - BAD(scad_add_sphere(NULL, p1, 0, &geom)); - BAD(scad_add_sphere(NULL, p1, 1, NULL)); - OK(scad_add_sphere(NULL, p1, 1, &geom)); + BAD(scad_add_sphere(NULL, 1, &geom)); + BAD(scad_add_sphere(p1, 0, &geom)); + BAD(scad_add_sphere(p1, 1, NULL)); + OK(scad_add_sphere(p1, 1, &geom)); OK(scad_geometry_ref_put(geom)); /* BAD(scad_geometries_fuse(NULL, NULL, 0, geoms, 2, &geom)); */ - BAD(scad_geometries_fuse(NULL, geoms, 2, NULL, 0, &geom)); - BAD(scad_geometries_fuse(NULL, NULL, 1, &geom2, 1, &geom)); - BAD(scad_geometries_fuse(NULL, &geom1, 1, NULL, 1, &geom)); - BAD(scad_geometries_fuse(NULL, &geom1, 1, &geom2, 1, NULL)); - OK(scad_geometries_fuse(NULL, &geom1, 1, &geom2, 1, &geom)); + BAD(scad_geometries_fuse(geoms, 2, NULL, 0, &geom)); + BAD(scad_geometries_fuse(NULL, 1, &geom2, 1, &geom)); + BAD(scad_geometries_fuse(&geom1, 1, NULL, 1, &geom)); + BAD(scad_geometries_fuse(&geom1, 1, &geom2, 1, NULL)); + OK(scad_geometries_fuse(&geom1, 1, &geom2, 1, &geom)); OK(scad_geometry_ref_put(geom)); /* BAD(scad_geometries_cut(NULL, NULL, 0, geoms, 2, &geom)); */ - BAD(scad_geometries_cut(NULL, geoms, 2, NULL, 0, &geom)); - BAD(scad_geometries_cut(NULL, NULL, 1, &geom2, 1, &geom)); - BAD(scad_geometries_cut(NULL, &geom1, 1, NULL, 1, &geom)); - BAD(scad_geometries_cut(NULL, &geom1, 1, &geom2, 1, NULL)); - OK(scad_geometries_cut(NULL, &geom1, 1, &geom2, 1, &geom)); + BAD(scad_geometries_cut(geoms, 2, NULL, 0, &geom)); + BAD(scad_geometries_cut(NULL, 1, &geom2, 1, &geom)); + BAD(scad_geometries_cut(&geom1, 1, NULL, 1, &geom)); + BAD(scad_geometries_cut(&geom1, 1, &geom2, 1, NULL)); + OK(scad_geometries_cut(&geom1, 1, &geom2, 1, &geom)); OK(scad_geometry_ref_put(geom)); /* BAD(scad_geometries_intersect(NULL, NULL, 0, geoms, 2, &geom)); */ - BAD(scad_geometries_intersect(NULL, geoms, 2, NULL, 0, &geom)); - BAD(scad_geometries_intersect(NULL, NULL, 1, &geom2, 1, &geom)); - BAD(scad_geometries_intersect(NULL, &geom1, 1, NULL, 1, &geom)); - BAD(scad_geometries_intersect(NULL, &geom1, 1, &geom2, 1, NULL)); - OK(scad_geometries_intersect(NULL, &geom1, 1, &geom2, 1, &geom)); + BAD(scad_geometries_intersect(geoms, 2, NULL, 0, &geom)); + BAD(scad_geometries_intersect(NULL, 1, &geom2, 1, &geom)); + BAD(scad_geometries_intersect(&geom1, 1, NULL, 1, &geom)); + BAD(scad_geometries_intersect(&geom1, 1, &geom2, 1, NULL)); + OK(scad_geometries_intersect(&geom1, 1, &geom2, 1, &geom)); OK(scad_geometry_ref_put(geom)); /* BAD(scad_geometries_common_boundaries(NULL, NULL, 0, geoms, 2, &geom)); */ @@ -213,47 +212,48 @@ main(int argc, char* argv[]) } MEM_RM(&allocator, geom_array); - BAD(scad_geometry_copy(NULL, NULL, &geom)); - BAD(scad_geometry_copy(NULL, geom1, NULL)); - BAD(scad_geometry_copy("sphere 1", geom1, NULL)); /* Name already in use */ - OK(scad_geometry_copy("Sphere 1", geom1, &geom)); + BAD(scad_geometry_copy(NULL, &geom)); + BAD(scad_geometry_copy(geom1, NULL)); + BAD(scad_geometry_copy(geom1, NULL)); /* Name already in use */ + OK(scad_geometry_copy(geom1, &geom)); OK(scad_geometry_ref_put(geom)); BAD(scad_geometry_rename(NULL, NULL)); + OK(scad_geometry_rename(geom1, "sphere 1")); BAD(scad_geometry_rename(geom2, "sphere 1")); /* Name already in use */ OK(scad_geometry_rename(geom2, NULL)); - BAD(scad_geometry_translate(NULL, NULL, NULL, NULL)); - BAD(scad_geometry_translate(NULL, NULL, NULL, &geom)); - BAD(scad_geometry_translate(NULL, NULL, d1, NULL)); - BAD(scad_geometry_translate(NULL, NULL, d1, &geom)); - BAD(scad_geometry_translate(NULL, geom1, NULL, NULL)); - BAD(scad_geometry_translate(NULL, geom1, NULL, &geom)); - BAD(scad_geometry_translate(NULL, geom1, d1, NULL)); - OK(scad_geometry_translate(NULL, geom1, d1, &geom)); + BAD(scad_geometry_translate(NULL, NULL, NULL)); + BAD(scad_geometry_translate(NULL, NULL, &geom)); + BAD(scad_geometry_translate(NULL, d1, NULL)); + BAD(scad_geometry_translate(NULL, d1, &geom)); + BAD(scad_geometry_translate(geom1, NULL, NULL)); + BAD(scad_geometry_translate(geom1, NULL, &geom)); + BAD(scad_geometry_translate(geom1, d1, NULL)); + OK(scad_geometry_translate(geom1, d1, &geom)); OK(scad_geometry_ref_put(geom)); - BAD(scad_geometry_rotate(NULL, NULL, NULL, NULL, 1, NULL)); - BAD(scad_geometry_rotate(NULL, NULL, NULL, NULL, 1, &geom)); - BAD(scad_geometry_rotate(NULL, NULL, NULL, d1, 1, NULL)); - BAD(scad_geometry_rotate(NULL, NULL, NULL, d1, 1, &geom)); - BAD(scad_geometry_rotate(NULL, NULL, p1, NULL, 1, NULL)); - BAD(scad_geometry_rotate(NULL, NULL, p1, NULL, 1, &geom)); - BAD(scad_geometry_rotate(NULL, NULL, p1, d1, 1, NULL)); - BAD(scad_geometry_rotate(NULL, NULL, p1, d1, 1, &geom)); - BAD(scad_geometry_rotate(NULL, geom1, NULL, NULL, 1, NULL)); - BAD(scad_geometry_rotate(NULL, geom1, NULL, NULL, 1, &geom)); - BAD(scad_geometry_rotate(NULL, geom1, NULL, d1, 1, NULL)); - BAD(scad_geometry_rotate(NULL, geom1, NULL, d1, 1, &geom)); - BAD(scad_geometry_rotate(NULL, geom1, p1, NULL, 1, NULL)); - BAD(scad_geometry_rotate(NULL, geom1, p1, NULL, 1, &geom)); - BAD(scad_geometry_rotate(NULL, geom1, p1, d1, 1, NULL)); - OK(scad_geometry_rotate(NULL, geom1, p1, d1, 1, &geom)); - - BAD(scad_geometry_extrude(NULL, NULL, d1, &geom)); - BAD(scad_geometry_extrude(NULL, poly, NULL, &geom)); - BAD(scad_geometry_extrude(NULL, poly, d1, NULL)); - OK(scad_geometry_extrude(NULL, poly, d1, &geom)); + BAD(scad_geometry_rotate(NULL, NULL, NULL, 1, NULL)); + BAD(scad_geometry_rotate(NULL, NULL, NULL, 1, &geom)); + BAD(scad_geometry_rotate(NULL, NULL, d1, 1, NULL)); + BAD(scad_geometry_rotate(NULL, NULL, d1, 1, &geom)); + BAD(scad_geometry_rotate(NULL, p1, NULL, 1, NULL)); + BAD(scad_geometry_rotate(NULL, p1, NULL, 1, &geom)); + BAD(scad_geometry_rotate(NULL, p1, d1, 1, NULL)); + BAD(scad_geometry_rotate(NULL, p1, d1, 1, &geom)); + BAD(scad_geometry_rotate(geom1, NULL, NULL, 1, NULL)); + BAD(scad_geometry_rotate(geom1, NULL, NULL, 1, &geom)); + BAD(scad_geometry_rotate(geom1, NULL, d1, 1, NULL)); + BAD(scad_geometry_rotate(geom1, NULL, d1, 1, &geom)); + BAD(scad_geometry_rotate(geom1, p1, NULL, 1, NULL)); + BAD(scad_geometry_rotate(geom1, p1, NULL, 1, &geom)); + BAD(scad_geometry_rotate(geom1, p1, d1, 1, NULL)); + OK(scad_geometry_rotate(geom1, p1, d1, 1, &geom)); + + BAD(scad_geometry_extrude(NULL, d1, &geom)); + BAD(scad_geometry_extrude(poly, NULL, &geom)); + BAD(scad_geometry_extrude(poly, d1, NULL)); + OK(scad_geometry_extrude(poly, d1, &geom)); OK(scad_geometry_ref_put(poly)); OK(scad_geometry_ref_put(geom)); diff --git a/src/test_export.c b/src/test_export.c @@ -41,12 +41,15 @@ main(int argc, char* argv[]) OK(mem_init_proxy_allocator(&allocator, &mem_default_allocator)); OK(scad_initialize(NULL, &allocator, 3)); - OK(scad_add_rectangle("rectangle", p1, d1, &rectangle)); - OK(scad_add_box("cube", p1, d1, &cube)); - OK(scad_add_cylinder(NULL, p2, d1, 0.5, 2*PI, geoms+1)); + OK(scad_add_rectangle(p1, d1, &rectangle)); + OK(scad_geometry_rename(rectangle, "rectangle")); + OK(scad_add_box(p1, d1, &cube)); + OK(scad_geometry_rename(cube, "cube")); + OK(scad_add_cylinder(p2, d1, 0.5, 2*PI, geoms+1)); geoms[0] = cube; - OK(scad_geometries_fuse("fused", geoms, 1, geoms+1, 1, &fused)); + OK(scad_geometries_fuse(geoms, 1, geoms+1, 1, &fused)); + OK(scad_geometry_rename(fused, "fused")); OK(scad_scene_mesh()); diff --git a/src/test_export2.c b/src/test_export2.c @@ -62,9 +62,12 @@ main(int argc, char* argv[]) darray_double_init(&allocator, &array); OK(scad_initialize(NULL, &allocator, 3)); - OK(scad_add_box("cube1", p1, d1, &cube1)); - OK(scad_add_box("cube2", p2, d2, &cube2)); - OK(scad_add_box("cube3", p3, d3, &cube3)); + OK(scad_add_box(p1, d1, &cube1)); + OK(scad_geometry_rename(cube1, "cube1")); + OK(scad_add_box(p2, d2, &cube2)); + OK(scad_geometry_rename(cube2, "cube2")); + OK(scad_add_box(p3, d3, &cube3)); + OK(scad_geometry_rename(cube3, "cube3")); OK(scad_scene_mesh()); diff --git a/src/test_lifetime.c b/src/test_lifetime.c @@ -42,7 +42,7 @@ alive_and_well for(i = 0; i < c; i++) { double dir1[3] = {0, 0, 1}; struct scad_geometry* gg; - OK(scad_geometry_extrude("a_n_w_extruded", geom_array[i], dir1, &gg)); + OK(scad_geometry_extrude(geom_array[i], dir1, &gg)); OK(scad_geometry_ref_put(geom_array[i])); OK(scad_geometry_ref_put(gg)); } @@ -76,7 +76,7 @@ main(int argc, char* argv[]) OK(scad_set_options(&options)); /* Check that 2D constituants of a deleted 3D object are alive and well */ - OK(scad_add_box("box", p1, diago, &geom)); + OK(scad_add_box(p1, diago, &geom)); OK(scad_geometries_boundary("boundary", &geom, 1, &list, &list_n)); OK(scad_geometry_ref_put(geom)); for(i = 0; i < list_n; i++) { @@ -85,8 +85,8 @@ main(int argc, char* argv[]) MEM_RM(&allocator, list); list = NULL; /* Check that a 3D derivative of a deleted 2D object is alive and well */ - OK(scad_add_rectangle("rect", p1, base, &geom)); - OK(scad_geometry_extrude("cube", geom, dir1, &geom1)); + OK(scad_add_rectangle(p1, base, &geom)); + OK(scad_geometry_extrude(geom, dir1, &geom1)); OK(scad_geometry_ref_put(geom)); OK(scad_geometries_boundary("boundary", &geom1, 1, &list, &list_n)); OK(scad_geometry_ref_put(geom1)); @@ -96,18 +96,18 @@ main(int argc, char* argv[]) MEM_RM(&allocator, list); list = NULL; /* Check that a 2D part of a deleted 3D object is alive and well */ - OK(scad_add_rectangle("rect2", p1, base, &geom)); - OK(scad_geometry_extrude("cube2", geom, dir1, &geom1)); + OK(scad_add_rectangle(p1, base, &geom)); + OK(scad_geometry_extrude(geom, dir1, &geom1)); OK(scad_geometry_ref_put(geom1)); alive_and_well(geom, &allocator); - OK(scad_add_box("cavity", p1, diago, &geom1)); + OK(scad_add_box(p1, diago, &geom1)); OK(scad_geometries_boundary("bcavity", &geom1, 1, &list, &list_n)); for(i = 0; i < list_n; i++) { OK(scad_geometry_get_count(list[i], &center_n)); ASSERT(center_n == 1); OK(scad_geometry_get_centerofmass(list[i], center)); - OK(scad_geometry_normal(NULL, list[i], center, N, &geom)); + OK(scad_geometry_normal(list[i], center, N, &geom)); } OK(scad_geometry_ref_put(geom)); for(i = 0; i < list_n; i++) { @@ -118,8 +118,8 @@ main(int argc, char* argv[]) /* Check that 2D constituants of a deleted 3D object are alive and well after * a partition */ - OK(scad_add_box("box1", p1, diago, geoms+0)); - OK(scad_add_box("box2", p1, diago_, geoms+1)); + OK(scad_add_box(p1, diago, geoms+0)); + OK(scad_add_box(p1, diago_, geoms+1)); OK(scad_geometries_boundary(NULL, geoms+0, 1, &list, &list_n)); OK(scad_geometries_boundary(NULL, geoms+1, 1, &list2, &list_n2)); OK(scad_geometries_partition(geoms, 2, 0, out_geoms)); diff --git a/src/test_partition.c b/src/test_partition.c @@ -56,8 +56,8 @@ two_geoms /* set position for cube #2 */ d3(p2, x, 0.25, 0.25); - OK(scad_add_box("cube1", p1, d1, geoms+0)); - OK(scad_add_box("cube2", p2, d2, geoms+1)); + OK(scad_add_box(p1, d1, geoms+0)); + OK(scad_add_box(p2, d2, geoms+1)); /* Try to partition. * Fails if the 2 cubes overlap and overlapping is not allowed. */ diff --git a/src/test_periodic.c b/src/test_periodic.c @@ -43,9 +43,9 @@ main(int argc, char* argv[]) OK(scad_initialize(NULL, &allocator, 2)); r2 = r1 * XR; - OK(scad_add_cylinder(NULL, p1, d2, r1, 2*PI, &cyl1)); - OK(scad_add_cylinder(NULL, p1, d2, r2, 2*PI, &cyl2)); - OK(scad_geometries_cut("cylinder", &cyl2, 1, &cyl1, 1, &cyl)); + OK(scad_add_cylinder(p1, d2, r1, 2*PI, &cyl1)); + OK(scad_add_cylinder(p1, d2, r2, 2*PI, &cyl2)); + OK(scad_geometries_cut(&cyl2, 1, &cyl1, 1, &cyl)); OK(scad_geometry_ref_put(cyl1)); OK(scad_geometry_ref_put(cyl2)); OK(scad_geometries_boundary(NULL, &cyl, 1, &faces, &facesn));