Date:2013-11-07 07:25:45 (10 years 4 months ago)
Author:Werner Almesberger
Commit:d64a34045f779e25c5e77a4e125b1e0c17568e81
Message:gp2rml/gp2rml.c: new option -s to set Z scale factor

Sounds weird, but the mill seems to be off by some 10%.
Files: gp2rml/gp2rml.c (7 diffs)

Change Details

gp2rml/gp2rml.c
11/*
22 * gp2rml.c - Convert from gnuplot to RML
33 *
4 * Written 2010-2012 by Werner Almesberger
5 * Copyright 2010-2012 Werner Almesberger
4 * Written 2010-2013 by Werner Almesberger
5 * Copyright 2010-2013 Werner Almesberger
66 *
77 * This program is free software; you can redistribute it and/or modify
88 * it under the terms of the GNU General Public License as published by
...... 
5656static struct path *paths = NULL, *curr_path;
5757static struct segment **next_seg;
5858static double z_max = -1e6; /* -1 km :) */
59static double z_scale = 1; /* < 1: compress; > 1: stretch */
5960
6061
6162#define units(mm) ((int) round((mm)*40.0))
...... 
155156        seg = seg->next;
156157        while (seg) {
157158            printf("!ZZ%d,%d,%d\n", units(seg->x), units(seg->y),
158                units(seg->z-z_max));
159                units((seg->z-z_max)*z_scale));
159160            d = hypot(x-seg->x, y-seg->y);
160161            txy = d/xy_speed;
161162            tz = fabs(z-seg->z)/z_speed;
...... 
185186static void usage(const char *name)
186187{
187188    fprintf(stderr,
188"usage: %s z_clear[mm] xy_speed z_speed [file]\n\n"
189" z_clear clearance above the highest peak, in mm (must be > 0)\n"
190" Unit (\"mm\") can optionally be specified\n"
191" xy_speed cutting speed, in mm/s\n"
192" z_speed vertical speed when lowering the pen, in mm/s\n"
189"usage: %s [-s z_scale] z_clear[mm] xy_speed z_speed [file]\n\n"
190" -s z_scale scale Z axis by z_scale (default: 1.0)\n"
191" z_clear clearance above the highest peak, in mm (must be > 0)\n"
192" Unit (\"mm\") can optionally be specified\n"
193" xy_speed cutting speed, in mm/s\n"
194" z_speed vertical speed when lowering the pen, in mm/s\n"
193195    , name);
194196    exit(1);
195197}
...... 
197199
198200int main(int argc, const char **argv)
199201{
202    const char *name;
200203    FILE *file;
201204    char *end;
202205    int i;
203206    double p[3];
204207
208    name = *argv;
209
210    if (argc > 2 && !strcmp(argv[1], "-s")) {
211        if (argc < 3)
212            usage(name);
213        z_scale = strtod(argv[2], &end);
214        if (*end)
215            usage(name);
216        argc -= 2;
217        argv += 2;
218    }
219
205220    switch (argc) {
206221    case 4:
207222        file = stdin;
...... 
214229        }
215230        break;
216231    default:
217        usage(*argv);
232        usage(name);
218233    }
219234    for (i = 0; i != 3; i++) {
220235        p[i] = strtod(argv[i+1], &end);
...... 
225240        if (!i && *end && !strcmp(end, "mm"))
226241            continue;
227242        if (*end || p[i] <= 0)
228            usage(*argv);
243            usage(name);
229244    }
230245
231246    process_file(file);

Archive Download the corresponding diff file

Branches:
master



interactive