Skip to content

Milling

Marius Stanciu edited this page Oct 29, 2026 · 2 revisions

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.

Where to find it

  • 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.

Quick start

  1. Load a Geometry object or an Excellon object. See Importing Files.
  2. Open the plugin with Alt+M or the Milling button.
  3. Select the Type: Geometry or Excellon. The type must match the source object.
  4. Select the object in Source Object.
  5. For an Excellon target, set Milling Diameter, Milling Type, Overlap and Connect.
  6. 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.
  7. Set Travel Z, Feedrate X-Y and Feedrate Z.
  8. Select the rows of the Tools Table that you want to mill.
  9. Select the Preprocessor for your machine.
  10. Click Generate CNCJob object.

Parameters

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.

Source Object

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.

Tools Table

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.

Parameters for Tool

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.

Common Parameters

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.

Advanced

Job types and polishing

  • 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.

Laser

  • 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.

Probe

A preprocessor whose name contains "toolchange_probe" shows the probe fields.

Path optimization

Path optimization sets the order in which the paths of a tool are cut. The choice is in the Advanced mode only.

Limits

  • 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.

See also

Clone this wiki locally