diff --git a/sfc/slicer.py b/sfc/slicer.py index 14c6e49..3f9705f 100755 --- a/sfc/slicer.py +++ b/sfc/slicer.py @@ -33,6 +33,7 @@ height = None # height of the workpiece above the Z plane (can be # negative). Default: use model dimensions. align_top = None # align the Z position of the model to the workpiece align_bottom = None +end = 0 # Z adjustment of final layer def dist(a, b): @@ -92,7 +93,7 @@ def dump_level(wires, z): def usage(): print >>sys.stderr, "usage:", sys.argv[0], \ "[-a (top|bottom)(+|-)offset] [-f] [-h height]" + \ - "\t[-b piece_distance] [-s max_step] file.stl" + "\t[-b piece_distance] [-o z_offset] [-s max_step] file.stl" sys.exit(1) @@ -105,7 +106,7 @@ stdout = os.dup(1) os.dup2(2, 1) sys.stdout = os.fdopen(stdout, "w") -opts, args = getopt.getopt(sys.argv[1:], "a:fh:p:s:") +opts, args = getopt.getopt(sys.argv[1:], "a:e:fh:p:s:") for opt, arg in opts: if opt == "-a": if arg[0:3] == "top": @@ -114,6 +115,8 @@ for opt, arg in opts: align_bottom = float(arg[6:]) else: usage() + elif opt == "-o": + end = float(arg) elif opt == "-f": flip = True elif opt == "-h": @@ -213,7 +216,9 @@ else: last_z = None if height is not None and height < 0 and z_levels[-1] > height: z_levels.append(height - z_off) - + +z_levels[-1] += end + for next_z in z_levels: wires = shape.slice(Base.Vector(0, 0, 1), next_z + epsilon) if z_step is None or last_z is None or last_z - z_step <= next_z: