skeinforge_application.skeinforge_plugins.craft_plugins.raft ($Date: 2008/21/04 $) | index /home/enrique/Desktop/backup/babbleold/script/reprap/fabmetheus/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py

Previous / Next / Contents

`
Raft is a script to create a raft, elevate the nozzle and set the temperature.
The raft manual page is at:
http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Raft
Allan Ecker aka The Masked Retriever's has written two quicktips for raft which follow below.
"Skeinforge Quicktip: The Raft, Part 1" at:
http://blog.thingiverse.com/2009/07/14/skeinforge-quicktip-the-raft-part-1/
"Skeinforge Quicktip: The Raft, Part II" at:
http://blog.thingiverse.com/2009/08/04/skeinforge-quicktip-the-raft-part-ii/
Pictures of rafting in action are available from the Metalab blog at:
http://reprap.soup.io/?search=rafting
Raft is based on the Nophead's reusable raft, which has a base layer running one way, and a couple of perpendicular layers above. Each set of layers can be set to a different temperature. There is the option of having the extruder orbit the raft for a while, so the heater barrel has time to reach a different temperature, without ooze accumulating around the nozzle.
If you want to only set the temperature or only create support material or only elevate the nozzle without creating a raft, set the Base Layers and Interface Layers to zero.
The important values for the raft settings are the temperatures of the raft, the first layer and the next layers. These will be different for each material. The default settings for ABS, HDPE, PCL & PLA are extrapolated from Nophead's experiments.
Operation
Settings
Add Raft, Elevate Nozzle, Orbit
Base
Base Feed Rate Multiplier
Base Flow Rate Multiplier
Base Infill Density
Base Layer Height over Layer Thickness
Base Layers
Base Nozzle Lift over Base Layer Thickness
Initial Circling
Infill Overhang over Extrusion Width
Interface
Interface Feed Rate Multiplier
Interface Flow Rate Multiplier
Interface Infill Density
Interface Layer Thickness over Extrusion Height
Interface Layers
Interface Nozzle Lift over Interface Layer Thickness
Object First Layer Feed Rate Infill Multiplier
Object First Layer Feed Rate Perimeter Multiplier
Object First Layer Flow Rate Multiplier
Operating Nozzle Lift over Layer Thickness
Raft Size
Raft Margin
Raft Additional Margin over Length
Support
Support Cross Hatch
Support Flow Rate over Operating Flow Rate
Support Gap over Perimeter Extrusion Width
Support Material Choice
Empty Layers Only
Everywhere
Exterior Only
None
Support Minimum Angle
Alterations
support_start.gcode
support_end.gcode
Examples
`

## Operation

The default 'Activate Raft' checkbox is on. When it is on, the functions described below will work, when it is off, the functions will not be called. The raft script sets the temperature.

## Settings

### Add Raft, Elevate Nozzle, Orbit

Default is on.
When selected, the script will also create a raft, elevate the nozzle, orbit and set the altitude of the bottom of the raft.

### Base

#### Base Feed Rate Multiplier

Default is one.
Defines the base feed rate multiplier. The greater the 'Base Feed Rate Multiplier', the thinner the base, the lower the 'Base Feed Rate Multiplier', the thicker the base.

#### Base Flow Rate Multiplier

Default is one.
Defines the base flow rate multiplier. The greater the 'Base Flow Rate Multiplier', the thicker the base, the lower the 'Base Flow Rate Multiplier', the thinner the base.

#### Base Infill Density

Default is 0.5.
Defines the infill density ratio of the base of the raft.

#### Base Layer Height over Layer Thickness

Default is two.
Defines the ratio of the height & width of the base layer compared to the height and width of the object infill. The feed rate will be slower for raft layers which have thicker extrusions than the object infill.

#### Base Layers

Default is one.
Defines the number of base layers.

#### Base Nozzle Lift over Base Layer Thickness

Default is 0.4.
Defines the amount the nozzle is above the center of the base extrusion divided by the base layer thickness.

### Initial Circling

Default is off.
When selected, the extruder will initially circle around until it reaches operating temperature.

### Infill Overhang over Extrusion Width

Default is 0.05.
Defines the ratio of the infill overhang over the the extrusion width of the raft.

### Interface

#### Interface Feed Rate Multiplier

Default is one.
Defines the interface feed rate multiplier. The greater the 'Interface Feed Rate Multiplier', the thinner the interface, the lower the 'Interface Feed Rate Multiplier', the thicker the interface.

#### Interface Flow Rate Multiplier

Default is one.
Defines the interface flow rate multiplier. The greater the 'Interface Flow Rate Multiplier', the thicker the interface, the lower the 'Interface Flow Rate Multiplier', the thinner the interface.

#### Interface Infill Density

Default is 0.5.
Defines the infill density ratio of the interface of the raft.

#### Interface Layer Thickness over Extrusion Height

Default is one.
Defines the ratio of the height & width of the interface layer compared to the height and width of the object infill. The feed rate will be slower for raft layers which have thicker extrusions than the object infill.

#### Interface Layers

Default is two.
Defines the number of interface layers.

#### Interface Nozzle Lift over Interface Layer Thickness

Default is 0.45.
Defines the amount the nozzle is above the center of the interface extrusion divided by the interface layer thickness.

### Object First Layer Feed Rate Infill Multiplier

Default is one.
Defines the object first layer infill feed rate multiplier. The greater the 'Object First Layer Feed Rate Infill Multiplier, the thinner the infill, the lower the 'Object First Layer Feed Rate Infill Multiplier', the thicker the infill.

### Object First Layer Feed Rate Perimeter Multiplier

Default is one.
Defines the object first layer perimeter feed rate multiplier. The greater the 'Object First Layer Feed Rate Perimeter Multiplier, the thinner the perimeter, the lower the 'Object First Layer Feed Rate Perimeter Multiplier', the thicker the perimeter.

#### Object First Layer Flow Rate Multiplier

Default is one.
Defines the object first layer flow rate multiplier. The greater the 'Object First Layer Flow Rate Multiplier', the thicker the first layer, the lower the 'Object First Layer Flow Rate Multiplier, the thinner the first layer.

### Operating Nozzle Lift over Layer Thickness

Default is 0.5.
Defines the amount the nozzle is above the center of the operating extrusion divided by the layer thickness.

### Raft Size

The raft fills a rectangle whose base size is the rectangle around the bottom layer of the object expanded on each side by the 'Raft Margin' plus the 'Raft Additional Margin over Length (%)' percentage times the length of the side.

#### Raft Margin

Default is three millimeters.

#### Raft Additional Margin over Length

Default is 1 percent.

### Support

Good articles on support material are at:
http://davedurant.wordpress.com/2010/07/31/skeinforge-support-part-1/
http://davedurant.wordpress.com/2010/07/31/skeinforge-support-part-2/

#### Support Cross Hatch

Default is off.
When selected, the support material will cross hatched. Cross hatching the support makes it stronger and harder to remove, which is why the default is off.

#### Support Flow Rate over Operating Flow Rate

Default is 0.9.
Defines the ratio of the flow rate when the support is extruded over the operating flow rate. With a number less than one, the support flow rate will be smaller so the support will be thinner and easier to remove.

#### Support Gap over Perimeter Extrusion Width

Default is 0.5.
Defines the gap between the support material and the object over the perimeter extrusion width.

#### Support Material Choice

Default is 'None' because the raft takes time to generate.

##### Empty Layers Only

When selected, support material will be only on the empty layers. This is useful when making identical objects in a stack.

##### Everywhere

When selected, support material will be added wherever there are overhangs, even inside the object. Because support material inside objects is hard or impossible to remove, this option should only be chosen if the object has a cavity that needs support and there is some way to extract the support material.

##### Exterior Only

When selected, support material will be added only the exterior of the object. This is the best option for most objects which require support material.

##### None

When selected, raft will not add support material.

#### Support Minimum Angle

Default is sixty degrees.
Defines the minimum angle that a surface overhangs before support material is added. This angle is defined from the vertical, so zero is a vertical wall, ten is a wall with a bit of overhang, thirty is the typical safe angle for filament extrusion, sixty is a really high angle for extrusion and ninety is an unsupported horizontal ceiling.

## Alterations

If support material is generated, raft looks for alteration files in the alterations folder in the .skeinforge folder in the home directory. Raft does not care if the text file names are capitalized, but some file systems do not handle file name cases properly, so to be on the safe side you should give them lower case names. If it doesn't find the file it then looks in the alterations folder in the skeinforge_plugins folder. If it doesn't find anything there it looks in the craft_plugins folder.

### support_start.gcode

If support material is generated, raft will add support_start.gcode, if it exists, to the start of the support gcode.

### support_end.gcode

If support material is generated, raft will add support_end.gcode, if it exists, to the end of the support gcode.

## Examples

The following examples raft the file Screw Holder Bottom.stl. The examples are run in a terminal in the folder which contains Screw Holder Bottom.stl and raft.py.
> python raft.py
This brings up the raft dialog.
> python raft.py Screw Holder Bottom.stl
The raft tool is parsing the file:
Screw Holder Bottom.stl
..
The raft tool has created the file:
Screw Holder Bottom_raft.gcode
> python
Python 2.5.1 (r251:54863, Sep 22 2007, 01:43:31)
[GCC 4.2.1 (SUSE Linux)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import raft
>>> raft.main()
This brings up the raft dialog.
>>> raft.writeOutput('Screw Holder Bottom.stl')
Screw Holder Bottom.stl
The raft tool is parsing the file:
Screw Holder Bottom.stl
..
The raft tool has created the file:
Screw Holder Bottom_raft.gcode

Previous / Next / Contents

Modules
`` |  |
__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

Classes
`` |  | RaftRepository RaftSkein SupportLayer
class RaftRepository
`` | `A class to handle the raft settings.`
| Methods defined here: __init__(self) `Set the default settings, execute title & settings fileName.` execute(self) `Raft button has been clicked.`
class RaftSkein
`` | `A class to raft a skein of extrusions.`
| Methods defined here: __init__(self) addBaseLayer(self) `Add a base layer.` addBaseSegments(self, baseExtrusionWidth, baseStep) `Add the base segments.` addEmptyLayerSupport(self, boundaryLayerIndex) `Add support material to a layer if it is empty.` addFlowRateLineIfDifferent(self, flowRateOutputString) `Add a line of flow rate if different.` addFlowRateValueIfDifferent(self, flowRate) `Add a flow rate value if different.` addInterfaceLayer(self) `Add an interface layer.` addInterfaceTables(self, baseStep, interfaceExtrusionWidth) `Add a interface tables.` addLayerFromSegments(self, feedRateMultiplier, flowRateMultiplier, layerLayerThickness, layerThicknessRatio, segments, z) `Add a layer from segments and raise the extrusion top.` addLayerLine(self, z) `Add the layer gcode line and close the last layer gcode block.` addOperatingOrbits(self, boundaryLoops, pointComplex, temperatureChangeTime, z) `Add the orbits before the operating layers.` addRaft(self) `Add the raft.` addSegmentTablesToSupportLayers(self) `Add segment tables to the support layers.` addSupportLayerTemperature(self, endpoints, z) `Add support layer and temperature before the object layer.` addSupportSegmentTable(self, layerIndex) `Add support segments from the boundary layers.` addTemperatureLineIfDifferent(self, temperature) `Add a line of temperature if different.` addTemperatureOrbits(self, endpoints, temperature, z) `Add the temperature and orbits around the support layer.` addToFillXIntersectionIndexTables(self, supportLayer) `Add fill segments from the boundary layers.` extendXIntersections(self, loops, radius, xIntersectionsTable) `Extend the support segments.` getCraftedGcode(self, gcodeText, repository) `Parse gcode text and store the raft gcode.` getElevatedBoundaryLine(self, splitLine) `Get elevated boundary gcode line.` getInsetLoops(self, boundaryLayerIndex) `Inset the support loops if they are not already inset.` getInsetLoopsAbove(self, boundaryLayerIndex) `Get the inset loops above the boundary layer index.` getInsetLoopsBelow(self, boundaryLayerIndex) `Get the inset loops below the boundary layer index.` getRaftedLine(self, splitLine) `Get elevated gcode line with operating feed rate.` getStepsUntilEnd(self, begin, end, stepSize) `Get steps from the beginning until the end.` getSupportEndpoints(self) `Get the support layer segments.` getTemperatureChangeTime(self, temperature) `Get the temperature change time.` parseInitialization(self) `Parse gcode initialization and store the parameters.` parseLine(self, line) `Parse a gcode line and add it to the raft skein.` setBoundaryLayers(self) `Set the boundary layers.` setCornersZ(self) `Set maximum and minimum corners and z.` subtractJoinedFill(self, supportLayerIndex) `Join the fill then subtract it from the support layer table.` truncateSupportSegmentTables(self) `Truncate the support segments after the last support segment which contains elements.`
class SupportLayer
`` | `Support loops with segment tables.`
| Methods defined here: __init__(self, supportLoops) __repr__(self) `Get the string representation of this loop layer.`

Functions
`` |  | getCraftedText(fileName, text='', repository=None) `Raft the file or text.` getCraftedTextFromText(gcodeText, repository=None) `Raft a gcode linear move text.` getCrossHatchPointLine(crossHatchPointLineTable, y) `Get the cross hatch point line.` getEndpointsFromYIntersections(x, yIntersections) `Get endpoints from the y intersections.` getExtendedLineSegment(extensionDistance, lineSegment, loopXIntersections) `Get extended line segment.` getNewRepository() `Get the repository constructor.` main() `Display the raft dialog.` setExtendedPoint(lineSegmentEnd, pointOriginal, x) `Set the point in the extended line segment.` writeOutput(fileName='') `Raft a gcode linear move file.`

Data
`` |  | __author__ = 'Enrique Perez (perez_enrique@yahoo.com)' __date__ = '$Date: 2008/21/04 $' __license__ = 'GPL 3.0' absolute_import = _Feature((2, 5, 0, 'alpha', 1), (2, 7, 0, 'alpha', 0), 16384)

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