kopia lustrzana https://github.com/vilemduha/blendercam
236 wiersze
5.5 KiB
Python
236 wiersze
5.5 KiB
Python
![]() |
################################################################################
|
||
|
# heiden.py
|
||
|
#
|
||
|
# Post for heidenhain
|
||
|
#
|
||
|
# TurBoss 01/07/2016
|
||
|
#
|
||
|
################################################################################
|
||
|
|
||
|
from . import nc
|
||
|
from . import iso
|
||
|
import math
|
||
|
from .format import Format
|
||
|
from .format import *
|
||
|
|
||
![]() |
|
||
![]() |
class Creator(iso.Creator):
|
||
![]() |
def __init__(self):
|
||
![]() |
iso.Creator.__init__(self)
|
||
![]() |
|
||
![]() |
self.program_id = 0
|
||
![]() |
|
||
![]() |
self.n = 0
|
||
|
self.t = 0
|
||
![]() |
|
||
![]() |
self.fmt = Format()
|
||
![]() |
|
||
![]() |
self.absolute_flag = True
|
||
![]() |
|
||
![]() |
self.x = 0.0
|
||
|
self.y = 0.0
|
||
|
self.z = 0.0
|
||
![]() |
|
||
![]() |
self.shift_x = 0.0
|
||
|
self.shift_y = 0.0
|
||
|
self.shift_z = 0.0
|
||
![]() |
|
||
![]() |
############################################################################
|
||
![]() |
# Codes
|
||
![]() |
|
||
![]() |
def SPACE(self):
|
||
|
return " "
|
||
![]() |
|
||
![]() |
def NEW_LINE(self):
|
||
|
return "\n"
|
||
![]() |
|
||
![]() |
def BLOCK(self):
|
||
|
return "%i"
|
||
![]() |
|
||
![]() |
def COMMENT(self, comment):
|
||
|
return ";%s" % comment
|
||
![]() |
|
||
![]() |
def BEGIN_PGM(self):
|
||
|
return "BEGIN PGM %i"
|
||
![]() |
|
||
![]() |
def END_PGM(self):
|
||
|
return "END PGM %i"
|
||
![]() |
|
||
![]() |
def TOOL(self):
|
||
|
return "TOOL CALL %i Z"
|
||
![]() |
|
||
![]() |
def METRIC(self):
|
||
|
return "MM"
|
||
![]() |
|
||
![]() |
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"
|
||
![]() |
|
||
![]() |
############################################################################
|
||
![]() |
# Internals
|
||
![]() |
|
||
![]() |
def write_blocknum(self):
|
||
|
self.write(self.BLOCK() % self.n)
|
||
|
self.n += 1
|
||
![]() |
|
||
![]() |
def write_spindle(self):
|
||
|
self.s.write(self)
|
||
|
self.write(self.NEW_LINE())
|
||
![]() |
|
||
![]() |
############################################################################
|
||
![]() |
# Programs
|
||
![]() |
|
||
![]() |
def program_begin(self, id, name=""):
|
||
![]() |
self.program_id = id
|
||
![]() |
|
||
![]() |
self.write_blocknum()
|
||
![]() |
|
||
![]() |
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()
|
||
![]() |
|
||
![]() |
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())
|
||
![]() |
|
||
![]() |
############################################################################
|
||
![]() |
# Settings
|
||
![]() |
|
||
![]() |
def absolute(self):
|
||
|
pass
|
||
![]() |
|
||
![]() |
def metric(self):
|
||
|
pass
|
||
![]() |
|
||
![]() |
def set_plane(self, plane):
|
||
|
pass
|
||
![]() |
|
||
![]() |
############################################################################
|
||
![]() |
# Tools
|
||
![]() |
|
||
|
def tool_change(self, id):
|
||
|
self.t = id
|
||
![]() |
|
||
![]() |
self.write_blocknum()
|
||
![]() |
|
||
![]() |
self.write(self.SPACE())
|
||
|
self.write(self.TOOL() % self.t)
|
||
![]() |
|
||
![]() |
############################################################################
|
||
![]() |
# Moves
|
||
![]() |
|
||
![]() |
def rapid(self, x=None, y=None, z=None, a=None, b=None, c=None):
|
||
![]() |
self.write_blocknum()
|
||
![]() |
|
||
![]() |
self.write(self.SPACE())
|
||
|
self.write(self.RAPID())
|
||
![]() |
|
||
![]() |
self.write_preps()
|
||
![]() |
|
||
![]() |
if x != None:
|
||
![]() |
dx = x - self.x
|
||
![]() |
if self.absolute_flag:
|
||
![]() |
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
|
||
![]() |
|
||
|
if y != None:
|
||
![]() |
dy = y - self.y
|
||
![]() |
if self.absolute_flag:
|
||
![]() |
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
|
||
![]() |
|
||
|
if z != None:
|
||
![]() |
dz = z - self.z
|
||
![]() |
if self.absolute_flag:
|
||
![]() |
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
|
||
![]() |
|
||
![]() |
self.write_spindle()
|
||
|
self.write_misc()
|
||
![]() |
|
||
![]() |
def feed(self, x=None, y=None, z=None, a=None, b=None, c=None):
|
||
![]() |
(x, y, z, a, b, c, axis_count) = self.filter_xyz(x, y, z)
|
||
|
if axis_count == 0:
|
||
|
return
|
||
![]() |
|
||
![]() |
self.write_blocknum()
|
||
![]() |
|
||
![]() |
self.write(self.SPACE())
|
||
|
self.write(self.FEED())
|
||
![]() |
|
||
![]() |
dx = dy = dz = 0
|
||
![]() |
|
||
![]() |
if x != None:
|
||
![]() |
dx = x - self.x
|
||
![]() |
if self.absolute_flag:
|
||
![]() |
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
|
||
![]() |
if y != None:
|
||
![]() |
dy = y - self.y
|
||
![]() |
if self.absolute_flag:
|
||
![]() |
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
|
||
![]() |
if z != None:
|
||
![]() |
dz = z - self.z
|
||
![]() |
if self.absolute_flag:
|
||
![]() |
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
|
||
![]() |
|
||
![]() |
self.write_feedrate()
|
||
|
self.write_spindle()
|
||
|
self.write_misc()
|
||
|
|
||
|
############################################################################
|
||
![]() |
# Misc
|
||
![]() |
|
||
|
def comment(self, text):
|
||
![]() |
self.write((self.COMMENT(text) + "\n"))
|
||
|
|
||
|
|
||
![]() |
nc.creator = Creator()
|