diff --git a/camlib.py b/camlib.py index c9f2f7ff..bc42b5d3 100644 --- a/camlib.py +++ b/camlib.py @@ -3327,8 +3327,28 @@ class CNCjob(Geometry): :return: SVG Element """ + + # This appears to match up distance wise with inkscape + scale = self.options['tooldia'] / 2 + if scale == 0: + scale = 0.05 + + cuts = [] + travels = [] + for g in self.gcode_parsed: + if g['kind'][0] == 'C': cuts.append(g) + if g['kind'][0] == 'T': travels.append(g) + + # Used to determine board size self.solid_geometry = cascaded_union([geo['geom'] for geo in self.gcode_parsed]) - svg_elem = self.solid_geometry.svg(scale_factor=0.05) + + # Seperate the travels from the cuts for laser cutting under Visicut + travelsgeom = cascaded_union([geo['geom'] for geo in travels]) + cutsgeom = cascaded_union([geo['geom'] for geo in cuts]) + + svg_elem = travelsgeom.svg(scale_factor=scale, stroke_color="#F0E24D") + svg_elem += cutsgeom.svg(scale_factor=scale, stroke_color="#5E6CFF") + return svg_elem # def get_bounds(geometry_set):