# Python: module skeinforge_application.skeinforge_plugins.craft_plugins.skin

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

Previous / Next / Contents

`
Skin is a plugin to smooth the surface skin of an object by replacing the edge surface with a surface printed at a fraction of the carve
height. This gives the impression that the object was carved at a much thinner height giving a high-quality finish, but still prints
in a relatively short time. The latest process has some similarities with a description at:
http://adventuresin3-dprinting.blogspot.com/2011/05/skinning.html
The skin manual page is at:
http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Skin
Operation
Settings
Division
Horizontal Infill Divisions
Horizontal Perimeter Divisions
Vertical Divisions
Hop When Extruding Infill
Layers From
Tips
Examples
`

## Operation

The default 'Activate Skin' checkbox is off. When it is on, the functions described below will work, when it is off, nothing will be done.

## Settings

### Division

#### Horizontal Infill Divisions

Default: 2
Defines the number of times the skinned infill is divided horizontally.

#### Horizontal Perimeter Divisions

Default: 1
Defines the number of times the skinned edges are divided horizontally.

#### Vertical Divisions

Default: 2
Defines the number of times the skinned infill and edges are divided vertically.

### Hop When Extruding Infill

Default is off.
When selected, the extruder will hop before and after extruding the lower infill in order to avoid the regular thickness threads.

### Layers From

Default: 1
Defines which layer of the print the skinning process starts from. It is not wise to set this to zero, skinning the bottom layer is likely to cause the bottom edge not to adhere well to the print surface.

## Tips

Due to the very small Z-axis moves skinning can generate as it prints the edge, it can cause the Z-axis speed to be limited by the Limit plug-in, if you have it enabled. This can cause some printers to pause excessively during each layer change. To overcome this, ensure that the Z-axis max speed in the Limit tool is set to an appropriate value for your printer, e.g. 10mm/s
Since Skin prints a number of fractional-height edge layers for each layer, printing the edge last causes the print head to travel down from the current print height. Depending on the shape of your extruder nozzle, you may get higher quality prints if you print the edges first, so the print head always travels up. This is set via the Thread Sequence Choice setting in the Fill tool.

## Examples

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

Previous / Next / Contents

Modules

``

__init__
fabmetheus_utilities.archive
fabmetheus_utilities.euclidean

fabmetheus_utilities.fabmetheus_tools.fabmetheus_interpret
fabmetheus_utilities.gcodec
fabmetheus_utilities.intercircle

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

``

SkinRepository
SkinSkein

class SkinRepository
`` | `A class to handle the skin settings.`

Methods defined here:

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

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

class SkinSkein
`` | `A class to skin a skein of extrusions.`

Methods defined here:

__init__(self)
  `Initialize.`

addFlowRateLine(self, flowRate)
  `Add a flow rate line.`

addPerimeterLoop(self, thread, z)
  `Add the edge loop to the gcode.`

addSkinnedInfill(self)
  `Add skinned infill.`

addSkinnedInfillBoundary(self, infillBoundaries, offsetY, upperZ, z)
  `Add skinned infill boundary.`

addSkinnedPerimeter(self)
  `Add skinned edge.`

getClippedSimplifiedLoopPathByLoop(self, loop)
  `Get clipped and simplified loop path from a loop.`

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

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

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

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

Functions

``

getCraftedText(fileName, gcodeText, repository=None)
  `Skin a gcode linear move text.`

getCraftedTextFromText(gcodeText, repository=None)
  `Skin a gcode linear move text.`

getIsMinimumSides(loops, sides=3)
  `Determine if all the loops have at least the given number of sides.`

getNewRepository()
  `Get new repository.`

main()
  `Display the skin dialog.`

writeOutput(fileName, shouldAnalyze=True)
  `Skin a gcode linear move file. Chain skin the gcode if it is not already skinned.`

Data
`` |  | __author__ = 'Enrique Perez (perez_enrique aht yahoo.com) & James Blackwell (jim_blag ahht hotmail.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 aht yahoo.com) & James Blackwell (jim_blag ahht hotmail.com)