int ged_importFg4Section(struct ged *gedp, int argc, const char *argv[]) { char *cp; char *line; char *lines; int eosFlag = 0; static const char *usage = "obj section"; GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR); GED_CHECK_READ_ONLY(gedp, GED_ERROR); GED_CHECK_ARGC_GT_0(gedp, argc, GED_ERROR); /* initialize result */ bu_vls_trunc(gedp->ged_result_str, 0); /* must be wanting help */ if (argc == 1) { bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return GED_HELP; } if (argc != 3) { bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage); return GED_ERROR; } grid_size = GRID_BLOCK; grid_pts = (point_t *)bu_malloc(grid_size * sizeof(point_t) , "importFg4Section: grid_pts"); lines = strdup(argv[2]); cp = line = lines; FIND_NEWLINE(cp, eosFlag); bu_strlcpy(field, line+8, sizeof(field)); group_id = atoi(field); bu_strlcpy(field, line+16, sizeof(field)); comp_id = atoi(field); region_id = group_id * 1000 + comp_id; if (comp_id > 999) { bu_log("Illegal component id number %d, changed to 999\n", comp_id); comp_id = 999; } bu_strlcpy(field, line+24, sizeof(field)); mode = atoi(field); if (mode != 1 && mode != 2) { bu_log("Illegal mode (%d) for group %d component %d, using volume mode\n", mode, group_id, comp_id); mode = 2; } while (!eosFlag) { ++cp; line = cp; FIND_NEWLINE(cp, eosFlag); if (!bu_strncmp(line, "GRID", 4)) do_grid(line); else if (!bu_strncmp(line, "CTRI", 4)) do_tri(line); else if (!bu_strncmp(line, "CQUAD", 4)) do_quad(line); } make_bot_object(argv[1], gedp->ged_wdbp); free((void *)lines); bu_free((void *)grid_pts, "importFg4Section: grid_pts"); /* free memory associated with globals */ bu_free((void *)faces, "importFg4Section: faces"); bu_free((void *)thickness, "importFg4Section: thickness"); bu_free((void *)facemode, "importFg4Section: facemode"); faces = NULL; thickness = NULL; facemode = NULL; return TCL_OK; }
int wdb_importFg4Section_cmd(struct rt_wdb *wdbp, Tcl_Interp *interp, int argc, char **argv) { char *cp; char *line; char *lines; int eosFlag = 0; if (argc != 3) { struct bu_vls vls; bu_vls_init(&vls); bu_vls_printf(&vls, "helplib_alias wdb_importFg4Section %s", argv[0]); Tcl_Eval(interp, bu_vls_addr(&vls)); bu_vls_free(&vls); return TCL_ERROR; } grid_size = GRID_BLOCK; grid_pts = (point_t *)bu_malloc(grid_size * sizeof(point_t) , "importFg4Section: grid_pts"); lines = strdup(argv[2]); cp = line = lines; FIND_NEWLINE(cp, eosFlag); bu_strlcpy(field, line+8, sizeof(field)); group_id = atoi(field); bu_strlcpy(field, line+16, sizeof(field)); comp_id = atoi(field); region_id = group_id * 1000 + comp_id; if (comp_id > 999) { bu_log( "Illegal component id number %d, changed to 999\n", comp_id ); comp_id = 999; } bu_strlcpy(field, line+24, sizeof(field)); mode = atoi(field); if (mode != 1 && mode != 2) { bu_log("Illegal mode (%d) for group %d component %d, using volume mode\n", mode, group_id, comp_id); mode = 2; } while (!eosFlag) { ++cp; line = cp; FIND_NEWLINE(cp, eosFlag); if (!strncmp(line, "GRID", 4)) do_grid(line); else if (!strncmp(line, "CTRI", 4)) do_tri(line); else if (!strncmp(line, "CQUAD", 4)) do_quad(line); } make_bot_object(argv[1], wdbp); free((void *)lines); bu_free((void *)grid_pts, "importFg4Section: grid_pts"); /* free memory associated with globals */ bu_free((void *)faces, "importFg4Section: faces"); bu_free((void *)thickness, "importFg4Section: thickness"); bu_free((void *)facemode, "importFg4Section: facemode"); faces = NULL; thickness = NULL; facemode = NULL; return TCL_OK; }