Mercurial > lasercutter
view graster/graster/lib/graster/gcode_file.rb @ 11:f952052e37b7
trying a fix.
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Tue, 24 Aug 2010 19:06:45 -0400 |
parents | |
children |
line wrap: on
line source
1 class Graster2 class GcodeFile < File3 def preamble opts4 @laser = false5 self << "M63 P0\nG61\nF#{opts[:feed] || 60}\n"6 self << "M101\n" if opts[:mask]7 self << "M3 S1\n"8 end10 def epilogue11 self << "M63 P0\nM5\nM2\n"12 end14 PRIORITY = [:g,:x,:y,:z,:w,:i,:j,:k,:m,:p,:s]16 def nc codes17 codes = codes.dup19 if codes[:laser] == true && !@laser20 @laser = true21 codes.merge!(:m => 62, :p => 0)22 elsif codes[:laser] == false && @laser23 @laser = false24 codes.merge!(:m => 63, :p => 0)25 end27 codes.delete :laser29 self << codes.sort {|(k1,v1),(k2,v2)|30 PRIORITY.index(k1) <=> PRIORITY.index(k2)31 }.map {|k,v|32 if v.is_a? Integer33 "#{k.to_s.upcase}#{v}"34 elsif v.is_a? Float35 "#{k.to_s.upcase}%0.3f" % v36 else37 k.to_s.upcase38 end39 }.join(' ') + "\n"40 end42 def g0 codes43 nc({:g => 0}.merge codes)44 end45 alias_method :jog, :g047 def g1 codes48 nc({:g => 1}.merge codes)49 end50 alias_method :move, :g152 def g2 codes53 nc codes.merge(:g => 2)54 end55 alias_method :turn_cw, :g257 def g3 codes58 nc codes.merge(:g => 3)59 end60 alias_method :turn_ccw, :g362 def comment txt63 txt = txt.gsub(/\(\)/,'')64 self << "(#{txt})\n"65 end67 def puts *a68 self.puts *a69 end70 end71 end