skeinforge_tools.craft_plugins.tower ($Date: 2008/21/04 $)
index
/home/enrique/Desktop/backup/babbleold/script/reprap/pyRepRap/skeinforge_tools/craft_plugins/tower.py

Tower is a script to extrude a few layers up, then go across to other regions.

The default 'Activate Tower' checkbox is off. The default is off because tower could result in the extruder collidiing with an already extruded part of the shape and because extruding in one region for more than one layer could result in the shape melting. When it is on, the functions described below will work, when it is off, the functions will not be called.

This script commands the fabricator to extrude a disconnected region for a few layers, then go to another disconnected region and extrude there. Its purpose is to reduce the number of stringers between a shape and reduce extruder travel. The important value for the tower preferences is "Maximum Tower Height (layers)" which is the maximum number of layers that the extruder will extrude in one region before going to another.

Tower works by looking for islands in each layer and if it finds another island in the layer above, it goes to the next layer above instead of going across to other regions on the original layer. It checks for collision with shapes already extruded within a cone from the nozzle tip. The "Extruder Possible Collision Cone Angle (degrees)" preference is the angle of that cone. Realistic values for the cone angle range between zero and ninety. The higher the angle, the less likely a collision with the rest of the shape is, generally the extruder will stay in the region for only a few layers before a collision is detected with the wide cone. The default angle is sixty degrees.

The "Tower Start Layer" is the layer which the script starts extruding towers, after the last raft layer which does not have support material. It is best to not tower at least the first layer because the temperature of the first layer should sometimes be different than that of the other layers. The default preference is one.

The following examples tower the file Screw Holder Bottom.stl. The examples are run in a terminal in the folder which contains Screw Holder Bottom.stl and tower.py.


> python tower.py
This brings up the tower dialog.


> python tower.py Screw Holder Bottom.stl
The tower tool is parsing the file:
Screw Holder Bottom.stl
..
The tower tool has created the file:
.. Screw Holder Bottom_tower.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 tower
>>> tower.main()
This brings up the tower dialog.


>>> tower.writeOutput()
The tower tool is parsing the file:
Screw Holder Bottom.stl
..
The tower tool has created the file:
.. Screw Holder Bottom_tower.gcode

 
Modules
       
__init__
skeinforge_tools.skeinforge_utilities.consecution
skeinforge_tools.skeinforge_utilities.euclidean
skeinforge_tools.skeinforge_utilities.gcodec
skeinforge_tools.skeinforge_utilities.intercircle
skeinforge_tools.skeinforge_utilities.interpret
math
skeinforge_tools.meta_plugins.polyfile
skeinforge_tools.skeinforge_utilities.preferences
sys

 
Classes
       
ThreadLayer
TowerRepository
TowerSkein

 
class ThreadLayer
    A layer of loops and paths.
 
  Methods defined here:
__init__(self)
Thread layer constructor.
__repr__(self)
Get the string representation of this thread layer.

 
class TowerRepository
    A class to handle the tower preferences.
 
  Methods defined here:
__init__(self)
Set the default preferences, execute title & preferences fileName.
execute(self)
Tower button has been clicked.

 
class TowerSkein
    A class to tower a skein of extrusions.
 
  Methods defined here:
__init__(self)
addEntireLayer(self, layerIndex)
Add entire thread layer.
addGcodeFromThreadZ(self, thread, z)
Add a gcode thread to the output.
addGcodeMovementZ(self, feedRateMinute, point, z)
Add a movement to the output.
addIfTravel(self, splitLine)
Add travel move around loops if this the extruder is off.
addIslandLayer(self, threadLayer)
Add a layer of surrounding islands.
addThreadLayerIfNone(self)
Add a thread layer if it is none.
addToExtrusion(self, location)
Add a location to the thread.
addTowers(self)
Add towers.
climbTower(self, removedIsland)
Climb up the island to any islands directly above.
getBottomLayerIndex(self)
Get the index of the first island layer which has islands.
getCraftedGcode(self, gcodeText, towerRepository)
Parse gcode text and store the tower gcode.
getRemovedIslandAddLayerLinesIfDifferent(self, islands, layerIndex)
Add gcode lines for the layer if it is different than the old bottom layer index.
isInsideRemovedOutsideCone(self, island, removedBoundingLoop, untilLayerIndex)
Determine if the island is entirely inside the removed bounding loop and outside the collision cone of the remaining islands.
linearMove(self, splitLine)
Add a linear move to the loop.
parseInitialization(self)
Parse gcode initialization and store the parameters.
parseLine(self, lineIndex)
Parse a gcode line.
parseUntilOperatingLayer(self)
Parse gcode until the operating layer if there is one.

 
Functions
       
getCraftedText(fileName, text, towerRepository=None)
Tower a gcode linear move file or text.
getCraftedTextFromText(gcodeText, towerRepository=None)
Tower a gcode linear move text.
getRepositoryConstructor()
Get the repository constructor.
main()
Display the tower dialog.
transferFillLoops(fillLoops, surroundingLoop)
Transfer fill loops.
transferFillLoopsToSurroundingLoops(fillLoops, surroundingLoops)
Transfer fill loops to surrounding loops.
writeOutput(fileName='')
Tower 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)