Added manual.
This commit is contained in:
46
manual/_build/_sources/basics.txt
Normal file
46
manual/_build/_sources/basics.txt
Normal file
@@ -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
manual/_build/_sources/cmdreference.txt
Normal file
241
manual/_build/_sources/cmdreference.txt
Normal file
@@ -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
manual/_build/_sources/editor.txt
Normal file
130
manual/_build/_sources/editor.txt
Normal file
@@ -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
manual/_build/_sources/flatcamshell.txt
Normal file
54
manual/_build/_sources/flatcamshell.txt
Normal file
@@ -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
manual/_build/_sources/index.txt
Normal file
29
manual/_build/_sources/index.txt
Normal file
@@ -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
manual/_build/_sources/installation.txt
Normal file
54
manual/_build/_sources/installation.txt
Normal file
@@ -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
manual/_build/_sources/introduction.txt
Normal file
4
manual/_build/_sources/introduction.txt
Normal file
@@ -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
manual/_build/_sources/procedures.txt
Normal file
201
manual/_build/_sources/procedures.txt
Normal file
@@ -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.
|
||||
Reference in New Issue
Block a user