fill ($Date: 2008/28/04 $)
index
/home/enrique/Desktop/backup/babbleold/script/reprap/pyRepRap_v0.1/fill.py

Fill is a script to fill the slices of a gcode file.
 
To run fill, install python 2.x on your machine, which is avaliable from http://www.python.org/download/
 
To use the preferences dialog you'll also need Tkinter, which probably came with the python installation.  If it did not, look for it at:
www.tcl.tk/software/tcltk/
 
To export a GNU Triangulated Surface file from Art of Illusion, you can use the Export GNU Triangulated Surface script at:
http://members.axion.net/~enrique/Export%20GNU%20Triangulated%20Surface.bsh
 
To bring it into Art of Illusion, drop it into the folder ArtOfIllusion/Scripts/Tools/.
 
The GNU Triangulated Surface format is supported by Mesh Viewer, and it is described at:
http://gts.sourceforge.net/reference/gts-surfaces.html#GTS-SURFACE-WRITE
 
To turn an STL file into filled gcode, first import the file using the STL import plugin in the import submenu of the file menu of Art of Illusion.
Then from the Scripts submenu in the Tools menu, choose Skeinforge and select the imported STL shape.  In the Fill radio button group,
choose Slice and click the 'Export Selected' checkbox.  Set the parameters and click OK.  Then type 'python fill.py' in a shell in the folder
which fill is in and when the dialog pops up, then click 'Fill', choose the file which you exported in
Export GNU Triangulated Surface and the filled file will be saved with the suffix '_fill'.
 
To write documentation for this program, open a shell in the fill.py directory, then type 'pydoc -w fill', then open 'fill.html' in a browser
or click on the '?' button in the dialog.  To use other functions of fill, type 'python' in a shell to run the python interpreter, then type 'import fill'
to import this program.
 
The computation intensive python modules will use psyco if it is available and run about twice as fast.  Psyco is described at:
http://psyco.sourceforge.net/index.html
 
The psyco download page is:
http://psyco.sourceforge.net/download.html
 
The following examples fillet the files Hollow Square.gcode & Hollow Square.gts.  The examples are run in a terminal in the folder which contains
Hollow Square.gcode, Hollow Square.gts and fill.py.  The preferences can be set in the dialog or by changing the preferences file 'fill.csv' with a text editor
or a spreadsheet program set to separate tabs.
 
 
> pydoc -w fill
wrote fill.html
 
 
> python fill.py
This brings up the dialog, after clicking 'Fill', the following is printed:
File Hollow Square.gts is being chain filled.
The filled file is saved as Hollow Square_fill.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 fill
>>> fill.main()
File Hollow Square.gts is being filled.
The filled file is saved as Hollow Square_fill.gcode
It took 3 seconds to fill the file.
 
 
>>> fill.fillChainFile()
File Hollow Square.gts is being filled.
The filled file is saved as Hollow Square_fill.gcode
It took 3 seconds to fill the file.
 
 
>>> fill.fillFile()
File Hollow Square.gcode is being filled.
The filled file is saved as Hollow Square_fill.gcode
It took 3 seconds to fill the file.
 
 
>>> fill.getFillChainGcode("
( GCode generated by May 8, 2008 slice.py )
( Extruder Initialization )
..
many lines of gcode
..
")
 
 
>>> fill.getFillGcode("
( GCode generated by May 8, 2008 slice.py )
( Extruder Initialization )
..
many lines of gcode
..
")

 
Modules
       
cStringIO
euclidean
gcodec
intercircle
math
preferences
slice
sys
time
vectorwrite

 
Classes
       
FillPreferences
FillSkein
RotatedLayer
StretchedXSegment

 
class FillPreferences
    A class to handle the fill preferences.
 
  Methods defined here:
__init__(self)
Set the default preferences, execute title & preferences filename.
execute(self)
Fill button has been clicked.

 
class FillSkein
    A class to fill a skein of extrusions.
 
  Methods defined here:
__init__(self)
addFill(self, layerIndex)
Add fill to the slice layer.
addGcodeFromThread(self, thread)
Add a gcode thread to the output.
addGcodeMovement(self, point)
Add a movement to the output.
addLine(self, line)
Add a line of text and a newline to the output.
addRotatedSlice(self, layerIndex, reverseRotationAroundZAngle, surroundingSlices)
Add a rotated slice to the surrounding slices.
addShutdownToOutput(self)
Add shutdown gcode to the output.
addToThread(self, location)
Add a location to thread.
getLayerRoundZ(self, layerIndex)
Get the plane angle around z that the layer is rotated by.
getRotatedLayer(self)
Get the rotated layer, making a new one if necessary.
linearMove(self, splitLine)
Add a linear move to the thread.
parseGcode(self, fillPreferences, gcodeText)
Parse gcode text and store the bevel gcode.
parseInitialization(self)
Parse gcode initialization and store the parameters.
parseLine(self, lineIndex)
Parse a gcode line and add it to the fill skein.

 
class RotatedLayer
    A rotated layer.
 
  Methods defined here:
__init__(self)
__repr__(self)
Get the string representation of this RotatedLayer.

 
class StretchedXSegment
    A stretched x segment.
 
  Methods defined here:
__repr__(self)
Get the string representation of this StretchedXSegment.
getFromXYStretch(self, firstX, y, secondX, stretch)
Initialize from x, y, and stretch.

 
Functions
       
addAroundClosest(arounds, layerExtrusionWidth, paths, removedEndpoint)
Add the closest removed endpoint to the path, with minimal twisting.
addPath(extrusionWidth, fill, path, rotationPlaneAngle)
Add simplified path to fill.
addSparseEndpoints(doubleExtrusionWidth, endpoints, fillLine, horizontalSegments, infillDensity, removedEndpoints, surroundingXIntersections)
Add sparse endpoints.
addSparseEndpointsFromSegment(doubleExtrusionWidth, endpoints, fillLine, horizontalSegments, infillDensity, removedEndpoints, segment, surroundingXIntersections)
Add sparse endpoints from a segment.
createExtraFillLoops(surroundingLoop)
Create extra fill loops.
createFillForSurroundings(surroundingLoops)
Create extra fill loops for surrounding loops.
fillChainFile(filename='')
Fill the slices of a gcode file.  Chain slice the file if it is a GNU TriangulatedSurface file.  If no filename is specified, fill the first unmodified gcode file in this folder.
fillFile(filename='')
Fill the slices of a gcode file.  If no filename is specified, fill the first unmodified gcode file in this folder.
getExtraFillLoops(insideLoops, outsideLoop, radius)
Get extra loops between inside and outside loops.
getFillChainGcode(gcodeText, fillPreferences=None)
Fill the slices of a gcode text.  Chain fill the gcode if it is not already sliced.
getFillGcode(gcodeText, fillPreferences=None)
Fill the slices of a gcode text.
getHorizontalSegments(fillLoops, alreadyFilledArounds, y)
Get horizontal segments inside loops.
getSurroundingXIntersections(alreadyFilledSize, doubleSolidSurfaceThickness, surroundingSlices, y)
Get x intersections from surrounding layers.
getWithLeastLength(path, point)
Insert a point into a path, at the index at which the path would be shortest.
isIntersectingLoopsPaths(loops, paths, pointBegin, pointEnd)
Determine if the segment between the first and second point is intersecting the loop list.
isPathAlwaysInsideLoop(loop, path)
Determine if all points of a path are inside another loop.
isPathAlwaysOutsideLoops(loops, path)
Determine if all points in a path are outside another loop in a list.
isPerimeterPathInSurroundLoops(surroundingLoops)
Determine if there is a perimeter path in the surrounding loops.
isSegmentAround(aroundSegments, segment)
Determine if there is another segment around.
isSegmentInX(segment, xFirst, xSecond)
Determine if the segment overlaps within x.
main(hashtable=None)
Display the fill dialog.

 
Data
        __author__ = 'Enrique Perez (perez_enrique@yahoo.com)'
__date__ = '$Date: 2008/28/04 $'
__license__ = 'GPL 3.0'

 
Author
        Enrique Perez (perez_enrique@yahoo.com)