Tuesday, November 8, 2011



This plugin smooths jagged extruder paths. It takes shortcuts through jagged paths and decreases the feed rate to compensate.

Smooth is based on ideas in Nophead's frequency limit post:

The main parameter is 'Maximum Shortening over Width', with a default of 1.2. It defines the maximum shortening of the shortcut compared to the original path. Smooth goes over the path and if the shortcut between the midpoint of one line and the midpoint of the second line after is not too short compared to the original and the shortcut is not too long, it replaces the jagged original with the shortcut. If the maximum shortening is too much, smooth will shorten paths which should not of been shortened and will leave blobs and holes in the model. If the maximum shortening is too little, even jagged paths that could be shortened safely won't be smoothed.

Bookend to Alteration

The Bookend plugin is being renamed Alteration. The old parameter values from Bookend should be read by Alteration.

Also, Alteration now removes the alteration prefix tokens from the alteration lines. Alteration lines now have a prefix token so they can go through the craft plugins without being modified. However, the tokens are not recognized by the firmware so they have to be removed before export. The alteration token is:

Finally, the 'Replace Variable with Setting' option has been added, the default is on. This is based on code from Rob Gisehurt:

If Replace Variable with Setting is selected and there is an alteration line with a setting token, the token will be replaced by the value.

For example, if there is an alteration line like:
M140 S<setting.chamber.BedTemperature>

the token would be replaced with the value and assuming the bed chamber was 60.0, the output would be:
M140 S60.0

Carve and Inset Bridge change

The 'Infill in Direction of Bridge' option was moved from carve to inset. The old parameter values from carve should be read by inset.

Also the 'Bridge Width Multiplier', which was the default of 1.0 in every online settings list I could find, has been deleted. The only remaining bridge parameters and options are:

1) 'Infill in Direction of Bridge' in inset
2) 'Bridge Feed Rate Multiplier' in speed
3) 'Bridge Flow Rate Multiplier' in speed
4) 'Bridge Cool' in cool


The 'Maximum E Value before Reset' with a default of 91234.0 was added to dimension.

It defines the maximum E value before it is reset with the 'G92 E0' command line. The reason it is reset only after the maximum E value is reached is because at least one firmware takes time to reset. The problem with waiting until the E value is high before resetting is that more characters are sent. So if your firmware takes a lot of time to reset, set this parameter to a high value, if it doesn't set this parameter to a low value or even zero.


The 'Analyze Gcode' option has been added to export. It just adds an option for those using skeinforge as a command line application.

The default is on. When selected, the penultimate gcode will be sent to the analyze plugins to be analyzed and viewed.


The 'Surrounding Angle' in fill can now be changed, the default is 60 degrees.

It defines the angle that the surrounding layers around the infill are expanded.

To decide whether or not the infill should be sparse or solid, fill looks at the 'Solid Surface Thickness' surrounding layers above and below the infill. If any of the expanded layers above or below the infill do not cover the infill, then the infill will be solid in that region. The layers are expanded by the height difference times the tangent of the surrounding angle, which is from the vertical. For example, if the model is a wedge with a wall angle less than the Surrounding Angle, the interior layers (those which are not on the bottom or top) will be sparse. If the wall angle is greater than the Surrounding Angle, the interior layers will be solid.

The time required to examine the surrounding layers increases with the Surrounding Angle, so the Surrounding Angle is limited to eighty degrees, regardless of the input value.

If you have an organic shape with gently sloping surfaces; if the Surrounding Angle is set too high, then too many layers will be sparse. If the Surrounding Angle is too low, then too many layers will be solid and the extruder may end up plowing through previous layers:

Fillet and Speed Multipliers

'Corner Feed Rate over Operating Feed Rate' in fillet has been changed to:
'Corner Feed Rate Multiplier'

'Perimeter Feed Rate over Operating Feed Rate' in speed has been changed to:
'Perimeter Feed Rate Multiplier'

'Perimeter Flow Rate over Operating Flow Rate' in speed has been changed to:
'Perimeter Flow Rate Multiplier'

The old parameter names will automatically be read into the new parameter names, you do not have to do anything. This section if just a heads up.

Question about Perimeter Width and Infill Width

I am planning on replacing 'Perimeter Width' and 'Infill Width' with 'Extrusion Width'. This is to simplify the skeinforge settings and code. The new Extrusion Width would be read from the old Perimeter Width. The Infill versus Perimeter difference would be accommodated with the Perimeter Feed Rate Multiplier in speed.

Originally, skeinforge used Extrusion width. Then someone asked for a way to change Perimeter Width and Infill Width independently, which was added. Then someone else asked for a way to change the Perimeter Feed Rate and Perimeter Flow Rate independently, and that was added also. However, once there was a way of changing Perimeter Feed Rate and Perimeter Flow Rate, there was no longer any need to set Infill Width independently, because the effective width could be changed by changing the feed rate. So Infill Width became redundant, which I just noticed recently.

Before making this change I'd just like to know; is there is a good reason why Infill Width should not be removed?

Raft and Speed, Object First Layer

All the 'Object First Layer..' feed rate and flow rate options have been moved from raft to speed. This was done to fix a flow rate bug. The old parameter values from raft should be read by speed, but it's a good idea to check that they were.


The number of divisions on the skinned surfaces can now be set.

====Horizontal Infill Divisions====
Default: 2

Defines the number of times the skinned infill is divided horizontally.

====Horizontal Perimeter Divisions====
Default: 1

Defines the number of times the skinned perimeters are divided horizontally.

====Vertical Divisions====
Default: 2

Defines the number of times the skinned infill and perimeters are divided vertically.

Download, Documentation and Forum

The stable skeinforge version is at:

The unstable skeinforge is on my website at:

The documentation is at:

The forum is at:


  1. You mention getting rid of infill width and I personally use it all the time. I would get rid of the independent feed and flow rates as we really want them the same, unless you have a firmware issue in which case you should really calibrate your firmware better.

  2. I'd love first layer rates to be scalars rather than ratios.. the speed I need to get a good first layer is not affected by the overall speed of the print!

    Good to hear you've finally tossed out WoT and have reverted to extrusion width, lots of people were totally confused by that!

    Can bridge flow rate be automagically calculated given the nozzle diameter?

    I don't really get the skin thing. wouldn't it make more sense to have an option, "infill every # layers" so vertical curves come out really smooth but we can still do infill at 0.3mm?
    From what I understand, skin prints exactly the same perimeter at lower heights, for a smoother finish on vertical straight sections, but nothing really useful for vertical curves like the sides of a spherical section or horizontal cylinder.

  3. Hi Sublime,

    After looking at many profiles on line, I'm going to keep infill width because some high resolution profiles have changed that. Some high resolution profiles also need independent feed and flow rates, to compensate for their different infill widths.

    Hi Triffid Hunter,

    I'm going to keep the first layer rates as ratios because otherwise people would have to change them every time they change the layer thickness and therefore change the operating flow rate or feed rate.

    The more fan cooling you have and the lower your bridge temperature, the higher you can increase your bridge flow rate and feed rate. It is not a linear relation, the bridge flow rate has to be determined by experiment.

    Indeed, skin only helps vertical walls and the very top infill. It does not help with sloped surfaces. There is no good way of making infill every # layers because infill would often fail to connect wherever the slope, as measured from the vertical, was too high. If you want to extrude a smooth sphere, you must go to thin slices, there is no good shortcut.

    Overall, after looking at many profiles, the only thing I can safely consolidate is the Object First Layer Flow Rate Infill Multiplier and Object First Layer Flow Rate Perimeter Multiplier.

  4. For the eMaker Huxley, Jean Marc added a plugin called "Oozestep" : http://www.emakershop.com/wiki/oozestep

    I'm sharing that in case that's interesting for an eventual addition :)

  5. Hi Enrique

    I'm not sure if its a bug or intentional but I noticed that skeinforge ignores the number of loops to do on bridging layers and only does the perimeter. Is there any reason for this? The only reason I ask is that externally this shows up as a tiny bit of Z wobble. I've hacked it on my machine and it seems to fix it....