# Python: module skeinforge_application.skeinforge_plugins.craft_plugins.tower

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

Previous / Next / Contents

`
Tower 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 tower manual page is at:
http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Tower
Operation
Settings
Maximum Tower Height
Extruder Possible Collision Cone Angle
Tower Start Layer
Examples
`

## Operation

The default 'Activate Tower' checkbox is off. The default is off because tower could result in the extruder colliding 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, nothing will be done.

## Settings

### Maximum Tower Height

Default: 5
Defines the maximum number of layers that the extruder will extrude in one region before going to another. This is the most important value for tower.

### Extruder Possible Collision Cone Angle

Default: 60 degrees
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' setting 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.

### Tower Start Layer

Default: 1
Defines the layer index 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 is sometimes different than that of the other layers.

## Examples

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

Previous / Next / Contents

Modules

``

__init__
fabmetheus_utilities.archive
fabmetheus_utilities.euclidean

fabmetheus_utilities.fabmetheus_tools.fabmetheus_interpret
fabmetheus_utilities.gcodec
fabmetheus_utilities.intercircle

math
fabmetheus_utilities.settings
skeinforge_application.skeinforge_utilities.skeinforge_craft

skeinforge_application.skeinforge_utilities.skeinforge_polyfile
skeinforge_application.skeinforge_utilities.skeinforge_profile
sys

Classes

``

Island
ThreadLayer
TowerRepository
TowerSkein

class Island
`` | `A class to hold the boundary and lines.`

Methods defined here:

__init__(self)

addToBoundary(self, splitLine)
  `Add to the boundary if it is not complete.`

createBoundingLoop(self)
  `Create the bounding loop if it is not already created.`

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 settings.`

Methods defined here:

__init__(self)
  `Set the default settings, execute title & settings 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, threadLayer)
  `Add entire thread layer.`

addHighThread(self, location)
  `Add thread with a high move if necessary to clear the previous extrusion.`

addThreadLayerIfNone(self)
  `Add a thread layer if it is none.`

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.`

getTransferClosestNestedRingLines(self, oldOrderedLocation, remainingNestedRings)
  `Get and transfer the closest remaining nested ring.`

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.`

parseIfWordUntilWord(self, word)
  `Parse gcode if there is a word until the word is reached.`

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

parseLine(self, lineIndex)
  `Parse a gcode line.`

Functions

``

getCraftedText(fileName, text, towerRepository=None)
  `Tower a gcode linear move file or text.`

getCraftedTextFromText(gcodeText, towerRepository=None)
  `Tower a gcode linear move text.`

getNewRepository()
  `Get new repository.`

main()
  `Display the tower dialog.`

writeOutput(fileName, shouldAnalyze=True)
  `Tower a gcode linear move file.`

Data
`` |  | __author__ = 'Enrique Perez (perez_enrique@yahoo.com)' __date__ = '$Date: 2008/21/04 $' __license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html' absolute_import = _Feature((2, 5, 0, 'alpha', 1), (2, 7, 0, 'alpha', 0), 16384)

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