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 += "M6\n" # Tool change
|
||||||
gcode += "(MSG, Change to tool dia=%.4f)\n" % exobj.tools[tool]["C"]
|
gcode += "(MSG, Change to tool dia=%.4f)\n" % exobj.tools[tool]["C"]
|
||||||
gcode += "M0\n" # Temporary machine stop
|
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
|
gcode += "M03 S%d\n" % int(self.spindlespeed) # Spindle start with configured speed
|
||||||
else:
|
else:
|
||||||
gcode += "M03\n" # Spindle start
|
gcode += "M03\n" # Spindle start
|
||||||
@ -2702,7 +2702,8 @@ class CNCjob(Geometry):
|
|||||||
|
|
||||||
self.gcode = gcode
|
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.
|
Second algorithm to generate from Geometry.
|
||||||
|
|
||||||
@ -2779,15 +2780,32 @@ class CNCjob(Geometry):
|
|||||||
if pt != geo.coords[0] and pt == geo.coords[-1]:
|
if pt != geo.coords[0] and pt == geo.coords[-1]:
|
||||||
geo.coords = list(geo.coords)[::-1]
|
geo.coords = list(geo.coords)[::-1]
|
||||||
|
|
||||||
# G-code
|
if not multipass:
|
||||||
# Note: self.linear2gcode() and self.point2gcode() will
|
# G-code
|
||||||
# lower and raise the tool every time.
|
# Note: self.linear2gcode() and self.point2gcode() will
|
||||||
if type(geo) == LineString or type(geo) == LinearRing:
|
# lower and raise the tool every time.
|
||||||
self.gcode += self.linear2gcode(geo, tolerance=tolerance)
|
if type(geo) == LineString or type(geo) == LinearRing:
|
||||||
elif type(geo) == Point:
|
self.gcode += self.linear2gcode(geo, tolerance=tolerance)
|
||||||
self.gcode += self.point2gcode(geo)
|
elif type(geo) == Point:
|
||||||
|
self.gcode += self.point2gcode(geo)
|
||||||
|
else:
|
||||||
|
log.warning("G-code generation not implemented for %s" % (str(type(geo))))
|
||||||
else:
|
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.
|
# Delete from index, update current location and continue.
|
||||||
#rti.delete(hits[0], geo.coords[0])
|
#rti.delete(hits[0], geo.coords[0])
|
||||||
@ -3033,7 +3051,7 @@ class CNCjob(Geometry):
|
|||||||
# TODO: This takes forever. Too much data?
|
# TODO: This takes forever. Too much data?
|
||||||
self.solid_geometry = cascaded_union([geo['geom'] for geo in self.gcode_parsed])
|
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.
|
Generates G-code to cut along the linear feature.
|
||||||
|
|
||||||
@ -3066,7 +3084,10 @@ class CNCjob(Geometry):
|
|||||||
|
|
||||||
for pt in path[1:]:
|
for pt in path[1:]:
|
||||||
gcode += t % (1, pt[0], pt[1]) # Linear motion to point
|
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
|
return gcode
|
||||||
|
|
||||||
def point2gcode(self, point):
|
def point2gcode(self, point):
|
||||||
|
Loading…
Reference in New Issue
Block a user