Started multi-pass cuts.
This commit is contained in:
parent
b5f428deea
commit
d687fb5287
45
camlib.py
45
camlib.py
|
@ -2686,7 +2686,7 @@ class CNCjob(Geometry):
|
|||
gcode += "M6\n" # Tool change
|
||||
gcode += "(MSG, Change to tool dia=%.4f)\n" % exobj.tools[tool]["C"]
|
||||
gcode += "M0\n" # Temporary machine stop
|
||||
if(self.spindlespeed != None):
|
||||
if self.spindlespeed is not None:
|
||||
gcode += "M03 S%d\n" % int(self.spindlespeed) # Spindle start with configured speed
|
||||
else:
|
||||
gcode += "M03\n" # Spindle start
|
||||
|
@ -2702,7 +2702,8 @@ class CNCjob(Geometry):
|
|||
|
||||
self.gcode = gcode
|
||||
|
||||
def generate_from_geometry_2(self, geometry, append=True, tooldia=None, tolerance=0):
|
||||
def generate_from_geometry_2(self, geometry, append=True, tooldia=None, tolerance=0,
|
||||
multipass=False, depthpercut=None):
|
||||
"""
|
||||
Second algorithm to generate from Geometry.
|
||||
|
||||
|
@ -2779,15 +2780,32 @@ class CNCjob(Geometry):
|
|||
if pt != geo.coords[0] and pt == geo.coords[-1]:
|
||||
geo.coords = list(geo.coords)[::-1]
|
||||
|
||||
# G-code
|
||||
# Note: self.linear2gcode() and self.point2gcode() will
|
||||
# lower and raise the tool every time.
|
||||
if type(geo) == LineString or type(geo) == LinearRing:
|
||||
self.gcode += self.linear2gcode(geo, tolerance=tolerance)
|
||||
elif type(geo) == Point:
|
||||
self.gcode += self.point2gcode(geo)
|
||||
if not multipass:
|
||||
# G-code
|
||||
# Note: self.linear2gcode() and self.point2gcode() will
|
||||
# lower and raise the tool every time.
|
||||
if type(geo) == LineString or type(geo) == LinearRing:
|
||||
self.gcode += self.linear2gcode(geo, tolerance=tolerance)
|
||||
elif type(geo) == Point:
|
||||
self.gcode += self.point2gcode(geo)
|
||||
else:
|
||||
log.warning("G-code generation not implemented for %s" % (str(type(geo))))
|
||||
else:
|
||||
log.warning("G-code generation not implemented for %s" % (str(type(geo))))
|
||||
if depthpercut is None:
|
||||
depthpercut = self.z_cut
|
||||
|
||||
depth = 0
|
||||
while depth > self.z_cut:
|
||||
depth -= depthpercut
|
||||
# G-code
|
||||
# Note: self.linear2gcode() and self.point2gcode() will
|
||||
# lower and raise the tool every time.
|
||||
# if type(geo) == LineString or type(geo) == LinearRing:
|
||||
# self.gcode += self.linear2gcode(geo, tolerance=tolerance)
|
||||
# elif type(geo) == Point:
|
||||
# self.gcode += self.point2gcode(geo)
|
||||
# else:
|
||||
# log.warning("G-code generation not implemented for %s" % (str(type(geo))))
|
||||
|
||||
# Delete from index, update current location and continue.
|
||||
#rti.delete(hits[0], geo.coords[0])
|
||||
|
@ -3033,7 +3051,7 @@ class CNCjob(Geometry):
|
|||
# TODO: This takes forever. Too much data?
|
||||
self.solid_geometry = cascaded_union([geo['geom'] for geo in self.gcode_parsed])
|
||||
|
||||
def linear2gcode(self, linear, tolerance=0):
|
||||
def linear2gcode(self, linear, tolerance=0, down=True, up=True):
|
||||
"""
|
||||
Generates G-code to cut along the linear feature.
|
||||
|
||||
|
@ -3066,7 +3084,10 @@ class CNCjob(Geometry):
|
|||
|
||||
for pt in path[1:]:
|
||||
gcode += t % (1, pt[0], pt[1]) # Linear motion to point
|
||||
gcode += "G00 Z%.4f\n" % self.z_move # Stop cutting
|
||||
|
||||
if up:
|
||||
gcode += "G00 Z%.4f\n" % self.z_move # Stop cutting
|
||||
|
||||
return gcode
|
||||
|
||||
def point2gcode(self, point):
|
||||
|
|
Loading…
Reference in New Issue