Index: exp_fmt_stl.c =================================================================== --- exp_fmt_stl.c (revision 35963) +++ exp_fmt_stl.c (revision 35964) @@ -71,6 +71,23 @@ fprintf(f, " endfacet\n"); } +static void stl_print_facet(FILE *f, stl_facet_t *head, double mx[16], double mxn[16]) +{ + double v[3], p[3]; + int n; + + v_transform(v, head->n, mxn); + fprintf(f, " facet normal %f %f %f\n", v[0], -v[1], v[2]); + fprintf(f, " outer loop\n"); + for(n = 0; n < 3; n++) { + p[0] = head->vx[n]; p[1] = head->vy[n]; p[2] = head->vz[n]; + v_transform(v, p, mx); + fprintf(f, " vertex %f %f %f\n", v[0], v[1], v[2]); + } + fprintf(f, " endloop\n"); + fprintf(f, " endfacet\n"); +} + static void stl_print_header(FILE *f) { fprintf(f, "solid pcb\n"); Index: export_stl.c =================================================================== --- export_stl.c (revision 35963) +++ export_stl.c (revision 35964) @@ -322,8 +322,17 @@ } } +typedef struct stl_facet_s stl_facet_t; + +struct stl_facet_s { + double n[3]; + double vx[3], vy[3], vz[3]; + stl_facet_t *next; +}; +RND_INLINE void v_transform(double dst[3], double src[3], double mx[16]); + +#include "exp_fmt_stl.c" #include "stl_models.c" -#include "exp_fmt_stl.c" int stl_hid_export_to_file(FILE *f, rnd_hid_attr_val_t *options, rnd_coord_t maxy, rnd_coord_t z0, rnd_coord_t z1) { Index: stl_models.c =================================================================== --- stl_models.c (revision 35963) +++ stl_models.c (revision 35964) @@ -31,14 +31,6 @@ #include #include -typedef struct stl_facet_s stl_facet_t; - -struct stl_facet_s { - double n[3]; - double vx[3], vy[3], vz[3]; - stl_facet_t *next; -}; - static char *stl_getline(char *line, int linelen, FILE *f) { char *cmd; @@ -134,20 +126,8 @@ memcpy(mx, tmp2, sizeof(tmp2)); } - for(; head != NULL; head = head->next) { - double v[3], p[3]; - int n; - v_transform(v, head->n, mxn); - fprintf(f, " facet normal %f %f %f\n", v[0], -v[1], v[2]); - fprintf(f, " outer loop\n"); - for(n = 0; n < 3; n++) { - p[0] = head->vx[n]; p[1] = head->vy[n]; p[2] = head->vz[n]; - v_transform(v, p, mx); - fprintf(f, " vertex %f %f %f\n", v[0], v[1], v[2]); - } - fprintf(f, " endloop\n"); - fprintf(f, " endfacet\n"); - } + for(; head != NULL; head = head->next) + stl_print_facet(f, head, mx, mxn); } #ifndef STL_TESTER