Welcome! Log In Create A New Profile

Advanced

Curse you Skeinforge!

Posted by plankton 
Curse you Skeinforge!
December 25, 2014 10:43AM
I think I need to get my head around Skeinforge in order to print the parts correctly for my Mendel90 build, Slic3r doesn't seem to be handling these correctly (I tried a test print of the X axis, idler end, and the M8 brass nut trap came out as solid infill). So I had a few quiet hours on Christmas morning (yes, that is possible) seemed the perfect time to try this, but I'm starting to think that the relatives might have been a less stressful option.

I've downloaded Nopeheads version of Skienforge from Github, and installed Python 2.7.9 (after I discovered Skeinforge doesn't like Python 3.x), I've tweaked a few of the settings that make sense to me, and loaded my start and end gcode files, I even worked out how to load an STL file into Skeinforge (that only took about 15 minutes to work out), but that's as far as I can get. Python (or Tkinter) is reporting an error "could not convert string to float" (at least, I think that may be the relevant part of the error) which has me (and Google, so far) stumped.


File C:/Users/Tim/Documents/RepRap/Mendel90/Mendel90-master/sturdy/stls/cable_cl
ip_AB.stl is being chain exported.
Carve procedure took 0 seconds.
Preface procedure took 0 seconds.
Inset procedure took 1 second.
Fill procedure took 1 second.
Speed procedure took 0 seconds.
Temperature procedure took 0 seconds.
Raft procedure took 0 seconds.
Chamber procedure took 0 seconds.
Jitter procedure took 0 seconds.
Clip procedure took 0 seconds.
Cool procedure took 0 seconds.
Limit procedure took 0 seconds.
Alteration procedure took 0 seconds.
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1532, in __call__
    return self.func(*args)
  File "C:\Users\Tim\Documents\RepRap\Skeinforge_Nophead\Skeinforge50plus-master
\fabmetheus_utilities\settings.py", line 1173, in execute
    self.repository.execute()
  File "C:\Users\Tim\Documents\RepRap\Skeinforge_Nophead\Skeinforge50plus-master
\skeinforge_application\skeinforge.py", line 592, in execute
    skeinforge_craft.writeOutput(fileName)
  File "C:\Users\Tim\Documents\RepRap\Skeinforge_Nophead\Skeinforge50plus-master
\skeinforge_application\skeinforge_utilities\skeinforge_craft.py", line 135, in
writeOutput
    return pluginModule.writeOutput(fileName, shouldAnalyze)
  File "C:\Users\Tim\Documents\RepRap\Skeinforge_Nophead\Skeinforge50plus-master
\skeinforge_application\skeinforge_plugins\craft_plugins\export.py", line 291, i
n writeOutput
    exportGcode = getCraftedTextFromText(gcodeText, repository)
  File "C:\Users\Tim\Documents\RepRap\Skeinforge_Nophead\Skeinforge50plus-master
\skeinforge_application\skeinforge_plugins\craft_plugins\export.py", line 136, i
n getCraftedTextFromText
    return ExportSkein().getCraftedGcode(repository, gcodeText)
  File "C:\Users\Tim\Documents\RepRap\Skeinforge_Nophead\Skeinforge50plus-master
\skeinforge_application\skeinforge_plugins\craft_plugins\export.py", line 383, i
n getCraftedGcode
    self.parseLine(line)
  File "C:\Users\Tim\Documents\RepRap\Skeinforge_Nophead\Skeinforge50plus-master
\skeinforge_application\skeinforge_plugins\craft_plugins\export.py", line 418, i
n parseLine
    line = self.getLineWithTruncatedNumber('Z', line, splitLine)
  File "C:\Users\Tim\Documents\RepRap\Skeinforge_Nophead\Skeinforge50plus-master
\skeinforge_application\skeinforge_plugins\craft_plugins\export.py", line 391, i
n getLineWithTruncatedNumber
    roundedNumberString = euclidean.getRoundedToPlacesString(self.decimalPlacesE
xported, float(numberString))
ValueError: could not convert string to float: [first_layer_height]

Anyone got any ideas about this?

Oh, and Happy Christmas to anyone who actually reads this today. smiling smiley
Re: Curse you Skeinforge!
December 25, 2014 11:34AM
Doh!

So the answer was in my start.gcode file, I was using a variable "first_layer_height" which it didn't like (I use several other variables, like "first_layer_bed_temperature", which it doesn't complain about, so maybe these variables have to be defined in Skeinforge somewhere)

G1 Z[first_layer_height] ; move nozzle to print height

just changed this to a constant, like this:

G1 Z0.35 ; move nozzle to print height

problem resolved... now then, what do the rest of those Skeinforge settings mean...
Re: Curse you Skeinforge!
December 26, 2014 12:31PM
Further update:

So I mentioned that Skeinforge didn't like one of my variables (which had worked fine in Slic3r), in fact it didn't like any of them, but for some reason only that one variable name caused it to crash. I use variables in my start Gcode to set temperatures according to whatever the profile specifies, that saves having to use a separate start.gcode file for each filament profile.

In Slic3r the beginning of my start gcode looks like this:

M140 S[first_layer_bed_temperature] ; set bed temp and don't wait
G28 ; home all axes
(I home Z to the top, which is slow on my machine, so I like to start the bed heating whilst it is homing)


Without variables it would be something like this:
M140 S70 ; set bed temp and don't wait
G28 ; home all axes


Steinforge doesn't like those variables, however there is a tick box in the Alteration plugin "Replace variable with Setting" that suggests this should work, you just need to find the correct format (which is not documented), and follow a few rules:

1. The plugin that contains the variable must be active, otherwise the variable will just be null.
2. Enclose the variable name in less < than, greater than > brackets
3. Prefix the variable name with its "path", for instance "setting.chamber." is the "path" to any of the Chamber variables.
4. Variable name is the name in the plugin, but remove any spaces, and remove anything inside brackets.

I've probably not explained that very well, so lets look at the same M140 example as above, the bed temperature in Skeinforge is specified in Chamber, it's called "Bed Temperature (Celcius)", so (after making sure that "activate chamber" is ticked), we can use the following command in our start.gcode file:

M140 S< setting.chamber.BedTemperature >

NOTE: don't put a space after the < or before the >, I just had to insert that to get this forum to display the line (nearly) correctly

Another example, for my start extrusion temperature I use:
M109 S< setting.temperature.BaseTemperature > ; set extruder temp and wait
Re: Curse you Skeinforge!
December 27, 2014 03:37PM
Thanks! Good to know!
I also found it very crude to have to put hard-wired constants into the config files instead of using variables.
I wonder if it is possible to prevent skeinforge fromo saving the settings for every click you perform in the GUI.
To counter that behavoiur I have a backup file tree, and remove/overwrite the working tree regularly, replacing it with the backup tree, to "undo the autosave".
Re: Curse you Skeinforge!
December 27, 2014 04:24PM
Quote
dawa
I wonder if it is possible to prevent skeinforge from saving the settings for every click you perform in the GUI.

Not that I've found yet.

Quote

To counter that behaviour I have a backup file tree, and remove/overwrite the working tree regularly, replacing it with the backup tree, to "undo the autosave".

But when you create new profiles you copy one of the existing profiles, so you could keep one profile as your "master", and create a child profile from that whenever you want to try out different settings.
Sorry, only registered users may post in this forum.

Click here to login