Part Machining Object

A Part is a way of grouping multiple, related machining operations into a single object. A single drawing file can contain many different part objects.

Parts can be enabled or disabled individually. As with layers and machining operations, pressing the space bar when the item is selected in the drawing tree, will toggle a part's enabled state.

To generate the toolpaths for all the machining operations in a part, right click the part in the drawing tree, then select Generate toolpaths. Right click an individual machining operation to generate toolpaths for just that mop, and right click the Machining folder (or press CTRL+T) to generate toolpaths for all enabled operations in the drawing.

By default, generating gcode will write the output from all the enabled parts in the drawing. To create gcode for just one part, right click the part in the drawing tree, then select Produce gcode.

The file heart-shaped-box.cb, in the CamBam samples folder illustrates a good use of different parts. Here machining operations are separated into parts for front and back faces for the lid and base of a small wooden box.

Some of the Part properties such as Stock and Tools are repeated in the parent Machining folder. Usually it is best to define these properties at the Machining folder level, so they need only be defined once per drawing. If the Part properties are unspecified, the corresponding value will be used from the machining object. It may be useful to define the properties at the part level if they differ from the global Machining settings, for example if a part uses a different stock definition.


Enabled If Enabled is True, the (enabled) machining operations in this part will have their toolpaths displayed and they will be included in the gcode output.
Machining Origin

A drawing point that will be used as the machining origin (X=0,Y=0) point when gcode is created.

The ellipsis button to the right of this property can be used to select a point in the drawing.

An 'X' icon will be displayed on the drawing at the machining origin point. This cross can be dragged to a new location using the mouse.

NOTE: MachiningOrigin replaces the GCodeOrigin and GCodeOriginOffset properties of earlier releases.

Name A descriptive name for the part. This name will be used to generate a filename when creating gcode output from the part.

This composite property provides a method of generating an array or nest of parts.

Nest Method: Change this to Grid or Iso Grid, then set the Rows and Columns values to determine the number of copies of each part. The Spacing value will control the distance between each copy.

When the toolpaths are generated, an outline should be displayed to indicate the location of each copy. The centre of each outline contains a triangular icon. Clicking and dragging this icon will change the nesting pattern and will also change the nesting method to Manual.

New [0.9.8f]

Grid Order Controls the direction of the grid layout. For example Right Up will make copies to the right of the original, then move up to the next row.

New [0.9.8f]

Grid Alternate If set to True, the grid will alternate the direction of each row or column (depending on Grid Order). If False then each row or column will proceed in the same order with a rapid back to the start of each.

New [0.9.8f]

Nest Method = Point List The location of each nest copy is taken from a point list drawing object which is set in the Point List ID property. A new Nest to point list Part context menu function has been added, in this way a list of nest points can effectively be copied from one part to another by sharing a common point list.

New [0.9.8f]

GCode Order Controls how the nested machining operations are ordered in the gcode output.

  • Auto - All consecutive MOPs within the part with the same toolnumber will be posted then repeated for each nest copy, before moving to the next MOP (which would require a tool change).
  • Nest Each MOP - Each MOP is output at each nest location before moving to the next MOP.
  • All MOPs Per Copy - All the MOPs in the part are posted before moving to the next nest location.

Multiple copies of the part's toolpaths will be written to the gcode output. This will increase the gcode file size, but does avoid some of the issues encountered when using subroutines.

Out File

This is the location of the destination gcode file. Clicking the button to the right of this property will open a file browser.


The stock object is used to define the dimensions of a block of material from which the part will be cut.

The properties of the stock object can be used to automatically determine some machining properties.

  • If a machining operation or style's Stock Surface property is set to Auto, the stock's stock surface value will be used.
  • If a machining operation or style's Target Depth property is set to Auto, the stock's stock surface and Z size will be used to determine the target depth, so a machining operation will by default machine all the way through the stock.

Stock properties:

Material: Informational text that describes the stock material.
Stock Offset: X and Y offset of the lower left corner of the stock block. For example, a stock offset of -10,-20 would position the stock 10 units to the left of the Y axis (X=0) and 20 units below the X axis (Y=0).
Stock Surface: The Z location of the top of the stock block.
Stock Size: The X, Y and Z dimensions of the stock block.
Color: Color to use when displaying this stock object.

Stock is undefined if the X,Y and Z sizes are all zero. Stock can be defined at the part or machining level. Stock defined at the part level will override and machining level stock definitions and will be used for all operations within the part.

The stock object dimensions can also be passed to simulators such as CutViewer when post processors with appropriate stock macros are included, such as the Mach3-CV post processor.


Select a default CAM Style for this part.
All machining operations in the part will use this style unless set otherwise in the machining operation's Style property.>/p>

Style Library

This property is used to locate the style definitions used in the Part or machining operations.

[New! 0.9.8]

A general purpose, multiline text field that can be used to store notes or parameters from plugins.

Tool Diameter

This is the diameter of the current tool in drawing units.

If the tool diameter is 0, the diameter from the tool information stored in the tool library for the given tool number will be used.

Tool Library

If left blank, the default tool library will be used (Default-{$Units}), otherwise the specified library will be used when looking up tool numbers.

Tool Number

The ToolNumber is used to identify the current tool.

If ToolNumber changes between successive machine ops a toolchange instruction is created in gcode. ToolNumber=0 is a special case which will not issue a toolchange.

The tool number is also used to look up tool information in the current tool library. The tool library is specified in the containing Part, or if this is not present in the Machining folder level. If no tool library is defined the Default-(units) tool library is assumed.

Tool Profile

The shape of the cutter

If the tool profile is Unspecified, the profile from the tool information stored in the tool library for the given tool number will be used.

EndMill | BullNose | BallNose | Vcutter | Drill | Lathe

Copyright (c) 2017 HexRay Ltd