Path: add output precision option to linuxcnc post.
Modified unit tests to use it.
This commit is contained in:
@@ -39,6 +39,7 @@ Arguments for linuxcnc:
|
||||
--comments,--no-comments ... output comments (--comments)
|
||||
--line-numbers,--no-line-numbers ... prefix with line numbers (--no-lin-numbers)
|
||||
--show-editor, --no-show-editor ... pop up editor before writing output(--show-editor)
|
||||
--output-precision=4 ... number of digits of precision. Default=4
|
||||
'''
|
||||
import FreeCAD
|
||||
from FreeCAD import Units
|
||||
@@ -66,6 +67,7 @@ UNIT_FORMAT = 'mm/min'
|
||||
MACHINE_NAME = "LinuxCNC"
|
||||
CORNER_MIN = {'x': 0, 'y': 0, 'z': 0}
|
||||
CORNER_MAX = {'x': 500, 'y': 300, 'z': 300}
|
||||
PRECISION=4
|
||||
|
||||
# Preamble text will appear at the beginning of the GCODE output file.
|
||||
PREAMBLE = '''G17 G90
|
||||
@@ -98,6 +100,8 @@ def processArguments(argstring):
|
||||
global OUTPUT_COMMENTS
|
||||
global OUTPUT_LINE_NUMBERS
|
||||
global SHOW_EDITOR
|
||||
global PRECISION
|
||||
|
||||
for arg in argstring.split():
|
||||
if arg == '--header':
|
||||
OUTPUT_HEADER = True
|
||||
@@ -115,6 +119,8 @@ def processArguments(argstring):
|
||||
SHOW_EDITOR = True
|
||||
elif arg == '--no-show-editor':
|
||||
SHOW_EDITOR = False
|
||||
elif arg.split('=')[0] == '--output-precision':
|
||||
PRECISION = arg.split('=')[1]
|
||||
|
||||
def export(objectslist, filename, argstring):
|
||||
processArguments(argstring)
|
||||
@@ -211,8 +217,10 @@ def linenumber():
|
||||
return ""
|
||||
|
||||
def parse(pathobj):
|
||||
global PRECISION
|
||||
out = ""
|
||||
lastcommand = None
|
||||
precision_string = '.' + str(PRECISION) +'f'
|
||||
|
||||
# params = ['X','Y','Z','A','B','I','J','K','F','S'] #This list control
|
||||
# the order of parameters
|
||||
@@ -251,12 +259,12 @@ def parse(pathobj):
|
||||
if c.Name not in ["G0", "G00"]: #linuxcnc doesn't use rapid speeds
|
||||
speed = Units.Quantity(c.Parameters['F'], FreeCAD.Units.Velocity)
|
||||
outstring.append(
|
||||
param + format(float(speed.getValueAs(UNIT_FORMAT)), '.2f') )
|
||||
param + format(float(speed.getValueAs(UNIT_FORMAT)), precision_string) )
|
||||
elif param == 'T':
|
||||
outstring.append(param + str(c.Parameters['T']))
|
||||
else:
|
||||
outstring.append(
|
||||
param + format(c.Parameters[param], '.4f'))
|
||||
param + format(c.Parameters[param], precision_string))
|
||||
|
||||
# store the latest command
|
||||
lastcommand = command
|
||||
|
||||
@@ -109,6 +109,7 @@ G1X-0.5905Y-0.3937
|
||||
G0Z0.5
|
||||
'''
|
||||
|
||||
|
||||
output = '''G0 S3000.000000 X-0.590500 Y-0.393700
|
||||
M03
|
||||
G0 Z0.125000
|
||||
@@ -119,6 +120,8 @@ G1 X-0.590500 Y0.433000
|
||||
G1 X-0.590500 Y-0.393700
|
||||
G0 Z0.500000
|
||||
'''
|
||||
|
||||
|
||||
#create a path directly form a piece of gcode.
|
||||
p = Path.Path()
|
||||
p.setFromGCode(lines)
|
||||
|
||||
@@ -84,7 +84,7 @@ class PathPostTestCases(unittest.TestCase):
|
||||
self.doc.recompute()
|
||||
|
||||
job.PostProcessor = 'linuxcnc'
|
||||
job.PostProcessorArgs = '--no-header --no-line-numbers --no-comments --no-show-editor'
|
||||
job.PostProcessorArgs = '--no-header --no-line-numbers --no-comments --no-show-editor --output-precision=2'
|
||||
|
||||
post = PathScripts.PathPost.CommandPathPost()
|
||||
(fail, gcode) = post.exportObjectsWith([job], job, False)
|
||||
|
||||
@@ -2,68 +2,68 @@ G17 G90
|
||||
G21
|
||||
(Default_Tool)
|
||||
M6 T1.0
|
||||
M3 S0.0000
|
||||
M3 S0.00
|
||||
(TC)
|
||||
M6 T2.0
|
||||
M3 S0.0000
|
||||
M3 S0.00
|
||||
(Contour)
|
||||
(Uncompensated Tool Path)
|
||||
G0 Z15.0000
|
||||
G0 Z15.00
|
||||
G90
|
||||
G17
|
||||
G0 X0.0000 Y0.0000 Z15.0000
|
||||
G0 X10.0000 Y10.0000 Z15.0000
|
||||
G0 X10.0000 Y10.0000 Z10.0000
|
||||
G1 X10.0000 Y10.0000 Z9.0000
|
||||
G1 X10.0000 Y0.0000 Z9.0000
|
||||
G1 X0.0000 Y0.0000 Z9.0000
|
||||
G1 X0.0000 Y10.0000 Z9.0000
|
||||
G1 X10.0000 Y10.0000 Z9.0000
|
||||
G1 X10.0000 Y10.0000 Z8.0000
|
||||
G1 X10.0000 Y0.0000 Z8.0000
|
||||
G1 X0.0000 Y0.0000 Z8.0000
|
||||
G1 X0.0000 Y10.0000 Z8.0000
|
||||
G1 X10.0000 Y10.0000 Z8.0000
|
||||
G1 X10.0000 Y10.0000 Z7.0000
|
||||
G1 X10.0000 Y0.0000 Z7.0000
|
||||
G1 X0.0000 Y0.0000 Z7.0000
|
||||
G1 X0.0000 Y10.0000 Z7.0000
|
||||
G1 X10.0000 Y10.0000 Z7.0000
|
||||
G1 X10.0000 Y10.0000 Z6.0000
|
||||
G1 X10.0000 Y0.0000 Z6.0000
|
||||
G1 X0.0000 Y0.0000 Z6.0000
|
||||
G1 X0.0000 Y10.0000 Z6.0000
|
||||
G1 X10.0000 Y10.0000 Z6.0000
|
||||
G1 X10.0000 Y10.0000 Z5.0000
|
||||
G1 X10.0000 Y0.0000 Z5.0000
|
||||
G1 X0.0000 Y0.0000 Z5.0000
|
||||
G1 X0.0000 Y10.0000 Z5.0000
|
||||
G1 X10.0000 Y10.0000 Z5.0000
|
||||
G1 X10.0000 Y10.0000 Z4.0000
|
||||
G1 X10.0000 Y0.0000 Z4.0000
|
||||
G1 X0.0000 Y0.0000 Z4.0000
|
||||
G1 X0.0000 Y10.0000 Z4.0000
|
||||
G1 X10.0000 Y10.0000 Z4.0000
|
||||
G1 X10.0000 Y10.0000 Z3.0000
|
||||
G1 X10.0000 Y0.0000 Z3.0000
|
||||
G1 X0.0000 Y0.0000 Z3.0000
|
||||
G1 X0.0000 Y10.0000 Z3.0000
|
||||
G1 X10.0000 Y10.0000 Z3.0000
|
||||
G1 X10.0000 Y10.0000 Z2.0000
|
||||
G1 X10.0000 Y0.0000 Z2.0000
|
||||
G1 X0.0000 Y0.0000 Z2.0000
|
||||
G1 X0.0000 Y10.0000 Z2.0000
|
||||
G1 X10.0000 Y10.0000 Z2.0000
|
||||
G1 X10.0000 Y10.0000 Z1.0000
|
||||
G1 X10.0000 Y0.0000 Z1.0000
|
||||
G1 X0.0000 Y0.0000 Z1.0000
|
||||
G1 X0.0000 Y10.0000 Z1.0000
|
||||
G1 X10.0000 Y10.0000 Z1.0000
|
||||
G1 X10.0000 Y10.0000 Z0.0000
|
||||
G1 X10.0000 Y0.0000 Z0.0000
|
||||
G1 X0.0000 Y0.0000 Z0.0000
|
||||
G1 X0.0000 Y10.0000 Z0.0000
|
||||
G1 X10.0000 Y10.0000 Z0.0000
|
||||
G0 X0.00 Y0.00 Z15.00
|
||||
G0 X10.00 Y10.00 Z15.00
|
||||
G0 X10.00 Y10.00 Z10.00
|
||||
G1 X10.00 Y10.00 Z9.00
|
||||
G1 X10.00 Y0.00 Z9.00
|
||||
G1 X0.00 Y0.00 Z9.00
|
||||
G1 X0.00 Y10.00 Z9.00
|
||||
G1 X10.00 Y10.00 Z9.00
|
||||
G1 X10.00 Y10.00 Z8.00
|
||||
G1 X10.00 Y0.00 Z8.00
|
||||
G1 X0.00 Y0.00 Z8.00
|
||||
G1 X0.00 Y10.00 Z8.00
|
||||
G1 X10.00 Y10.00 Z8.00
|
||||
G1 X10.00 Y10.00 Z7.00
|
||||
G1 X10.00 Y0.00 Z7.00
|
||||
G1 X0.00 Y0.00 Z7.00
|
||||
G1 X0.00 Y10.00 Z7.00
|
||||
G1 X10.00 Y10.00 Z7.00
|
||||
G1 X10.00 Y10.00 Z6.00
|
||||
G1 X10.00 Y0.00 Z6.00
|
||||
G1 X0.00 Y0.00 Z6.00
|
||||
G1 X0.00 Y10.00 Z6.00
|
||||
G1 X10.00 Y10.00 Z6.00
|
||||
G1 X10.00 Y10.00 Z5.00
|
||||
G1 X10.00 Y0.00 Z5.00
|
||||
G1 X0.00 Y0.00 Z5.00
|
||||
G1 X0.00 Y10.00 Z5.00
|
||||
G1 X10.00 Y10.00 Z5.00
|
||||
G1 X10.00 Y10.00 Z4.00
|
||||
G1 X10.00 Y0.00 Z4.00
|
||||
G1 X0.00 Y0.00 Z4.00
|
||||
G1 X0.00 Y10.00 Z4.00
|
||||
G1 X10.00 Y10.00 Z4.00
|
||||
G1 X10.00 Y10.00 Z3.00
|
||||
G1 X10.00 Y0.00 Z3.00
|
||||
G1 X0.00 Y0.00 Z3.00
|
||||
G1 X0.00 Y10.00 Z3.00
|
||||
G1 X10.00 Y10.00 Z3.00
|
||||
G1 X10.00 Y10.00 Z2.00
|
||||
G1 X10.00 Y0.00 Z2.00
|
||||
G1 X0.00 Y0.00 Z2.00
|
||||
G1 X0.00 Y10.00 Z2.00
|
||||
G1 X10.00 Y10.00 Z2.00
|
||||
G1 X10.00 Y10.00 Z1.00
|
||||
G1 X10.00 Y0.00 Z1.00
|
||||
G1 X0.00 Y0.00 Z1.00
|
||||
G1 X0.00 Y10.00 Z1.00
|
||||
G1 X10.00 Y10.00 Z1.00
|
||||
G1 X10.00 Y10.00 Z0.00
|
||||
G1 X10.00 Y0.00 Z0.00
|
||||
G1 X0.00 Y0.00 Z0.00
|
||||
G1 X0.00 Y10.00 Z0.00
|
||||
G1 X10.00 Y10.00 Z0.00
|
||||
M05
|
||||
G00 X-1.0 Y1.0
|
||||
G17 G90
|
||||
|
||||
Reference in New Issue
Block a user