Skip to content

Instantly share code, notes, and snippets.

@ttp
Last active February 21, 2024 15:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ttp/5e5743f4cf59fe4695a8dc08999cc617 to your computer and use it in GitHub Desktop.
Save ttp/5e5743f4cf59fe4695a8dc08999cc617 to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby
# Cura example
# ;FLAVOR:Marlin
# ;TIME:7387
# ;Filament used: 19.6909m
# ;Layer height: 0.3
# ;MINX:68.308
# ;MINY:93.342
# ;MINZ:0.3
# ;MAXX:166.692
# ;MAXY:141.215
# ;MAXZ:57.4
gcode = File.read(ARGV[0])
metadata = [";Generated with Cura_SteamEngine 0.r.c.a"]
# Time
printing_time = gcode.scan(/; estimated printing time .+\= (\d+h )?(\d+m )?(\d+s)/)[0].map {|item| item&.strip&.to_i || 0}
metadata << ";TIME: #{printing_time[0]*3600 + printing_time[1]*60 + printing_time[2]}"
# Filament length
filament_used_mm = gcode.scan(/filament used \[mm\] \= (\d+.\d*)/)[0][0].to_f
metadata << ";Filament used: #{(filament_used_mm/1000).round(3)}m"
# Filament weight
filament_used_g = gcode.scan(/filament used \[g\] \= (\d+.\d*)/)[0][0]
metadata << ";Filament weight: #{filament_used_g}g"
# Layer height
layer_height = gcode.scan(/\; layer_height \= (\d+\.\d+)/)[0][0]
metadata << ";Layer height: #{layer_height}"
metadata << ""
# First layer height
first_layer_height = gcode.scan(/\; first_layer_height \= (\d+\.\d+)/)[0][0]
metadata << ";MINZ:#{first_layer_height}"
# Model height
max_z = gcode.scan(/; max_z_height: (\d+\.\d+)/)[0][0]
metadata << ";MAXZ:#{max_z}"
# Update file
File.write(ARGV[0], metadata.join("\n") + "\n" + gcode)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment