Overview#
BlenderCAM’s code can be broken down into categories:
Core Functions
Extra Functions
Reference Files
User Interface
Dependencies
Core Functions#
The core function of the BlenderCAM addon is to take whatever object is in the viewport and generate toolpaths along that object according to a milling strategy set by the user. These operations can be exported alone, or combined into chains to be exported and run together.
Extra Functions#
Beyond simply creating toolpaths for existing objects, BlenderCAM can also create the objects (curves) and edit them through a number of operations.
There are modules dedicated to creating reliefs, joinery, puzzle joinery and gears.
There is also a simulation module to allow a preview of what the final product will look like, as well as an asynchronous module that allows progress reports on calculations.
Reference Files#
Presets for machines, tools, operations and preprocessors comprise the majority of the files in the addon.
User Interface#
Files related to Blender’s UI - all the panels, buttons etc that you can click on in the addon, as well as menus, pie menus, popup dialogs etc.
Dependencies#
Python wheels - executable binaries packed in for all supported systems.
Complete Addon Layout#
cam/
├── nc/
│ ├── LICENSE
│ ├── __init__.py
│ ├── anilam_crusader_m.py
│ ├── anilam_crusader_m_read.py
│ ├── attach.py
│ ├── cad_iso_read.py
│ ├── cad_nc_read.py
│ ├── cad_read.py
│ ├── centroid1.py
│ ├── centroid1_read.py
│ ├── drag_knife.py
│ ├── emc2.py
│ ├── emc2_read.py
│ ├── emc2b.py
│ ├── emc2b_crc.py
│ ├── emc2b_crc_read.py
│ ├── emc2b_read.py
│ ├── emc2tap.py
│ ├── emc2tap_read.py
│ ├── fadal.py
│ ├── format.py
│ ├── gantry_router.py
│ ├── gantry_router_read.py
│ ├── gravos.py
│ ├── grbl.py
│ ├── heiden.py
│ ├── heiden530.py
│ ├── heiden_read.py
│ ├── hm50.py
│ ├── hm50_read.py
│ ├── hpgl2d.py
│ ├── hpgl2d_read.py
│ ├── hpgl2dv.py
│ ├── hpgl2dv_read.py
│ ├── hpgl3d.py
│ ├── hpgl3d_read.py
│ ├── hxml_writer.py
│ ├── iso.py
│ ├── iso_codes.py
│ ├── iso_crc.py
│ ├── iso_crc_read.py
│ ├── iso_modal.py
│ ├── iso_modal_read.py
│ ├── iso_read.py
│ ├── lathe1.py
│ ├── lathe1_read.py
│ ├── lynx_otter_o.py
│ ├── mach3.py
│ ├── mach3_read.py
│ ├── machines.txt
│ ├── makerbotHBP.py
│ ├── makerbotHBP_read.py
│ ├── makerbot_codes.py
│ ├── nc.py
│ ├── nc_read.py
│ ├── nclathe_read.py
│ ├── num_reader.py
│ ├── printbot3d.py
│ ├── printbot3d_read.py
│ ├── recreator.py
│ ├── rez2.py
│ ├── rez2_read.py
│ ├── series1.py
│ ├── series1_read.py
│ ├── shopbot_mtc.py
│ ├── siegkx1.py
│ ├── siegkx1_read.py
│ ├── tnc151.py
│ ├── tnc151_read.py
│ └── winpc.py
├── opencamlib/
│ ├── __init__.py
│ ├── oclSample.py
│ ├── opencamlib.py
│ └── opencamlib_readme.txt
├── pie_menu/
│ ├── active_op/
│ │ ├── pie_area.py
│ │ ├── pie_cutter.py
│ │ ├── pie_feedrate.py
│ │ ├── pie_gcode.py
│ │ ├── pie_movement.py
│ │ ├── pie_operation.py
│ │ └── pie_setup.py
│ ├── pie_cam.py
│ ├── pie_chains.py
│ ├── pie_curvecreators.py
│ ├── pie_curvetools.py
│ ├── pie_info.py
│ ├── pie_machine.py
│ ├── pie_material.py
│ └── pie_pack_slice_relief.py
├── presets/
│ ├── cam_cutters/
│ │ ├── BALLCONE_1.00mm.py
│ │ ├── ball_1.00mm.py
│ │ ├── ball_1.50mm.py
│ │ ├── ball_10.00mm.py
│ │ ├── ball_12.00mm.py
│ │ ├── ball_16.00mm.py
│ │ ├── ball_2.00mm.py
│ │ ├── ball_2.50mm.py
│ │ ├── ball_20.00mm.py
│ │ ├── ball_3.00mm.py
│ │ ├── ball_3.50mm.py
│ │ ├── ball_4.00mm.py
│ │ ├── ball_5.00mm.py
│ │ ├── ball_6.00mm.py
│ │ ├── ball_7.00mm.py
│ │ ├── ball_8.00mm.py
│ │ ├── end_cyl_1.00mm.py
│ │ ├── end_cyl_1.50mm.py
│ │ ├── end_cyl_10.00mm.py
│ │ ├── end_cyl_12.00mm.py
│ │ ├── end_cyl_16.00mm.py
│ │ ├── end_cyl_2.00mm.py
│ │ ├── end_cyl_2.50mm.py
│ │ ├── end_cyl_20.00mm.py
│ │ ├── end_cyl_3.00mm.py
│ │ ├── end_cyl_3.50mm.py
│ │ ├── end_cyl_4.00mm.py
│ │ ├── end_cyl_5.00mm.py
│ │ ├── end_cyl_6.00mm.py
│ │ ├── end_cyl_7.00mm.py
│ │ ├── end_cyl_8.00mm.py
│ │ ├── v-carve_3mm_45deg.py
│ │ ├── v-carve_3mm_60deg.py
│ │ ├── v-carve_6mm_45deg.py
│ │ └── v-carve_6mm_60deg.py
│ ├── cam_machines/
│ │ ├── emc_test_2.py
│ │ └── kk1000s.py
│ └── cam_operations/
│ ├── Fin_Ball_3,0_Block_All.py
│ ├── Fin_Ball_3,0_Block_Around.py
│ ├── Fin_Ball_3,0_Circles_All_EXPERIMENTAL.py
│ ├── Fin_Ball_3,0_Circles_Around_EXPERIMENTAL.py
│ ├── Fin_Ball_3,0_Cross_All.py
│ ├── Fin_Ball_3,0_Cross_Around.py
│ ├── Fin_Ball_3,0_Cutout.py
│ ├── Fin_Ball_3,0_Outline_Fill_EXPERIMENTAL.py
│ ├── Fin_Ball_3,0_Parallel_All.py
│ ├── Fin_Ball_3,0_Parallel_Around.py
│ ├── Fin_Ball_3,0_Pencil_EXPERIMENTAL.py
│ ├── Fin_Ball_3,0_Pocket_EXPERIMENTAL.py
│ ├── Fin_Ball_3,0_Spiral_All.py
│ ├── Fin_Ball_3,0_Spiral_Around.py
│ ├── Finishing_3mm_ballnose.py
│ ├── Rou_Ball_3,0_Block_All.py
│ ├── Rou_Ball_3,0_Block_Around.py
│ ├── Rou_Ball_3,0_Circles_All_EXPERIMENTAL.py
│ ├── Rou_Ball_3,0_Circles_Around_EXPERIMENTAL.py
│ ├── Rou_Ball_3,0_Cross_All.py
│ ├── Rou_Ball_3,0_Cross_Around.py
│ ├── Rou_Ball_3,0_Cutout.py
│ ├── Rou_Ball_3,0_Outline_Fill_EXPERIMENTAL.py
│ ├── Rou_Ball_3,0_Parallel_All.py
│ ├── Rou_Ball_3,0_Parallel_Around.py
│ ├── Rou_Ball_3,0_Pencil_EXPERIMENTAL.py
│ ├── Rou_Ball_3,0_Pocket_EXPERIMENTAL.py
│ ├── Rou_Ball_3,0_Spiral_All.py
│ └── Rou_Ball_3,0_Spiral_Around.py
├── tests/
│ ├── test_data
│ ├── TESTING_PROCEDURE
│ ├── gcode_generator.py
│ ├── install_addon.py
│ └── test_suite.py
└── ui_panels/
├── __init__.py
├── area.py
├── buttons_panel.py
├── chains.py
├── cutter.py
├── feedrate.py
├── gcode.py
├── info.py
├── interface.py
├── machine.py
├── material.py
├── movement.py
├── op_properties.py
├── operations.py
├── optimisation.py
├── pack.py
└── slice.py
LICENSE
__init__.py
async_op.py
autoupdate.py
backgroundop_.py
basrelief.py
bridges.py
cam_chunk.py
cam_operation.py
chain.py
collision.py
constants.py
curvecamcreate.py
curvecamequation.py
curvecamtools.py
engine.py
exception.py
gcodeimportparser.py
gcodepath.py
image_utils.py
involute_gear.py
joinery.py
machine_settings.py
numba_wrapper.py
ops.py
pack.py
parametric.py
pattern.py
polygon_utils_cam.py
preferences.py
preset_managers.py
puzzle_joinery.py
simple.py
simulation.py
slice.py
strategy.py
testing.py
ui.py
utils.py
version.py
voronoi.py