> > |
The RepRap Java code implements the correction needed using two extruder parameters: Extruder0_ArcShortSides(0..) and Extruder0_ArcCompensationFactor(0..) (and similarly for other extruder numbers than 0). The correction described above is multiplied by Extruder0_ArcCompensationFactor(0..). Thus setting this to 0 (the default) means that no compensation is done. Setting it to 1 gives exactly the algebra above. But most extrudates are highly non-Newtonian; this seems to mean that one needs to set the factor much bigger than 1. To get the right effect for ABS I use 8, for example.
STL files know nothing about circles, of course; everything is faceted. The way the code works is to go round each polygon that results from a slice through the STL triangles examining each point and its immediate neighbours. If the two line segments to the neighbours are both shorter than Extruder0_AngleSpeedLength(mm) then a circle is fitted through the three points and the correction applied to the central one. This prevents the code from doing anything with points that, for example, form a right-angled corner in an object with two long sides. I set Extruder0_ArcShortSides(0..) to 2. That seems to pick up genuine arcs, curves and circles (which are made from lots of short segments, of course) while leaving gross features alone.
|