Hacking Skeinforge Export Module

I decided to add a few features to the export module of Skeinforge which may also be useful to others.  I’ve committed these changes to my fork of the (unofficial) git repo.  If they seem popular then i’ll fire an email to Enrique with a patch.

Add Profile To File Extension

Simply adds the current profile to the file extension,  e.g. test.my_profile_name.gcode.

Archive Used Profile As Zip

Creates a Zip file archive of the current profile, e.g. test.my_profile_name.zip

Export Profile Values As CSV File

Creates a Comma Separated Value file containing all profile values, e.g. test.my_profile_name.csv.

The format is: plugin,name,value, e.g. carve,Layer Thickness (mm):,0.4

Add Descriptive Extension

Because I am inconsistent in my profile management I often tweak a setting of a profile before printing.  This means the profile name usually does not reflect the actual profile values.  This option adds key profile values as an extension to the gcode file. If a module is turned off then the value is not added to the extension.

E.g. <filename>.04hx06w_33Ff_03fill.4off.gcode where:

  • 04h = “Layer Thickness (mm):” 0.4
  • x
  • 06w = 0.6 width i.e. 0.4 times “Perimeter Width over Thickness (ratio):” 1.5
  • _
  • 33Ff = “Flow Rate Setting (float):” 33.0 and “Feed Rate (mm/s):” 33.0.  If either value has a positive value after the decimal place then this is also shown, but if it is zero it is hidden.  Also, if the values differ (which they shouldn’t with 5D volumetrics) then each is displayed seperately, i.e. 30F35.2f = “Flow Rate Setting (float):” 30.0 and “Feed Rate (mm/s):” 35.2
  • _
  • 03fill = “Infill Solidity (ratio):” 0.3
  • 4off = “Number of Columns (integer):” x “Number of Rows (integer):” from the Multiply Tab, e.g. 2×2.  If these values are both 1 then this part is not shown.

Add Timestamp Extension

Adds the current date and time as an extension in format YYYYmmdd_HHMMSS (so it is sortable if one has many files), e.g. test.my_profile_name.20110613_220113.gcode


Using all the options together yields a few files with long names but it means that each time a STL is processed one can:

  • see which profile was used (from the filename),
  • see which key values were used  (from the filename),
  • see all the profile values (from the csv),
  • recreate the profile (from the zip),
  • and ensure sure that all gcode files are unique and not overwritten each time (with timestamp).



  • June 13, 2011 - 11:03 pm | Permalink

    Nice, though I think I’d rather have most of that type of information in comments at the beginning of the file, rather than in the file name.

    • June 14, 2011 - 7:05 am | Permalink

      Good point, I had forgotten that gcode files can have comments in – would be much neater. The one benefit of having it in the filename is one doesn’t have to open the file to see them.

  • July 5, 2011 - 7:47 am | Permalink

    Hi, very nice enhancement. I love it (though it is cluttering my Folders ATM..
    maybe an option to put them into a seperate folder?.
    If you are so good with python maybe you can help me to include some automation for the settings? As I am no programmer, I can read the python code but I am unable to write someting new… or make slight changes…

    Can you help? My version of SF: https://github.com/ahmetcemturan/skeinforge
    Your export mdule is also included there.

    Thx. You can email me for further discussion.

  • July 26, 2011 - 10:51 pm | Permalink

    Well my fork has evolved quite a bit so that it does not need tweaking anymore…

    • July 27, 2011 - 8:27 am | Permalink

      That’s great Ahmet – sounds like you got to grips with python then. Simplifying SF is certainly a good idea.

  • Comments are closed.