blendercam/scripts/addons/fabex/post_processors/heiden530.py

236 wiersze
5.5 KiB
Python

2017-03-06 03:48:17 +00:00
################################################################################
# heiden.py
#
# Post for heidenhain
#
# TurBoss 01/07/2016
#
################################################################################
from . import nc
from . import iso
import math
from .format import Format
from .format import *
2017-03-06 03:48:17 +00:00
class Creator(iso.Creator):
def __init__(self):
2017-03-06 03:48:17 +00:00
iso.Creator.__init__(self)
2017-03-06 03:48:17 +00:00
self.program_id = 0
2017-03-06 03:48:17 +00:00
self.n = 0
self.t = 0
2017-03-06 03:48:17 +00:00
self.fmt = Format()
2017-03-06 03:48:17 +00:00
self.absolute_flag = True
2017-03-06 03:48:17 +00:00
self.x = 0.0
self.y = 0.0
self.z = 0.0
2017-03-06 03:48:17 +00:00
self.shift_x = 0.0
self.shift_y = 0.0
self.shift_z = 0.0
2017-03-06 03:48:17 +00:00
############################################################################
# Codes
2017-03-06 03:48:17 +00:00
2024-12-22 16:44:01 +00:00
def SPACE(self):
return " "
2024-12-22 16:44:01 +00:00
def NEW_LINE(self):
return "\n"
2024-12-22 16:44:01 +00:00
def BLOCK(self):
return "%i"
2024-12-22 16:44:01 +00:00
def COMMENT(self, comment):
return ";%s" % comment
2024-12-22 16:44:01 +00:00
def BEGIN_PGM(self):
return "BEGIN PGM %i"
2024-12-22 16:44:01 +00:00
def END_PGM(self):
return "END PGM %i"
2024-12-22 16:44:01 +00:00
def TOOL(self):
return "TOOL CALL %i Z"
2024-12-22 16:44:01 +00:00
def METRIC(self):
return "MM"
2024-12-22 16:44:01 +00:00
def RAPID(self):
return "L"
def FEED(self):
return "L"
def ARC_CC(self):
return "CC"
def ARC_C(self):
return "C"
def ARC_CW(self):
return "DR-"
def ARC_CCW(self):
return "DR+"
def X(self):
return "X"
def Y(self):
return "Y"
def Z(self):
return "Z"
2017-03-06 03:48:17 +00:00
############################################################################
# Internals
2017-03-06 03:48:17 +00:00
def write_blocknum(self):
self.write(self.BLOCK() % self.n)
self.n += 1
2017-03-06 03:48:17 +00:00
def write_spindle(self):
self.s.write(self)
self.write(self.NEW_LINE())
2017-03-06 03:48:17 +00:00
############################################################################
# Programs
2017-03-06 03:48:17 +00:00
2024-12-22 16:44:01 +00:00
def program_begin(self, id, name=""):
2017-03-06 03:48:17 +00:00
self.program_id = id
2017-03-06 03:48:17 +00:00
self.write_blocknum()
2017-03-06 03:48:17 +00:00
self.write(self.SPACE())
self.write(self.BEGIN_PGM() % self.program_id)
self.write(self.SPACE())
self.write(self.METRIC())
self.write(self.NEW_LINE())
def program_end(self):
self.write_blocknum()
2017-03-06 03:48:17 +00:00
self.write(self.SPACE())
self.write(self.END_PGM() % self.program_id)
self.write(self.SPACE())
self.write(self.METRIC())
self.write(self.NEW_LINE())
2017-03-06 03:48:17 +00:00
############################################################################
# Settings
2017-03-06 03:48:17 +00:00
def absolute(self):
pass
2017-03-06 03:48:17 +00:00
def metric(self):
pass
2017-03-06 03:48:17 +00:00
def set_plane(self, plane):
pass
2017-03-06 03:48:17 +00:00
############################################################################
# Tools
2017-03-06 03:48:17 +00:00
def tool_change(self, id):
self.t = id
2017-03-06 03:48:17 +00:00
self.write_blocknum()
2017-03-06 03:48:17 +00:00
self.write(self.SPACE())
self.write(self.TOOL() % self.t)
2017-03-06 03:48:17 +00:00
############################################################################
# Moves
2017-03-06 03:48:17 +00:00
def rapid(self, x=None, y=None, z=None, a=None, b=None, c=None):
2017-03-06 03:48:17 +00:00
self.write_blocknum()
2017-03-06 03:48:17 +00:00
self.write(self.SPACE())
self.write(self.RAPID())
2017-03-06 03:48:17 +00:00
self.write_preps()
2024-12-22 16:44:01 +00:00
if x != None:
2017-03-06 03:48:17 +00:00
dx = x - self.x
2024-12-22 16:44:01 +00:00
if self.absolute_flag:
2017-03-06 03:48:17 +00:00
self.write(self.SPACE() + self.X() + (self.fmt.string(x + self.shift_x)))
else:
self.write(self.SPACE() + self.X() + (self.fmt.string(dx)))
self.x = x
2024-12-22 16:44:01 +00:00
if y != None:
2017-03-06 03:48:17 +00:00
dy = y - self.y
2024-12-22 16:44:01 +00:00
if self.absolute_flag:
2017-03-06 03:48:17 +00:00
self.write(self.SPACE() + self.Y() + (self.fmt.string(y + self.shift_y)))
else:
self.write(self.SPACE() + self.Y() + (self.fmt.string(dy)))
self.y = y
2024-12-22 16:44:01 +00:00
if z != None:
2017-03-06 03:48:17 +00:00
dz = z - self.z
2024-12-22 16:44:01 +00:00
if self.absolute_flag:
2017-03-06 03:48:17 +00:00
self.write(self.SPACE() + self.Z() + (self.fmt.string(z + self.shift_z)))
else:
self.write(self.SPACE() + self.Z() + (self.fmt.string(dz)))
self.z = z
2017-03-06 03:48:17 +00:00
self.write_spindle()
self.write_misc()
2017-03-06 03:48:17 +00:00
def feed(self, x=None, y=None, z=None, a=None, b=None, c=None):
2024-12-22 16:44:01 +00:00
(x, y, z, a, b, c, axis_count) = self.filter_xyz(x, y, z)
if axis_count == 0:
return
2017-03-06 03:48:17 +00:00
self.write_blocknum()
2017-03-06 03:48:17 +00:00
self.write(self.SPACE())
self.write(self.FEED())
2017-03-06 03:48:17 +00:00
dx = dy = dz = 0
2024-12-22 16:44:01 +00:00
if x != None:
2017-03-06 03:48:17 +00:00
dx = x - self.x
2024-12-22 16:44:01 +00:00
if self.absolute_flag:
2017-03-06 03:48:17 +00:00
self.write(self.SPACE() + self.X() + (self.fmt.string(x + self.shift_x)))
else:
self.write(self.SPACE() + self.X() + (self.fmt.string(dx)))
self.x = x
2024-12-22 16:44:01 +00:00
if y != None:
2017-03-06 03:48:17 +00:00
dy = y - self.y
2024-12-22 16:44:01 +00:00
if self.absolute_flag:
2017-03-06 03:48:17 +00:00
self.write(self.SPACE() + self.Y() + (self.fmt.string(y + self.shift_y)))
else:
self.write(self.SPACE() + self.Y() + (self.fmt.string(dy)))
self.y = y
2024-12-22 16:44:01 +00:00
if z != None:
2017-03-06 03:48:17 +00:00
dz = z - self.z
2024-12-22 16:44:01 +00:00
if self.absolute_flag:
2017-03-06 03:48:17 +00:00
self.write(self.SPACE() + self.Z() + (self.fmt.string(z + self.shift_z)))
else:
self.write(self.SPACE() + self.Z() + (self.fmt.string(dz)))
self.z = z
2017-03-06 03:48:17 +00:00
self.write_feedrate()
self.write_spindle()
self.write_misc()
############################################################################
# Misc
2017-03-06 03:48:17 +00:00
def comment(self, text):
2024-12-22 16:44:01 +00:00
self.write((self.COMMENT(text) + "\n"))
2017-03-06 03:48:17 +00:00
nc.creator = Creator()