Class: Graster::GcodeFile

Inherits:
File
  • Object
show all
Defined in:
lib/graster/gcode_file.rb

Constant Summary collapse

PRIORITY =
[:g,:x,:y,:z,:w,:i,:j,:k,:m,:p,:s]

Instance Method Summary collapse

Instance Method Details

#comment(txt) ⇒ Object



62
63
64
65
# File 'lib/graster/gcode_file.rb', line 62

def comment txt
  txt = txt.gsub(/\(\)/,'')
  self << "(#{txt})\n"
end

#epilogueObject



10
11
12
# File 'lib/graster/gcode_file.rb', line 10

def epilogue
  self << "M63 P0\nM5\nM2\n"
end

#g0(codes) ⇒ Object Also known as: jog



42
43
44
# File 'lib/graster/gcode_file.rb', line 42

def g0 codes
  nc({:g => 0}.merge codes)
end

#g1(codes) ⇒ Object Also known as: move



47
48
49
# File 'lib/graster/gcode_file.rb', line 47

def g1 codes
  nc({:g => 1}.merge codes)
end

#g2(codes) ⇒ Object Also known as: turn_cw



52
53
54
# File 'lib/graster/gcode_file.rb', line 52

def g2 codes
  nc codes.merge(:g => 2)
end

#g3(codes) ⇒ Object Also known as: turn_ccw



57
58
59
# File 'lib/graster/gcode_file.rb', line 57

def g3 codes
  nc codes.merge(:g => 3)
end

#nc(codes) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/graster/gcode_file.rb', line 16

def nc codes
  codes = codes.dup

  if codes[:laser] == true && !@laser
    @laser = true
    codes.merge!(:m => 62, :p => 0)
  elsif codes[:laser] == false && @laser
    @laser = false
    codes.merge!(:m => 63, :p => 0)
  end

  codes.delete :laser

  self << codes.sort {|(k1,v1),(k2,v2)|
    PRIORITY.index(k1) <=> PRIORITY.index(k2)
  }.map {|k,v|
    if v.is_a? Integer
      "#{k.to_s.upcase}#{v}"
    elsif v.is_a? Float
      "#{k.to_s.upcase}%0.3f" % v
    else
      k.to_s.upcase
    end
  }.join(' ') + "\n"
end

#preamble(opts) ⇒ Object



3
4
5
6
7
8
# File 'lib/graster/gcode_file.rb', line 3

def preamble opts
  @laser = false
  self << "M63 P0\nG61\nF#{opts[:feed] || 60}\n"
  self << "M101\n" if opts[:mask]
  self << "M3 S1\n"
end

#puts(*a) ⇒ Object



67
68
69
# File 'lib/graster/gcode_file.rb', line 67

def puts *a
  self.puts *a
end