# Python: module skeinforge_application.skeinforge_plugins.craft_plugins.dimension

skeinforge_application.skeinforge_plugins.craft_plugins.dimension ($Date: 2008/02/05 $) | index /home/enrique/Desktop/backup/babbleold/script/reprap/fabmetheus/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py

Previous / Next / Contents

`
Dimension adds Adrian's extruder distance E value so firmware does not have to calculate it on it's own and can set the extruder speed in relation to the distance that needs to be extruded. Some printers don't support this. Extruder distance is described at:
http://blog.reprap.org/2009/05/4d-printing.html
and in Erik de Bruijn's conversion script page at:
http://objects.reprap.org/wiki/3D-to-5D-Gcode.php
The dimension manual page is at:
http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Dimension
Nophead wrote an excellent article on how to set the filament parameters:
http://hydraraptor.blogspot.com/2011/03/spot-on-flow-rate.html
Operation
Settings
Extrusion Distance Format Choice
Absolute Extrusion Distance
Relative Extrusion Distance
Extruder Retraction Speed
Filament
Filament Diameter
Filament Packing Density
Maximum E Value before Reset
Minimum Travel for Retraction
Retract Within Island
Retraction Distance
Restart Extra Distance
Examples
`

## Operation

The default 'Activate Dimension' checkbox is off. When it is on, the functions described below will work, when it is off, the functions will not be called.

## Settings

### Extrusion Distance Format Choice

Default is 'Absolute Extrusion Distance' because in Adrian's description the distance is absolute. In future, because the relative distances are smaller than the cumulative absolute distances, hopefully the firmware will be able to use relative distance.

#### Absolute Extrusion Distance

When selected, the extrusion distance output will be the total extrusion distance to that gcode line.

#### Relative Extrusion Distance

When selected, the extrusion distance output will be the extrusion distance from the last gcode line.

### Extruder Retraction Speed

Default is 13.3 mm/s.
Defines the extruder retraction feed rate. A high value will allow the retraction operation to complete before much material oozes out. If your extruder can handle it, this value should be much larger than your feed rate.
As an example, I have a feed rate of 48 mm/s and a 'Extruder Retraction Speed' of 150 mm/s.

### Filament

#### Filament Diameter

Default is 2.8 millimeters.
Defines the filament diameter.

#### Filament Packing Density

Default is 0.85. This is for ABS.
Defines the effective filament packing density.
The default value is so low for ABS because ABS is relatively soft and with a pinch wheel extruder the teeth of the pinch dig in farther, so it sees a smaller effective diameter. With a hard plastic like PLA the teeth of the pinch wheel don't dig in as far, so it sees a larger effective diameter, so feeds faster, so for PLA the value should be around 0.97. This is with Wade's hobbed bolt. The effect is less significant with larger pinch wheels.
Overall, you'll have to find the optimal filament packing density by experiment.

### Maximum E Value before Reset

Default: 91234.0
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.

### Minimum Travel for Retraction

Default: 1.0 millimeter
Defines the minimum distance that the extruder head has to travel from the end of one thread to the beginning of another, in order to trigger the extruder retraction. Setting this to a high value means the extruder will retract only occasionally, setting it to a low value means the extruder will retract most of the time.

### Retract Within Island

Default is off.
When selected, retraction will work even when the next thread is within the same island. If it is not selected, retraction will only work when crossing a boundary.

### Retraction Distance

Default is zero.
Defines the amount the extruder retracts (sucks back) the extruded filament whenever an extruder stop is commanded. Using this seems to help prevent stringing. e.g. If set to 10 the extruder reverses the distance required to pull back 10mm of filament. In fact this does not actually happen but if you set this distance by trial and error you can get to a point where there is very little ooze from the extruder when it stops which is not normally the case.

### Restart Extra Distance

Default is zero.
Defines the restart extra distance when the thread restarts. The restart distance will be the retraction distance plus the restart extra distance.
If this is greater than zero when the extruder starts this distance is added to the retract value giving extra filament. It can be a negative value in which case it is subtracted from the retraction distance. On some Repstrap machines a negative value can stop the build up of plastic that can occur at the start of edges.

## Examples

The following examples dimension the file Screw Holder Bottom.stl. The examples are run in a terminal in the folder which contains Screw Holder Bottom.stl and dimension.py.
> python dimension.py
This brings up the dimension dialog.
> python dimension.py Screw Holder Bottom.stl
The dimension tool is parsing the file:
Screw Holder Bottom.stl
..
The dimension tool has created the file:
.. Screw Holder Bottom_dimension.gcode

Previous / Next / Contents

Modules

``

skeinforge_application.skeinforge_plugins.craft_plugins.__init__
fabmetheus_utilities.archive
fabmetheus_utilities.euclidean
fabmetheus_utilities.fabmetheus_tools.fabmetheus_interpret

fabmetheus_utilities.gcodec
fabmetheus_utilities.intercircle
math
os

fabmetheus_utilities.settings
skeinforge_application.skeinforge_utilities.skeinforge_craft
skeinforge_application.skeinforge_utilities.skeinforge_polyfile
skeinforge_application.skeinforge_utilities.skeinforge_profile

sys
fabmetheus_utilities.geometry.solids.triangle_mesh

Classes

``

DimensionRepository
DimensionSkein

class DimensionRepository
`` | `A class to handle the dimension settings.`

Methods defined here:

__init__(self)
  `Set the default settings, execute title & settings fileName.`

execute(self)
  `Dimension button has been clicked.`

class DimensionSkein
`` | `A class to dimension a skein of extrusions.`

Methods defined here:

__init__(self)
  `Initialize.`

addLinearMoveExtrusionDistanceLine(self, extrusionDistance)
  `Get the extrusion distance string from the extrusion distance.`

getCraftedGcode(self, gcodeText, repository)
  `Parse gcode text and store the dimension gcode.`

getDimensionedArcMovement(self, line, splitLine)
  `Get a dimensioned arc movement.`

getDimensionedLinearMovement(self, line, splitLine)
  `Get a dimensioned linear movement.`

getDistanceToNextThread(self, lineIndex)
  `Get the travel distance to the next thread.`

getExtrusionDistanceString(self, distance, splitLine)
  `Get the extrusion distance string.`

getExtrusionDistanceStringFromExtrusionDistance(self, extrusionDistance)
  `Get the extrusion distance string from the extrusion distance.`

getRetractionRatio(self, lineIndex)
  `Get the retraction ratio.`

getSmallestEnclosureIndex(self, point)
  `Get the index of the smallest boundary loop which encloses the point.`

parseBoundaries(self)
  `Parse the boundaries and add them to the boundary layers.`

parseInitialization(self)
  `Parse gcode initialization and store the parameters.`

parseLine(self, lineIndex)
  `Parse a gcode line and add it to the dimension skein.`

Functions

``

getCraftedText(fileName, gcodeText='', repository=None)
  `Dimension a gcode file or text.`

getCraftedTextFromText(gcodeText, repository=None)
  `Dimension a gcode text.`

getNewRepository()
  `Get new repository.`

main()
  `Display the dimension dialog.`

writeOutput(fileName, shouldAnalyze=True)
  `Dimension a gcode file.`

Data
`` |  | __author__ = 'Enrique Perez (perez_enrique@yahoo.com)' __date__ = '$Date: 2008/02/05 $' __license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html'

Author
`` |  | Enrique Perez (perez_enrique@yahoo.com)