PrintCanon in interpret.py hasn't worked as written for quite some time.
It should either just be deleted, or somebody should rehabilitate it and
write a test to make sure it stays working.
Here's a basic program that (in master branch of recent vintage)
does the job:
#!/usr/bin/python
#######################################################################
import tempfile
import gcode
import sys
def float_fmt(f):
if isinstance(f, float): return "% 5.1g" % f
return "%5s" % f
class Canon:
def __getattr__(self, attr):
"""Assume that any unknown attribute is a canon call; just print
its args and return None"""
def inner(*args):
args = map(float_fmt, args)
print "%-17s %s" % (attr, " ".join(args))
return inner
# this is just noisy
def next_line(self, linecode): pass
# These can't just return None...
def get_external_length_units(self): return 1.0
def get_external_angular_units(self): return 1.0
def get_axis_mask(self): return 7 # (x y z)
def get_block_delete(self): return False
def get_tool(self, pocket):
return -1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0
parameter = tempfile.NamedTemporaryFile()
canon = Canon()
canon.parameter_file = parameter.name
gcode.parse(sys.argv[1], canon, '', '', '')
#######################################################################
For the "3dtest.ngc" sample program, the methods that are called but not
directly specified are:
arc_feed comment next_line set_feed_rate set_g5x_offset set_g92_offset
set_plane set_xy_rotation straight_feed straight_traverse
but a more accurate list will come from grepping for callmethod in
src/emc/rs274ngc/gcodemodule.cc:
callmethod(callback, "next_line", "O", new_line_code);
callmethod(callback, "arc_feed", "ffffifffffff",
callmethod(callback, "straight_feed", "fffffffff",
callmethod(callback, "straight_traverse", "fffffffff",
callmethod(callback, "set_g5x_offset", "ifffffffff",
callmethod(callback, "set_g92_offset", "fffffffff",
callmethod(callback, "set_xy_rotation", "f", t);
callmethod(callback, "set_plane", "i", pl);
callmethod(callback, "set_traverse_rate", "f", rate);
callmethod(callback, "set_feed_mode", "i", mode);
callmethod(callback, "change_tool", "i", pocket);
callmethod(callback, "set_feed_rate", "f", rate);
callmethod(callback, "dwell", "f", time);
callmethod(callback, "message", "s", comment);
callmethod(callback, "comment", "s", comment);
PyObject *result = callmethod(callback, "tool_offset", "ddddddddd",
offset.tran.x, offset.tran.y, offset.tran.z,
callmethod(callback, "get_block_delete", "");
callmethod(callback, "straight_probe", "fffffffff",
callmethod(callback, "rigid_tap", "fff",
callmethod(callback, "get_tool", "i", pocket);
callmethod(callback, "user_defined_function",
callmethod(callback, "get_axis_mask", "");
callmethod(callback, "get_external_angular_units", "");
callmethod(callback, "get_external_length_units", "");
callmethod(callback, "check_abort", "");
As usual there's no explicit documentation of this stuff. :-/
Jeff
------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers