kopia lustrzana https://github.com/vilemduha/blendercam
1066 wiersze
22 KiB
Python
1066 wiersze
22 KiB
Python
################################################################################
|
|
# nc.py
|
|
#
|
|
# Base class for NC code creation
|
|
# And global functions for calling current creator
|
|
#
|
|
# Hirutso Enni, 2009-01-13
|
|
# altered by Dan Falck 2010-08-04
|
|
# added tap() arguments Michael Haberler 2010-10-07
|
|
################################################################################
|
|
|
|
ncOFF = 0
|
|
|
|
ncLEFT = -1
|
|
ncRIGHT = +1
|
|
|
|
ncCW = -1
|
|
ncCCW = +1
|
|
|
|
ncMIST = 1
|
|
ncFLOOD = 2
|
|
|
|
################################################################################
|
|
|
|
|
|
class Creator:
|
|
def __init__(self):
|
|
pass
|
|
|
|
############################################################################
|
|
# Internals
|
|
|
|
def file_open(self, name):
|
|
# self.buffer=[]
|
|
self.file = open(name, "w")
|
|
self.filename = name
|
|
|
|
def file_close(self):
|
|
# self.file.write(''.join(self.buffer))
|
|
# self.buffer=[]
|
|
self.file.close()
|
|
|
|
def write(self, s):
|
|
self.file.write(s)
|
|
# self.buffer.append(s)
|
|
# if len(self.buffer)>100000:
|
|
# self.file.write(''.join(self.buffer))
|
|
# self.buffer=[]
|
|
|
|
def writem(self, a):
|
|
self.file.write("".join(a))
|
|
# self.buffer.extend(a)
|
|
|
|
############################################################################
|
|
# Programs
|
|
|
|
def program_begin(self, id, name=""):
|
|
"""Begin a program"""
|
|
pass
|
|
|
|
def add_stock(self, type_name, params):
|
|
pass
|
|
|
|
def program_stop(self, optional=False):
|
|
"""Stop the machine"""
|
|
pass
|
|
|
|
def program_end(self):
|
|
"""End the program"""
|
|
pass
|
|
|
|
def flush_nc(self):
|
|
"""Flush all pending codes"""
|
|
pass
|
|
|
|
############################################################################
|
|
# Subprograms
|
|
|
|
def sub_begin(self, id, name=""):
|
|
"""Begin a subprogram"""
|
|
pass
|
|
|
|
def sub_call(self, id):
|
|
"""Call a subprogram"""
|
|
pass
|
|
|
|
def sub_end(self):
|
|
"""Return from a subprogram"""
|
|
pass
|
|
|
|
############################################################################
|
|
# Settings
|
|
|
|
def imperial(self):
|
|
"""Set imperial units"""
|
|
pass
|
|
|
|
def metric(self):
|
|
"""Set metric units"""
|
|
pass
|
|
|
|
def absolute(self):
|
|
"""Set absolute coordinates"""
|
|
pass
|
|
|
|
def incremental(self):
|
|
"""Set incremental coordinates"""
|
|
pass
|
|
|
|
def polar(self, on=True):
|
|
"""Set polar coordinates"""
|
|
pass
|
|
|
|
def set_plane(self, plane):
|
|
"""Set plane"""
|
|
pass
|
|
|
|
def set_temporary_origin(self, x=None, y=None, z=None, a=None, b=None, c=None):
|
|
"""Set temporary origin G92"""
|
|
pass
|
|
|
|
def remove_temporary_origin(self):
|
|
"""Remote temporary origin G92.1"""
|
|
pass
|
|
|
|
############################################################################
|
|
# Tools
|
|
|
|
def tool_change(self, id):
|
|
"""Change the tool"""
|
|
pass
|
|
|
|
def tool_defn(self, id, name="", params=None):
|
|
"""Define a tool"""
|
|
pass
|
|
|
|
def offset_radius(self, id, radius=None):
|
|
"""Set tool radius offsetting"""
|
|
pass
|
|
|
|
def offset_length(self, id, length=None):
|
|
"""Set tool length offsetting"""
|
|
pass
|
|
|
|
def current_tool(self):
|
|
return None
|
|
|
|
############################################################################
|
|
# Datums
|
|
|
|
def datum_shift(self, x=None, y=None, z=None, a=None, b=None, c=None):
|
|
"""Shift the datum"""
|
|
pass
|
|
|
|
def datum_set(self, x=None, y=None, z=None, a=None, b=None, c=None):
|
|
"""Set the datum"""
|
|
pass
|
|
|
|
def workplane(self, id):
|
|
"""Set the workplane"""
|
|
pass
|
|
|
|
def clearanceplane(self, z=None):
|
|
"""set clearance plane"""
|
|
pass
|
|
|
|
############################################################################
|
|
# APT360 like Transformation Definitions
|
|
# These definitions were created while looking at Irvin Kraal's book on APT
|
|
# - Numerical Control Progamming in APT - page 211
|
|
|
|
def matrix(
|
|
self, a1=None, b1=None, c1=None, a2=None, b2=None, c2=None, a3=None, b3=None, c3=None
|
|
):
|
|
"""Create a matrix for transformations"""
|
|
pass
|
|
|
|
def translate(self, x=None, y=None, z=None):
|
|
"""Translate in x,y,z direction"""
|
|
pass
|
|
|
|
def rotate(self, xyrot=None, yzrot=None, zxrot=None, angle=None):
|
|
"""Rotate about a coordinate axis"""
|
|
pass
|
|
|
|
def scale(self, k=None):
|
|
"""Scale by factor k"""
|
|
pass
|
|
|
|
def matrix_product(self, matrix1=None, matrix2=None):
|
|
"""Create matrix that is the product of two other matrices"""
|
|
pass
|
|
|
|
def mirror_plane(self, plane1=None, plane2=None, plane3=None):
|
|
"""Mirror image about one or more coordinate planes"""
|
|
pass
|
|
|
|
def mirror_line(self, line=None):
|
|
"""Mirror about a line"""
|
|
pass
|
|
|
|
############################################################################
|
|
## Rates + Modes
|
|
|
|
def feedrate(self, f):
|
|
"""Set the feedrate"""
|
|
pass
|
|
|
|
def feedrate_hv(self, fh, fv):
|
|
"""Set the horizontal and vertical feedrates"""
|
|
pass
|
|
|
|
def spindle(self, s, clockwise=True):
|
|
"""Set the spindle speed"""
|
|
pass
|
|
|
|
def coolant(self, mode=0):
|
|
"""Set the coolant mode"""
|
|
pass
|
|
|
|
def gearrange(self, gear=0):
|
|
"""Set the gear range"""
|
|
pass
|
|
|
|
############################################################################
|
|
# Moves
|
|
|
|
def rapid(self, x=None, y=None, z=None, a=None, b=None, c=None):
|
|
"""Rapid move"""
|
|
pass
|
|
|
|
def feed(self, x=None, y=None, z=None, a=None, b=None, c=None):
|
|
"""Feed move"""
|
|
pass
|
|
|
|
def arc_cw(self, x=None, y=None, z=None, i=None, j=None, k=None, r=None):
|
|
"""Clockwise arc move"""
|
|
pass
|
|
|
|
def arc_ccw(self, x=None, y=None, z=None, i=None, j=None, k=None, r=None):
|
|
"""Counterclockwise arc move"""
|
|
pass
|
|
|
|
def dwell(self, t):
|
|
"""Dwell"""
|
|
pass
|
|
|
|
def rapid_home(self, x=None, y=None, z=None, a=None, b=None, c=None):
|
|
"""Rapid relative to home position"""
|
|
pass
|
|
|
|
def rapid_unhome(self):
|
|
"""Return from rapid home"""
|
|
pass
|
|
|
|
def set_machine_coordinates(self):
|
|
"""Set machine coordinates"""
|
|
pass
|
|
|
|
############################################################################
|
|
# Cutter radius compensation
|
|
|
|
def use_CRC(self):
|
|
"""CRC"""
|
|
return False
|
|
|
|
############################################################################
|
|
# Cycles
|
|
|
|
def pattern(self):
|
|
"""Simple pattern eg. circle, rect"""
|
|
pass
|
|
|
|
def pocket(self):
|
|
"""Pocket routine"""
|
|
pass
|
|
|
|
def profile(self):
|
|
"""Profile routine"""
|
|
pass
|
|
|
|
def drill(
|
|
self,
|
|
x=None,
|
|
y=None,
|
|
dwell=None,
|
|
depthparams=None,
|
|
retract_mode=None,
|
|
spindle_mode=None,
|
|
internal_coolant_on=None,
|
|
rapid_to_clearance=None,
|
|
):
|
|
"""Drilling routines"""
|
|
pass
|
|
|
|
# original prototype was:
|
|
# def tap(self, x=None, y=None, z=None, zretract=None, depth=None, standoff=None, dwell_bottom=None, pitch=None, stoppos=None, spin_in=None, spin_out=None):
|
|
#
|
|
# current call is like so:
|
|
# tap(x=10, y=10, z=0, tap_mode=0, depth=12.7, standoff=6.35, direction=0, pitch=1.25)
|
|
# just add tap_mode & direction parameters
|
|
|
|
def tap(
|
|
self,
|
|
x=None,
|
|
y=None,
|
|
z=None,
|
|
zretract=None,
|
|
depth=None,
|
|
standoff=None,
|
|
dwell_bottom=None,
|
|
pitch=None,
|
|
stoppos=None,
|
|
spin_in=None,
|
|
spin_out=None,
|
|
tap_mode=None,
|
|
direction=None,
|
|
):
|
|
"""Tapping routines"""
|
|
pass
|
|
|
|
def bore(
|
|
self,
|
|
x=None,
|
|
y=None,
|
|
z=None,
|
|
zretract=None,
|
|
depth=None,
|
|
standoff=None,
|
|
dwell_bottom=None,
|
|
feed_in=None,
|
|
feed_out=None,
|
|
stoppos=None,
|
|
shift_back=None,
|
|
shift_right=None,
|
|
backbore=False,
|
|
stop=False,
|
|
):
|
|
"""Boring routines"""
|
|
pass
|
|
|
|
def end_canned_cycle(self):
|
|
pass
|
|
|
|
############################################################################
|
|
# Misc
|
|
|
|
def comment(self, text):
|
|
"""Insert a comment"""
|
|
pass
|
|
|
|
def insert(self, text):
|
|
"""APT style INSERT statement"""
|
|
pass
|
|
|
|
def block_delete(self, on=False):
|
|
"""block to ignore if block delete switch is on"""
|
|
pass
|
|
|
|
def variable(self, id):
|
|
"""Insert a variable"""
|
|
pass
|
|
|
|
def variable_set(self, id, value):
|
|
"""Set a variable"""
|
|
pass
|
|
|
|
def probe_linear_centre_outside(self, x1=None, y1=None, depth=None, x2=None, y2=None):
|
|
pass
|
|
|
|
def probe_single_point(
|
|
self,
|
|
point_along_edge_x=None,
|
|
point_along_edge_y=None,
|
|
depth=None,
|
|
retracted_point_x=None,
|
|
retracted_point_y=None,
|
|
destination_point_x=None,
|
|
destination_point_y=None,
|
|
intersection_variable_x=None,
|
|
intersection_variable_y=None,
|
|
probe_offset_x_component=None,
|
|
probe_offset_y_component=None,
|
|
):
|
|
pass
|
|
|
|
def probe_downward_point(self, x=None, y=None, depth=None, intersection_variable_z=None):
|
|
pass
|
|
|
|
def report_probe_results(
|
|
self,
|
|
x1=None,
|
|
y1=None,
|
|
z1=None,
|
|
x2=None,
|
|
y2=None,
|
|
z2=None,
|
|
x3=None,
|
|
y3=None,
|
|
z3=None,
|
|
x4=None,
|
|
y4=None,
|
|
z4=None,
|
|
x5=None,
|
|
y5=None,
|
|
z5=None,
|
|
x6=None,
|
|
y6=None,
|
|
z6=None,
|
|
xml_file_name=None,
|
|
):
|
|
pass
|
|
|
|
def open_log_file(self, xml_file_name=None):
|
|
pass
|
|
|
|
def log_coordinate(self, x=None, y=None, z=None):
|
|
pass
|
|
|
|
def log_message(self, message=None):
|
|
pass
|
|
|
|
def close_log_file(self):
|
|
pass
|
|
|
|
def rapid_to_midpoint(self, x1=None, y1=None, z1=None, x2=None, y2=None, z2=None):
|
|
pass
|
|
|
|
def rapid_to_intersection(
|
|
self,
|
|
x1,
|
|
y1,
|
|
x2,
|
|
y2,
|
|
x3,
|
|
y3,
|
|
x4,
|
|
y4,
|
|
intersection_x,
|
|
intersection_y,
|
|
ua_numerator,
|
|
ua_denominator,
|
|
ua,
|
|
ub_numerator,
|
|
ub,
|
|
):
|
|
pass
|
|
|
|
def rapid_to_rotated_coordinate(
|
|
self, x1, y1, x2, y2, ref_x, ref_y, x_current, y_current, x_final, y_final
|
|
):
|
|
pass
|
|
|
|
def set_path_control_mode(self, mode, motion_blending_tolerance, naive_cam_tolerance):
|
|
pass
|
|
|
|
############################################################################
|
|
# NC code creator for additive machines like RepRap
|
|
|
|
def wipe(self):
|
|
"""wipe routine"""
|
|
pass
|
|
|
|
def extruder_on(self):
|
|
"""Turn on the extruder"""
|
|
pass
|
|
|
|
def extruder_off(self):
|
|
"""turn off the extruder"""
|
|
pass
|
|
|
|
def set_extruder_flowrate(self, flowrate):
|
|
"""Set the flowrate for the extruder"""
|
|
pass
|
|
|
|
def extruder_temp(self, temp):
|
|
"""Set the extruder temp in celsius"""
|
|
pass
|
|
|
|
def fan_on(self):
|
|
"""turn on the cooling fan"""
|
|
pass
|
|
|
|
def fan_off(self):
|
|
"""turn off the cooling fan"""
|
|
pass
|
|
|
|
def build_bed_temp(self, temp):
|
|
"""Set the bed temp in celsius"""
|
|
pass
|
|
|
|
def chamber_temp(self, temp):
|
|
"""Set the chamber temp in celsius"""
|
|
pass
|
|
|
|
def begin_ncblock(self):
|
|
# if the moves have come from backplotting nc code, then the nc code text can be given with these three functions
|
|
pass
|
|
|
|
def end_ncblock(self):
|
|
pass
|
|
|
|
def add_text(self, s, col, cdata):
|
|
pass
|
|
|
|
|
|
################################################################################
|
|
|
|
|
|
creator = Creator()
|
|
|
|
############################################################################
|
|
# Internals
|
|
|
|
|
|
def write(s):
|
|
creator.write(s)
|
|
|
|
|
|
def output(filename):
|
|
creator.file_open(filename)
|
|
|
|
|
|
############################################################################
|
|
# Programs
|
|
|
|
|
|
def program_begin(id, name=""):
|
|
creator.program_begin(id, name)
|
|
|
|
|
|
def add_stock(type_name, params):
|
|
creator.add_stock(type_name, params)
|
|
|
|
|
|
def program_stop(optional=False):
|
|
creator.program_stop(optional)
|
|
|
|
|
|
def program_end():
|
|
creator.program_end()
|
|
|
|
|
|
def flush_nc():
|
|
creator.flush_nc()
|
|
|
|
|
|
############################################################################
|
|
# Subprograms
|
|
|
|
|
|
def sub_begin(id, name=""):
|
|
creator.sub_begin(id, name)
|
|
|
|
|
|
def sub_call(id):
|
|
creator.sub_call(id)
|
|
|
|
|
|
def sub_end():
|
|
creator.sub_end()
|
|
|
|
|
|
############################################################################
|
|
# Settings
|
|
|
|
|
|
def imperial():
|
|
creator.imperial()
|
|
|
|
|
|
def metric():
|
|
creator.metric()
|
|
|
|
|
|
def absolute():
|
|
creator.absolute()
|
|
|
|
|
|
def incremental():
|
|
creator.incremental()
|
|
|
|
|
|
def polar(on=True):
|
|
creator.polar(on)
|
|
|
|
|
|
def set_plane(plane):
|
|
creator.set_plane(plane)
|
|
|
|
|
|
def set_temporary_origin(x=None, y=None, z=None, a=None, b=None, c=None):
|
|
creator.set_temporary_origin(x, y, z, a, b, c)
|
|
|
|
|
|
def remove_temporary_origin():
|
|
creator.remove_temporary_origin()
|
|
|
|
|
|
############################################################################
|
|
# Tools
|
|
|
|
|
|
def tool_change(id):
|
|
creator.tool_change(id)
|
|
|
|
|
|
def tool_defn(id, name="", params=None):
|
|
creator.tool_defn(id, name, params)
|
|
|
|
|
|
def offset_radius(id, radius=None):
|
|
creator.offset_radius(id, radius)
|
|
|
|
|
|
def offset_length(id, length=None):
|
|
creator.offset_length(id, length)
|
|
|
|
|
|
def current_tool(self):
|
|
return creator.current_tool()
|
|
|
|
|
|
############################################################################
|
|
# Datums
|
|
|
|
|
|
def datum_shift(x=None, y=None, z=None, a=None, b=None, c=None):
|
|
creator.datum_shift(x, y, z, a, b, c)
|
|
|
|
|
|
def datum_set(x=None, y=None, z=None, a=None, b=None, c=None):
|
|
creator.datum_set(x, y, z, a, b, c)
|
|
|
|
|
|
def workplane(id):
|
|
creator.workplane(id)
|
|
|
|
|
|
def clearanceplane(z=None):
|
|
creator.clearanceplane(z)
|
|
|
|
|
|
############################################################################
|
|
# APT360 like Transformation Definitions
|
|
# These definitions were created while looking at Irvin Kraal's book on APT
|
|
# - Numerical Control Progamming in APT - page 211
|
|
|
|
|
|
def matrix(a1=None, b1=None, c1=None, a2=None, b2=None, c2=None, a3=None, b3=None, c3=None):
|
|
creator.matrix(a1, b1, c1, a2, b2, c2, a3, b3, c3)
|
|
|
|
|
|
def translate(x=None, y=None, z=None):
|
|
creator.translate(x, y, z)
|
|
|
|
|
|
def rotate(xyrot=None, yzrot=None, zxrot=None, angle=None):
|
|
creator.rotate(xyrot, yzrot, zxrot, angle)
|
|
|
|
|
|
def scale(k=None):
|
|
creator.scale(k)
|
|
|
|
|
|
def matrix_product(matrix1=None, matrix2=None):
|
|
creator.matrix_product(matrix1, matrix2)
|
|
|
|
|
|
def mirror_plane(plane1=None, plane2=None, plane3=None):
|
|
creator.mirror_plane(plane1, plane2, plane3)
|
|
|
|
|
|
def mirror_line(line=None):
|
|
creator.mirror_line(line)
|
|
|
|
|
|
############################################################################
|
|
## Rates + Modes
|
|
|
|
|
|
def feedrate(f):
|
|
creator.feedrate(f)
|
|
|
|
|
|
def feedrate_hv(fh, fv):
|
|
creator.feedrate_hv(fh, fv)
|
|
|
|
|
|
def spindle(s, clockwise=True):
|
|
creator.spindle(s, clockwise)
|
|
|
|
|
|
def coolant(mode=0):
|
|
creator.coolant(mode)
|
|
|
|
|
|
def gearrange(gear=0):
|
|
creator.gearrange(gear)
|
|
|
|
|
|
############################################################################
|
|
# Moves
|
|
|
|
|
|
def rapid(x=None, y=None, z=None, a=None, b=None, c=None):
|
|
creator.rapid(x, y, z, a, b, c)
|
|
|
|
|
|
def feed(x=None, y=None, z=None, a=None, b=None, c=None):
|
|
creator.feed(x, y, z)
|
|
|
|
|
|
def arc_cw(x=None, y=None, z=None, i=None, j=None, k=None, r=None):
|
|
creator.arc_cw(x, y, z, i, j, k, r)
|
|
|
|
|
|
def arc_ccw(x=None, y=None, z=None, i=None, j=None, k=None, r=None):
|
|
creator.arc_ccw(x, y, z, i, j, k, r)
|
|
|
|
|
|
def dwell(t):
|
|
creator.dwell(t)
|
|
|
|
|
|
def rapid_home(x=None, y=None, z=None, a=None, b=None, c=None):
|
|
creator.rapid_home(x, y, z, a, b, c)
|
|
|
|
|
|
def rapid_unhome():
|
|
creator.rapid_unhome()
|
|
|
|
|
|
def set_machine_coordinates():
|
|
creator.set_machine_coordinates()
|
|
|
|
|
|
############################################################################
|
|
# Cutter radius compensation
|
|
|
|
|
|
def use_CRC():
|
|
return creator.use_CRC()
|
|
|
|
|
|
def CRC_nominal_path():
|
|
return creator.CRC_nominal_path()
|
|
|
|
|
|
def start_CRC(left=True, radius=0.0):
|
|
creator.start_CRC(left, radius)
|
|
|
|
|
|
def end_CRC():
|
|
creator.end_CRC()
|
|
|
|
|
|
############################################################################
|
|
# Cycles
|
|
|
|
|
|
def pattern():
|
|
creator.pattern()
|
|
|
|
|
|
def pocket():
|
|
creator.pocket()
|
|
|
|
|
|
def profile():
|
|
creator.profile()
|
|
|
|
|
|
def drill(
|
|
x=None,
|
|
y=None,
|
|
dwell=None,
|
|
depthparams=None,
|
|
retract_mode=None,
|
|
spindle_mode=None,
|
|
internal_coolant_on=None,
|
|
rapid_to_clearance=None,
|
|
):
|
|
creator.drill(
|
|
x,
|
|
y,
|
|
dwell,
|
|
depthparams,
|
|
retract_mode,
|
|
spindle_mode,
|
|
internal_coolant_on,
|
|
rapid_to_clearance,
|
|
)
|
|
|
|
|
|
def tap(
|
|
x=None,
|
|
y=None,
|
|
z=None,
|
|
zretract=None,
|
|
depth=None,
|
|
standoff=None,
|
|
dwell_bottom=None,
|
|
pitch=None,
|
|
stoppos=None,
|
|
spin_in=None,
|
|
spin_out=None,
|
|
tap_mode=None,
|
|
direction=None,
|
|
):
|
|
creator.tap(
|
|
x,
|
|
y,
|
|
z,
|
|
zretract,
|
|
depth,
|
|
standoff,
|
|
dwell_bottom,
|
|
pitch,
|
|
stoppos,
|
|
spin_in,
|
|
spin_out,
|
|
tap_mode,
|
|
direction,
|
|
)
|
|
|
|
|
|
def bore(
|
|
x=None,
|
|
y=None,
|
|
z=None,
|
|
zretract=None,
|
|
depth=None,
|
|
standoff=None,
|
|
dwell_bottom=None,
|
|
feed_in=None,
|
|
feed_out=None,
|
|
stoppos=None,
|
|
shift_back=None,
|
|
shift_right=None,
|
|
backbore=False,
|
|
stop=False,
|
|
):
|
|
creator.bore(
|
|
x,
|
|
y,
|
|
z,
|
|
zretract,
|
|
depth,
|
|
standoff,
|
|
dwell_Bottom,
|
|
feed_in,
|
|
feed_out,
|
|
stoppos,
|
|
shift_back,
|
|
shift_right,
|
|
backbore,
|
|
stop,
|
|
)
|
|
|
|
|
|
def end_canned_cycle():
|
|
creator.end_canned_cycle()
|
|
|
|
|
|
def peck(count, first, last=None, step=0.0):
|
|
pecks = []
|
|
peck = first
|
|
if last == None:
|
|
last = first
|
|
for i in range(0, count):
|
|
pecks.append(peck)
|
|
if peck - step > last:
|
|
peck -= step
|
|
return pecks
|
|
|
|
|
|
############################################################################
|
|
# Misc
|
|
|
|
|
|
def comment(text):
|
|
creator.comment(text)
|
|
|
|
|
|
def insert(text):
|
|
creator.insert(text)
|
|
|
|
|
|
def block_delete(on=False):
|
|
creator.block_delete(on)
|
|
|
|
|
|
def variable(id):
|
|
creator.variable(id)
|
|
|
|
|
|
def variable_set(id, value):
|
|
creator.variable_set(id, value)
|
|
|
|
|
|
def probe_single_point(
|
|
point_along_edge_x=None,
|
|
point_along_edge_y=None,
|
|
depth=None,
|
|
retracted_point_x=None,
|
|
retracted_point_y=None,
|
|
destination_point_x=None,
|
|
destination_point_y=None,
|
|
intersection_variable_x=None,
|
|
intersection_variable_y=None,
|
|
probe_offset_x_component=None,
|
|
probe_offset_y_component=None,
|
|
):
|
|
creator.probe_single_point(
|
|
point_along_edge_x,
|
|
point_along_edge_y,
|
|
depth,
|
|
retracted_point_x,
|
|
retracted_point_y,
|
|
destination_point_x,
|
|
destination_point_y,
|
|
intersection_variable_x,
|
|
intersection_variable_y,
|
|
probe_offset_x_component,
|
|
probe_offset_y_component,
|
|
)
|
|
|
|
|
|
def probe_downward_point(x=None, y=None, depth=None, intersection_variable_z=None):
|
|
creator.probe_downward_point(x, y, depth, intersection_variable_z)
|
|
|
|
|
|
def report_probe_results(
|
|
x1=None,
|
|
y1=None,
|
|
z1=None,
|
|
x2=None,
|
|
y2=None,
|
|
z2=None,
|
|
x3=None,
|
|
y3=None,
|
|
z3=None,
|
|
x4=None,
|
|
y4=None,
|
|
z4=None,
|
|
x5=None,
|
|
y5=None,
|
|
z5=None,
|
|
x6=None,
|
|
y6=None,
|
|
z6=None,
|
|
xml_file_name=None,
|
|
):
|
|
creator.report_probe_results(
|
|
x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, x5, y5, z5, x6, y6, z6, xml_file_name
|
|
)
|
|
|
|
|
|
def open_log_file(xml_file_name=None):
|
|
creator.open_log_file(xml_file_name)
|
|
|
|
|
|
def log_coordinate(x=None, y=None, z=None):
|
|
creator.log_coordinate(x, y, z)
|
|
|
|
|
|
def log_message(message=None):
|
|
creator.log_message(message)
|
|
|
|
|
|
def close_log_file():
|
|
creator.close_log_file()
|
|
|
|
|
|
def rapid_to_midpoint(x1=None, y1=None, z1=None, x2=None, y2=None, z2=None):
|
|
creator.rapid_to_midpoint(x1, y1, z1, x2, y2, z2)
|
|
|
|
|
|
def rapid_to_intersection(
|
|
x1,
|
|
y1,
|
|
x2,
|
|
y2,
|
|
x3,
|
|
y3,
|
|
x4,
|
|
y4,
|
|
intersection_x,
|
|
intersection_y,
|
|
ua_numerator,
|
|
ua_denominator,
|
|
ua,
|
|
ub_numerator,
|
|
ub,
|
|
):
|
|
creator.rapid_to_intersection(
|
|
x1,
|
|
y1,
|
|
x2,
|
|
y2,
|
|
x3,
|
|
y3,
|
|
x4,
|
|
y4,
|
|
intersection_x,
|
|
intersection_y,
|
|
ua_numerator,
|
|
ua_denominator,
|
|
ua,
|
|
ub_numerator,
|
|
ub,
|
|
)
|
|
|
|
|
|
def rapid_to_rotated_coordinate(
|
|
x1, y1, x2, y2, ref_x, ref_y, x_current, y_current, x_final, y_final
|
|
):
|
|
creator.rapid_to_rotated_coordinate(
|
|
x1, y1, x2, y2, ref_x, ref_y, x_current, y_current, x_final, y_final
|
|
)
|
|
|
|
|
|
def set_path_control_mode(mode, motion_blending_tolerance, naive_cam_tolerance):
|
|
creator.set_path_control_mode(mode, motion_blending_tolerance, naive_cam_tolerance)
|
|
|
|
|
|
############################################################################
|
|
# NC code creator for additive machines like RepRap
|
|
|
|
|
|
def wipe():
|
|
creator.wipe()
|
|
|
|
|
|
def extruder_on():
|
|
creator.extruder_on()
|
|
|
|
|
|
def extruder_off():
|
|
creator.extruder_off()
|
|
|
|
|
|
def set_extruder_flowrate(flowrate):
|
|
creator.set_extruder_flowrate(flowrate)
|
|
|
|
|
|
def extruder_temp(temp=None):
|
|
creator.extruder_temp(temp)
|
|
|
|
|
|
def fan_on():
|
|
creator.fan_on()
|
|
|
|
|
|
def fan_off():
|
|
creator.fan_off()
|
|
|
|
|
|
def build_bed_temp(temp=None):
|
|
creator.build_bed_temp(temp)
|
|
|
|
|
|
def chamber_temp(temp=None):
|
|
creator.chamber_temp(temp)
|