Explorar o código

Added manual.

Juan Pablo Caram %!s(int64=11) %!d(string=hai) anos
pai
achega
09ed43319a
Modificáronse 100 ficheiros con 6859 adicións e 17 borrados
  1. 0 9
      LICENSE
  2. 0 8
      README.md
  3. BIN=BIN
      manual/Double_iso.png
  4. 177 0
      manual/Makefile
  5. 4 0
      manual/_build/.buildinfo
  6. BIN=BIN
      manual/_build/.doctrees/basics.doctree
  7. BIN=BIN
      manual/_build/.doctrees/cmdreference.doctree
  8. BIN=BIN
      manual/_build/.doctrees/editor.doctree
  9. BIN=BIN
      manual/_build/.doctrees/environment.pickle
  10. BIN=BIN
      manual/_build/.doctrees/flatcamshell.doctree
  11. BIN=BIN
      manual/_build/.doctrees/index.doctree
  12. BIN=BIN
      manual/_build/.doctrees/installation.doctree
  13. BIN=BIN
      manual/_build/.doctrees/introduction.doctree
  14. BIN=BIN
      manual/_build/.doctrees/procedures.doctree
  15. BIN=BIN
      manual/_build/_images/Double_iso.png
  16. BIN=BIN
      manual/_build/_images/bedflatten.png
  17. BIN=BIN
      manual/_build/_images/bedflatten0.png
  18. BIN=BIN
      manual/_build/_images/bedflatten1.png
  19. BIN=BIN
      manual/_build/_images/bedflatten2.png
  20. BIN=BIN
      manual/_build/_images/bottom.png
  21. BIN=BIN
      manual/_build/_images/coppercleardemo1.png
  22. BIN=BIN
      manual/_build/_images/coppercleardemo2.png
  23. BIN=BIN
      manual/_build/_images/coppercleardemo3.png
  24. BIN=BIN
      manual/_build/_images/cutout.png
  25. BIN=BIN
      manual/_build/_images/cutout2.png
  26. BIN=BIN
      manual/_build/_images/cutout3.png
  27. BIN=BIN
      manual/_build/_images/dbl_sided1_arrows.png
  28. BIN=BIN
      manual/_build/_images/double1.png
  29. BIN=BIN
      manual/_build/_images/double2.png
  30. BIN=BIN
      manual/_build/_images/drill_cnc_job.png
  31. BIN=BIN
      manual/_build/_images/drill_tool_select.png
  32. BIN=BIN
      manual/_build/_images/editor1.png
  33. BIN=BIN
      manual/_build/_images/editor2.png
  34. BIN=BIN
      manual/_build/_images/editor_union.png
  35. BIN=BIN
      manual/_build/_images/iso_routing_cnc_ready.png
  36. BIN=BIN
      manual/_build/_images/iso_routing_ready.png
  37. BIN=BIN
      manual/_build/_images/objects_flow.png
  38. BIN=BIN
      manual/_build/_images/open_gerber_ready.png
  39. BIN=BIN
      manual/_build/_images/shell.png
  40. 46 0
      manual/_build/_sources/basics.txt
  41. 241 0
      manual/_build/_sources/cmdreference.txt
  42. 130 0
      manual/_build/_sources/editor.txt
  43. 54 0
      manual/_build/_sources/flatcamshell.txt
  44. 29 0
      manual/_build/_sources/index.txt
  45. 54 0
      manual/_build/_sources/installation.txt
  46. 4 0
      manual/_build/_sources/introduction.txt
  47. 201 0
      manual/_build/_sources/procedures.txt
  48. BIN=BIN
      manual/_build/_static/ajax-loader.gif
  49. 536 0
      manual/_build/_static/basic.css
  50. BIN=BIN
      manual/_build/_static/comment-bright.png
  51. BIN=BIN
      manual/_build/_static/comment-close.png
  52. BIN=BIN
      manual/_build/_static/comment.png
  53. 0 0
      manual/_build/_static/css/badge_only.css
  54. 0 0
      manual/_build/_static/css/theme.css
  55. 235 0
      manual/_build/_static/doctools.js
  56. BIN=BIN
      manual/_build/_static/down-pressed.png
  57. BIN=BIN
      manual/_build/_static/down.png
  58. BIN=BIN
      manual/_build/_static/file.png
  59. BIN=BIN
      manual/_build/_static/font/fontawesome_webfont.eot
  60. 195 0
      manual/_build/_static/font/fontawesome_webfont.svg
  61. BIN=BIN
      manual/_build/_static/font/fontawesome_webfont.ttf
  62. BIN=BIN
      manual/_build/_static/font/fontawesome_webfont.woff
  63. 1 0
      manual/_build/_static/jquery.js
  64. 47 0
      manual/_build/_static/js/theme.js
  65. BIN=BIN
      manual/_build/_static/minus.png
  66. BIN=BIN
      manual/_build/_static/plus.png
  67. 62 0
      manual/_build/_static/pygments.css
  68. 622 0
      manual/_build/_static/searchtools.js
  69. 31 0
      manual/_build/_static/underscore.js
  70. BIN=BIN
      manual/_build/_static/up-pressed.png
  71. BIN=BIN
      manual/_build/_static/up.png
  72. 808 0
      manual/_build/_static/websupport.js
  73. 272 0
      manual/_build/basics.html
  74. 511 0
      manual/_build/cmdreference.html
  75. 346 0
      manual/_build/editor.html
  76. 279 0
      manual/_build/flatcamshell.html
  77. 231 0
      manual/_build/genindex.html
  78. 313 0
      manual/_build/index.html
  79. 277 0
      manual/_build/installation.html
  80. 241 0
      manual/_build/introduction.html
  81. 6 0
      manual/_build/objects.inv
  82. 398 0
      manual/_build/procedures.html
  83. 244 0
      manual/_build/search.html
  84. 0 0
      manual/_build/searchindex.js
  85. BIN=BIN
      manual/bedflatten.png
  86. BIN=BIN
      manual/bedflatten0.png
  87. BIN=BIN
      manual/bedflatten1.png
  88. BIN=BIN
      manual/bedflatten2.png
  89. BIN=BIN
      manual/bottom.png
  90. 264 0
      manual/conf.py
  91. BIN=BIN
      manual/coppercleardemo1.png
  92. BIN=BIN
      manual/coppercleardemo2.png
  93. BIN=BIN
      manual/coppercleardemo3.png
  94. BIN=BIN
      manual/cutout.png
  95. BIN=BIN
      manual/cutout2.png
  96. BIN=BIN
      manual/cutout3.png
  97. BIN=BIN
      manual/dbl_sided1_arrows.png
  98. BIN=BIN
      manual/double1.png
  99. BIN=BIN
      manual/double2.png
  100. BIN=BIN
      manual/drill_cnc_job.png

+ 0 - 9
LICENSE

@@ -1,9 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Juan Pablo Caram
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 0 - 8
README.md

@@ -1,8 +0,0 @@
-FlatCAM: 2D Post-processing for Manufacturing
-=============================================
-
-(c) 2014 Juan Pablo Caram
-
-FlatCAM is a program for preparing CNC jobs for making PCBs on a CNC router.
-Among other things, it can take a Gerber file generated by your favorite PCB
-CAD program, and create G-Code for Isolation routing.

BIN=BIN
manual/Double_iso.png


+ 177 - 0
manual/Makefile

@@ -0,0 +1,177 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# User-friendly check for sphinx-build
+ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
+$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
+endif
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html       to make standalone HTML files"
+	@echo "  dirhtml    to make HTML files named index.html in directories"
+	@echo "  singlehtml to make a single large HTML file"
+	@echo "  pickle     to make pickle files"
+	@echo "  json       to make JSON files"
+	@echo "  htmlhelp   to make HTML files and a HTML help project"
+	@echo "  qthelp     to make HTML files and a qthelp project"
+	@echo "  devhelp    to make HTML files and a Devhelp project"
+	@echo "  epub       to make an epub"
+	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+	@echo "  latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
+	@echo "  text       to make text files"
+	@echo "  man        to make manual pages"
+	@echo "  texinfo    to make Texinfo files"
+	@echo "  info       to make Texinfo files and run them through makeinfo"
+	@echo "  gettext    to make PO message catalogs"
+	@echo "  changes    to make an overview of all changed/added/deprecated items"
+	@echo "  xml        to make Docutils-native XML files"
+	@echo "  pseudoxml  to make pseudoxml-XML files for display purposes"
+	@echo "  linkcheck  to check all external links for integrity"
+	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+	rm -rf $(BUILDDIR)/*
+
+html:
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+	@echo
+	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/FlatCAM.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/FlatCAM.qhc"
+
+devhelp:
+	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+	@echo
+	@echo "Build finished."
+	@echo "To view the help file:"
+	@echo "# mkdir -p $$HOME/.local/share/devhelp/FlatCAM"
+	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/FlatCAM"
+	@echo "# devhelp"
+
+epub:
+	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+	@echo
+	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make' in that directory to run these through (pdf)latex" \
+	      "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through pdflatex..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+latexpdfja:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through platex and dvipdfmx..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+	@echo
+	@echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+	@echo
+	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+texinfo:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo
+	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+	@echo "Run \`make' in that directory to run these through makeinfo" \
+	      "(use \`make info' here to do that automatically)."
+
+info:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo "Running Texinfo files through makeinfo..."
+	make -C $(BUILDDIR)/texinfo info
+	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+gettext:
+	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+	@echo
+	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."
+
+xml:
+	$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
+	@echo
+	@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
+
+pseudoxml:
+	$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
+	@echo
+	@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."

+ 4 - 0
manual/_build/.buildinfo

@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
+config: ea8071bf76e9789e2689101c8aa7407d
+tags: 645f666f9bcd5a90fca523b33c5a78b7

BIN=BIN
manual/_build/.doctrees/basics.doctree


BIN=BIN
manual/_build/.doctrees/cmdreference.doctree


BIN=BIN
manual/_build/.doctrees/editor.doctree


BIN=BIN
manual/_build/.doctrees/environment.pickle


BIN=BIN
manual/_build/.doctrees/flatcamshell.doctree


BIN=BIN
manual/_build/.doctrees/index.doctree


BIN=BIN
manual/_build/.doctrees/installation.doctree


BIN=BIN
manual/_build/.doctrees/introduction.doctree


BIN=BIN
manual/_build/.doctrees/procedures.doctree


BIN=BIN
manual/_build/_images/Double_iso.png


BIN=BIN
manual/_build/_images/bedflatten.png


BIN=BIN
manual/_build/_images/bedflatten0.png


BIN=BIN
manual/_build/_images/bedflatten1.png


BIN=BIN
manual/_build/_images/bedflatten2.png


BIN=BIN
manual/_build/_images/bottom.png


BIN=BIN
manual/_build/_images/coppercleardemo1.png


BIN=BIN
manual/_build/_images/coppercleardemo2.png


BIN=BIN
manual/_build/_images/coppercleardemo3.png


BIN=BIN
manual/_build/_images/cutout.png


BIN=BIN
manual/_build/_images/cutout2.png


BIN=BIN
manual/_build/_images/cutout3.png


BIN=BIN
manual/_build/_images/dbl_sided1_arrows.png


BIN=BIN
manual/_build/_images/double1.png


BIN=BIN
manual/_build/_images/double2.png


BIN=BIN
manual/_build/_images/drill_cnc_job.png


BIN=BIN
manual/_build/_images/drill_tool_select.png


BIN=BIN
manual/_build/_images/editor1.png


BIN=BIN
manual/_build/_images/editor2.png


BIN=BIN
manual/_build/_images/editor_union.png


BIN=BIN
manual/_build/_images/iso_routing_cnc_ready.png


BIN=BIN
manual/_build/_images/iso_routing_ready.png


BIN=BIN
manual/_build/_images/objects_flow.png


BIN=BIN
manual/_build/_images/open_gerber_ready.png


BIN=BIN
manual/_build/_images/shell.png


+ 46 - 0
manual/_build/_sources/basics.txt

@@ -0,0 +1,46 @@
+Basics
+======
+
+Source Files
+------------
+
+Supported source files are:
+
+* **Gerber**: Typically define copper layers in a circuit board.
+* **Excellon**: (drill file): Contain drill specifications, size and coordinates.
+* **G-Code**: CNC machine instructions for cutting and/or drilling.
+
+These source files can be loaded by selecting File→Open Gerber…, File→Open Excellon… or File→Open G-Code… respectively. The objects created from source files are automatically added to the current project when loaded.
+
+
+Objects and Tasks
+-----------------
+
+Data in FlatCAM is in the form of 4 different kinds of objects: Gerber, Excellon, Geometry and CNC Job. Gerber, Excellon and CNC Jos objects are directly created by reading files in Gerber, Excellon and G-Code formats. Geometry objects are an intermediate step available to manipulate data. The diagram bellow illustrates the relationship between files and objects. The arrows connecting objects represent a sub-set of the tasks that can be performed in FlatCAM.
+
+.. image:: objects_flow.png
+    :align: center
+
+
+Creating, Saving and Loading Projects
+-------------------------------------
+
+A project is everything that you have loaded, created and set inside the program. A new project is created every time you load the program or run File→New.
+
+By running File→Save Project, File→Save Project As… or File→Save a Project Copy… you are saving everything currently in the environment including project options. File→Open Project… lets you load a saved project.
+
+
+Navigating Plots
+----------------
+
+Plots for open objects (Gerber, drills, g-code, etc…) are automatically shown on screen. A plot for a given can be updated by clicking “Update Plot” in the “Selected” tab, in case any parameters that would have changed the plot have been modified.
+
+Zooming plots in and out is accomplished by clicking on the plot and using the mouse **scroll wheel** or hitting one of the following keys:
+
+* ``1``: Fits all graphics to the available plotting area.
+* ``2``: Zooms out
+* ``3``: Zooms in
+
+When zooming in or out, the point under the cursor stays at the same location.
+
+To scroll left-right or up-down, hold the ``shift`` or ``control`` key respectively while turning the mouse **scroll wheel**.

+ 241 - 0
manual/_build/_sources/cmdreference.txt

@@ -0,0 +1,241 @@
+.. _cmdreference:
+
+Shell Command Reference
+=======================
+
+.. warning::
+    The FlatCAM Shell is under development and its behavior might change in the future. This includes available commands and their syntax.
+
+.. _add_circle:
+
+add_circle
+~~~~~~~~~~
+Creates a circle in the given Geometry object.
+
+    > add_circle <name> <center_x> <center_y> <radius>
+       name: Name of the geometry object to which to append the circle.
+
+       center_x, center_y: Coordinates of the center of the circle.
+
+       radius: Radius of the circle.
+
+.. _add_poly:
+
+add_poly
+~~~~~~~~
+Creates a polygon in the given Geometry object.
+
+    > create_poly <name> <x0> <y0> <x1> <y1> <x2> <y2> [x3 y3 [...]]
+       name: Name of the geometry object to which to append the polygon.
+
+       xi, yi: Coordinates of points in the polygon.
+
+.. _add_rect:
+
+add_rect
+~~~~~~~~
+Creates a rectange in the given Geometry object.
+
+    > add_rect <name> <botleft_x> <botleft_y> <topright_x> <topright_y>
+       name: Name of the geometry object to which to append the rectangle.
+
+       botleft_x, botleft_y: Coordinates of the bottom left corner.
+
+       topright_x, topright_y Coordinates of the top right corner.
+
+cncjob
+~~~~~~
+Generates a CNC Job from a Geometry Object.
+
+    > cncjob <name> [-z_cut <c>] [-z_move <m>] [-feedrate <f>] [-tooldia <t>] [-outname <n>]
+       name: Name of the source object
+
+       z_cut: Z-axis cutting position
+
+       z_move: Z-axis moving position
+
+       feedrate: Moving speed when cutting
+
+       tooldia: Tool diameter to show on screen
+
+       outname: Name of the output object
+
+delete
+~~~~~~
+Deletes the give object.
+
+    > delete <name>
+       name: Name of the object to delete.
+
+follow
+~~~~~~
+Creates a geometry object following gerber paths.
+
+    > follow <name> [-outname <oname>]
+       name: Name of the gerber object.
+
+       outname: Name of the output geometry object.
+
+.. _geo_union:
+
+geo_union
+~~~~~~~~~
+Runs a union operation (addition) on the components of the geometry object. For example, if it contains 2 intersecting polygons, this opperation adds them intoa single larger polygon.
+
+    > geo_union <name>
+       name: Name of the geometry object.
+
+get_names
+~~~~~~~~~
+Lists the names of objects in the project.
+
+
+    > get_names
+       No parameters.
+
+help
+~~~~
+Shows list of commands.
+
+isolate
+~~~~~~~
+Creates isolation routing geometry for the given Gerber.
+
+    > isolate <name> [-dia <d>] [-passes <p>] [-overlap <o>]
+       name: Name of the object
+
+       dia: Tool diameter
+
+       passes: # of tool width
+
+       overlap: Fraction of tool diameter to overlap passes
+
+make_docs
+~~~~~~~~~
+Prints command rererence in reStructuredText format.
+
+new
+~~~
+Starts a new project. Clears objects from memory.
+
+
+    > new
+       No parameters.
+
+.. _new_geometry:
+
+new_geometry
+~~~~~~~~~~~~
+Creates a new empty geometry object.
+
+    > new_geometry <name>
+       name: New object name
+
+.. _offset:
+
+offset
+~~~~~~
+Changes the position of the object.
+
+    > offset <name> <x> <y>
+       name: Name of the object
+
+       x: X-axis distance
+
+       y: Y-axis distance
+
+open_excellon
+~~~~~~~~~~~~~
+Opens an Excellon file.
+
+    > open_excellon <filename> [-outname <o>]
+       filename: Path to file to open.
+
+       outname: Name of the created excellon object.
+
+open_gcode
+~~~~~~~~~~
+Opens an G-Code file.
+
+    > open_gcode <filename> [-outname <o>]
+       filename: Path to file to open.
+
+       outname: Name of the created CNC Job object.
+
+open_gerber
+~~~~~~~~~~~
+Opens a Gerber file.
+
+    > open_gerber <filename> [-follow <0|1>] [-outname <o>]
+       filename: Path to file to open.
+
+       follow: If 1, does not create polygons, just follows the gerber path.
+
+       outname: Name of the created gerber object.
+
+open_project
+~~~~~~~~~~~~
+Opens a FlatCAM project.
+
+    > open_project <filename>
+       filename: Path to file to open.
+
+options
+~~~~~~~
+Shows the settings for an object.
+
+
+    > options <name>
+       name: Object name.
+
+paint_poly
+~~~~~~~~~~
+Creates a geometry object with toolpath to cover the inside of a polygon.
+
+    > paint_poly <name> <inside_pt_x> <inside_pt_y> <tooldia> <overlap>
+       name: Name of the sourge geometry object.
+
+       inside_pt_x, inside_pt_y: Coordinates of a point inside the polygon.
+
+       tooldia: Diameter of the tool to be used.
+
+       overlap: Fraction of the tool diameter to overlap cuts.
+
+plot
+~~~~
+Updates the plot on the user interface
+
+save_project
+~~~~~~~~~~~~
+Saves the FlatCAM project to file.
+
+    > save_project <filename>
+       filename: Path to file to save.
+
+.. _scale:
+
+scale
+~~~~~
+Resizes the object by a factor.
+
+    > scale <name> <factor>
+       name: Name of the object
+
+       factor: Fraction by which to scale
+
+set_active
+~~~~~~~~~~
+Sets a FlatCAM object as active.
+
+
+    > set_active <name>
+       name: Name of the object.
+
+write_gcode
+~~~~~~~~~~~
+Saves G-code of a CNC Job object to file.
+
+    > write_gcode <name> <filename>
+       name: Source CNC Job object
+
+       filename: Output filename

+ 130 - 0
manual/_build/_sources/editor.txt

@@ -0,0 +1,130 @@
+Geometry Editor
+===============
+
+Introduction
+------------
+
+The Geometry Editor is a drawing CAD that allows you to edit
+FlatCAM Geometry Objects or create new ones from scratch. This
+provides the ultimate flexibility by letting you specify precisely
+and arbitrarily what you want your CNC router to do.
+
+Creating New Geometry Objects
+-----------------------------
+
+To create a blank Geometry Object, simply click on the menu item
+**Edit→New Geometry Object** or click the **New Blank Geometry** button on
+the toolbar. A Geometry object with the name "New Geometry" will
+be added to your project list.
+
+.. image:: editor1.png
+   :align: center
+
+.. seealso::
+
+   FlatCAM Shell command :ref:`new_geometry`
+
+
+Editing Existing Geometry Objects
+---------------------------------
+
+To edit a Geometry Object, select it from the project list and
+click on the menu item **Edit→Edit Geometry** or on the **Edit Geometry**
+toolbar button.
+
+This will make a copy of the selected object in the editor and
+the editor toolbar buttons will become active.
+
+Changes made to the geometry in the editor will not affect the
+Geometry Object until the **Edit->Update Geometry** button or
+**Update Geometry** toolbar button is clicked.
+This replaces the geometry in the currently selected Geometry
+Object (which can be different from which the editor copied its
+contents originally) with the geometry in the editor.
+
+Selecting Shapes
+~~~~~~~~~~~~~~~~
+
+When the **Selection Tool** is active in the toolbar (Hit ``Esc``), clicking on the
+plot will select the nearest shape. If one shape is inside the other,
+you might need to move the outer one to get to the inner one. This
+behavior might be improved in the future.
+
+Holding the ``Control`` key while clicking will add the nearest shape
+to the set of selected objects.
+
+Creating Shapes
+~~~~~~~~~~~~~~~
+
+The shape creation tools in the editor are:
+
+* Circle
+* Rectangle
+* Polygon
+* Path
+
+.. image:: editor2.png
+   :align: center
+
+After clicking on the respective toolbar button, follow the instructions
+on the status bar.
+
+Shapes that do not require a fixed number of clicks to complete, like
+polygons and paths, are complete by hitting the ``Space`` key.
+
+.. seealso::
+
+   The FlatCAM Shell commands :ref:`add_circle`, :ref:`add_poly` and :ref:`add_rect`,
+   create shapes directly on a given Geometry Object.
+
+Union
+~~~~~
+
+Clicking on the **Union** tool after selecting two or more shapes
+will create a union. For closed shapes, their union is a polygon covering
+the area that all the selected shapes encompassed. Unions of disjoint shapes
+can still be created and is equivalent to grouping shapes.
+
+.. image:: editor_union.png
+   :align: center
+
+.. seealso::
+
+   The FlatCAM Shell command :ref:`geo_union` executes a union of
+   all geometry in a Geometry object.
+
+Moving and Copying
+~~~~~~~~~~~~~~~~~~
+
+The **Move** and **Copy** tools work on selected objects. As soon as the tool
+is selected (On the toolbar or the ``m`` and ``c`` keys) the reference point
+is set at the mouse pointer location. Clicking on the plot sets the target
+location and finalizes the operation. An outline of the shapes is shown
+while moving the mouse.
+
+.. seealso::
+
+   The FlatCAM Shell command :ref:`offset` will move (offset) all
+   the geometry in a Geometry Object. This can also be done in
+   the **Selected** panel for selected FlatCAM object.
+
+Cancelling an operation
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Hitting the ``Esc`` key cancels whatever tool/operation is active and
+selects the **Selection Tool**.
+
+Deleting selected shapes
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+Selections are deleted by hitting the ``-`` sign key.
+
+Other
+~~~~~
+
+.. seealso::
+
+   The FlatCAM Shell command :ref:`scale` changes the size of the
+   geometry in a Geometry Object.
+
+

+ 54 - 0
manual/_build/_sources/flatcamshell.txt

@@ -0,0 +1,54 @@
+Shell Command Line Interface
+============================
+
+.. warning::
+    The FlatCAM Shell is under development and its behavior might change in the future. This includes available commands and their syntax.
+
+The FlatCAM Shell provides a command line interface to FlatCAM's functionalies and to the TCL language. It serves the following purposes:
+
+* An alternative the GUI for issuing commands and visualizing data output.
+* Scripting interface for automating large sequences of commands.
+* A mechanism for the user to implement new functionality.
+* A mechanism to provide detailed information to the user.
+* Keep a record of commands and responses.
+
+The Shell Window
+----------------
+
+.. image:: shell.png
+    :align: center
+
+The FlatCAM Shell window is shown at startup when FlatCAM loads. It can be closed and re-opened at any time without loss of data by clicking on the close button on the top right edge of the window and selecting **Tool→Command Line** from the main menu respectively.
+
+It is divided into 2 sections, an output section on the top and an input section on the bottom. A record of previously issued commands is shown in the output section along with their results and other information that FlatCAM might provide. Distinction between types of data in the output section is done by color coding.
+
+To issue a command, type it in the input section and hit ``Enter``. If the command consists of multiple lines, use ``Shift-Enter`` to insert a new line without issuing the command.
+
+Shell Language
+--------------
+
+The Shell uses the TCL_ language. TCL provides the simples posible syntax and requires no learning at all for isuing the basic FlatCAM commands. Nonetheless, TCL is a powerfull language that enables the users to create their own complex functionality if desired.
+
+.. _TCL: https://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html
+
+Issuing a command is as simple as typing its name and hitting the ``Enter`` key. For example::
+
+    new
+
+This the same as clicking on **File→New** in the main window menu.
+
+If a command requires additional information, it is given immediately after the command name and a space. For example, to open the gerber file ``mygerber.gbr``::
+
+    open_gerber mygerber.gbr
+
+Sometimes a command will have optional parameters, this is, if you provide it it will use it, otherwise it will use some default value. For example::
+
+    isolate mygerber.gbr -tooldia 0.04
+
+This would create isolation routing geometry for the ``mygerber.gbr`` gerber object with a tool diameter of 0.04 inches (or mm, depending on the project settings). Otherwise, if you run::
+
+    isolate mygerber.gbr
+
+The same action will be performed but the tool diameter will be taken from the default value set for that object (If it is a new object, its default values will be set from the project options.)
+
+For complete reference of FlatCAM Shell commands, see :ref:`cmdreference`.

+ 29 - 0
manual/_build/_sources/index.txt

@@ -0,0 +1,29 @@
+.. FlatCAM documentation master file, created by
+   sphinx-quickstart on Sun Sep 14 13:47:55 2014.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to FlatCAM's documentation!
+===================================
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+
+   introduction
+   installation
+   basics
+   procedures
+   editor
+   flatcamshell
+   cmdreference
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+

+ 54 - 0
manual/_build/_sources/installation.txt

@@ -0,0 +1,54 @@
+Installation
+============
+
+Windows Installer
+-----------------
+
+Download the installer from the repository_ and run it in your machine. It includes everything you need.
+
+.. _repository: https://bitbucket.org/jpcgt/flatcam/downloads
+
+Ubuntu
+------
+
+FlatCAM should work on most Linux distributions but Ubuntu has been chosen as the test platform.
+
+There are several dependencies required to run FlatCAM. These are listed in the following section. Before attempting a manual installation, try running the provided setup script ``setup_ubuntu.sh`` that will download and install required packages.
+
+Manual Installation
+-------------------
+
+Requirements
+~~~~~~~~~~~~
+
+* Python 2.7 32-bit
+* PyQt 4
+* Matplotlib 1.3.1
+* Numpy 1.8
+* `Shapely 1.3`_
+
+.. _Shapely 1.3: https://pypi.python.org/pypi/Shapely
+
+These packages might have their own dependencies.
+
+Linux
+~~~~~
+
+Under Linux, most modern package installers like **yum** or **apt-get** will attempt to locate and install the whole tree of dependencies for a specified package automatically. Refer to the provided setup script ``setup_ubuntu.sh`` for the names and installation order.
+
+Once the dependencies are installed, download the latest .zip release (or the latest source, although it is not garanteed to work), unpack it, change into the created folder and run::
+
+    Python FlatCAM.py
+
+
+Windows
+~~~~~~~
+
+An easy way to get the requirements in your system is to install WinPython_. This is a standalone distribution of Python which includes all of FlatCAM's dependencies, except for Shapely.
+
+.. _WinPython: http://winpython.sourceforge.net/
+
+Once the dependencies are installed, download the latest .zip release (or the latest source, although it is not garanteed to work), unpack it, change into the created folder and run::
+
+    Python FlatCAM.py
+

+ 4 - 0
manual/_build/_sources/introduction.txt

@@ -0,0 +1,4 @@
+Introduction
+============
+
+FlatCAM is a program for preparing CNC jobs for making PCBs on a CNC router. Among other things, it can take a Gerber file generated by your favorite PCB CAD program, and create G-Code for Isolation routing.

+ 201 - 0
manual/_build/_sources/procedures.txt

@@ -0,0 +1,201 @@
+Common Procedures
+=================
+
+Isolation Routing
+-----------------
+
+Isolation routing is the operation of cutting copper around traces for electrical isolation.
+
+1) Open a Gerber file: File→Open Gerber…
+
+The file is automatically analyzed, processed and plotted.
+
+2) Enter the diameter of the tool you will use for isolation routing and hit “Generate Geometry”. The units are determined by the project setting and are shown on the bottom right of the screen. If you want to work using different units, go to Options, Project Options (Combo box), Units. This will change the units for the whole project.
+
+.. image:: open_gerber_ready.png
+    :align: center
+
+This creates a new geometry object listed under “Project” with the same name as the  Gerber object with an “_iso” postfix, and its options are shown in “Selected”. Zoom into the plot (click over the plot and use the ‘2’ and ‘3’ keys to zoom in and out) to inspect the results.
+
+.. image:: iso_routing_ready.png
+    :align: center
+
+3) Create a CNC job from the new geometry by indicating the desired parameters as shown in the figure above and explained below:
+
+* **Cut Z**: The depth of the tool while cutting. -2 mils or -0.05 mm are a typical value for isolation routing.
+* **Travel Z**: The height above the board at which the cutting tool will travel  when not cutting copper.
+* **Feedrate**: The speed of the cutting tool while cutting in inches/minute of mm/minute depending on the project settings.
+* **Tool diam.**: The cutting tool diameter. Use the same value as when creating the isolation routing geometry in step 2.
+
+A CNC Job object has been added to your project and its options are shown in the “Selected” tab. Tool paths are shown on the plot. Blue are copper cuts, while yellow are travelling (no cutting) motions.
+
+.. image:: iso_routing_cnc_ready.png
+    :align: center
+
+Click on the “Export” button under “Export G-Code”. This will open a dialog box for you to save to a file. This is the file that you will supply to your CNC router.
+
+Wide Isolation Routing
+----------------------
+
+1) Go to the “Project” tab and double-click on the isolation geometry object that you created for the 1st pass. In the “Selected” tab, change its name and hit Enter.
+
+2) Go back to “Project” and double-click on the Gerber object. This takes you back to step 1 of tutorial 4.1. We will generate geometry for a second pass in the same way but with a larger offset. If “Tool diam” reads 0.016, enter 0.016*2.5 instead (0.016*3 would put the path 3 times as far which provides no overlap with the previous pass. By setting it to 0.016*2.5 you ensure that there is no copper left on the board and a cleaner finish). Click on “Generate Geometry” just like in tutorial 4.1 and you should get something like the figure below.
+
+.. image:: Double_iso.png
+    :align: center
+
+3) Generate a CNC job like you did in part 3 of tutorial 4.1. You will end up with 2 G-Code file, one for each pass.
+
+CNC Jobs for Drill Files
+------------------------
+
+1) Open a drill (Excellon) file: File→Open Excellon. The drill file will be drawn onto the plot and its options form should show up.
+
+2) A drill file will usually contain different tools (drill diameters). You can choose to create a CNC job for each individual tool or bundle some of the tools together in the same job (in case you did not intend to use drill bits of different diameters). Click on “Choose” under “Create CNC Job” to open a selection window with the list of tools. Each has the format “id”: “diameter”, where the diameter is in the project’s units. Check the boxes by the tools you want to  include in the job. The comma-separated list of tools should appear in the “Tools” entry box (Note: If you know the ids of the tools you can type the list yourself).
+
+.. image:: drill_tool_select.png
+    :align: center
+
+3) Adjust “Drill Z” (Drilling depth), “Travel Z” (Height for X-Y movement) and “Feed rate” (Z-axis speed in project units per minute) to your desired values, and click on “Generate”.
+
+.. image:: drill_cnc_job.png
+    :align: center
+
+A CNC job will be created and the tool-path will be shown on the screen. Click on “Export G-Code” as explained in tutorial 4.1 to save the generated CNC job to G-Code.
+
+2-side PCB
+----------
+
+The main idea behind this process is to ensure that when you turn your board around to mill the bottom side of your PCB it will be perfectly aligned with the top side.
+
+The mechanical alignment is accomplished by using alignment holes/pins. These are holes on your board and on the milling machine bed (typically a board of wood, known as “sacrificial” layer). Pins are used to align the holes on the board to the holes on the sacrificial layer. The holes are always pairs of holes that are symmetrical about a mirror axis. This ensures that when you turn your board around, the board can be aligned using the same alignment holes as before.
+
+.. image:: double1.png
+    :align: center
+
+The bottom layer must be flipped (mirrored) around the same axis that was used for the alignment holes.
+
+The placement of the mirror axis can be very arbitrary. You just need to make sure that after flipping the board around, it will still fit on the milling machine bed. Same for the alignment holes. It doesn’t matter much where you put them. Perhaps if you have a large bare copper board and you plan on reusing the alignment holes for different projects that will be made out of this same bare board, you might want to define the location of the axis and holes, and record them for later use.
+
+FlatCAM takes care of the rest. To ensure the symmetry of the alignment holes, FlatCAM asks you to specify the holes on only one side of the mirror axis and it will create the mirror copies for you. It will also mirror the bottom (Gerber) layer around the same axis.
+
+.. image:: double2.png
+    :align: center
+
+The process of making the double-sided board consists of creating the CNC Job objects for the top layer, the mirrored bottom layer and the alignment holes using FlatCAM. Then you can run the alignment holes job (you must drill through the board and into the sacrificial layer) and the top layer job. You must then turn the board around, align it using the alignment holes (fit some kind of pin in the holes) and run the bottom layer job.
+
+Here is how to use FlatCAM to generate the required files:
+
+1) Open the Gerber files for the top and bottom layers of your PCB.
+
+2) Start the Double-sided PCB tool by selecting Tools→Double-sided PCB tool.
+
+.. image:: dbl_sided1_arrows.png
+    :align: center
+
+The tool has the following options:
+
+* **Bottom Layer**: Indicates which layer is the bottom layer, which needs to be flipped.
+
+* **Mirror axis**: Around which axis, X or Y, we want to mirror the layer.
+
+* **Axis location**: How we want to specify the location of the axis.
+
+* **Point/Box**: Specifies the location of the axis. It depends on the Axis location setting:
+
+    * Point: A single point specifies where the axis is, and you input the coordinates of the point in the format (x, y). For example, if Mirror Axis is set to X and Point is set to (1.0, -1.0) the axis will be horizontal at y=-1.0 (The x coordinate is ignored).
+
+    * Box: If you have already defined the boundary of your PCB you may want the axis to be exactly in the middle of that rectangle. The boundary must be some geometry object defined in the project and can be selected in the combo box appearing in the Point/Box field.
+
+* Alignment holes: These can aid in placing the board at the exact position after turning it over for the bottom side job. These holes must be symmetrical to the mirror axis. You only need to specify the location of the holes on one side of the mirror axis and the program will create the mirror copy. Input the coordinates of the holes in the following format: (x1, y1), (x2, y2), etc.
+
+* Drill diameter: The diameter of the drill for the alignment holes.
+
+.. note::
+    You don’t have to manually type coordinates of points. Clicking on the plot automatically copies the coordinates to the clipboard in (x, y) format and these can be pasted into the input boxes.
+
+3) Create the mirror image of the bottom layer by clicking on “Create Mirror”. This will create a new Gerber object for the project. You can work with this object, create isolation routing and a CNC job as it has been show in the previous tutorials. You may want to hide or remove the layer for the top side to ease the visualization.
+
+4) Create the alignment hole drill object by going back to the Double-sided PCB tool and clicking “Create alignment drill”. This will create a drill job as specified and a CNC job can be created for it as has been shown for the previous examples.
+
+.. image:: bottom.png
+    :align: center
+
+Copper Area Clear
+-----------------
+
+Removing large areas of copper is necessary when trying to avoid shorts due to dust, rust, etc, or in RF circuits, where the remaining unused copper is just unwanted parasitics. This tutorial shows how to eliminate all copper that is not specified in the Gerber source, but the user can still selectively choose what to clear.
+
+.. image:: coppercleardemo1.png
+    :align: center
+
+1) Open a Gerber file as explained in previous tutorials.
+
+2) In the “Select” tab for the Gerber object, under “Non-copper regions”, provide “Boundary Margin” and click “Generate Geometry”. This creates a bounding box around the Gerber object, with the given margin. Then subtracts the Gerber object from the bounding box, resulting in a Geometry object with polygons covering the areas without copper.
+
+.. image:: coppercleardemo2.png
+    :align: center
+
+3) Now we can choose which polygon we want to “paint”, this is, draw a toolpath inside it to cover all its surface. In the “Selected” tab for the newly created geometry, under “Paint Area”, provide the following:
+
+* **Tool diam.**: The diameter of the tool that will be used to cut the area.
+
+* **Overlap**: Fraction of the tool diameter by which to overlap each passing cut. The default value of 0.15 is the minimum to ensure no copper is left in 90 degree turns of the toolpath.
+
+* **Margin**: Distance for the tool to stay away from the polygon boundary. This can be used to ensure that a large tool does not touch copper edges that have or will be cut by a smaller more precise tool.
+
+4) Click on “Generate” and then click on the plot inside the polygon to be painted. This will create a new Geometry object with the desired toolpaths.
+
+.. image:: coppercleardemo3.png
+    :align: center
+
+Board Cutout
+------------
+
+To cut the PCB to the desired shape and remove it from a larger blank PCB, a toolpath that traces the board edge can be created. Gaps to hold the board until the job is complete can be placed along the edge.
+
+This tutorial describes how to create rectangular cutouts with 2 or 4 gaps.
+
+1) Open a Gerber file and find the **Board Cutout** section in the **Selected tab**.
+
+.. image:: cutout.png
+    :align: center
+
+2) Specify a **Margin**. This will create a rectangular cutout at the given distance from any element in the Gerber. Specify a **Gap Size**. 2 times the diameter of the tool you will use for cutting is a good size. Specify how many and where you want the **Gaps** along the edge, 2 (top and bottom), 2 (left and right) or 4, one on each side. Click on **Generate Geometry**. The figure below shows an example of the results.
+
+.. image:: cutout2.png
+    :align: center
+
+3) Create a CNC job for the newly created geometry as explained in earlier tutorials.
+
+.. image:: cutout3.png
+    :align: center
+
+Bed Flattening
+--------------
+
+Most often a sacrificial layer (e.g. wood) is used between the machine bed and the PCB so when drilling and cutting the machine is not hit by the tool. In order to have a completely flat surface for the PCB, the sacrificial layer is flattened by the machine. This tutorial shows how to create a toolpath for this purpose.
+
+1) Open a Gerber file and locate the **Bounding Box** section in the **Selected tab**.
+
+2) Specify a **Margin** (distance of the bounding box from any element in the Gerber) and whether you want **rounded corners**. Click **Generate Bounding Box**.
+
+.. image:: bedflatten0.png
+    :align: center
+
+Make sure your blank PCB will fit in the bounding box.
+
+.. image:: bedflatten.png
+    :align: center
+
+3) In the **Selected** tab for the newly created geometry locate the **Paint Area** section. Specify the **diameter** of the tool you will use, how much (fraction of the tool width) each pass will **overlap** each other, and a **Margin** (although typically not needed and set to 0.0 in this case.)
+
+.. image:: bedflatten1.png
+    :align: center
+
+4) Click on **Generate**, and you will be asked to **click** inside the polygon inside which to create the tool path. Click inside the boundary we just created.
+
+.. image:: bedflatten2.png
+    :align: center
+
+5) Create a CNC job for the newly created geometry as explained in earlier tutorials.

BIN=BIN
manual/_build/_static/ajax-loader.gif


+ 536 - 0
manual/_build/_static/basic.css

@@ -0,0 +1,536 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+    clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+    width: 100%;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+}
+
+div.sphinxsidebar ul {
+    list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+    width: 170px;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+    width: 30px;
+}
+
+img {
+    border: 0;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li div.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+    width: 90%;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+    width: 100%;
+}
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+div.modindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+a.headerlink {
+    visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink {
+    visibility: visible;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+.field-list ul {
+    padding-left: 1em;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+    clear: left;
+    float: left;
+    margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+    clear: right;
+    float: right;
+    margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.align-center {
+    text-align: center;
+}
+
+.align-right {
+    text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+    margin: 0 0 0.5em 1em;
+    border: 1px solid #ddb;
+    padding: 7px 7px 0 7px;
+    background-color: #ffe;
+    width: 40%;
+    float: right;
+}
+
+p.sidebar-title {
+    font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+    border: 1px solid #ccc;
+    padding: 7px 7px 0 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+div.admonition dl {
+    margin-bottom: 0;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+    border: 0;
+    border-collapse: collapse;
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 5px;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    border-bottom: 1px solid #aaa;
+}
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+table.footnote td, table.footnote th {
+    border: 0 !important;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+table.citation {
+    border-left: solid 1px gray;
+    margin-left: 1px;
+}
+
+table.citation td {
+    border-bottom: none;
+}
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+    list-style: decimal;
+}
+
+ol.loweralpha {
+    list-style: lower-alpha;
+}
+
+ol.upperalpha {
+    list-style: upper-alpha;
+}
+
+ol.lowerroman {
+    list-style: lower-roman;
+}
+
+ol.upperroman {
+    list-style: upper-roman;
+}
+
+dl {
+    margin-bottom: 15px;
+}
+
+dd p {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+dt:target, .highlighted {
+    background-color: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+.footnote:target  {
+    background-color: #ffa;
+}
+
+.line-block {
+    display: block;
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+.line-block .line-block {
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+    font-family: sans-serif;
+}
+
+.accelerator {
+    text-decoration: underline;
+}
+
+.classifier {
+    font-style: oblique;
+}
+
+abbr, acronym {
+    border-bottom: dotted 1px;
+    cursor: help;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+    overflow: auto;
+    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
+}
+
+td.linenos pre {
+    padding: 5px 0px;
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    margin-left: 0.5em;
+}
+
+table.highlighttable td {
+    padding: 0 0.5em 0 0.5em;
+}
+
+tt.descname {
+    background-color: transparent;
+    font-weight: bold;
+    font-size: 1.2em;
+}
+
+tt.descclassname {
+    background-color: transparent;
+}
+
+tt.xref, a tt {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+    background-color: transparent;
+}
+
+.viewcode-link {
+    float: right;
+}
+
+.viewcode-back {
+    float: right;
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    margin: -1px -10px;
+    padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+    vertical-align: middle;
+}
+
+div.body div.math p {
+    text-align: center;
+}
+
+span.eqno {
+    float: right;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0 !important;
+        width: 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    #top-link {
+        display: none;
+    }
+}

BIN=BIN
manual/_build/_static/comment-bright.png


BIN=BIN
manual/_build/_static/comment-close.png


BIN=BIN
manual/_build/_static/comment.png


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
manual/_build/_static/css/badge_only.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
manual/_build/_static/css/theme.css


+ 235 - 0
manual/_build/_static/doctools.js

@@ -0,0 +1,235 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+if (!window.console || !console.firebug) {
+  var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
+    "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
+    "profile", "profileEnd"];
+  window.console = {};
+  for (var i = 0; i < names.length; ++i)
+    window.console[names[i]] = function() {};
+}
+ */
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+  return decodeURIComponent(x).replace(/\+/g, ' ');
+};
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+  if (typeof s == 'undefined')
+    s = document.location.search;
+  var parts = s.substr(s.indexOf('?') + 1).split('&');
+  var result = {};
+  for (var i = 0; i < parts.length; i++) {
+    var tmp = parts[i].split('=', 2);
+    var key = jQuery.urldecode(tmp[0]);
+    var value = jQuery.urldecode(tmp[1]);
+    if (key in result)
+      result[key].push(value);
+    else
+      result[key] = [value];
+  }
+  return result;
+};
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+  function highlight(node) {
+    if (node.nodeType == 3) {
+      var val = node.nodeValue;
+      var pos = val.toLowerCase().indexOf(text);
+      if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
+        var span = document.createElement("span");
+        span.className = className;
+        span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+          document.createTextNode(val.substr(pos + text.length)),
+          node.nextSibling));
+        node.nodeValue = val.substr(0, pos);
+      }
+    }
+    else if (!jQuery(node).is("button, select, textarea")) {
+      jQuery.each(node.childNodes, function() {
+        highlight(this);
+      });
+    }
+  }
+  return this.each(function() {
+    highlight(this);
+  });
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+  init : function() {
+    this.fixFirefoxAnchorBug();
+    this.highlightSearchWords();
+    this.initIndexTable();
+  },
+
+  /**
+   * i18n support
+   */
+  TRANSLATIONS : {},
+  PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+  LOCALE : 'unknown',
+
+  // gettext and ngettext don't access this so that the functions
+  // can safely bound to a different name (_ = Documentation.gettext)
+  gettext : function(string) {
+    var translated = Documentation.TRANSLATIONS[string];
+    if (typeof translated == 'undefined')
+      return string;
+    return (typeof translated == 'string') ? translated : translated[0];
+  },
+
+  ngettext : function(singular, plural, n) {
+    var translated = Documentation.TRANSLATIONS[singular];
+    if (typeof translated == 'undefined')
+      return (n == 1) ? singular : plural;
+    return translated[Documentation.PLURALEXPR(n)];
+  },
+
+  addTranslations : function(catalog) {
+    for (var key in catalog.messages)
+      this.TRANSLATIONS[key] = catalog.messages[key];
+    this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+    this.LOCALE = catalog.locale;
+  },
+
+  /**
+   * add context elements like header anchor links
+   */
+  addContextElements : function() {
+    $('div[id] > :header:first').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this headline')).
+      appendTo(this);
+    });
+    $('dt[id]').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this definition')).
+      appendTo(this);
+    });
+  },
+
+  /**
+   * workaround a firefox stupidity
+   */
+  fixFirefoxAnchorBug : function() {
+    if (document.location.hash && $.browser.mozilla)
+      window.setTimeout(function() {
+        document.location.href += '';
+      }, 10);
+  },
+
+  /**
+   * highlight the search words provided in the url in the text
+   */
+  highlightSearchWords : function() {
+    var params = $.getQueryParameters();
+    var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+    if (terms.length) {
+      var body = $('div.body');
+      window.setTimeout(function() {
+        $.each(terms, function() {
+          body.highlightText(this.toLowerCase(), 'highlighted');
+        });
+      }, 10);
+      $('<p class="highlight-link"><a href="javascript:Documentation.' +
+        'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
+          .appendTo($('#searchbox'));
+    }
+  },
+
+  /**
+   * init the domain index toggle buttons
+   */
+  initIndexTable : function() {
+    var togglers = $('img.toggler').click(function() {
+      var src = $(this).attr('src');
+      var idnum = $(this).attr('id').substr(7);
+      $('tr.cg-' + idnum).toggle();
+      if (src.substr(-9) == 'minus.png')
+        $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+      else
+        $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+    }).css('display', '');
+    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
+        togglers.click();
+    }
+  },
+
+  /**
+   * helper function to hide the search marks again
+   */
+  hideSearchWords : function() {
+    $('#searchbox .highlight-link').fadeOut(300);
+    $('span.highlighted').removeClass('highlighted');
+  },
+
+  /**
+   * make the url absolute
+   */
+  makeURL : function(relativeURL) {
+    return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+  },
+
+  /**
+   * get the current relative url
+   */
+  getCurrentURL : function() {
+    var path = document.location.pathname;
+    var parts = path.split(/\//);
+    $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+      if (this == '..')
+        parts.pop();
+    });
+    var url = parts.join('/');
+    return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+  }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+  Documentation.init();
+});

BIN=BIN
manual/_build/_static/down-pressed.png


BIN=BIN
manual/_build/_static/down.png


BIN=BIN
manual/_build/_static/file.png


BIN=BIN
manual/_build/_static/font/fontawesome_webfont.eot


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 195 - 0
manual/_build/_static/font/fontawesome_webfont.svg


BIN=BIN
manual/_build/_static/font/fontawesome_webfont.ttf


BIN=BIN
manual/_build/_static/font/fontawesome_webfont.woff


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
manual/_build/_static/jquery.js


+ 47 - 0
manual/_build/_static/js/theme.js

@@ -0,0 +1,47 @@
+$( document ).ready(function() {
+    // Shift nav in mobile when clicking the menu.
+    $(document).on('click', "[data-toggle='wy-nav-top']", function() {
+      $("[data-toggle='wy-nav-shift']").toggleClass("shift");
+      $("[data-toggle='rst-versions']").toggleClass("shift");
+    });
+    // Close menu when you click a link.
+    $(document).on('click', ".wy-menu-vertical .current ul li a", function() {
+      $("[data-toggle='wy-nav-shift']").removeClass("shift");
+      $("[data-toggle='rst-versions']").toggleClass("shift");
+    });
+    $(document).on('click', "[data-toggle='rst-current-version']", function() {
+      $("[data-toggle='rst-versions']").toggleClass("shift-up");
+    });  
+    // Make tables responsive
+    $("table.docutils:not(.field-list)").wrap("<div class='wy-table-responsive'></div>");
+});
+
+window.SphinxRtdTheme = (function (jquery) {
+    var stickyNav = (function () {
+        var navBar,
+            win,
+            stickyNavCssClass = 'stickynav',
+            applyStickNav = function () {
+                if (navBar.height() <= win.height()) {
+                    navBar.addClass(stickyNavCssClass);
+                } else {
+                    navBar.removeClass(stickyNavCssClass);
+                }
+            },
+            enable = function () {
+                applyStickNav();
+                win.on('resize', applyStickNav);
+            },
+            init = function () {
+                navBar = jquery('nav.wy-nav-side:first');
+                win    = jquery(window);
+            };
+        jquery(init);
+        return {
+            enable : enable
+        };
+    }());
+    return {
+        StickyNav : stickyNav
+    };
+}($));

BIN=BIN
manual/_build/_static/minus.png


BIN=BIN
manual/_build/_static/plus.png


+ 62 - 0
manual/_build/_static/pygments.css

@@ -0,0 +1,62 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #eeffcc; }
+.highlight .c { color: #408090; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #333333 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #208050 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #208050 } /* Literal.Number.Float */
+.highlight .mh { color: #208050 } /* Literal.Number.Hex */
+.highlight .mi { color: #208050 } /* Literal.Number.Integer */
+.highlight .mo { color: #208050 } /* Literal.Number.Oct */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */

+ 622 - 0
manual/_build/_static/searchtools.js

@@ -0,0 +1,622 @@
+/*
+ * searchtools.js_t
+ * ~~~~~~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilties for the full-text search.
+ *
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+
+/**
+ * Porter Stemmer
+ */
+var Stemmer = function() {
+
+  var step2list = {
+    ational: 'ate',
+    tional: 'tion',
+    enci: 'ence',
+    anci: 'ance',
+    izer: 'ize',
+    bli: 'ble',
+    alli: 'al',
+    entli: 'ent',
+    eli: 'e',
+    ousli: 'ous',
+    ization: 'ize',
+    ation: 'ate',
+    ator: 'ate',
+    alism: 'al',
+    iveness: 'ive',
+    fulness: 'ful',
+    ousness: 'ous',
+    aliti: 'al',
+    iviti: 'ive',
+    biliti: 'ble',
+    logi: 'log'
+  };
+
+  var step3list = {
+    icate: 'ic',
+    ative: '',
+    alize: 'al',
+    iciti: 'ic',
+    ical: 'ic',
+    ful: '',
+    ness: ''
+  };
+
+  var c = "[^aeiou]";          // consonant
+  var v = "[aeiouy]";          // vowel
+  var C = c + "[^aeiouy]*";    // consonant sequence
+  var V = v + "[aeiou]*";      // vowel sequence
+
+  var mgr0 = "^(" + C + ")?" + V + C;                      // [C]VC... is m>0
+  var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$";    // [C]VC[V] is m=1
+  var mgr1 = "^(" + C + ")?" + V + C + V + C;              // [C]VCVC... is m>1
+  var s_v   = "^(" + C + ")?" + v;                         // vowel in stem
+
+  this.stemWord = function (w) {
+    var stem;
+    var suffix;
+    var firstch;
+    var origword = w;
+
+    if (w.length < 3)
+      return w;
+
+    var re;
+    var re2;
+    var re3;
+    var re4;
+
+    firstch = w.substr(0,1);
+    if (firstch == "y")
+      w = firstch.toUpperCase() + w.substr(1);
+
+    // Step 1a
+    re = /^(.+?)(ss|i)es$/;
+    re2 = /^(.+?)([^s])s$/;
+
+    if (re.test(w))
+      w = w.replace(re,"$1$2");
+    else if (re2.test(w))
+      w = w.replace(re2,"$1$2");
+
+    // Step 1b
+    re = /^(.+?)eed$/;
+    re2 = /^(.+?)(ed|ing)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      re = new RegExp(mgr0);
+      if (re.test(fp[1])) {
+        re = /.$/;
+        w = w.replace(re,"");
+      }
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1];
+      re2 = new RegExp(s_v);
+      if (re2.test(stem)) {
+        w = stem;
+        re2 = /(at|bl|iz)$/;
+        re3 = new RegExp("([^aeiouylsz])\\1$");
+        re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+        if (re2.test(w))
+          w = w + "e";
+        else if (re3.test(w)) {
+          re = /.$/;
+          w = w.replace(re,"");
+        }
+        else if (re4.test(w))
+          w = w + "e";
+      }
+    }
+
+    // Step 1c
+    re = /^(.+?)y$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(s_v);
+      if (re.test(stem))
+        w = stem + "i";
+    }
+
+    // Step 2
+    re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step2list[suffix];
+    }
+
+    // Step 3
+    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step3list[suffix];
+    }
+
+    // Step 4
+    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+    re2 = /^(.+?)(s|t)(ion)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      if (re.test(stem))
+        w = stem;
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1] + fp[2];
+      re2 = new RegExp(mgr1);
+      if (re2.test(stem))
+        w = stem;
+    }
+
+    // Step 5
+    re = /^(.+?)e$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      re2 = new RegExp(meq1);
+      re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+      if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+        w = stem;
+    }
+    re = /ll$/;
+    re2 = new RegExp(mgr1);
+    if (re.test(w) && re2.test(w)) {
+      re = /.$/;
+      w = w.replace(re,"");
+    }
+
+    // and turn initial Y back to y
+    if (firstch == "y")
+      w = firstch.toLowerCase() + w.substr(1);
+    return w;
+  }
+}
+
+
+
+/**
+ * Simple result scoring code.
+ */
+var Scorer = {
+  // Implement the following function to further tweak the score for each result
+  // The function takes a result array [filename, title, anchor, descr, score]
+  // and returns the new score.
+  /*
+  score: function(result) {
+    return result[4];
+  },
+  */
+
+  // query matches the full name of an object
+  objNameMatch: 11,
+  // or matches in the last dotted part of the object name
+  objPartialMatch: 6,
+  // Additive scores depending on the priority of the object
+  objPrio: {0:  15,   // used to be importantResults
+            1:  5,   // used to be objectResults
+            2: -5},  // used to be unimportantResults
+  //  Used when the priority is not in the mapping.
+  objPrioDefault: 0,
+
+  // query found in title
+  title: 15,
+  // query found in terms
+  term: 5
+};
+
+
+/**
+ * Search Module
+ */
+var Search = {
+
+  _index : null,
+  _queued_query : null,
+  _pulse_status : -1,
+
+  init : function() {
+      var params = $.getQueryParameters();
+      if (params.q) {
+          var query = params.q[0];
+          $('input[name="q"]')[0].value = query;
+          this.performSearch(query);
+      }
+  },
+
+  loadIndex : function(url) {
+    $.ajax({type: "GET", url: url, data: null,
+            dataType: "script", cache: true,
+            complete: function(jqxhr, textstatus) {
+              if (textstatus != "success") {
+                document.getElementById("searchindexloader").src = url;
+              }
+            }});
+  },
+
+  setIndex : function(index) {
+    var q;
+    this._index = index;
+    if ((q = this._queued_query) !== null) {
+      this._queued_query = null;
+      Search.query(q);
+    }
+  },
+
+  hasIndex : function() {
+      return this._index !== null;
+  },
+
+  deferQuery : function(query) {
+      this._queued_query = query;
+  },
+
+  stopPulse : function() {
+      this._pulse_status = 0;
+  },
+
+  startPulse : function() {
+    if (this._pulse_status >= 0)
+        return;
+    function pulse() {
+      var i;
+      Search._pulse_status = (Search._pulse_status + 1) % 4;
+      var dotString = '';
+      for (i = 0; i < Search._pulse_status; i++)
+        dotString += '.';
+      Search.dots.text(dotString);
+      if (Search._pulse_status > -1)
+        window.setTimeout(pulse, 500);
+    }
+    pulse();
+  },
+
+  /**
+   * perform a search for something (or wait until index is loaded)
+   */
+  performSearch : function(query) {
+    // create the required interface elements
+    this.out = $('#search-results');
+    this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
+    this.dots = $('<span></span>').appendTo(this.title);
+    this.status = $('<p style="display: none"></p>').appendTo(this.out);
+    this.output = $('<ul class="search"/>').appendTo(this.out);
+
+    $('#search-progress').text(_('Preparing search...'));
+    this.startPulse();
+
+    // index already loaded, the browser was quick!
+    if (this.hasIndex())
+      this.query(query);
+    else
+      this.deferQuery(query);
+  },
+
+  /**
+   * execute search (requires search index to be loaded)
+   */
+  query : function(query) {
+    var i;
+    var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
+
+    // stem the searchterms and add them to the correct list
+    var stemmer = new Stemmer();
+    var searchterms = [];
+    var excluded = [];
+    var hlterms = [];
+    var tmp = query.split(/\s+/);
+    var objectterms = [];
+    for (i = 0; i < tmp.length; i++) {
+      if (tmp[i] !== "") {
+          objectterms.push(tmp[i].toLowerCase());
+      }
+
+      if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
+          tmp[i] === "") {
+        // skip this "word"
+        continue;
+      }
+      // stem the word
+      var word = stemmer.stemWord(tmp[i]).toLowerCase();
+      var toAppend;
+      // select the correct list
+      if (word[0] == '-') {
+        toAppend = excluded;
+        word = word.substr(1);
+      }
+      else {
+        toAppend = searchterms;
+        hlterms.push(tmp[i].toLowerCase());
+      }
+      // only add if not already in the list
+      if (!$u.contains(toAppend, word))
+        toAppend.push(word);
+    }
+    var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
+
+    // console.debug('SEARCH: searching for:');
+    // console.info('required: ', searchterms);
+    // console.info('excluded: ', excluded);
+
+    // prepare search
+    var terms = this._index.terms;
+    var titleterms = this._index.titleterms;
+
+    // array of [filename, title, anchor, descr, score]
+    var results = [];
+    $('#search-progress').empty();
+
+    // lookup as object
+    for (i = 0; i < objectterms.length; i++) {
+      var others = [].concat(objectterms.slice(0, i),
+                             objectterms.slice(i+1, objectterms.length));
+      results = results.concat(this.performObjectSearch(objectterms[i], others));
+    }
+
+    // lookup as search terms in fulltext
+    results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term))
+                     .concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
+
+    // let the scorer override scores with a custom scoring function
+    if (Scorer.score) {
+      for (i = 0; i < results.length; i++)
+        results[i][4] = Scorer.score(results[i]);
+    }
+
+    // now sort the results by score (in opposite order of appearance, since the
+    // display function below uses pop() to retrieve items) and then
+    // alphabetically
+    results.sort(function(a, b) {
+      var left = a[4];
+      var right = b[4];
+      if (left > right) {
+        return 1;
+      } else if (left < right) {
+        return -1;
+      } else {
+        // same score: sort alphabetically
+        left = a[1].toLowerCase();
+        right = b[1].toLowerCase();
+        return (left > right) ? -1 : ((left < right) ? 1 : 0);
+      }
+    });
+
+    // for debugging
+    //Search.lastresults = results.slice();  // a copy
+    //console.info('search results:', Search.lastresults);
+
+    // print the results
+    var resultCount = results.length;
+    function displayNextItem() {
+      // results left, load the summary and display it
+      if (results.length) {
+        var item = results.pop();
+        var listItem = $('<li style="display:none"></li>');
+        if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
+          // dirhtml builder
+          var dirname = item[0] + '/';
+          if (dirname.match(/\/index\/$/)) {
+            dirname = dirname.substring(0, dirname.length-6);
+          } else if (dirname == 'index/') {
+            dirname = '';
+          }
+          listItem.append($('<a/>').attr('href',
+            DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
+            highlightstring + item[2]).html(item[1]));
+        } else {
+          // normal html builders
+          listItem.append($('<a/>').attr('href',
+            item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
+            highlightstring + item[2]).html(item[1]));
+        }
+        if (item[3]) {
+          listItem.append($('<span> (' + item[3] + ')</span>'));
+          Search.output.append(listItem);
+          listItem.slideDown(5, function() {
+            displayNextItem();
+          });
+        } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
+          $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt',
+                  dataType: "text",
+                  complete: function(jqxhr, textstatus) {
+                    var data = jqxhr.responseText;
+                    if (data !== '') {
+                      listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
+                    }
+                    Search.output.append(listItem);
+                    listItem.slideDown(5, function() {
+                      displayNextItem();
+                    });
+                  }});
+        } else {
+          // no source available, just display title
+          Search.output.append(listItem);
+          listItem.slideDown(5, function() {
+            displayNextItem();
+          });
+        }
+      }
+      // search finished, update title and status message
+      else {
+        Search.stopPulse();
+        Search.title.text(_('Search Results'));
+        if (!resultCount)
+          Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
+        else
+            Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
+        Search.status.fadeIn(500);
+      }
+    }
+    displayNextItem();
+  },
+
+  /**
+   * search for object names
+   */
+  performObjectSearch : function(object, otherterms) {
+    var filenames = this._index.filenames;
+    var objects = this._index.objects;
+    var objnames = this._index.objnames;
+    var titles = this._index.titles;
+
+    var i;
+    var results = [];
+
+    for (var prefix in objects) {
+      for (var name in objects[prefix]) {
+        var fullname = (prefix ? prefix + '.' : '') + name;
+        if (fullname.toLowerCase().indexOf(object) > -1) {
+          var score = 0;
+          var parts = fullname.split('.');
+          // check for different match types: exact matches of full name or
+          // "last name" (i.e. last dotted part)
+          if (fullname == object || parts[parts.length - 1] == object) {
+            score += Scorer.objNameMatch;
+          // matches in last name
+          } else if (parts[parts.length - 1].indexOf(object) > -1) {
+            score += Scorer.objPartialMatch;
+          }
+          var match = objects[prefix][name];
+          var objname = objnames[match[1]][2];
+          var title = titles[match[0]];
+          // If more than one term searched for, we require other words to be
+          // found in the name/title/description
+          if (otherterms.length > 0) {
+            var haystack = (prefix + ' ' + name + ' ' +
+                            objname + ' ' + title).toLowerCase();
+            var allfound = true;
+            for (i = 0; i < otherterms.length; i++) {
+              if (haystack.indexOf(otherterms[i]) == -1) {
+                allfound = false;
+                break;
+              }
+            }
+            if (!allfound) {
+              continue;
+            }
+          }
+          var descr = objname + _(', in ') + title;
+
+          var anchor = match[3];
+          if (anchor === '')
+            anchor = fullname;
+          else if (anchor == '-')
+            anchor = objnames[match[1]][1] + '-' + fullname;
+          // add custom score for some objects according to scorer
+          if (Scorer.objPrio.hasOwnProperty(match[2])) {
+            score += Scorer.objPrio[match[2]];
+          } else {
+            score += Scorer.objPrioDefault;
+          }
+          results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]);
+        }
+      }
+    }
+
+    return results;
+  },
+
+  /**
+   * search for full-text terms in the index
+   */
+  performTermsSearch : function(searchterms, excluded, terms, score) {
+    var filenames = this._index.filenames;
+    var titles = this._index.titles;
+
+    var i, j, file, files;
+    var fileMap = {};
+    var results = [];
+
+    // perform the search on the required terms
+    for (i = 0; i < searchterms.length; i++) {
+      var word = searchterms[i];
+      // no match but word was a required one
+      if ((files = terms[word]) === undefined)
+        break;
+      if (files.length === undefined) {
+        files = [files];
+      }
+      // create the mapping
+      for (j = 0; j < files.length; j++) {
+        file = files[j];
+        if (file in fileMap)
+          fileMap[file].push(word);
+        else
+          fileMap[file] = [word];
+      }
+    }
+
+    // now check if the files don't contain excluded terms
+    for (file in fileMap) {
+      var valid = true;
+
+      // check if all requirements are matched
+      if (fileMap[file].length != searchterms.length)
+          continue;
+
+      // ensure that none of the excluded terms is in the search result
+      for (i = 0; i < excluded.length; i++) {
+        if (terms[excluded[i]] == file ||
+          $u.contains(terms[excluded[i]] || [], file)) {
+          valid = false;
+          break;
+        }
+      }
+
+      // if we have still a valid result we can add it to the result list
+      if (valid) {
+        results.push([filenames[file], titles[file], '', null, score]);
+      }
+    }
+    return results;
+  },
+
+  /**
+   * helper function to return a node containing the
+   * search summary for a given text. keywords is a list
+   * of stemmed words, hlwords is the list of normal, unstemmed
+   * words. the first one is used to find the occurance, the
+   * latter for highlighting it.
+   */
+  makeSearchSummary : function(text, keywords, hlwords) {
+    var textLower = text.toLowerCase();
+    var start = 0;
+    $.each(keywords, function() {
+      var i = textLower.indexOf(this.toLowerCase());
+      if (i > -1)
+        start = i;
+    });
+    start = Math.max(start - 120, 0);
+    var excerpt = ((start > 0) ? '...' : '') +
+      $.trim(text.substr(start, 240)) +
+      ((start + 240 - text.length) ? '...' : '');
+    var rv = $('<div class="context"></div>').text(excerpt);
+    $.each(hlwords, function() {
+      rv = rv.highlightText(this, 'highlighted');
+    });
+    return rv;
+  }
+};
+
+$(document).ready(function() {
+  Search.init();
+});

+ 31 - 0
manual/_build/_static/underscore.js

@@ -0,0 +1,31 @@
+// Underscore.js 1.3.1
+// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+// Underscore is freely distributable under the MIT license.
+// Portions of Underscore are inspired or borrowed from Prototype,
+// Oliver Steele's Functional, and John Resig's Micro-Templating.
+// For all details and documentation:
+// http://documentcloud.github.com/underscore
+(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
+c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
+h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
+b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
+null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
+function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
+e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
+function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
+return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
+c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
+b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
+return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
+d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
+var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
+c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
+a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
+b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
+1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
+b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
+b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),
+function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
+u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
+function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
+true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);

BIN=BIN
manual/_build/_static/up-pressed.png


BIN=BIN
manual/_build/_static/up.png


+ 808 - 0
manual/_build/_static/websupport.js

@@ -0,0 +1,808 @@
+/*
+ * websupport.js
+ * ~~~~~~~~~~~~~
+ *
+ * sphinx.websupport utilties for all documentation.
+ *
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+(function($) {
+  $.fn.autogrow = function() {
+    return this.each(function() {
+    var textarea = this;
+
+    $.fn.autogrow.resize(textarea);
+
+    $(textarea)
+      .focus(function() {
+        textarea.interval = setInterval(function() {
+          $.fn.autogrow.resize(textarea);
+        }, 500);
+      })
+      .blur(function() {
+        clearInterval(textarea.interval);
+      });
+    });
+  };
+
+  $.fn.autogrow.resize = function(textarea) {
+    var lineHeight = parseInt($(textarea).css('line-height'), 10);
+    var lines = textarea.value.split('\n');
+    var columns = textarea.cols;
+    var lineCount = 0;
+    $.each(lines, function() {
+      lineCount += Math.ceil(this.length / columns) || 1;
+    });
+    var height = lineHeight * (lineCount + 1);
+    $(textarea).css('height', height);
+  };
+})(jQuery);
+
+(function($) {
+  var comp, by;
+
+  function init() {
+    initEvents();
+    initComparator();
+  }
+
+  function initEvents() {
+    $('a.comment-close').live("click", function(event) {
+      event.preventDefault();
+      hide($(this).attr('id').substring(2));
+    });
+    $('a.vote').live("click", function(event) {
+      event.preventDefault();
+      handleVote($(this));
+    });
+    $('a.reply').live("click", function(event) {
+      event.preventDefault();
+      openReply($(this).attr('id').substring(2));
+    });
+    $('a.close-reply').live("click", function(event) {
+      event.preventDefault();
+      closeReply($(this).attr('id').substring(2));
+    });
+    $('a.sort-option').live("click", function(event) {
+      event.preventDefault();
+      handleReSort($(this));
+    });
+    $('a.show-proposal').live("click", function(event) {
+      event.preventDefault();
+      showProposal($(this).attr('id').substring(2));
+    });
+    $('a.hide-proposal').live("click", function(event) {
+      event.preventDefault();
+      hideProposal($(this).attr('id').substring(2));
+    });
+    $('a.show-propose-change').live("click", function(event) {
+      event.preventDefault();
+      showProposeChange($(this).attr('id').substring(2));
+    });
+    $('a.hide-propose-change').live("click", function(event) {
+      event.preventDefault();
+      hideProposeChange($(this).attr('id').substring(2));
+    });
+    $('a.accept-comment').live("click", function(event) {
+      event.preventDefault();
+      acceptComment($(this).attr('id').substring(2));
+    });
+    $('a.delete-comment').live("click", function(event) {
+      event.preventDefault();
+      deleteComment($(this).attr('id').substring(2));
+    });
+    $('a.comment-markup').live("click", function(event) {
+      event.preventDefault();
+      toggleCommentMarkupBox($(this).attr('id').substring(2));
+    });
+  }
+
+  /**
+   * Set comp, which is a comparator function used for sorting and
+   * inserting comments into the list.
+   */
+  function setComparator() {
+    // If the first three letters are "asc", sort in ascending order
+    // and remove the prefix.
+    if (by.substring(0,3) == 'asc') {
+      var i = by.substring(3);
+      comp = function(a, b) { return a[i] - b[i]; };
+    } else {
+      // Otherwise sort in descending order.
+      comp = function(a, b) { return b[by] - a[by]; };
+    }
+
+    // Reset link styles and format the selected sort option.
+    $('a.sel').attr('href', '#').removeClass('sel');
+    $('a.by' + by).removeAttr('href').addClass('sel');
+  }
+
+  /**
+   * Create a comp function. If the user has preferences stored in
+   * the sortBy cookie, use those, otherwise use the default.
+   */
+  function initComparator() {
+    by = 'rating'; // Default to sort by rating.
+    // If the sortBy cookie is set, use that instead.
+    if (document.cookie.length > 0) {
+      var start = document.cookie.indexOf('sortBy=');
+      if (start != -1) {
+        start = start + 7;
+        var end = document.cookie.indexOf(";", start);
+        if (end == -1) {
+          end = document.cookie.length;
+          by = unescape(document.cookie.substring(start, end));
+        }
+      }
+    }
+    setComparator();
+  }
+
+  /**
+   * Show a comment div.
+   */
+  function show(id) {
+    $('#ao' + id).hide();
+    $('#ah' + id).show();
+    var context = $.extend({id: id}, opts);
+    var popup = $(renderTemplate(popupTemplate, context)).hide();
+    popup.find('textarea[name="proposal"]').hide();
+    popup.find('a.by' + by).addClass('sel');
+    var form = popup.find('#cf' + id);
+    form.submit(function(event) {
+      event.preventDefault();
+      addComment(form);
+    });
+    $('#s' + id).after(popup);
+    popup.slideDown('fast', function() {
+      getComments(id);
+    });
+  }
+
+  /**
+   * Hide a comment div.
+   */
+  function hide(id) {
+    $('#ah' + id).hide();
+    $('#ao' + id).show();
+    var div = $('#sc' + id);
+    div.slideUp('fast', function() {
+      div.remove();
+    });
+  }
+
+  /**
+   * Perform an ajax request to get comments for a node
+   * and insert the comments into the comments tree.
+   */
+  function getComments(id) {
+    $.ajax({
+     type: 'GET',
+     url: opts.getCommentsURL,
+     data: {node: id},
+     success: function(data, textStatus, request) {
+       var ul = $('#cl' + id);
+       var speed = 100;
+       $('#cf' + id)
+         .find('textarea[name="proposal"]')
+         .data('source', data.source);
+
+       if (data.comments.length === 0) {
+         ul.html('<li>No comments yet.</li>');
+         ul.data('empty', true);
+       } else {
+         // If there are comments, sort them and put them in the list.
+         var comments = sortComments(data.comments);
+         speed = data.comments.length * 100;
+         appendComments(comments, ul);
+         ul.data('empty', false);
+       }
+       $('#cn' + id).slideUp(speed + 200);
+       ul.slideDown(speed);
+     },
+     error: function(request, textStatus, error) {
+       showError('Oops, there was a problem retrieving the comments.');
+     },
+     dataType: 'json'
+    });
+  }
+
+  /**
+   * Add a comment via ajax and insert the comment into the comment tree.
+   */
+  function addComment(form) {
+    var node_id = form.find('input[name="node"]').val();
+    var parent_id = form.find('input[name="parent"]').val();
+    var text = form.find('textarea[name="comment"]').val();
+    var proposal = form.find('textarea[name="proposal"]').val();
+
+    if (text == '') {
+      showError('Please enter a comment.');
+      return;
+    }
+
+    // Disable the form that is being submitted.
+    form.find('textarea,input').attr('disabled', 'disabled');
+
+    // Send the comment to the server.
+    $.ajax({
+      type: "POST",
+      url: opts.addCommentURL,
+      dataType: 'json',
+      data: {
+        node: node_id,
+        parent: parent_id,
+        text: text,
+        proposal: proposal
+      },
+      success: function(data, textStatus, error) {
+        // Reset the form.
+        if (node_id) {
+          hideProposeChange(node_id);
+        }
+        form.find('textarea')
+          .val('')
+          .add(form.find('input'))
+          .removeAttr('disabled');
+	var ul = $('#cl' + (node_id || parent_id));
+        if (ul.data('empty')) {
+          $(ul).empty();
+          ul.data('empty', false);
+        }
+        insertComment(data.comment);
+        var ao = $('#ao' + node_id);
+        ao.find('img').attr({'src': opts.commentBrightImage});
+        if (node_id) {
+          // if this was a "root" comment, remove the commenting box
+          // (the user can get it back by reopening the comment popup)
+          $('#ca' + node_id).slideUp();
+        }
+      },
+      error: function(request, textStatus, error) {
+        form.find('textarea,input').removeAttr('disabled');
+        showError('Oops, there was a problem adding the comment.');
+      }
+    });
+  }
+
+  /**
+   * Recursively append comments to the main comment list and children
+   * lists, creating the comment tree.
+   */
+  function appendComments(comments, ul) {
+    $.each(comments, function() {
+      var div = createCommentDiv(this);
+      ul.append($(document.createElement('li')).html(div));
+      appendComments(this.children, div.find('ul.comment-children'));
+      // To avoid stagnating data, don't store the comments children in data.
+      this.children = null;
+      div.data('comment', this);
+    });
+  }
+
+  /**
+   * After adding a new comment, it must be inserted in the correct
+   * location in the comment tree.
+   */
+  function insertComment(comment) {
+    var div = createCommentDiv(comment);
+
+    // To avoid stagnating data, don't store the comments children in data.
+    comment.children = null;
+    div.data('comment', comment);
+
+    var ul = $('#cl' + (comment.node || comment.parent));
+    var siblings = getChildren(ul);
+
+    var li = $(document.createElement('li'));
+    li.hide();
+
+    // Determine where in the parents children list to insert this comment.
+    for(i=0; i < siblings.length; i++) {
+      if (comp(comment, siblings[i]) <= 0) {
+        $('#cd' + siblings[i].id)
+          .parent()
+          .before(li.html(div));
+        li.slideDown('fast');
+        return;
+      }
+    }
+
+    // If we get here, this comment rates lower than all the others,
+    // or it is the only comment in the list.
+    ul.append(li.html(div));
+    li.slideDown('fast');
+  }
+
+  function acceptComment(id) {
+    $.ajax({
+      type: 'POST',
+      url: opts.acceptCommentURL,
+      data: {id: id},
+      success: function(data, textStatus, request) {
+        $('#cm' + id).fadeOut('fast');
+        $('#cd' + id).removeClass('moderate');
+      },
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem accepting the comment.');
+      }
+    });
+  }
+
+  function deleteComment(id) {
+    $.ajax({
+      type: 'POST',
+      url: opts.deleteCommentURL,
+      data: {id: id},
+      success: function(data, textStatus, request) {
+        var div = $('#cd' + id);
+        if (data == 'delete') {
+          // Moderator mode: remove the comment and all children immediately
+          div.slideUp('fast', function() {
+            div.remove();
+          });
+          return;
+        }
+        // User mode: only mark the comment as deleted
+        div
+          .find('span.user-id:first')
+          .text('[deleted]').end()
+          .find('div.comment-text:first')
+          .text('[deleted]').end()
+          .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
+                ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
+          .remove();
+        var comment = div.data('comment');
+        comment.username = '[deleted]';
+        comment.text = '[deleted]';
+        div.data('comment', comment);
+      },
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem deleting the comment.');
+      }
+    });
+  }
+
+  function showProposal(id) {
+    $('#sp' + id).hide();
+    $('#hp' + id).show();
+    $('#pr' + id).slideDown('fast');
+  }
+
+  function hideProposal(id) {
+    $('#hp' + id).hide();
+    $('#sp' + id).show();
+    $('#pr' + id).slideUp('fast');
+  }
+
+  function showProposeChange(id) {
+    $('#pc' + id).hide();
+    $('#hc' + id).show();
+    var textarea = $('#pt' + id);
+    textarea.val(textarea.data('source'));
+    $.fn.autogrow.resize(textarea[0]);
+    textarea.slideDown('fast');
+  }
+
+  function hideProposeChange(id) {
+    $('#hc' + id).hide();
+    $('#pc' + id).show();
+    var textarea = $('#pt' + id);
+    textarea.val('').removeAttr('disabled');
+    textarea.slideUp('fast');
+  }
+
+  function toggleCommentMarkupBox(id) {
+    $('#mb' + id).toggle();
+  }
+
+  /** Handle when the user clicks on a sort by link. */
+  function handleReSort(link) {
+    var classes = link.attr('class').split(/\s+/);
+    for (var i=0; i<classes.length; i++) {
+      if (classes[i] != 'sort-option') {
+	by = classes[i].substring(2);
+      }
+    }
+    setComparator();
+    // Save/update the sortBy cookie.
+    var expiration = new Date();
+    expiration.setDate(expiration.getDate() + 365);
+    document.cookie= 'sortBy=' + escape(by) +
+                     ';expires=' + expiration.toUTCString();
+    $('ul.comment-ul').each(function(index, ul) {
+      var comments = getChildren($(ul), true);
+      comments = sortComments(comments);
+      appendComments(comments, $(ul).empty());
+    });
+  }
+
+  /**
+   * Function to process a vote when a user clicks an arrow.
+   */
+  function handleVote(link) {
+    if (!opts.voting) {
+      showError("You'll need to login to vote.");
+      return;
+    }
+
+    var id = link.attr('id');
+    if (!id) {
+      // Didn't click on one of the voting arrows.
+      return;
+    }
+    // If it is an unvote, the new vote value is 0,
+    // Otherwise it's 1 for an upvote, or -1 for a downvote.
+    var value = 0;
+    if (id.charAt(1) != 'u') {
+      value = id.charAt(0) == 'u' ? 1 : -1;
+    }
+    // The data to be sent to the server.
+    var d = {
+      comment_id: id.substring(2),
+      value: value
+    };
+
+    // Swap the vote and unvote links.
+    link.hide();
+    $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
+      .show();
+
+    // The div the comment is displayed in.
+    var div = $('div#cd' + d.comment_id);
+    var data = div.data('comment');
+
+    // If this is not an unvote, and the other vote arrow has
+    // already been pressed, unpress it.
+    if ((d.value !== 0) && (data.vote === d.value * -1)) {
+      $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
+      $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
+    }
+
+    // Update the comments rating in the local data.
+    data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
+    data.vote = d.value;
+    div.data('comment', data);
+
+    // Change the rating text.
+    div.find('.rating:first')
+      .text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
+
+    // Send the vote information to the server.
+    $.ajax({
+      type: "POST",
+      url: opts.processVoteURL,
+      data: d,
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem casting that vote.');
+      }
+    });
+  }
+
+  /**
+   * Open a reply form used to reply to an existing comment.
+   */
+  function openReply(id) {
+    // Swap out the reply link for the hide link
+    $('#rl' + id).hide();
+    $('#cr' + id).show();
+
+    // Add the reply li to the children ul.
+    var div = $(renderTemplate(replyTemplate, {id: id})).hide();
+    $('#cl' + id)
+      .prepend(div)
+      // Setup the submit handler for the reply form.
+      .find('#rf' + id)
+      .submit(function(event) {
+        event.preventDefault();
+        addComment($('#rf' + id));
+        closeReply(id);
+      })
+      .find('input[type=button]')
+      .click(function() {
+        closeReply(id);
+      });
+    div.slideDown('fast', function() {
+      $('#rf' + id).find('textarea').focus();
+    });
+  }
+
+  /**
+   * Close the reply form opened with openReply.
+   */
+  function closeReply(id) {
+    // Remove the reply div from the DOM.
+    $('#rd' + id).slideUp('fast', function() {
+      $(this).remove();
+    });
+
+    // Swap out the hide link for the reply link
+    $('#cr' + id).hide();
+    $('#rl' + id).show();
+  }
+
+  /**
+   * Recursively sort a tree of comments using the comp comparator.
+   */
+  function sortComments(comments) {
+    comments.sort(comp);
+    $.each(comments, function() {
+      this.children = sortComments(this.children);
+    });
+    return comments;
+  }
+
+  /**
+   * Get the children comments from a ul. If recursive is true,
+   * recursively include childrens' children.
+   */
+  function getChildren(ul, recursive) {
+    var children = [];
+    ul.children().children("[id^='cd']")
+      .each(function() {
+        var comment = $(this).data('comment');
+        if (recursive)
+          comment.children = getChildren($(this).find('#cl' + comment.id), true);
+        children.push(comment);
+      });
+    return children;
+  }
+
+  /** Create a div to display a comment in. */
+  function createCommentDiv(comment) {
+    if (!comment.displayed && !opts.moderator) {
+      return $('<div class="moderate">Thank you!  Your comment will show up '
+               + 'once it is has been approved by a moderator.</div>');
+    }
+    // Prettify the comment rating.
+    comment.pretty_rating = comment.rating + ' point' +
+      (comment.rating == 1 ? '' : 's');
+    // Make a class (for displaying not yet moderated comments differently)
+    comment.css_class = comment.displayed ? '' : ' moderate';
+    // Create a div for this comment.
+    var context = $.extend({}, opts, comment);
+    var div = $(renderTemplate(commentTemplate, context));
+
+    // If the user has voted on this comment, highlight the correct arrow.
+    if (comment.vote) {
+      var direction = (comment.vote == 1) ? 'u' : 'd';
+      div.find('#' + direction + 'v' + comment.id).hide();
+      div.find('#' + direction + 'u' + comment.id).show();
+    }
+
+    if (opts.moderator || comment.text != '[deleted]') {
+      div.find('a.reply').show();
+      if (comment.proposal_diff)
+        div.find('#sp' + comment.id).show();
+      if (opts.moderator && !comment.displayed)
+        div.find('#cm' + comment.id).show();
+      if (opts.moderator || (opts.username == comment.username))
+        div.find('#dc' + comment.id).show();
+    }
+    return div;
+  }
+
+  /**
+   * A simple template renderer. Placeholders such as <%id%> are replaced
+   * by context['id'] with items being escaped. Placeholders such as <#id#>
+   * are not escaped.
+   */
+  function renderTemplate(template, context) {
+    var esc = $(document.createElement('div'));
+
+    function handle(ph, escape) {
+      var cur = context;
+      $.each(ph.split('.'), function() {
+        cur = cur[this];
+      });
+      return escape ? esc.text(cur || "").html() : cur;
+    }
+
+    return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
+      return handle(arguments[2], arguments[1] == '%' ? true : false);
+    });
+  }
+
+  /** Flash an error message briefly. */
+  function showError(message) {
+    $(document.createElement('div')).attr({'class': 'popup-error'})
+      .append($(document.createElement('div'))
+               .attr({'class': 'error-message'}).text(message))
+      .appendTo('body')
+      .fadeIn("slow")
+      .delay(2000)
+      .fadeOut("slow");
+  }
+
+  /** Add a link the user uses to open the comments popup. */
+  $.fn.comment = function() {
+    return this.each(function() {
+      var id = $(this).attr('id').substring(1);
+      var count = COMMENT_METADATA[id];
+      var title = count + ' comment' + (count == 1 ? '' : 's');
+      var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
+      var addcls = count == 0 ? ' nocomment' : '';
+      $(this)
+        .append(
+          $(document.createElement('a')).attr({
+            href: '#',
+            'class': 'sphinx-comment-open' + addcls,
+            id: 'ao' + id
+          })
+            .append($(document.createElement('img')).attr({
+              src: image,
+              alt: 'comment',
+              title: title
+            }))
+            .click(function(event) {
+              event.preventDefault();
+              show($(this).attr('id').substring(2));
+            })
+        )
+        .append(
+          $(document.createElement('a')).attr({
+            href: '#',
+            'class': 'sphinx-comment-close hidden',
+            id: 'ah' + id
+          })
+            .append($(document.createElement('img')).attr({
+              src: opts.closeCommentImage,
+              alt: 'close',
+              title: 'close'
+            }))
+            .click(function(event) {
+              event.preventDefault();
+              hide($(this).attr('id').substring(2));
+            })
+        );
+    });
+  };
+
+  var opts = {
+    processVoteURL: '/_process_vote',
+    addCommentURL: '/_add_comment',
+    getCommentsURL: '/_get_comments',
+    acceptCommentURL: '/_accept_comment',
+    deleteCommentURL: '/_delete_comment',
+    commentImage: '/static/_static/comment.png',
+    closeCommentImage: '/static/_static/comment-close.png',
+    loadingImage: '/static/_static/ajax-loader.gif',
+    commentBrightImage: '/static/_static/comment-bright.png',
+    upArrow: '/static/_static/up.png',
+    downArrow: '/static/_static/down.png',
+    upArrowPressed: '/static/_static/up-pressed.png',
+    downArrowPressed: '/static/_static/down-pressed.png',
+    voting: false,
+    moderator: false
+  };
+
+  if (typeof COMMENT_OPTIONS != "undefined") {
+    opts = jQuery.extend(opts, COMMENT_OPTIONS);
+  }
+
+  var popupTemplate = '\
+    <div class="sphinx-comments" id="sc<%id%>">\
+      <p class="sort-options">\
+        Sort by:\
+        <a href="#" class="sort-option byrating">best rated</a>\
+        <a href="#" class="sort-option byascage">newest</a>\
+        <a href="#" class="sort-option byage">oldest</a>\
+      </p>\
+      <div class="comment-header">Comments</div>\
+      <div class="comment-loading" id="cn<%id%>">\
+        loading comments... <img src="<%loadingImage%>" alt="" /></div>\
+      <ul id="cl<%id%>" class="comment-ul"></ul>\
+      <div id="ca<%id%>">\
+      <p class="add-a-comment">Add a comment\
+        (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
+      <div class="comment-markup-box" id="mb<%id%>">\
+        reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
+        <tt>``code``</tt>, \
+        code blocks: <tt>::</tt> and an indented block after blank line</div>\
+      <form method="post" id="cf<%id%>" class="comment-form" action="">\
+        <textarea name="comment" cols="80"></textarea>\
+        <p class="propose-button">\
+          <a href="#" id="pc<%id%>" class="show-propose-change">\
+            Propose a change &#9657;\
+          </a>\
+          <a href="#" id="hc<%id%>" class="hide-propose-change">\
+            Propose a change &#9663;\
+          </a>\
+        </p>\
+        <textarea name="proposal" id="pt<%id%>" cols="80"\
+                  spellcheck="false"></textarea>\
+        <input type="submit" value="Add comment" />\
+        <input type="hidden" name="node" value="<%id%>" />\
+        <input type="hidden" name="parent" value="" />\
+      </form>\
+      </div>\
+    </div>';
+
+  var commentTemplate = '\
+    <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
+      <div class="vote">\
+        <div class="arrow">\
+          <a href="#" id="uv<%id%>" class="vote" title="vote up">\
+            <img src="<%upArrow%>" />\
+          </a>\
+          <a href="#" id="uu<%id%>" class="un vote" title="vote up">\
+            <img src="<%upArrowPressed%>" />\
+          </a>\
+        </div>\
+        <div class="arrow">\
+          <a href="#" id="dv<%id%>" class="vote" title="vote down">\
+            <img src="<%downArrow%>" id="da<%id%>" />\
+          </a>\
+          <a href="#" id="du<%id%>" class="un vote" title="vote down">\
+            <img src="<%downArrowPressed%>" />\
+          </a>\
+        </div>\
+      </div>\
+      <div class="comment-content">\
+        <p class="tagline comment">\
+          <span class="user-id"><%username%></span>\
+          <span class="rating"><%pretty_rating%></span>\
+          <span class="delta"><%time.delta%></span>\
+        </p>\
+        <div class="comment-text comment"><#text#></div>\
+        <p class="comment-opts comment">\
+          <a href="#" class="reply hidden" id="rl<%id%>">reply &#9657;</a>\
+          <a href="#" class="close-reply" id="cr<%id%>">reply &#9663;</a>\
+          <a href="#" id="sp<%id%>" class="show-proposal">proposal &#9657;</a>\
+          <a href="#" id="hp<%id%>" class="hide-proposal">proposal &#9663;</a>\
+          <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
+          <span id="cm<%id%>" class="moderation hidden">\
+            <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
+          </span>\
+        </p>\
+        <pre class="proposal" id="pr<%id%>">\
+<#proposal_diff#>\
+        </pre>\
+          <ul class="comment-children" id="cl<%id%>"></ul>\
+        </div>\
+        <div class="clearleft"></div>\
+      </div>\
+    </div>';
+
+  var replyTemplate = '\
+    <li>\
+      <div class="reply-div" id="rd<%id%>">\
+        <form id="rf<%id%>">\
+          <textarea name="comment" cols="80"></textarea>\
+          <input type="submit" value="Add reply" />\
+          <input type="button" value="Cancel" />\
+          <input type="hidden" name="parent" value="<%id%>" />\
+          <input type="hidden" name="node" value="" />\
+        </form>\
+      </div>\
+    </li>';
+
+  $(document).ready(function() {
+    init();
+  });
+})(jQuery);
+
+$(document).ready(function() {
+  // add comment anchors for all paragraphs that are commentable
+  $('.sphinx-has-comment').comment();
+
+  // highlight search words in search results
+  $("div.context").each(function() {
+    var params = $.getQueryParameters();
+    var terms = (params.q) ? params.q[0].split(/\s+/) : [];
+    var result = $(this);
+    $.each(terms, function() {
+      result.highlightText(this.toLowerCase(), 'highlighted');
+    });
+  });
+
+  // directly open comment window if requested
+  var anchor = document.location.hash;
+  if (anchor.substring(0, 9) == '#comment-') {
+    $('#ao' + anchor.substring(9)).click();
+    document.location.hash = '#s' + anchor.substring(9);
+  }
+});

+ 272 - 0
manual/_build/basics.html

@@ -0,0 +1,272 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Basics &mdash; FlatCAM 7 documentation</title>
+  
+
+  
+  
+
+  
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  
+  
+
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:'./',
+        VERSION:'7',
+        COLLAPSE_INDEX:false,
+        FILE_SUFFIX:'.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+      <script type="text/javascript" src="_static/jquery.js"></script>
+      <script type="text/javascript" src="_static/underscore.js"></script>
+      <script type="text/javascript" src="_static/doctools.js"></script>
+      <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+  
+
+  
+  
+    <script type="text/javascript">
+        jQuery(function () {
+            SphinxRtdTheme.StickyNav.enable();
+        });
+    </script>
+  
+
+  
+    <link rel="top" title="FlatCAM 7 documentation" href="index.html"/>
+        <link rel="next" title="Common Procedures" href="procedures.html"/>
+        <link rel="prev" title="Installation" href="installation.html"/> 
+
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55008703-1', 'auto');
+  ga('send', 'pageview');
+
+</script>
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-nav-search" style="background-color: #3d3d3d;">
+        <!--<a href="index.html" class="icon icon-home"> FlatCAM</a>-->
+        <!--<a href="http://flatcam.org" class="icon icon-home"> FlatCAM</a>-->
+        <a href="http://flatcam.org">
+            <img src="http://flatcam.org/static/images/fcweblogo1.png"
+                    style="height: auto;
+                    width: auto;
+                    border-radius: 0px;
+                    background-color: #3d3d3d;
+                    margin: auto">
+        </a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+        
+        
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li>
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#windows-installer">Windows Installer</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#ubuntu">Ubuntu</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#manual-installation">Manual Installation</a></li>
+</ul>
+</li>
+<li class="toctree-l1 current"><a class="current reference internal" href="">Basics</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#source-files">Source Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#objects-and-tasks">Objects and Tasks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#creating-saving-and-loading-projects">Creating, Saving and Loading Projects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#navigating-plots">Navigating Plots</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="procedures.html">Common Procedures</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#isolation-routing">Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#wide-isolation-routing">Wide Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#cnc-jobs-for-drill-files">CNC Jobs for Drill Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#side-pcb">2-side PCB</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#copper-area-clear">Copper Area Clear</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#board-cutout">Board Cutout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#bed-flattening">Bed Flattening</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="editor.html">Geometry Editor</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#creating-new-geometry-objects">Creating New Geometry Objects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#editing-existing-geometry-objects">Editing Existing Geometry Objects</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="flatcamshell.html">Shell Command Line Interface</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#the-shell-window">The Shell Window</a></li>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#shell-language">Shell Language</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="cmdreference.html">Shell Command Reference</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-circle">add_circle</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-poly">add_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-rect">add_rect</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#cncjob">cncjob</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#delete">delete</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#follow">follow</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#geo-union">geo_union</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#get-names">get_names</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#help">help</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#isolate">isolate</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#make-docs">make_docs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new">new</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new-geometry">new_geometry</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#offset">offset</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-excellon">open_excellon</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gcode">open_gcode</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gerber">open_gerber</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-project">open_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#options">options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#paint-poly">paint_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#plot">plot</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#save-project">save_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#scale">scale</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#set-active">set_active</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#write-gcode">write_gcode</a></li>
+</ul>
+</li>
+</ul>
+
+        
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="icon icon-reorder"></i>
+        <a href="index.html">FlatCAM</a>
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="index.html">Docs</a> &raquo;</li>
+      
+    <li>Basics</li>
+      <li class="wy-breadcrumbs-aside">
+        
+          <a href="_sources/basics.txt" rel="nofollow"> View page source</a>
+        
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            
+  <div class="section" id="basics">
+<h1>Basics<a class="headerlink" href="#basics" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="source-files">
+<h2>Source Files<a class="headerlink" href="#source-files" title="Permalink to this headline">¶</a></h2>
+<p>Supported source files are:</p>
+<ul class="simple">
+<li><strong>Gerber</strong>: Typically define copper layers in a circuit board.</li>
+<li><strong>Excellon</strong>: (drill file): Contain drill specifications, size and coordinates.</li>
+<li><strong>G-Code</strong>: CNC machine instructions for cutting and/or drilling.</li>
+</ul>
+<p>These source files can be loaded by selecting File→Open Gerber…, File→Open Excellon… or File→Open G-Code… respectively. The objects created from source files are automatically added to the current project when loaded.</p>
+</div>
+<div class="section" id="objects-and-tasks">
+<h2>Objects and Tasks<a class="headerlink" href="#objects-and-tasks" title="Permalink to this headline">¶</a></h2>
+<p>Data in FlatCAM is in the form of 4 different kinds of objects: Gerber, Excellon, Geometry and CNC Job. Gerber, Excellon and CNC Jos objects are directly created by reading files in Gerber, Excellon and G-Code formats. Geometry objects are an intermediate step available to manipulate data. The diagram bellow illustrates the relationship between files and objects. The arrows connecting objects represent a sub-set of the tasks that can be performed in FlatCAM.</p>
+<img alt="_images/objects_flow.png" class="align-center" src="_images/objects_flow.png" />
+</div>
+<div class="section" id="creating-saving-and-loading-projects">
+<h2>Creating, Saving and Loading Projects<a class="headerlink" href="#creating-saving-and-loading-projects" title="Permalink to this headline">¶</a></h2>
+<p>A project is everything that you have loaded, created and set inside the program. A new project is created every time you load the program or run File→New.</p>
+<p>By running File→Save Project, File→Save Project As… or File→Save a Project Copy… you are saving everything currently in the environment including project options. File→Open Project… lets you load a saved project.</p>
+</div>
+<div class="section" id="navigating-plots">
+<h2>Navigating Plots<a class="headerlink" href="#navigating-plots" title="Permalink to this headline">¶</a></h2>
+<p>Plots for open objects (Gerber, drills, g-code, etc…) are automatically shown on screen. A plot for a given can be updated by clicking “Update Plot” in the “Selected” tab, in case any parameters that would have changed the plot have been modified.</p>
+<p>Zooming plots in and out is accomplished by clicking on the plot and using the mouse <strong>scroll wheel</strong> or hitting one of the following keys:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">1</span></tt>: Fits all graphics to the available plotting area.</li>
+<li><tt class="docutils literal"><span class="pre">2</span></tt>: Zooms out</li>
+<li><tt class="docutils literal"><span class="pre">3</span></tt>: Zooms in</li>
+</ul>
+<p>When zooming in or out, the point under the cursor stays at the same location.</p>
+<p>To scroll left-right or up-down, hold the <tt class="docutils literal"><span class="pre">shift</span></tt> or <tt class="docutils literal"><span class="pre">control</span></tt> key respectively while turning the mouse <strong>scroll wheel</strong>.</p>
+</div>
+</div>
+
+
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="procedures.html" class="btn btn-neutral float-right" title="Common Procedures"/>Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="installation.html" class="btn btn-neutral" title="Installation"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2014, Juan Pablo Caram.
+    </p>
+  </div>
+
+  <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+</body>
+</html>

+ 511 - 0
manual/_build/cmdreference.html

@@ -0,0 +1,511 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Shell Command Reference &mdash; FlatCAM 7 documentation</title>
+  
+
+  
+  
+
+  
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  
+  
+
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:'./',
+        VERSION:'7',
+        COLLAPSE_INDEX:false,
+        FILE_SUFFIX:'.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+      <script type="text/javascript" src="_static/jquery.js"></script>
+      <script type="text/javascript" src="_static/underscore.js"></script>
+      <script type="text/javascript" src="_static/doctools.js"></script>
+      <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+  
+
+  
+  
+    <script type="text/javascript">
+        jQuery(function () {
+            SphinxRtdTheme.StickyNav.enable();
+        });
+    </script>
+  
+
+  
+    <link rel="top" title="FlatCAM 7 documentation" href="index.html"/>
+        <link rel="prev" title="Shell Command Line Interface" href="flatcamshell.html"/> 
+
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55008703-1', 'auto');
+  ga('send', 'pageview');
+
+</script>
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-nav-search" style="background-color: #3d3d3d;">
+        <!--<a href="index.html" class="icon icon-home"> FlatCAM</a>-->
+        <!--<a href="http://flatcam.org" class="icon icon-home"> FlatCAM</a>-->
+        <a href="http://flatcam.org">
+            <img src="http://flatcam.org/static/images/fcweblogo1.png"
+                    style="height: auto;
+                    width: auto;
+                    border-radius: 0px;
+                    background-color: #3d3d3d;
+                    margin: auto">
+        </a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+        
+        
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li>
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#windows-installer">Windows Installer</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#ubuntu">Ubuntu</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#manual-installation">Manual Installation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="basics.html">Basics</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#source-files">Source Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#objects-and-tasks">Objects and Tasks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#creating-saving-and-loading-projects">Creating, Saving and Loading Projects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#navigating-plots">Navigating Plots</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="procedures.html">Common Procedures</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#isolation-routing">Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#wide-isolation-routing">Wide Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#cnc-jobs-for-drill-files">CNC Jobs for Drill Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#side-pcb">2-side PCB</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#copper-area-clear">Copper Area Clear</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#board-cutout">Board Cutout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#bed-flattening">Bed Flattening</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="editor.html">Geometry Editor</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#creating-new-geometry-objects">Creating New Geometry Objects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#editing-existing-geometry-objects">Editing Existing Geometry Objects</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="flatcamshell.html">Shell Command Line Interface</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#the-shell-window">The Shell Window</a></li>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#shell-language">Shell Language</a></li>
+</ul>
+</li>
+<li class="toctree-l1 current"><a class="current reference internal" href="">Shell Command Reference</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#add-circle">add_circle</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#add-poly">add_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#add-rect">add_rect</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#cncjob">cncjob</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#delete">delete</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#follow">follow</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#geo-union">geo_union</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#get-names">get_names</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#help">help</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#isolate">isolate</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#make-docs">make_docs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#new">new</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#new-geometry">new_geometry</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#offset">offset</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#open-excellon">open_excellon</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#open-gcode">open_gcode</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#open-gerber">open_gerber</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#open-project">open_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#options">options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#paint-poly">paint_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#plot">plot</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#save-project">save_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#scale">scale</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#set-active">set_active</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#write-gcode">write_gcode</a></li>
+</ul>
+</li>
+</ul>
+
+        
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="icon icon-reorder"></i>
+        <a href="index.html">FlatCAM</a>
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="index.html">Docs</a> &raquo;</li>
+      
+    <li>Shell Command Reference</li>
+      <li class="wy-breadcrumbs-aside">
+        
+          <a href="_sources/cmdreference.txt" rel="nofollow"> View page source</a>
+        
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            
+  <div class="section" id="shell-command-reference">
+<span id="cmdreference"></span><h1>Shell Command Reference<a class="headerlink" href="#shell-command-reference" title="Permalink to this headline">¶</a></h1>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">The FlatCAM Shell is under development and its behavior might change in the future. This includes available commands and their syntax.</p>
+</div>
+<div class="section" id="add-circle">
+<span id="id1"></span><h2>add_circle<a class="headerlink" href="#add-circle" title="Permalink to this headline">¶</a></h2>
+<p>Creates a circle in the given Geometry object.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; add_circle &lt;name&gt; &lt;center_x&gt; &lt;center_y&gt; &lt;radius&gt;</dt>
+<dd><p class="first">name: Name of the geometry object to which to append the circle.</p>
+<p>center_x, center_y: Coordinates of the center of the circle.</p>
+<p class="last">radius: Radius of the circle.</p>
+</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="add-poly">
+<span id="id2"></span><h2>add_poly<a class="headerlink" href="#add-poly" title="Permalink to this headline">¶</a></h2>
+<p>Creates a polygon in the given Geometry object.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; create_poly &lt;name&gt; &lt;x0&gt; &lt;y0&gt; &lt;x1&gt; &lt;y1&gt; &lt;x2&gt; &lt;y2&gt; [x3 y3 [...]]</dt>
+<dd><p class="first">name: Name of the geometry object to which to append the polygon.</p>
+<p class="last">xi, yi: Coordinates of points in the polygon.</p>
+</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="add-rect">
+<span id="id3"></span><h2>add_rect<a class="headerlink" href="#add-rect" title="Permalink to this headline">¶</a></h2>
+<p>Creates a rectange in the given Geometry object.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; add_rect &lt;name&gt; &lt;botleft_x&gt; &lt;botleft_y&gt; &lt;topright_x&gt; &lt;topright_y&gt;</dt>
+<dd><p class="first">name: Name of the geometry object to which to append the rectangle.</p>
+<p>botleft_x, botleft_y: Coordinates of the bottom left corner.</p>
+<p class="last">topright_x, topright_y Coordinates of the top right corner.</p>
+</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="cncjob">
+<h2>cncjob<a class="headerlink" href="#cncjob" title="Permalink to this headline">¶</a></h2>
+<p>Generates a CNC Job from a Geometry Object.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; cncjob &lt;name&gt; [-z_cut &lt;c&gt;] [-z_move &lt;m&gt;] [-feedrate &lt;f&gt;] [-tooldia &lt;t&gt;] [-outname &lt;n&gt;]</dt>
+<dd><p class="first">name: Name of the source object</p>
+<p>z_cut: Z-axis cutting position</p>
+<p>z_move: Z-axis moving position</p>
+<p>feedrate: Moving speed when cutting</p>
+<p>tooldia: Tool diameter to show on screen</p>
+<p class="last">outname: Name of the output object</p>
+</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="delete">
+<h2>delete<a class="headerlink" href="#delete" title="Permalink to this headline">¶</a></h2>
+<p>Deletes the give object.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; delete &lt;name&gt;</dt>
+<dd>name: Name of the object to delete.</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="follow">
+<h2>follow<a class="headerlink" href="#follow" title="Permalink to this headline">¶</a></h2>
+<p>Creates a geometry object following gerber paths.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; follow &lt;name&gt; [-outname &lt;oname&gt;]</dt>
+<dd><p class="first">name: Name of the gerber object.</p>
+<p class="last">outname: Name of the output geometry object.</p>
+</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="geo-union">
+<span id="id4"></span><h2>geo_union<a class="headerlink" href="#geo-union" title="Permalink to this headline">¶</a></h2>
+<p>Runs a union operation (addition) on the components of the geometry object. For example, if it contains 2 intersecting polygons, this opperation adds them intoa single larger polygon.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; geo_union &lt;name&gt;</dt>
+<dd>name: Name of the geometry object.</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="get-names">
+<h2>get_names<a class="headerlink" href="#get-names" title="Permalink to this headline">¶</a></h2>
+<p>Lists the names of objects in the project.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; get_names</dt>
+<dd>No parameters.</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="help">
+<h2>help<a class="headerlink" href="#help" title="Permalink to this headline">¶</a></h2>
+<p>Shows list of commands.</p>
+</div>
+<div class="section" id="isolate">
+<h2>isolate<a class="headerlink" href="#isolate" title="Permalink to this headline">¶</a></h2>
+<p>Creates isolation routing geometry for the given Gerber.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; isolate &lt;name&gt; [-dia &lt;d&gt;] [-passes &lt;p&gt;] [-overlap &lt;o&gt;]</dt>
+<dd><p class="first">name: Name of the object</p>
+<p>dia: Tool diameter</p>
+<p>passes: # of tool width</p>
+<p class="last">overlap: Fraction of tool diameter to overlap passes</p>
+</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="make-docs">
+<h2>make_docs<a class="headerlink" href="#make-docs" title="Permalink to this headline">¶</a></h2>
+<p>Prints command rererence in reStructuredText format.</p>
+</div>
+<div class="section" id="new">
+<h2>new<a class="headerlink" href="#new" title="Permalink to this headline">¶</a></h2>
+<p>Starts a new project. Clears objects from memory.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; new</dt>
+<dd>No parameters.</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="new-geometry">
+<span id="id5"></span><h2>new_geometry<a class="headerlink" href="#new-geometry" title="Permalink to this headline">¶</a></h2>
+<p>Creates a new empty geometry object.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; new_geometry &lt;name&gt;</dt>
+<dd>name: New object name</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="offset">
+<span id="id6"></span><h2>offset<a class="headerlink" href="#offset" title="Permalink to this headline">¶</a></h2>
+<p>Changes the position of the object.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; offset &lt;name&gt; &lt;x&gt; &lt;y&gt;</dt>
+<dd><p class="first">name: Name of the object</p>
+<p>x: X-axis distance</p>
+<p class="last">y: Y-axis distance</p>
+</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="open-excellon">
+<h2>open_excellon<a class="headerlink" href="#open-excellon" title="Permalink to this headline">¶</a></h2>
+<p>Opens an Excellon file.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; open_excellon &lt;filename&gt; [-outname &lt;o&gt;]</dt>
+<dd><p class="first">filename: Path to file to open.</p>
+<p class="last">outname: Name of the created excellon object.</p>
+</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="open-gcode">
+<h2>open_gcode<a class="headerlink" href="#open-gcode" title="Permalink to this headline">¶</a></h2>
+<p>Opens an G-Code file.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; open_gcode &lt;filename&gt; [-outname &lt;o&gt;]</dt>
+<dd><p class="first">filename: Path to file to open.</p>
+<p class="last">outname: Name of the created CNC Job object.</p>
+</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="open-gerber">
+<h2>open_gerber<a class="headerlink" href="#open-gerber" title="Permalink to this headline">¶</a></h2>
+<p>Opens a Gerber file.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; open_gerber &lt;filename&gt; [-follow &lt;0|1&gt;] [-outname &lt;o&gt;]</dt>
+<dd><p class="first">filename: Path to file to open.</p>
+<p>follow: If 1, does not create polygons, just follows the gerber path.</p>
+<p class="last">outname: Name of the created gerber object.</p>
+</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="open-project">
+<h2>open_project<a class="headerlink" href="#open-project" title="Permalink to this headline">¶</a></h2>
+<p>Opens a FlatCAM project.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; open_project &lt;filename&gt;</dt>
+<dd>filename: Path to file to open.</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="options">
+<h2>options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<p>Shows the settings for an object.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; options &lt;name&gt;</dt>
+<dd>name: Object name.</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="paint-poly">
+<h2>paint_poly<a class="headerlink" href="#paint-poly" title="Permalink to this headline">¶</a></h2>
+<p>Creates a geometry object with toolpath to cover the inside of a polygon.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; paint_poly &lt;name&gt; &lt;inside_pt_x&gt; &lt;inside_pt_y&gt; &lt;tooldia&gt; &lt;overlap&gt;</dt>
+<dd><p class="first">name: Name of the sourge geometry object.</p>
+<p>inside_pt_x, inside_pt_y: Coordinates of a point inside the polygon.</p>
+<p>tooldia: Diameter of the tool to be used.</p>
+<p class="last">overlap: Fraction of the tool diameter to overlap cuts.</p>
+</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="plot">
+<h2>plot<a class="headerlink" href="#plot" title="Permalink to this headline">¶</a></h2>
+<p>Updates the plot on the user interface</p>
+</div>
+<div class="section" id="save-project">
+<h2>save_project<a class="headerlink" href="#save-project" title="Permalink to this headline">¶</a></h2>
+<p>Saves the FlatCAM project to file.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; save_project &lt;filename&gt;</dt>
+<dd>filename: Path to file to save.</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="scale">
+<span id="id7"></span><h2>scale<a class="headerlink" href="#scale" title="Permalink to this headline">¶</a></h2>
+<p>Resizes the object by a factor.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; scale &lt;name&gt; &lt;factor&gt;</dt>
+<dd><p class="first">name: Name of the object</p>
+<p class="last">factor: Fraction by which to scale</p>
+</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="set-active">
+<h2>set_active<a class="headerlink" href="#set-active" title="Permalink to this headline">¶</a></h2>
+<p>Sets a FlatCAM object as active.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; set_active &lt;name&gt;</dt>
+<dd>name: Name of the object.</dd>
+</dl>
+</div></blockquote>
+</div>
+<div class="section" id="write-gcode">
+<h2>write_gcode<a class="headerlink" href="#write-gcode" title="Permalink to this headline">¶</a></h2>
+<p>Saves G-code of a CNC Job object to file.</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>&gt; write_gcode &lt;name&gt; &lt;filename&gt;</dt>
+<dd><p class="first">name: Source CNC Job object</p>
+<p class="last">filename: Output filename</p>
+</dd>
+</dl>
+</div></blockquote>
+</div>
+</div>
+
+
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+      
+        <a href="flatcamshell.html" class="btn btn-neutral" title="Shell Command Line Interface"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2014, Juan Pablo Caram.
+    </p>
+  </div>
+
+  <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+</body>
+</html>

+ 346 - 0
manual/_build/editor.html

@@ -0,0 +1,346 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Geometry Editor &mdash; FlatCAM 7 documentation</title>
+  
+
+  
+  
+
+  
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  
+  
+
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:'./',
+        VERSION:'7',
+        COLLAPSE_INDEX:false,
+        FILE_SUFFIX:'.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+      <script type="text/javascript" src="_static/jquery.js"></script>
+      <script type="text/javascript" src="_static/underscore.js"></script>
+      <script type="text/javascript" src="_static/doctools.js"></script>
+      <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+  
+
+  
+  
+    <script type="text/javascript">
+        jQuery(function () {
+            SphinxRtdTheme.StickyNav.enable();
+        });
+    </script>
+  
+
+  
+    <link rel="top" title="FlatCAM 7 documentation" href="index.html"/>
+        <link rel="next" title="Shell Command Line Interface" href="flatcamshell.html"/>
+        <link rel="prev" title="Common Procedures" href="procedures.html"/> 
+
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55008703-1', 'auto');
+  ga('send', 'pageview');
+
+</script>
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-nav-search" style="background-color: #3d3d3d;">
+        <!--<a href="index.html" class="icon icon-home"> FlatCAM</a>-->
+        <!--<a href="http://flatcam.org" class="icon icon-home"> FlatCAM</a>-->
+        <a href="http://flatcam.org">
+            <img src="http://flatcam.org/static/images/fcweblogo1.png"
+                    style="height: auto;
+                    width: auto;
+                    border-radius: 0px;
+                    background-color: #3d3d3d;
+                    margin: auto">
+        </a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+        
+        
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li>
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#windows-installer">Windows Installer</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#ubuntu">Ubuntu</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#manual-installation">Manual Installation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="basics.html">Basics</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#source-files">Source Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#objects-and-tasks">Objects and Tasks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#creating-saving-and-loading-projects">Creating, Saving and Loading Projects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#navigating-plots">Navigating Plots</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="procedures.html">Common Procedures</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#isolation-routing">Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#wide-isolation-routing">Wide Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#cnc-jobs-for-drill-files">CNC Jobs for Drill Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#side-pcb">2-side PCB</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#copper-area-clear">Copper Area Clear</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#board-cutout">Board Cutout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#bed-flattening">Bed Flattening</a></li>
+</ul>
+</li>
+<li class="toctree-l1 current"><a class="current reference internal" href="">Geometry Editor</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#creating-new-geometry-objects">Creating New Geometry Objects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#editing-existing-geometry-objects">Editing Existing Geometry Objects</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="flatcamshell.html">Shell Command Line Interface</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#the-shell-window">The Shell Window</a></li>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#shell-language">Shell Language</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="cmdreference.html">Shell Command Reference</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-circle">add_circle</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-poly">add_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-rect">add_rect</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#cncjob">cncjob</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#delete">delete</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#follow">follow</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#geo-union">geo_union</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#get-names">get_names</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#help">help</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#isolate">isolate</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#make-docs">make_docs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new">new</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new-geometry">new_geometry</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#offset">offset</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-excellon">open_excellon</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gcode">open_gcode</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gerber">open_gerber</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-project">open_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#options">options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#paint-poly">paint_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#plot">plot</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#save-project">save_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#scale">scale</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#set-active">set_active</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#write-gcode">write_gcode</a></li>
+</ul>
+</li>
+</ul>
+
+        
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="icon icon-reorder"></i>
+        <a href="index.html">FlatCAM</a>
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="index.html">Docs</a> &raquo;</li>
+      
+    <li>Geometry Editor</li>
+      <li class="wy-breadcrumbs-aside">
+        
+          <a href="_sources/editor.txt" rel="nofollow"> View page source</a>
+        
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            
+  <div class="section" id="geometry-editor">
+<h1>Geometry Editor<a class="headerlink" href="#geometry-editor" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="introduction">
+<h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2>
+<p>The Geometry Editor is a drawing CAD that allows you to edit
+FlatCAM Geometry Objects or create new ones from scratch. This
+provides the ultimate flexibility by letting you specify precisely
+and arbitrarily what you want your CNC router to do.</p>
+</div>
+<div class="section" id="creating-new-geometry-objects">
+<h2>Creating New Geometry Objects<a class="headerlink" href="#creating-new-geometry-objects" title="Permalink to this headline">¶</a></h2>
+<p>To create a blank Geometry Object, simply click on the menu item
+<strong>Edit→New Geometry Object</strong> or click the <strong>New Blank Geometry</strong> button on
+the toolbar. A Geometry object with the name &#8220;New Geometry&#8221; will
+be added to your project list.</p>
+<img alt="_images/editor1.png" class="align-center" src="_images/editor1.png" />
+<div class="admonition seealso">
+<p class="first admonition-title">See also</p>
+<p class="last">FlatCAM Shell command <a class="reference internal" href="cmdreference.html#new-geometry"><em>new_geometry</em></a></p>
+</div>
+</div>
+<div class="section" id="editing-existing-geometry-objects">
+<h2>Editing Existing Geometry Objects<a class="headerlink" href="#editing-existing-geometry-objects" title="Permalink to this headline">¶</a></h2>
+<p>To edit a Geometry Object, select it from the project list and
+click on the menu item <strong>Edit→Edit Geometry</strong> or on the <strong>Edit Geometry</strong>
+toolbar button.</p>
+<p>This will make a copy of the selected object in the editor and
+the editor toolbar buttons will become active.</p>
+<p>Changes made to the geometry in the editor will not affect the
+Geometry Object until the <strong>Edit-&gt;Update Geometry</strong> button or
+<strong>Update Geometry</strong> toolbar button is clicked.
+This replaces the geometry in the currently selected Geometry
+Object (which can be different from which the editor copied its
+contents originally) with the geometry in the editor.</p>
+<div class="section" id="selecting-shapes">
+<h3>Selecting Shapes<a class="headerlink" href="#selecting-shapes" title="Permalink to this headline">¶</a></h3>
+<p>When the <strong>Selection Tool</strong> is active in the toolbar (Hit <tt class="docutils literal"><span class="pre">Esc</span></tt>), clicking on the
+plot will select the nearest shape. If one shape is inside the other,
+you might need to move the outer one to get to the inner one. This
+behavior might be improved in the future.</p>
+<p>Holding the <tt class="docutils literal"><span class="pre">Control</span></tt> key while clicking will add the nearest shape
+to the set of selected objects.</p>
+</div>
+<div class="section" id="creating-shapes">
+<h3>Creating Shapes<a class="headerlink" href="#creating-shapes" title="Permalink to this headline">¶</a></h3>
+<p>The shape creation tools in the editor are:</p>
+<ul class="simple">
+<li>Circle</li>
+<li>Rectangle</li>
+<li>Polygon</li>
+<li>Path</li>
+</ul>
+<img alt="_images/editor2.png" class="align-center" src="_images/editor2.png" />
+<p>After clicking on the respective toolbar button, follow the instructions
+on the status bar.</p>
+<p>Shapes that do not require a fixed number of clicks to complete, like
+polygons and paths, are complete by hitting the <tt class="docutils literal"><span class="pre">Space</span></tt> key.</p>
+<div class="admonition seealso">
+<p class="first admonition-title">See also</p>
+<p class="last">The FlatCAM Shell commands <a class="reference internal" href="cmdreference.html#add-circle"><em>add_circle</em></a>, <a class="reference internal" href="cmdreference.html#add-poly"><em>add_poly</em></a> and <a class="reference internal" href="cmdreference.html#add-rect"><em>add_rect</em></a>,
+create shapes directly on a given Geometry Object.</p>
+</div>
+</div>
+<div class="section" id="union">
+<h3>Union<a class="headerlink" href="#union" title="Permalink to this headline">¶</a></h3>
+<p>Clicking on the <strong>Union</strong> tool after selecting two or more shapes
+will create a union. For closed shapes, their union is a polygon covering
+the area that all the selected shapes encompassed. Unions of disjoint shapes
+can still be created and is equivalent to grouping shapes.</p>
+<img alt="_images/editor_union.png" class="align-center" src="_images/editor_union.png" />
+<div class="admonition seealso">
+<p class="first admonition-title">See also</p>
+<p class="last">The FlatCAM Shell command <a class="reference internal" href="cmdreference.html#geo-union"><em>geo_union</em></a> executes a union of
+all geometry in a Geometry object.</p>
+</div>
+</div>
+<div class="section" id="moving-and-copying">
+<h3>Moving and Copying<a class="headerlink" href="#moving-and-copying" title="Permalink to this headline">¶</a></h3>
+<p>The <strong>Move</strong> and <strong>Copy</strong> tools work on selected objects. As soon as the tool
+is selected (On the toolbar or the <tt class="docutils literal"><span class="pre">m</span></tt> and <tt class="docutils literal"><span class="pre">c</span></tt> keys) the reference point
+is set at the mouse pointer location. Clicking on the plot sets the target
+location and finalizes the operation. An outline of the shapes is shown
+while moving the mouse.</p>
+<div class="admonition seealso">
+<p class="first admonition-title">See also</p>
+<p class="last">The FlatCAM Shell command <a class="reference internal" href="cmdreference.html#offset"><em>offset</em></a> will move (offset) all
+the geometry in a Geometry Object. This can also be done in
+the <strong>Selected</strong> panel for selected FlatCAM object.</p>
+</div>
+</div>
+<div class="section" id="cancelling-an-operation">
+<h3>Cancelling an operation<a class="headerlink" href="#cancelling-an-operation" title="Permalink to this headline">¶</a></h3>
+<p>Hitting the <tt class="docutils literal"><span class="pre">Esc</span></tt> key cancels whatever tool/operation is active and
+selects the <strong>Selection Tool</strong>.</p>
+</div>
+<div class="section" id="deleting-selected-shapes">
+<h3>Deleting selected shapes<a class="headerlink" href="#deleting-selected-shapes" title="Permalink to this headline">¶</a></h3>
+<p>Selections are deleted by hitting the <tt class="docutils literal"><span class="pre">-</span></tt> sign key.</p>
+</div>
+<div class="section" id="other">
+<h3>Other<a class="headerlink" href="#other" title="Permalink to this headline">¶</a></h3>
+<div class="admonition seealso">
+<p class="first admonition-title">See also</p>
+<p class="last">The FlatCAM Shell command <a class="reference internal" href="cmdreference.html#scale"><em>scale</em></a> changes the size of the
+geometry in a Geometry Object.</p>
+</div>
+</div>
+</div>
+</div>
+
+
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="flatcamshell.html" class="btn btn-neutral float-right" title="Shell Command Line Interface"/>Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="procedures.html" class="btn btn-neutral" title="Common Procedures"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2014, Juan Pablo Caram.
+    </p>
+  </div>
+
+  <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+</body>
+</html>

+ 279 - 0
manual/_build/flatcamshell.html

@@ -0,0 +1,279 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Shell Command Line Interface &mdash; FlatCAM 7 documentation</title>
+  
+
+  
+  
+
+  
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  
+  
+
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:'./',
+        VERSION:'7',
+        COLLAPSE_INDEX:false,
+        FILE_SUFFIX:'.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+      <script type="text/javascript" src="_static/jquery.js"></script>
+      <script type="text/javascript" src="_static/underscore.js"></script>
+      <script type="text/javascript" src="_static/doctools.js"></script>
+      <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+  
+
+  
+  
+    <script type="text/javascript">
+        jQuery(function () {
+            SphinxRtdTheme.StickyNav.enable();
+        });
+    </script>
+  
+
+  
+    <link rel="top" title="FlatCAM 7 documentation" href="index.html"/>
+        <link rel="next" title="Shell Command Reference" href="cmdreference.html"/>
+        <link rel="prev" title="Geometry Editor" href="editor.html"/> 
+
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55008703-1', 'auto');
+  ga('send', 'pageview');
+
+</script>
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-nav-search" style="background-color: #3d3d3d;">
+        <!--<a href="index.html" class="icon icon-home"> FlatCAM</a>-->
+        <!--<a href="http://flatcam.org" class="icon icon-home"> FlatCAM</a>-->
+        <a href="http://flatcam.org">
+            <img src="http://flatcam.org/static/images/fcweblogo1.png"
+                    style="height: auto;
+                    width: auto;
+                    border-radius: 0px;
+                    background-color: #3d3d3d;
+                    margin: auto">
+        </a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+        
+        
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li>
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#windows-installer">Windows Installer</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#ubuntu">Ubuntu</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#manual-installation">Manual Installation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="basics.html">Basics</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#source-files">Source Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#objects-and-tasks">Objects and Tasks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#creating-saving-and-loading-projects">Creating, Saving and Loading Projects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#navigating-plots">Navigating Plots</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="procedures.html">Common Procedures</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#isolation-routing">Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#wide-isolation-routing">Wide Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#cnc-jobs-for-drill-files">CNC Jobs for Drill Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#side-pcb">2-side PCB</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#copper-area-clear">Copper Area Clear</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#board-cutout">Board Cutout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#bed-flattening">Bed Flattening</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="editor.html">Geometry Editor</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#creating-new-geometry-objects">Creating New Geometry Objects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#editing-existing-geometry-objects">Editing Existing Geometry Objects</a></li>
+</ul>
+</li>
+<li class="toctree-l1 current"><a class="current reference internal" href="">Shell Command Line Interface</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#the-shell-window">The Shell Window</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#shell-language">Shell Language</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="cmdreference.html">Shell Command Reference</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-circle">add_circle</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-poly">add_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-rect">add_rect</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#cncjob">cncjob</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#delete">delete</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#follow">follow</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#geo-union">geo_union</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#get-names">get_names</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#help">help</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#isolate">isolate</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#make-docs">make_docs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new">new</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new-geometry">new_geometry</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#offset">offset</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-excellon">open_excellon</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gcode">open_gcode</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gerber">open_gerber</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-project">open_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#options">options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#paint-poly">paint_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#plot">plot</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#save-project">save_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#scale">scale</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#set-active">set_active</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#write-gcode">write_gcode</a></li>
+</ul>
+</li>
+</ul>
+
+        
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="icon icon-reorder"></i>
+        <a href="index.html">FlatCAM</a>
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="index.html">Docs</a> &raquo;</li>
+      
+    <li>Shell Command Line Interface</li>
+      <li class="wy-breadcrumbs-aside">
+        
+          <a href="_sources/flatcamshell.txt" rel="nofollow"> View page source</a>
+        
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            
+  <div class="section" id="shell-command-line-interface">
+<h1>Shell Command Line Interface<a class="headerlink" href="#shell-command-line-interface" title="Permalink to this headline">¶</a></h1>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">The FlatCAM Shell is under development and its behavior might change in the future. This includes available commands and their syntax.</p>
+</div>
+<p>The FlatCAM Shell provides a command line interface to FlatCAM&#8217;s functionalies and to the TCL language. It serves the following purposes:</p>
+<ul class="simple">
+<li>An alternative the GUI for issuing commands and visualizing data output.</li>
+<li>Scripting interface for automating large sequences of commands.</li>
+<li>A mechanism for the user to implement new functionality.</li>
+<li>A mechanism to provide detailed information to the user.</li>
+<li>Keep a record of commands and responses.</li>
+</ul>
+<div class="section" id="the-shell-window">
+<h2>The Shell Window<a class="headerlink" href="#the-shell-window" title="Permalink to this headline">¶</a></h2>
+<img alt="_images/shell.png" class="align-center" src="_images/shell.png" />
+<p>The FlatCAM Shell window is shown at startup when FlatCAM loads. It can be closed and re-opened at any time without loss of data by clicking on the close button on the top right edge of the window and selecting <strong>Tool→Command Line</strong> from the main menu respectively.</p>
+<p>It is divided into 2 sections, an output section on the top and an input section on the bottom. A record of previously issued commands is shown in the output section along with their results and other information that FlatCAM might provide. Distinction between types of data in the output section is done by color coding.</p>
+<p>To issue a command, type it in the input section and hit <tt class="docutils literal"><span class="pre">Enter</span></tt>. If the command consists of multiple lines, use <tt class="docutils literal"><span class="pre">Shift-Enter</span></tt> to insert a new line without issuing the command.</p>
+</div>
+<div class="section" id="shell-language">
+<h2>Shell Language<a class="headerlink" href="#shell-language" title="Permalink to this headline">¶</a></h2>
+<p>The Shell uses the <a class="reference external" href="https://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html">TCL</a> language. TCL provides the simples posible syntax and requires no learning at all for isuing the basic FlatCAM commands. Nonetheless, TCL is a powerfull language that enables the users to create their own complex functionality if desired.</p>
+<p>Issuing a command is as simple as typing its name and hitting the <tt class="docutils literal"><span class="pre">Enter</span></tt> key. For example:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">new</span>
+</pre></div>
+</div>
+<p>This the same as clicking on <strong>File→New</strong> in the main window menu.</p>
+<p>If a command requires additional information, it is given immediately after the command name and a space. For example, to open the gerber file <tt class="docutils literal"><span class="pre">mygerber.gbr</span></tt>:</p>
+<div class="highlight-python"><pre>open_gerber mygerber.gbr</pre>
+</div>
+<p>Sometimes a command will have optional parameters, this is, if you provide it it will use it, otherwise it will use some default value. For example:</p>
+<div class="highlight-python"><pre>isolate mygerber.gbr -tooldia 0.04</pre>
+</div>
+<p>This would create isolation routing geometry for the <tt class="docutils literal"><span class="pre">mygerber.gbr</span></tt> gerber object with a tool diameter of 0.04 inches (or mm, depending on the project settings). Otherwise, if you run:</p>
+<div class="highlight-python"><pre>isolate mygerber.gbr</pre>
+</div>
+<p>The same action will be performed but the tool diameter will be taken from the default value set for that object (If it is a new object, its default values will be set from the project options.)</p>
+<p>For complete reference of FlatCAM Shell commands, see <a class="reference internal" href="cmdreference.html#cmdreference"><em>Shell Command Reference</em></a>.</p>
+</div>
+</div>
+
+
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="cmdreference.html" class="btn btn-neutral float-right" title="Shell Command Reference"/>Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="editor.html" class="btn btn-neutral" title="Geometry Editor"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2014, Juan Pablo Caram.
+    </p>
+  </div>
+
+  <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+</body>
+</html>

+ 231 - 0
manual/_build/genindex.html

@@ -0,0 +1,231 @@
+
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Index &mdash; FlatCAM 7 documentation</title>
+  
+
+  
+  
+
+  
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  
+  
+
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:'./',
+        VERSION:'7',
+        COLLAPSE_INDEX:false,
+        FILE_SUFFIX:'.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+      <script type="text/javascript" src="_static/jquery.js"></script>
+      <script type="text/javascript" src="_static/underscore.js"></script>
+      <script type="text/javascript" src="_static/doctools.js"></script>
+      <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+  
+
+  
+  
+    <script type="text/javascript">
+        jQuery(function () {
+            SphinxRtdTheme.StickyNav.enable();
+        });
+    </script>
+  
+
+  
+    <link rel="top" title="FlatCAM 7 documentation" href="index.html"/> 
+
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55008703-1', 'auto');
+  ga('send', 'pageview');
+
+</script>
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-nav-search" style="background-color: #3d3d3d;">
+        <!--<a href="index.html" class="icon icon-home"> FlatCAM</a>-->
+        <!--<a href="http://flatcam.org" class="icon icon-home"> FlatCAM</a>-->
+        <a href="http://flatcam.org">
+            <img src="http://flatcam.org/static/images/fcweblogo1.png"
+                    style="height: auto;
+                    width: auto;
+                    border-radius: 0px;
+                    background-color: #3d3d3d;
+                    margin: auto">
+        </a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+        
+        
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li>
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#windows-installer">Windows Installer</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#ubuntu">Ubuntu</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#manual-installation">Manual Installation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="basics.html">Basics</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#source-files">Source Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#objects-and-tasks">Objects and Tasks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#creating-saving-and-loading-projects">Creating, Saving and Loading Projects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#navigating-plots">Navigating Plots</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="procedures.html">Common Procedures</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#isolation-routing">Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#wide-isolation-routing">Wide Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#cnc-jobs-for-drill-files">CNC Jobs for Drill Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#side-pcb">2-side PCB</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#copper-area-clear">Copper Area Clear</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#board-cutout">Board Cutout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#bed-flattening">Bed Flattening</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="editor.html">Geometry Editor</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#creating-new-geometry-objects">Creating New Geometry Objects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#editing-existing-geometry-objects">Editing Existing Geometry Objects</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="flatcamshell.html">Shell Command Line Interface</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#the-shell-window">The Shell Window</a></li>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#shell-language">Shell Language</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="cmdreference.html">Shell Command Reference</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-circle">add_circle</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-poly">add_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-rect">add_rect</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#cncjob">cncjob</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#delete">delete</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#follow">follow</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#geo-union">geo_union</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#get-names">get_names</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#help">help</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#isolate">isolate</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#make-docs">make_docs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new">new</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new-geometry">new_geometry</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#offset">offset</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-excellon">open_excellon</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gcode">open_gcode</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gerber">open_gerber</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-project">open_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#options">options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#paint-poly">paint_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#plot">plot</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#save-project">save_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#scale">scale</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#set-active">set_active</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#write-gcode">write_gcode</a></li>
+</ul>
+</li>
+</ul>
+
+        
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="icon icon-reorder"></i>
+        <a href="index.html">FlatCAM</a>
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="index.html">Docs</a> &raquo;</li>
+      
+    <li></li>
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            
+
+<h1 id="index">Index</h1>
+
+<div class="genindex-jumpbox">
+ 
+</div>
+
+
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2014, Juan Pablo Caram.
+    </p>
+  </div>
+
+  <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+</body>
+</html>

+ 313 - 0
manual/_build/index.html

@@ -0,0 +1,313 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Welcome to FlatCAM’s documentation! &mdash; FlatCAM 7 documentation</title>
+  
+
+  
+  
+
+  
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  
+  
+
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:'./',
+        VERSION:'7',
+        COLLAPSE_INDEX:false,
+        FILE_SUFFIX:'.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+      <script type="text/javascript" src="_static/jquery.js"></script>
+      <script type="text/javascript" src="_static/underscore.js"></script>
+      <script type="text/javascript" src="_static/doctools.js"></script>
+      <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+  
+
+  
+  
+    <script type="text/javascript">
+        jQuery(function () {
+            SphinxRtdTheme.StickyNav.enable();
+        });
+    </script>
+  
+
+  
+    <link rel="top" title="FlatCAM 7 documentation" href="#"/>
+        <link rel="next" title="Introduction" href="introduction.html"/> 
+
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55008703-1', 'auto');
+  ga('send', 'pageview');
+
+</script>
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-nav-search" style="background-color: #3d3d3d;">
+        <!--<a href="#" class="icon icon-home"> FlatCAM</a>-->
+        <!--<a href="http://flatcam.org" class="icon icon-home"> FlatCAM</a>-->
+        <a href="http://flatcam.org">
+            <img src="http://flatcam.org/static/images/fcweblogo1.png"
+                    style="height: auto;
+                    width: auto;
+                    border-radius: 0px;
+                    background-color: #3d3d3d;
+                    margin: auto">
+        </a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+        
+        
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li>
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#windows-installer">Windows Installer</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#ubuntu">Ubuntu</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#manual-installation">Manual Installation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="basics.html">Basics</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#source-files">Source Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#objects-and-tasks">Objects and Tasks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#creating-saving-and-loading-projects">Creating, Saving and Loading Projects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#navigating-plots">Navigating Plots</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="procedures.html">Common Procedures</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#isolation-routing">Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#wide-isolation-routing">Wide Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#cnc-jobs-for-drill-files">CNC Jobs for Drill Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#side-pcb">2-side PCB</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#copper-area-clear">Copper Area Clear</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#board-cutout">Board Cutout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#bed-flattening">Bed Flattening</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="editor.html">Geometry Editor</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#creating-new-geometry-objects">Creating New Geometry Objects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#editing-existing-geometry-objects">Editing Existing Geometry Objects</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="flatcamshell.html">Shell Command Line Interface</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#the-shell-window">The Shell Window</a></li>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#shell-language">Shell Language</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="cmdreference.html">Shell Command Reference</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-circle">add_circle</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-poly">add_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-rect">add_rect</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#cncjob">cncjob</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#delete">delete</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#follow">follow</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#geo-union">geo_union</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#get-names">get_names</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#help">help</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#isolate">isolate</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#make-docs">make_docs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new">new</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new-geometry">new_geometry</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#offset">offset</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-excellon">open_excellon</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gcode">open_gcode</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gerber">open_gerber</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-project">open_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#options">options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#paint-poly">paint_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#plot">plot</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#save-project">save_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#scale">scale</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#set-active">set_active</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#write-gcode">write_gcode</a></li>
+</ul>
+</li>
+</ul>
+
+        
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="icon icon-reorder"></i>
+        <a href="#">FlatCAM</a>
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="#">Docs</a> &raquo;</li>
+      
+    <li>Welcome to FlatCAM&#8217;s documentation!</li>
+      <li class="wy-breadcrumbs-aside">
+        
+          <a href="_sources/index.txt" rel="nofollow"> View page source</a>
+        
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            
+  <div class="section" id="welcome-to-flatcam-s-documentation">
+<h1>Welcome to FlatCAM&#8217;s documentation!<a class="headerlink" href="#welcome-to-flatcam-s-documentation" title="Permalink to this headline">¶</a></h1>
+<p>Contents:</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li>
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#windows-installer">Windows Installer</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#ubuntu">Ubuntu</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#manual-installation">Manual Installation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="basics.html">Basics</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#source-files">Source Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#objects-and-tasks">Objects and Tasks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#creating-saving-and-loading-projects">Creating, Saving and Loading Projects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#navigating-plots">Navigating Plots</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="procedures.html">Common Procedures</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#isolation-routing">Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#wide-isolation-routing">Wide Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#cnc-jobs-for-drill-files">CNC Jobs for Drill Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#side-pcb">2-side PCB</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#copper-area-clear">Copper Area Clear</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#board-cutout">Board Cutout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#bed-flattening">Bed Flattening</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="editor.html">Geometry Editor</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#creating-new-geometry-objects">Creating New Geometry Objects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#editing-existing-geometry-objects">Editing Existing Geometry Objects</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="flatcamshell.html">Shell Command Line Interface</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#the-shell-window">The Shell Window</a></li>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#shell-language">Shell Language</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="cmdreference.html">Shell Command Reference</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-circle">add_circle</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-poly">add_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-rect">add_rect</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#cncjob">cncjob</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#delete">delete</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#follow">follow</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#geo-union">geo_union</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#get-names">get_names</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#help">help</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#isolate">isolate</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#make-docs">make_docs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new">new</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new-geometry">new_geometry</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#offset">offset</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-excellon">open_excellon</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gcode">open_gcode</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gerber">open_gerber</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-project">open_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#options">options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#paint-poly">paint_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#plot">plot</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#save-project">save_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#scale">scale</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#set-active">set_active</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#write-gcode">write_gcode</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="indices-and-tables">
+<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
+<ul class="simple">
+<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
+<li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li>
+<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
+</ul>
+</div>
+
+
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="introduction.html" class="btn btn-neutral float-right" title="Introduction"/>Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2014, Juan Pablo Caram.
+    </p>
+  </div>
+
+  <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+</body>
+</html>

+ 277 - 0
manual/_build/installation.html

@@ -0,0 +1,277 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Installation &mdash; FlatCAM 7 documentation</title>
+  
+
+  
+  
+
+  
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  
+  
+
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:'./',
+        VERSION:'7',
+        COLLAPSE_INDEX:false,
+        FILE_SUFFIX:'.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+      <script type="text/javascript" src="_static/jquery.js"></script>
+      <script type="text/javascript" src="_static/underscore.js"></script>
+      <script type="text/javascript" src="_static/doctools.js"></script>
+      <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+  
+
+  
+  
+    <script type="text/javascript">
+        jQuery(function () {
+            SphinxRtdTheme.StickyNav.enable();
+        });
+    </script>
+  
+
+  
+    <link rel="top" title="FlatCAM 7 documentation" href="index.html"/>
+        <link rel="next" title="Basics" href="basics.html"/>
+        <link rel="prev" title="Introduction" href="introduction.html"/> 
+
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55008703-1', 'auto');
+  ga('send', 'pageview');
+
+</script>
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-nav-search" style="background-color: #3d3d3d;">
+        <!--<a href="index.html" class="icon icon-home"> FlatCAM</a>-->
+        <!--<a href="http://flatcam.org" class="icon icon-home"> FlatCAM</a>-->
+        <a href="http://flatcam.org">
+            <img src="http://flatcam.org/static/images/fcweblogo1.png"
+                    style="height: auto;
+                    width: auto;
+                    border-radius: 0px;
+                    background-color: #3d3d3d;
+                    margin: auto">
+        </a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+        
+        
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="">Installation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#windows-installer">Windows Installer</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#ubuntu">Ubuntu</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#manual-installation">Manual Installation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="basics.html">Basics</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#source-files">Source Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#objects-and-tasks">Objects and Tasks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#creating-saving-and-loading-projects">Creating, Saving and Loading Projects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#navigating-plots">Navigating Plots</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="procedures.html">Common Procedures</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#isolation-routing">Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#wide-isolation-routing">Wide Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#cnc-jobs-for-drill-files">CNC Jobs for Drill Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#side-pcb">2-side PCB</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#copper-area-clear">Copper Area Clear</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#board-cutout">Board Cutout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#bed-flattening">Bed Flattening</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="editor.html">Geometry Editor</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#creating-new-geometry-objects">Creating New Geometry Objects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#editing-existing-geometry-objects">Editing Existing Geometry Objects</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="flatcamshell.html">Shell Command Line Interface</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#the-shell-window">The Shell Window</a></li>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#shell-language">Shell Language</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="cmdreference.html">Shell Command Reference</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-circle">add_circle</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-poly">add_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-rect">add_rect</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#cncjob">cncjob</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#delete">delete</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#follow">follow</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#geo-union">geo_union</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#get-names">get_names</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#help">help</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#isolate">isolate</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#make-docs">make_docs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new">new</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new-geometry">new_geometry</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#offset">offset</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-excellon">open_excellon</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gcode">open_gcode</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gerber">open_gerber</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-project">open_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#options">options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#paint-poly">paint_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#plot">plot</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#save-project">save_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#scale">scale</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#set-active">set_active</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#write-gcode">write_gcode</a></li>
+</ul>
+</li>
+</ul>
+
+        
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="icon icon-reorder"></i>
+        <a href="index.html">FlatCAM</a>
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="index.html">Docs</a> &raquo;</li>
+      
+    <li>Installation</li>
+      <li class="wy-breadcrumbs-aside">
+        
+          <a href="_sources/installation.txt" rel="nofollow"> View page source</a>
+        
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            
+  <div class="section" id="installation">
+<h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="windows-installer">
+<h2>Windows Installer<a class="headerlink" href="#windows-installer" title="Permalink to this headline">¶</a></h2>
+<p>Download the installer from the <a class="reference external" href="https://bitbucket.org/jpcgt/flatcam/downloads">repository</a> and run it in your machine. It includes everything you need.</p>
+</div>
+<div class="section" id="ubuntu">
+<h2>Ubuntu<a class="headerlink" href="#ubuntu" title="Permalink to this headline">¶</a></h2>
+<p>FlatCAM should work on most Linux distributions but Ubuntu has been chosen as the test platform.</p>
+<p>There are several dependencies required to run FlatCAM. These are listed in the following section. Before attempting a manual installation, try running the provided setup script <tt class="docutils literal"><span class="pre">setup_ubuntu.sh</span></tt> that will download and install required packages.</p>
+</div>
+<div class="section" id="manual-installation">
+<h2>Manual Installation<a class="headerlink" href="#manual-installation" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="requirements">
+<h3>Requirements<a class="headerlink" href="#requirements" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>Python 2.7 32-bit</li>
+<li>PyQt 4</li>
+<li>Matplotlib 1.3.1</li>
+<li>Numpy 1.8</li>
+<li><a class="reference external" href="https://pypi.python.org/pypi/Shapely">Shapely 1.3</a></li>
+</ul>
+<p>These packages might have their own dependencies.</p>
+</div>
+<div class="section" id="linux">
+<h3>Linux<a class="headerlink" href="#linux" title="Permalink to this headline">¶</a></h3>
+<p>Under Linux, most modern package installers like <strong>yum</strong> or <strong>apt-get</strong> will attempt to locate and install the whole tree of dependencies for a specified package automatically. Refer to the provided setup script <tt class="docutils literal"><span class="pre">setup_ubuntu.sh</span></tt> for the names and installation order.</p>
+<p>Once the dependencies are installed, download the latest .zip release (or the latest source, although it is not garanteed to work), unpack it, change into the created folder and run:</p>
+<div class="highlight-python"><pre>Python FlatCAM.py</pre>
+</div>
+</div>
+<div class="section" id="windows">
+<h3>Windows<a class="headerlink" href="#windows" title="Permalink to this headline">¶</a></h3>
+<p>An easy way to get the requirements in your system is to install <a class="reference external" href="http://winpython.sourceforge.net/">WinPython</a>. This is a standalone distribution of Python which includes all of FlatCAM&#8217;s dependencies, except for Shapely.</p>
+<p>Once the dependencies are installed, download the latest .zip release (or the latest source, although it is not garanteed to work), unpack it, change into the created folder and run:</p>
+<div class="highlight-python"><pre>Python FlatCAM.py</pre>
+</div>
+</div>
+</div>
+</div>
+
+
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="basics.html" class="btn btn-neutral float-right" title="Basics"/>Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="introduction.html" class="btn btn-neutral" title="Introduction"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2014, Juan Pablo Caram.
+    </p>
+  </div>
+
+  <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+</body>
+</html>

+ 241 - 0
manual/_build/introduction.html

@@ -0,0 +1,241 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Introduction &mdash; FlatCAM 7 documentation</title>
+  
+
+  
+  
+
+  
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  
+  
+
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:'./',
+        VERSION:'7',
+        COLLAPSE_INDEX:false,
+        FILE_SUFFIX:'.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+      <script type="text/javascript" src="_static/jquery.js"></script>
+      <script type="text/javascript" src="_static/underscore.js"></script>
+      <script type="text/javascript" src="_static/doctools.js"></script>
+      <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+  
+
+  
+  
+    <script type="text/javascript">
+        jQuery(function () {
+            SphinxRtdTheme.StickyNav.enable();
+        });
+    </script>
+  
+
+  
+    <link rel="top" title="FlatCAM 7 documentation" href="index.html"/>
+        <link rel="next" title="Installation" href="installation.html"/>
+        <link rel="prev" title="Welcome to FlatCAM’s documentation!" href="index.html"/> 
+
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55008703-1', 'auto');
+  ga('send', 'pageview');
+
+</script>
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-nav-search" style="background-color: #3d3d3d;">
+        <!--<a href="index.html" class="icon icon-home"> FlatCAM</a>-->
+        <!--<a href="http://flatcam.org" class="icon icon-home"> FlatCAM</a>-->
+        <a href="http://flatcam.org">
+            <img src="http://flatcam.org/static/images/fcweblogo1.png"
+                    style="height: auto;
+                    width: auto;
+                    border-radius: 0px;
+                    background-color: #3d3d3d;
+                    margin: auto">
+        </a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+        
+        
+            <ul class="current">
+<li class="toctree-l1 current"><a class="current reference internal" href="">Introduction</a></li>
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#windows-installer">Windows Installer</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#ubuntu">Ubuntu</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#manual-installation">Manual Installation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="basics.html">Basics</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#source-files">Source Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#objects-and-tasks">Objects and Tasks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#creating-saving-and-loading-projects">Creating, Saving and Loading Projects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#navigating-plots">Navigating Plots</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="procedures.html">Common Procedures</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#isolation-routing">Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#wide-isolation-routing">Wide Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#cnc-jobs-for-drill-files">CNC Jobs for Drill Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#side-pcb">2-side PCB</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#copper-area-clear">Copper Area Clear</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#board-cutout">Board Cutout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#bed-flattening">Bed Flattening</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="editor.html">Geometry Editor</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#creating-new-geometry-objects">Creating New Geometry Objects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#editing-existing-geometry-objects">Editing Existing Geometry Objects</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="flatcamshell.html">Shell Command Line Interface</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#the-shell-window">The Shell Window</a></li>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#shell-language">Shell Language</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="cmdreference.html">Shell Command Reference</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-circle">add_circle</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-poly">add_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-rect">add_rect</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#cncjob">cncjob</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#delete">delete</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#follow">follow</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#geo-union">geo_union</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#get-names">get_names</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#help">help</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#isolate">isolate</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#make-docs">make_docs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new">new</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new-geometry">new_geometry</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#offset">offset</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-excellon">open_excellon</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gcode">open_gcode</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gerber">open_gerber</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-project">open_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#options">options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#paint-poly">paint_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#plot">plot</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#save-project">save_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#scale">scale</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#set-active">set_active</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#write-gcode">write_gcode</a></li>
+</ul>
+</li>
+</ul>
+
+        
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="icon icon-reorder"></i>
+        <a href="index.html">FlatCAM</a>
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="index.html">Docs</a> &raquo;</li>
+      
+    <li>Introduction</li>
+      <li class="wy-breadcrumbs-aside">
+        
+          <a href="_sources/introduction.txt" rel="nofollow"> View page source</a>
+        
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            
+  <div class="section" id="introduction">
+<h1>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h1>
+<p>FlatCAM is a program for preparing CNC jobs for making PCBs on a CNC router. Among other things, it can take a Gerber file generated by your favorite PCB CAD program, and create G-Code for Isolation routing.</p>
+</div>
+
+
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="installation.html" class="btn btn-neutral float-right" title="Installation"/>Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="index.html" class="btn btn-neutral" title="Welcome to FlatCAM’s documentation!"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2014, Juan Pablo Caram.
+    </p>
+  </div>
+
+  <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+</body>
+</html>

+ 6 - 0
manual/_build/objects.inv

@@ -0,0 +1,6 @@
+# Sphinx inventory version 2
+# Project: FlatCAM
+# Version: 7
+# The remainder of this file is compressed using zlib.
+xÚ�ÐM
+Â0à}NÐínݺr!ˆ ÄÌ4-䧤)ÚÛ›6©XÒ]˜|CÞ‹"ÛZ¤7ïž´x’æpä*OM0zÇ/Ó™õRhZ;iÐSMž¬¤d÷˜"W
¶u¶„#„�‡‚t#,9ËÕácäH$¼lÖ+i–õ#�›PÄbÕ9=–RE³ƒyE¶^–{OKY³ôªb7CÁ_‹¾˜«ëžÂ–_þ�–ý£!­ùÙ#,òûr=7ô$Ö~³öJ¯Å

+ 398 - 0
manual/_build/procedures.html

@@ -0,0 +1,398 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Common Procedures &mdash; FlatCAM 7 documentation</title>
+  
+
+  
+  
+
+  
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  
+  
+
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:'./',
+        VERSION:'7',
+        COLLAPSE_INDEX:false,
+        FILE_SUFFIX:'.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+      <script type="text/javascript" src="_static/jquery.js"></script>
+      <script type="text/javascript" src="_static/underscore.js"></script>
+      <script type="text/javascript" src="_static/doctools.js"></script>
+      <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+  
+
+  
+  
+    <script type="text/javascript">
+        jQuery(function () {
+            SphinxRtdTheme.StickyNav.enable();
+        });
+    </script>
+  
+
+  
+    <link rel="top" title="FlatCAM 7 documentation" href="index.html"/>
+        <link rel="next" title="Geometry Editor" href="editor.html"/>
+        <link rel="prev" title="Basics" href="basics.html"/> 
+
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55008703-1', 'auto');
+  ga('send', 'pageview');
+
+</script>
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-nav-search" style="background-color: #3d3d3d;">
+        <!--<a href="index.html" class="icon icon-home"> FlatCAM</a>-->
+        <!--<a href="http://flatcam.org" class="icon icon-home"> FlatCAM</a>-->
+        <a href="http://flatcam.org">
+            <img src="http://flatcam.org/static/images/fcweblogo1.png"
+                    style="height: auto;
+                    width: auto;
+                    border-radius: 0px;
+                    background-color: #3d3d3d;
+                    margin: auto">
+        </a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+        
+        
+            <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li>
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#windows-installer">Windows Installer</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#ubuntu">Ubuntu</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#manual-installation">Manual Installation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="basics.html">Basics</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#source-files">Source Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#objects-and-tasks">Objects and Tasks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#creating-saving-and-loading-projects">Creating, Saving and Loading Projects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#navigating-plots">Navigating Plots</a></li>
+</ul>
+</li>
+<li class="toctree-l1 current"><a class="current reference internal" href="">Common Procedures</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#isolation-routing">Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#wide-isolation-routing">Wide Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#cnc-jobs-for-drill-files">CNC Jobs for Drill Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#side-pcb">2-side PCB</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#copper-area-clear">Copper Area Clear</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#board-cutout">Board Cutout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#bed-flattening">Bed Flattening</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="editor.html">Geometry Editor</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#creating-new-geometry-objects">Creating New Geometry Objects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#editing-existing-geometry-objects">Editing Existing Geometry Objects</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="flatcamshell.html">Shell Command Line Interface</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#the-shell-window">The Shell Window</a></li>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#shell-language">Shell Language</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="cmdreference.html">Shell Command Reference</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-circle">add_circle</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-poly">add_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-rect">add_rect</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#cncjob">cncjob</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#delete">delete</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#follow">follow</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#geo-union">geo_union</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#get-names">get_names</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#help">help</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#isolate">isolate</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#make-docs">make_docs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new">new</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new-geometry">new_geometry</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#offset">offset</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-excellon">open_excellon</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gcode">open_gcode</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gerber">open_gerber</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-project">open_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#options">options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#paint-poly">paint_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#plot">plot</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#save-project">save_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#scale">scale</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#set-active">set_active</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#write-gcode">write_gcode</a></li>
+</ul>
+</li>
+</ul>
+
+        
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="icon icon-reorder"></i>
+        <a href="index.html">FlatCAM</a>
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="index.html">Docs</a> &raquo;</li>
+      
+    <li>Common Procedures</li>
+      <li class="wy-breadcrumbs-aside">
+        
+          <a href="_sources/procedures.txt" rel="nofollow"> View page source</a>
+        
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            
+  <div class="section" id="common-procedures">
+<h1>Common Procedures<a class="headerlink" href="#common-procedures" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="isolation-routing">
+<h2>Isolation Routing<a class="headerlink" href="#isolation-routing" title="Permalink to this headline">¶</a></h2>
+<p>Isolation routing is the operation of cutting copper around traces for electrical isolation.</p>
+<ol class="arabic simple">
+<li>Open a Gerber file: File→Open Gerber…</li>
+</ol>
+<p>The file is automatically analyzed, processed and plotted.</p>
+<ol class="arabic simple" start="2">
+<li>Enter the diameter of the tool you will use for isolation routing and hit “Generate Geometry”. The units are determined by the project setting and are shown on the bottom right of the screen. If you want to work using different units, go to Options, Project Options (Combo box), Units. This will change the units for the whole project.</li>
+</ol>
+<img alt="_images/open_gerber_ready.png" class="align-center" src="_images/open_gerber_ready.png" />
+<p>This creates a new geometry object listed under “Project” with the same name as the  Gerber object with an “_iso” postfix, and its options are shown in “Selected”. Zoom into the plot (click over the plot and use the ‘2’ and ‘3’ keys to zoom in and out) to inspect the results.</p>
+<img alt="_images/iso_routing_ready.png" class="align-center" src="_images/iso_routing_ready.png" />
+<ol class="arabic simple" start="3">
+<li>Create a CNC job from the new geometry by indicating the desired parameters as shown in the figure above and explained below:</li>
+</ol>
+<ul class="simple">
+<li><strong>Cut Z</strong>: The depth of the tool while cutting. -2 mils or -0.05 mm are a typical value for isolation routing.</li>
+<li><strong>Travel Z</strong>: The height above the board at which the cutting tool will travel  when not cutting copper.</li>
+<li><strong>Feedrate</strong>: The speed of the cutting tool while cutting in inches/minute of mm/minute depending on the project settings.</li>
+<li><strong>Tool diam.</strong>: The cutting tool diameter. Use the same value as when creating the isolation routing geometry in step 2.</li>
+</ul>
+<p>A CNC Job object has been added to your project and its options are shown in the “Selected” tab. Tool paths are shown on the plot. Blue are copper cuts, while yellow are travelling (no cutting) motions.</p>
+<img alt="_images/iso_routing_cnc_ready.png" class="align-center" src="_images/iso_routing_cnc_ready.png" />
+<p>Click on the “Export” button under “Export G-Code”. This will open a dialog box for you to save to a file. This is the file that you will supply to your CNC router.</p>
+</div>
+<div class="section" id="wide-isolation-routing">
+<h2>Wide Isolation Routing<a class="headerlink" href="#wide-isolation-routing" title="Permalink to this headline">¶</a></h2>
+<ol class="arabic simple">
+<li>Go to the “Project” tab and double-click on the isolation geometry object that you created for the 1st pass. In the “Selected” tab, change its name and hit Enter.</li>
+<li>Go back to “Project” and double-click on the Gerber object. This takes you back to step 1 of tutorial 4.1. We will generate geometry for a second pass in the same way but with a larger offset. If “Tool diam” reads 0.016, enter 0.016*2.5 instead (0.016*3 would put the path 3 times as far which provides no overlap with the previous pass. By setting it to 0.016*2.5 you ensure that there is no copper left on the board and a cleaner finish). Click on “Generate Geometry” just like in tutorial 4.1 and you should get something like the figure below.</li>
+</ol>
+<img alt="_images/Double_iso.png" class="align-center" src="_images/Double_iso.png" />
+<ol class="arabic simple" start="3">
+<li>Generate a CNC job like you did in part 3 of tutorial 4.1. You will end up with 2 G-Code file, one for each pass.</li>
+</ol>
+</div>
+<div class="section" id="cnc-jobs-for-drill-files">
+<h2>CNC Jobs for Drill Files<a class="headerlink" href="#cnc-jobs-for-drill-files" title="Permalink to this headline">¶</a></h2>
+<ol class="arabic simple">
+<li>Open a drill (Excellon) file: File→Open Excellon. The drill file will be drawn onto the plot and its options form should show up.</li>
+<li>A drill file will usually contain different tools (drill diameters). You can choose to create a CNC job for each individual tool or bundle some of the tools together in the same job (in case you did not intend to use drill bits of different diameters). Click on “Choose” under “Create CNC Job” to open a selection window with the list of tools. Each has the format “id”: “diameter”, where the diameter is in the project’s units. Check the boxes by the tools you want to  include in the job. The comma-separated list of tools should appear in the “Tools” entry box (Note: If you know the ids of the tools you can type the list yourself).</li>
+</ol>
+<img alt="_images/drill_tool_select.png" class="align-center" src="_images/drill_tool_select.png" />
+<ol class="arabic simple" start="3">
+<li>Adjust “Drill Z” (Drilling depth), “Travel Z” (Height for X-Y movement) and “Feed rate” (Z-axis speed in project units per minute) to your desired values, and click on “Generate”.</li>
+</ol>
+<img alt="_images/drill_cnc_job.png" class="align-center" src="_images/drill_cnc_job.png" />
+<p>A CNC job will be created and the tool-path will be shown on the screen. Click on “Export G-Code” as explained in tutorial 4.1 to save the generated CNC job to G-Code.</p>
+</div>
+<div class="section" id="side-pcb">
+<h2>2-side PCB<a class="headerlink" href="#side-pcb" title="Permalink to this headline">¶</a></h2>
+<p>The main idea behind this process is to ensure that when you turn your board around to mill the bottom side of your PCB it will be perfectly aligned with the top side.</p>
+<p>The mechanical alignment is accomplished by using alignment holes/pins. These are holes on your board and on the milling machine bed (typically a board of wood, known as “sacrificial” layer). Pins are used to align the holes on the board to the holes on the sacrificial layer. The holes are always pairs of holes that are symmetrical about a mirror axis. This ensures that when you turn your board around, the board can be aligned using the same alignment holes as before.</p>
+<img alt="_images/double1.png" class="align-center" src="_images/double1.png" />
+<p>The bottom layer must be flipped (mirrored) around the same axis that was used for the alignment holes.</p>
+<p>The placement of the mirror axis can be very arbitrary. You just need to make sure that after flipping the board around, it will still fit on the milling machine bed. Same for the alignment holes. It doesn’t matter much where you put them. Perhaps if you have a large bare copper board and you plan on reusing the alignment holes for different projects that will be made out of this same bare board, you might want to define the location of the axis and holes, and record them for later use.</p>
+<p>FlatCAM takes care of the rest. To ensure the symmetry of the alignment holes, FlatCAM asks you to specify the holes on only one side of the mirror axis and it will create the mirror copies for you. It will also mirror the bottom (Gerber) layer around the same axis.</p>
+<img alt="_images/double2.png" class="align-center" src="_images/double2.png" />
+<p>The process of making the double-sided board consists of creating the CNC Job objects for the top layer, the mirrored bottom layer and the alignment holes using FlatCAM. Then you can run the alignment holes job (you must drill through the board and into the sacrificial layer) and the top layer job. You must then turn the board around, align it using the alignment holes (fit some kind of pin in the holes) and run the bottom layer job.</p>
+<p>Here is how to use FlatCAM to generate the required files:</p>
+<ol class="arabic simple">
+<li>Open the Gerber files for the top and bottom layers of your PCB.</li>
+<li>Start the Double-sided PCB tool by selecting Tools→Double-sided PCB tool.</li>
+</ol>
+<img alt="_images/dbl_sided1_arrows.png" class="align-center" src="_images/dbl_sided1_arrows.png" />
+<p>The tool has the following options:</p>
+<ul>
+<li><p class="first"><strong>Bottom Layer</strong>: Indicates which layer is the bottom layer, which needs to be flipped.</p>
+</li>
+<li><p class="first"><strong>Mirror axis</strong>: Around which axis, X or Y, we want to mirror the layer.</p>
+</li>
+<li><p class="first"><strong>Axis location</strong>: How we want to specify the location of the axis.</p>
+</li>
+<li><p class="first"><strong>Point/Box</strong>: Specifies the location of the axis. It depends on the Axis location setting:</p>
+<blockquote>
+<div><ul class="simple">
+<li>Point: A single point specifies where the axis is, and you input the coordinates of the point in the format (x, y). For example, if Mirror Axis is set to X and Point is set to (1.0, -1.0) the axis will be horizontal at y=-1.0 (The x coordinate is ignored).</li>
+<li>Box: If you have already defined the boundary of your PCB you may want the axis to be exactly in the middle of that rectangle. The boundary must be some geometry object defined in the project and can be selected in the combo box appearing in the Point/Box field.</li>
+</ul>
+</div></blockquote>
+</li>
+<li><p class="first">Alignment holes: These can aid in placing the board at the exact position after turning it over for the bottom side job. These holes must be symmetrical to the mirror axis. You only need to specify the location of the holes on one side of the mirror axis and the program will create the mirror copy. Input the coordinates of the holes in the following format: (x1, y1), (x2, y2), etc.</p>
+</li>
+<li><p class="first">Drill diameter: The diameter of the drill for the alignment holes.</p>
+</li>
+</ul>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">You don’t have to manually type coordinates of points. Clicking on the plot automatically copies the coordinates to the clipboard in (x, y) format and these can be pasted into the input boxes.</p>
+</div>
+<ol class="arabic simple" start="3">
+<li>Create the mirror image of the bottom layer by clicking on “Create Mirror”. This will create a new Gerber object for the project. You can work with this object, create isolation routing and a CNC job as it has been show in the previous tutorials. You may want to hide or remove the layer for the top side to ease the visualization.</li>
+<li>Create the alignment hole drill object by going back to the Double-sided PCB tool and clicking “Create alignment drill”. This will create a drill job as specified and a CNC job can be created for it as has been shown for the previous examples.</li>
+</ol>
+<img alt="_images/bottom.png" class="align-center" src="_images/bottom.png" />
+</div>
+<div class="section" id="copper-area-clear">
+<h2>Copper Area Clear<a class="headerlink" href="#copper-area-clear" title="Permalink to this headline">¶</a></h2>
+<p>Removing large areas of copper is necessary when trying to avoid shorts due to dust, rust, etc, or in RF circuits, where the remaining unused copper is just unwanted parasitics. This tutorial shows how to eliminate all copper that is not specified in the Gerber source, but the user can still selectively choose what to clear.</p>
+<img alt="_images/coppercleardemo1.png" class="align-center" src="_images/coppercleardemo1.png" />
+<ol class="arabic simple">
+<li>Open a Gerber file as explained in previous tutorials.</li>
+<li>In the “Select” tab for the Gerber object, under “Non-copper regions”, provide “Boundary Margin” and click “Generate Geometry”. This creates a bounding box around the Gerber object, with the given margin. Then subtracts the Gerber object from the bounding box, resulting in a Geometry object with polygons covering the areas without copper.</li>
+</ol>
+<img alt="_images/coppercleardemo2.png" class="align-center" src="_images/coppercleardemo2.png" />
+<ol class="arabic simple" start="3">
+<li>Now we can choose which polygon we want to “paint”, this is, draw a toolpath inside it to cover all its surface. In the “Selected” tab for the newly created geometry, under “Paint Area”, provide the following:</li>
+</ol>
+<ul class="simple">
+<li><strong>Tool diam.</strong>: The diameter of the tool that will be used to cut the area.</li>
+<li><strong>Overlap</strong>: Fraction of the tool diameter by which to overlap each passing cut. The default value of 0.15 is the minimum to ensure no copper is left in 90 degree turns of the toolpath.</li>
+<li><strong>Margin</strong>: Distance for the tool to stay away from the polygon boundary. This can be used to ensure that a large tool does not touch copper edges that have or will be cut by a smaller more precise tool.</li>
+</ul>
+<ol class="arabic simple" start="4">
+<li>Click on “Generate” and then click on the plot inside the polygon to be painted. This will create a new Geometry object with the desired toolpaths.</li>
+</ol>
+<img alt="_images/coppercleardemo3.png" class="align-center" src="_images/coppercleardemo3.png" />
+</div>
+<div class="section" id="board-cutout">
+<h2>Board Cutout<a class="headerlink" href="#board-cutout" title="Permalink to this headline">¶</a></h2>
+<p>To cut the PCB to the desired shape and remove it from a larger blank PCB, a toolpath that traces the board edge can be created. Gaps to hold the board until the job is complete can be placed along the edge.</p>
+<p>This tutorial describes how to create rectangular cutouts with 2 or 4 gaps.</p>
+<ol class="arabic simple">
+<li>Open a Gerber file and find the <strong>Board Cutout</strong> section in the <strong>Selected tab</strong>.</li>
+</ol>
+<img alt="_images/cutout.png" class="align-center" src="_images/cutout.png" />
+<ol class="arabic simple" start="2">
+<li>Specify a <strong>Margin</strong>. This will create a rectangular cutout at the given distance from any element in the Gerber. Specify a <strong>Gap Size</strong>. 2 times the diameter of the tool you will use for cutting is a good size. Specify how many and where you want the <strong>Gaps</strong> along the edge, 2 (top and bottom), 2 (left and right) or 4, one on each side. Click on <strong>Generate Geometry</strong>. The figure below shows an example of the results.</li>
+</ol>
+<img alt="_images/cutout2.png" class="align-center" src="_images/cutout2.png" />
+<ol class="arabic simple" start="3">
+<li>Create a CNC job for the newly created geometry as explained in earlier tutorials.</li>
+</ol>
+<img alt="_images/cutout3.png" class="align-center" src="_images/cutout3.png" />
+</div>
+<div class="section" id="bed-flattening">
+<h2>Bed Flattening<a class="headerlink" href="#bed-flattening" title="Permalink to this headline">¶</a></h2>
+<p>Most often a sacrificial layer (e.g. wood) is used between the machine bed and the PCB so when drilling and cutting the machine is not hit by the tool. In order to have a completely flat surface for the PCB, the sacrificial layer is flattened by the machine. This tutorial shows how to create a toolpath for this purpose.</p>
+<ol class="arabic simple">
+<li>Open a Gerber file and locate the <strong>Bounding Box</strong> section in the <strong>Selected tab</strong>.</li>
+<li>Specify a <strong>Margin</strong> (distance of the bounding box from any element in the Gerber) and whether you want <strong>rounded corners</strong>. Click <strong>Generate Bounding Box</strong>.</li>
+</ol>
+<img alt="_images/bedflatten0.png" class="align-center" src="_images/bedflatten0.png" />
+<p>Make sure your blank PCB will fit in the bounding box.</p>
+<img alt="_images/bedflatten.png" class="align-center" src="_images/bedflatten.png" />
+<ol class="arabic simple" start="3">
+<li>In the <strong>Selected</strong> tab for the newly created geometry locate the <strong>Paint Area</strong> section. Specify the <strong>diameter</strong> of the tool you will use, how much (fraction of the tool width) each pass will <strong>overlap</strong> each other, and a <strong>Margin</strong> (although typically not needed and set to 0.0 in this case.)</li>
+</ol>
+<img alt="_images/bedflatten1.png" class="align-center" src="_images/bedflatten1.png" />
+<ol class="arabic simple" start="4">
+<li>Click on <strong>Generate</strong>, and you will be asked to <strong>click</strong> inside the polygon inside which to create the tool path. Click inside the boundary we just created.</li>
+</ol>
+<img alt="_images/bedflatten2.png" class="align-center" src="_images/bedflatten2.png" />
+<ol class="arabic simple" start="5">
+<li>Create a CNC job for the newly created geometry as explained in earlier tutorials.</li>
+</ol>
+</div>
+</div>
+
+
+          </div>
+          <footer>
+  
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="editor.html" class="btn btn-neutral float-right" title="Geometry Editor"/>Next <span class="icon icon-circle-arrow-right"></span></a>
+      
+      
+        <a href="basics.html" class="btn btn-neutral" title="Basics"><span class="icon icon-circle-arrow-left"></span> Previous</a>
+      
+    </div>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2014, Juan Pablo Caram.
+    </p>
+  </div>
+
+  <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+</body>
+</html>

+ 244 - 0
manual/_build/search.html

@@ -0,0 +1,244 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Search &mdash; FlatCAM 7 documentation</title>
+  
+
+  
+  
+
+  
+  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
+
+  
+  
+
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:'./',
+        VERSION:'7',
+        COLLAPSE_INDEX:false,
+        FILE_SUFFIX:'.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+      <script type="text/javascript" src="_static/jquery.js"></script>
+      <script type="text/javascript" src="_static/underscore.js"></script>
+      <script type="text/javascript" src="_static/doctools.js"></script>
+      <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+      <script type="text/javascript" src="_static/searchtools.js"></script>
+
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+  
+
+  
+  
+    <script type="text/javascript">
+        jQuery(function () {
+            SphinxRtdTheme.StickyNav.enable();
+        });
+    </script>
+  
+
+  
+    <link rel="top" title="FlatCAM 7 documentation" href="index.html"/>
+  <script type="text/javascript">
+    jQuery(function() { Search.loadIndex("searchindex.js"); });
+  </script>
+  
+  <script type="text/javascript" id="searchindexloader"></script>
+   
+
+
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-55008703-1', 'auto');
+  ga('send', 'pageview');
+
+</script>
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-nav-search" style="background-color: #3d3d3d;">
+        <!--<a href="index.html" class="icon icon-home"> FlatCAM</a>-->
+        <!--<a href="http://flatcam.org" class="icon icon-home"> FlatCAM</a>-->
+        <a href="http://flatcam.org">
+            <img src="http://flatcam.org/static/images/fcweblogo1.png"
+                    style="height: auto;
+                    width: auto;
+                    border-radius: 0px;
+                    background-color: #3d3d3d;
+                    margin: auto">
+        </a>
+        <div role="search">
+  <form id ="rtd-search-form" class="wy-form" action="#" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+      </div>
+
+      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+        
+        
+            <ul>
+<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li>
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#windows-installer">Windows Installer</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#ubuntu">Ubuntu</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#manual-installation">Manual Installation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="basics.html">Basics</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#source-files">Source Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#objects-and-tasks">Objects and Tasks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#creating-saving-and-loading-projects">Creating, Saving and Loading Projects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="basics.html#navigating-plots">Navigating Plots</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="procedures.html">Common Procedures</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#isolation-routing">Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#wide-isolation-routing">Wide Isolation Routing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#cnc-jobs-for-drill-files">CNC Jobs for Drill Files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#side-pcb">2-side PCB</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#copper-area-clear">Copper Area Clear</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#board-cutout">Board Cutout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="procedures.html#bed-flattening">Bed Flattening</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="editor.html">Geometry Editor</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#creating-new-geometry-objects">Creating New Geometry Objects</a></li>
+<li class="toctree-l2"><a class="reference internal" href="editor.html#editing-existing-geometry-objects">Editing Existing Geometry Objects</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="flatcamshell.html">Shell Command Line Interface</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#the-shell-window">The Shell Window</a></li>
+<li class="toctree-l2"><a class="reference internal" href="flatcamshell.html#shell-language">Shell Language</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="cmdreference.html">Shell Command Reference</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-circle">add_circle</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-poly">add_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#add-rect">add_rect</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#cncjob">cncjob</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#delete">delete</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#follow">follow</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#geo-union">geo_union</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#get-names">get_names</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#help">help</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#isolate">isolate</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#make-docs">make_docs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new">new</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#new-geometry">new_geometry</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#offset">offset</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-excellon">open_excellon</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gcode">open_gcode</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-gerber">open_gerber</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#open-project">open_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#options">options</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#paint-poly">paint_poly</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#plot">plot</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#save-project">save_project</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#scale">scale</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#set-active">set_active</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cmdreference.html#write-gcode">write_gcode</a></li>
+</ul>
+</li>
+</ul>
+
+        
+      </div>
+      &nbsp;
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        <i data-toggle="wy-nav-top" class="icon icon-reorder"></i>
+        <a href="index.html">FlatCAM</a>
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="breadcrumbs navigation">
+  <ul class="wy-breadcrumbs">
+    <li><a href="index.html">Docs</a> &raquo;</li>
+      
+    <li></li>
+      <li class="wy-breadcrumbs-aside">
+        
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main">
+            
+  <noscript>
+  <div id="fallback" class="admonition warning">
+    <p class="last">
+      Please activate JavaScript to enable the search
+      functionality.
+    </p>
+  </div>
+  </noscript>
+
+  
+  <div id="search-results">
+  
+  </div>
+
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2014, Juan Pablo Caram.
+    </p>
+  </div>
+
+  <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+</body>
+</html>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
manual/_build/searchindex.js


BIN=BIN
manual/bedflatten.png


BIN=BIN
manual/bedflatten0.png


BIN=BIN
manual/bedflatten1.png


BIN=BIN
manual/bedflatten2.png


BIN=BIN
manual/bottom.png


+ 264 - 0
manual/conf.py

@@ -0,0 +1,264 @@
+# -*- coding: utf-8 -*-
+#
+# FlatCAM documentation build configuration file, created by
+# sphinx-quickstart on Sun Sep 14 13:47:55 2014.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys
+import os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration ------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+    'sphinx.ext.pngmath',
+    'sphinx.ext.mathjax',
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'FlatCAM'
+copyright = u'2014, Juan Pablo Caram'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '7'
+# The full version, including alpha/beta/rc tags.
+release = '7'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all
+# documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+# If true, keep warnings as "system message" paragraphs in the built documents.
+#keep_warnings = False
+
+
+# -- Options for HTML output ----------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+#html_theme = 'default'
+
+html_theme_path = ["_theme/"]
+html_theme = "sphinx_rtd_theme"
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# Add any extra paths that contain custom files (such as robots.txt or
+# .htaccess) here, relative to this directory. These files are copied
+# directly to the root of the documentation.
+#html_extra_path = []
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'FlatCAMdoc'
+
+
+# -- Options for LaTeX output ---------------------------------------------
+
+latex_elements = {
+# The paper size ('letterpaper' or 'a4paper').
+#'papersize': 'letterpaper',
+
+# The font size ('10pt', '11pt' or '12pt').
+#'pointsize': '10pt',
+
+# Additional stuff for the LaTeX preamble.
+#'preamble': '',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+#  author, documentclass [howto, manual, or own class]).
+latex_documents = [
+  ('index', 'FlatCAM.tex', u'FlatCAM Documentation',
+   u'Juan Pablo Caram', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output ---------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    ('index', 'flatcam', u'FlatCAM Documentation',
+     [u'Juan Pablo Caram'], 1)
+]
+
+# If true, show URL addresses after external links.
+#man_show_urls = False
+
+
+# -- Options for Texinfo output -------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+  ('index', 'FlatCAM', u'FlatCAM Documentation',
+   u'Juan Pablo Caram', 'FlatCAM', 'One line description of project.',
+   'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+#texinfo_appendices = []
+
+# If false, no module index is generated.
+#texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#texinfo_show_urls = 'footnote'
+
+# If true, do not generate a @detailmenu in the "Top" node's menu.
+#texinfo_no_detailmenu = False

BIN=BIN
manual/coppercleardemo1.png


BIN=BIN
manual/coppercleardemo2.png


BIN=BIN
manual/coppercleardemo3.png


BIN=BIN
manual/cutout.png


BIN=BIN
manual/cutout2.png


BIN=BIN
manual/cutout3.png


BIN=BIN
manual/dbl_sided1_arrows.png


BIN=BIN
manual/double1.png


BIN=BIN
manual/double2.png


BIN=BIN
manual/drill_cnc_job.png


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio