Repository navigation
Milling
The Milling plugin creates a CNC job (G-code) for milling. It has 2 targets. With a Geometry target it mills paths, for example isolation, roughing, finishing or polishing. With an Excellon target it mills drill holes and slots with a bigger bit. Use it when a drill bit is not enough, or when you cut the board outline or the copper paths.
- Plugin Toolbar: click Milling.
- Plugins menu: select Milling (shortcut Alt+M).
- The plugin panel opens in a new tab of the side panel. The tab shows the plugin name.
The plugin creates a CNCJob object. For a Geometry target, it can also create an extra Geometry object. See CNCJob Object.
Screenshot placeholder:
images/Milling-1.png- The Milling panel with a Geometry target. Show the Type radio, the Source Object combo, the Tools Table, the Shape and Job combos, and the Generate CNCJob object button.
- Load a Geometry object or an Excellon object. See Importing Files.
- Open the plugin with Alt+M or the Milling button.
- Select the Type: Geometry or Excellon. The type must match the source object.
- Select the object in Source Object.
- For an Excellon target, set Milling Diameter, Milling Type, Overlap and Connect.
- For a Geometry target, enter a diameter in Tool Dia and click Search and Add. Or click Pick from DB. Then set Shape, Job, Offset Type and Cut Z.
- Set Travel Z, Feedrate X-Y and Feedrate Z.
- Select the rows of the Tools Table that you want to mill.
- Select the Preprocessor for your machine.
- Click Generate CNCJob object.
Values are in mm, or inch in an inch project. Default values come from defaults.py. A dash (—) means that the value has no stored default.
Beginner and Advanced mode: Use the Beginner / Advanced button next to the title. Beginner mode hides the parameters marked "Advanced" below. Beginner mode does not reset them: the job uses the hidden values. If you changed an Advanced parameter, for example Multi-Depth or Offset Type, check it in Advanced mode before you make the job. See Beginner and Advanced mode.
Some controls appear only for one target. Their names are marked Geometry only or Excellon only.
| Parameter | Description | Default |
|---|---|---|
| Type | The target. Geometry: mill the paths of a Geometry object. Excellon: mill the holes and slots of an Excellon object. Changing the type changes the list of objects and the tool table. | Geometry |
| Source Object | The object to mill. The list shows objects of the selected type. | — |
| Plot Object | Shows or hides the object on the canvas. | — |
Screenshot placeholder:
images/Milling-2.png- The Source Object frame with the Type radio set to Excellon.
Excellon target. The table shows the tools of the Excellon object. The total rows show the total number of drill holes and slots.
| Column or control | Description | Default |
|---|---|---|
| # | The tool number. With a toolchange, it is the T number in the G-code. Click the header to select all tools. | From the file |
| Diameter | The tool diameter. | From the file |
| Drills | The number of drill holes for this tool. | From the file |
| Slots | The number of slots for this tool. | From the file |
| Tool order | The order of the selected tools. Default: the order from the file. Forward: from small to big. Reverse: from big to small. | Default |
Geometry target. The table shows the tools that you added. Each row has a diameter.
| Column or control | Description | Default |
|---|---|---|
| # | The tool number. With a toolchange, it is the T number in the G-code. | — |
| Dia | The tool diameter. It is the cut width. | — |
| P (plot column) | Shows or hides the tool on the canvas. The column is visible only for Geometry objects with several tools (MultiGeo). Deleting a tool also deletes its geometry, so be careful. | On |
| Tool Dia (Advanced) | The diameter of the tool that you add. | 2.4 (tools_mill_tooldia) |
| Search and Add (Advanced) | Adds a tool with the diameter in Tool Dia. It searches the Tools Database. If nothing is found, a default tool is added. | — |
| Pick from DB (Advanced) | Adds a tool from the Tools Database. You can manage the database in the Options menu, under Tools Database. | — |
| Delete (trash) button (Advanced) | Deletes the selected rows of the Tools Table. | — |
The Add from DB section and its buttons are shown only in Advanced mode for a Geometry target.
Screenshot placeholder:
images/Milling-3.png- The Tools Table for a Geometry target with the Add from DB section.
These values belong to the selected tool. Each tool keeps its own values.
| Parameter | Description | Default |
|---|---|---|
| Milling Type (Excellon only) | Drills: mill the drill holes of this tool. Slots: mill the slots of this tool. Both: mill the drills and the slots. | Both (tools_mill_milling_type) |
| Milling Diameter (Excellon only) | The diameter of the tool that does the milling. | 0.1 (tools_mill_milling_dia) |
| Overlap (Excellon only) | How much of the tool width each pass overlaps the previous pass, in percent. A lower value is faster. A higher value gives more paths and slower execution. Adjust it from a low value, and raise it when some areas are not milled. | 10 % (tools_mill_milling_overlap) |
| Connect (Excellon only) | Draws lines between the resulting segments to reduce tool lifts. | On (tools_mill_milling_connect) |
| Offset Type (Geometry only, Advanced) | Where the tool cuts relative to the geometry line. Path: cut on the line. In: cut inside the line, so the result is a pocket. Out: cut outside the line. Custom: cut at the offset in Custom. | Path (tools_mill_offset_type) |
| Custom (Geometry only, Advanced) | The offset for Offset Type Custom. A positive value cuts outside. A negative value cuts inside. Shown only with Custom. | 0.0 (tools_mill_offset_value) |
| Shape (Geometry only) | The tool shape. C1 to C4: circular tool with 1 to 4 flutes. B: ball tip. V: V-shape tool. L: laser. Selecting L selects the laser preprocessor (default_laser). Selecting V selects the Isolation job and shows the V-tip fields. | C1 (tools_mill_tool_shape) |
| V-Tip Dia (Geometry only) | The tip diameter of a V-shape tool. Shown only for shape V. | 0.1 (tools_mill_vtipdia) |
| V-Tip Angle (Geometry only) | The tip angle of a V-shape tool, in degrees (1 to 180). Shown only for shape V. | 30 (tools_mill_vtipangle) |
| Job (Geometry only, Advanced) | The job type. Roughing: lower feedrate and multi-depth cut. Finishing: higher feedrate, no multi-depth. Isolation: for a fine tip, lower feedrate. Polishing: paints the whole area of the object (see the polishing fields below). The type is informative for the first 3 choices. | Roughing (tools_mill_job_type) |
| Margin (Polishing only) | The bounding box margin of the polishing area. | 0.0 (tools_mill_polish_margin) |
| Overlap (Polishing only) | How much of the tool width each polishing pass overlaps, in percent. | 5 % (tools_mill_polish_overlap) |
| Method (Polishing only) | The polishing algorithm. Standard: fixed steps inwards. Seed: outwards from a seed point. Lines: parallel lines. | Standard (tools_mill_polish_method) |
| Cut Z | The cutting depth. Use a negative value, below the copper surface. For a Polishing job the label changes to Pressure. A higher absolute value gives more brush pressure. For a V-shape tool, the depth is calculated from the V-tip values. | -2.4 (tools_mill_cutz) |
| Multi-Depth (Advanced) | Cut in several passes. Each pass goes down by Depth per pass until Cut Z is reached. Not shown for laser preprocessors. | Off (tools_mill_multidepth) |
| Depth per pass (Advanced) | The depth of each pass. Use a positive value. Shown with Multi-Depth. | 0.8 (tools_mill_depthperpass) |
| Travel Z | The height of the tool when it moves across the XY plane. For a laser_z preprocessor, the label is Focus Z. | 2 (tools_mill_travelz) |
| Feedrate X-Y | The cutting speed in the XY plane, in units per minute. | 120 (tools_mill_feedrate) |
| Feedrate Z | The vertical speed in units per minute (G01). This is the plunge feedrate. Hidden for a laser preprocessor without laser_z in its name. | 60 (tools_mill_feedrate_z) |
| Feedrate Rapids | The speed of the rapid move (G00), in units per minute. Shown only for the Marlin preprocessor. | 1500 (tools_mill_feedrate_rapid) |
| Re-cut (Geometry only, Advanced) | Cuts the first section of the path again, over a set length. This removes copper that is left where the first and the last cut meet. | Off (tools_mill_extracut) |
| Re-cut length (Geometry only, Advanced) | The length of the extra cut. Shown with Re-cut. | 0.1 (tools_mill_extracut_length) |
| Spindle speed | The spindle speed in RPM. The value is optional. For a laser preprocessor the label is Laser Power. | 0 (tools_mill_spindlespeed) |
| Min Power (laser only) | The laser power while the laser travels. Above 0, the laser stays on between cuts at this power. Keep 0 to turn the laser off between cuts. | 0 (tools_mill_min_power) |
| Turn ON Code (laser only) | The G-code that turns the laser on. Choices: M03 and M04. | M03 (stored as M3, tools_mill_laser_on) |
| Dwell (Advanced) | Pause the spindle before the cut to let it reach its speed. Enter the time in Dwell time. Not shown for laser preprocessors. | Off (tools_mill_dwell) |
| Dwell time (Advanced) | The pause time in seconds. Shown with Dwell. | 1 (tools_mill_dwelltime) |
| Apply parameters to all tools (Advanced) | Copies the values of the current form to all tools. | — |
| Path optimization (Advanced) | The order in which the paths of a tool are cut. Rtree: Rtree algorithm. MetaHeuristic: Google OR-Tools with Guided Local Search. It runs for the Search time. Basic: Google OR-Tools basic algorithm. It runs for the Search time. TSA: travelling salesman algorithm. None: the paths in the order of the geometry. MetaHeuristic and Basic are disabled when OR-Tools is not installed. | Rtree (tools_mill_optimization_type = R) |
| Search time (Advanced) | The time that MetaHeuristic and Basic may use to optimize the path, in seconds. 0 means 3 seconds. Shown only for MetaHeuristic and Basic. | 3 s (tools_mill_search_time) |
Screenshot placeholder:
images/Milling-4.png- The Parameters for Tool frame for a Geometry target with shape V selected. Show the V-Tip Dia and V-Tip Angle fields.
These values apply to the whole job.
| Parameter | Description | Default |
|---|---|---|
| Tool change Z | Adds the tool-change sequence to the G-code. The machine pauses for the change. | Off (tools_mill_toolchange) |
| Tool change Z (height) | The Z height of the tool change. | 15 (tools_mill_toolchangez) |
| Toolchange X-Y | The X,Y position of the tool change. Format: x, y. | 0.0, 0.0 (tools_mill_toolchangexy) |
| End move Z | The height of the tool after the last move of the job. | 15 (tools_mill_endz) |
| End move X,Y (Advanced) | The X,Y position of the last move, in the format (x,y). If the field is empty, the job makes no X,Y move at the end. | Empty (tools_mill_endxy) |
| Probe Z depth | The maximum depth the probe may go, as a negative value. Shown only for a probe preprocessor. | -0.02 (tools_mill_z_p_depth) |
| Probe plate thickness | The thickness of the touch plate. After probing, the tool tip is set to this height, so Z = 0 stays at the top of the material. Shown only for a probe preprocessor. | 0 (tools_mill_probe_plate) |
| Feedrate Probe | The feedrate while the probe probes. Shown only for a probe preprocessor. | 75 (tools_mill_feedrate_probe) |
| Preprocessor | The preprocessor file that sets the G-code output for Geometry objects. Selecting shape L selects default_laser. See Preprocessors. | default (tools_mill_ppname_g) |
| Allow levelling | Allows levelling, by using segments of a size above zero. | Off |
| Segment X size | The size of the trace segments along X. Useful for auto-leveling. 0 means no segmentation on X. Shown with Allow levelling. | 0 |
| Segment Y size | The size of the trace segments along Y. Useful for auto-leveling. 0 means no segmentation on Y. Shown with Allow levelling. | 0 |
| Add exclusion areas (Advanced) | Adds exclusion areas. In these areas, the travel of the tool is forbidden. | Off (tools_mill_area_exclusion) |
| Strategy (Advanced) | What the tool does at an exclusion area. Over: the tool rises to Over Z and moves over the area. Around: the tool goes around the area. | Over (tools_mill_area_strategy) |
| Over Z (Advanced) | The height the tool rises to, to avoid an exclusion area when Strategy is Over. | 1.0 (tools_mill_area_overz) |
| Add Area (Advanced) | Draws an exclusion area on the canvas. Use the shape selector next to it. | — |
| Square / Polygon (Advanced) | The shape of the area that you draw. | Polygon (tools_mill_area_shape) |
| Delete All (Advanced) | Deletes all exclusion areas. | — |
| Delete Selected (Advanced) | Deletes the exclusion areas that are selected in the table. | — |
| Generate CNCJob object | Creates the CNCJob object for the selected tools. Select at least one tool first. For a Geometry target, an additional Geometry object is created. | — |
| Reset Tool | Sets the parameters of every tool back to the defaults. | — |
Screenshot placeholder:
images/Milling-5.png- The Common Parameters frame with the exclusion area table and the Allow levelling fields.
- Roughing, Finishing and Isolation are informative. They do not change the job. Set the feedrate and the depth in the fields.
- A V-shape tool (shape V) selects Isolation and calculates Cut Z from the V-tip values.
- Polishing fills the area of the object. Margin sets the size of the area. Overlap and Method set the fill pattern. The Cut Z field becomes Pressure.
- Shape L selects the laser preprocessor. The form then shows Laser Power, Min Power and Turn ON Code.
- Multi-Depth, Dwell and the Cut Z field are hidden for laser preprocessors.
A preprocessor whose name contains "toolchange_probe" shows the probe fields.
Path optimization sets the order in which the paths of a tool are cut. The choice is in the Advanced mode only.
- Select at least one tool. Otherwise the job does not start.
- An overlap of 100 % or more is reported as an error.
- With Multi-Depth on, Depth per pass must be set. A missing value is reported as an error.
- Drilling - drill holes with a drill bit (Excellon target, no milling).
- Isolation Routing - isolate copper with a milling bit.
- Non-Copper Clearing and Paint - clear or paint an area.
- Geometry Object and Excellon Object - the source objects.
- CNCJob Object - the result of this plugin.
- Preprocessors - the G-code output for your machine.
- Tools Database - the source of Search and Add and Pick from DB.
- Path Optimization - more on the path order.
- Tcl Command Reference - the scripting commands milldrills and millslots.
- Keyboard Shortcuts - all shortcut keys.
FlatCAM Evo Manual · Source code · Report a problem · MIT license
Start here
- Installation
- Getting Started
- Tutorial: Single-Sided PCB
- Tutorial: Double-Sided PCB
- User Interface
- Keyboard Shortcuts
- Glossary
- FAQ and Troubleshooting
Files and projects
Objects
Editors
PCB operations
- Isolation Routing
- Non-Copper Clearing
- Paint
- Cutout
- Drilling
- Milling
- Follow
- Double-Sided
- Solder Paste
- Film
- Panelize
- Copper Thieving
- Fiducials
- Markers
- Punch Gerber
- Invert Gerber
- Etch Compensation
- Extract
- Rules Check
- QR Code
Utility plugins
- Align Objects
- Calculators
- Distance · Object Distance
- Optimal
- Move · Transform
- Subtract
- Image Import · PDF Import
- PCB Wizard
- Report
- Tcl Shell
Machine control (in development)
Advanced
- Tools Database
- Preprocessors
- Path Optimization
- Tcl Scripting
- Tcl Command Reference
- Developer Guide
- Translating
Preferences