New for 0.9.7

Changes to drawing tree

  • Multiple selection supported added. Uses common shift and control key combinations.
  • Drag / drop to reorder (can also drag drawing objects onto mops)
  • Space-bar hides/shows layers and enables/disables mops
  • ctrl+left & right moves selected objects up/down

More multi-threading support

Long running operations should get a 'cancel' button on the thinking message, so if problems occur, the process can be stopped without resorting to killing the CamBam process and losing any unsaved work.

New Tools - Options setting : WorkerThreads. This setting should generally be set to the number of processors or 'cores' on your machine. Setting the number of worker threads higher than this may reduce overall performance. This setting is currently used when toolpaths are generated, so multiple machining operations may be calculated in parallel.

New 'Translate - Rotate' function.

Select a center point of rotation, then move the mouse about this point to define a rotation.

The default is to rotate about the Z axis, but pressing the X, Y or Z key whilst in rotation mode will change the rotation axis.

If Snap to Grid is enabled, the rotation will snap to common angles... 30 degrees, 45, 90 etc.

New machining operation StartPoint parameter

This option gives the ability to specify a point, near to where the toolpath should begin machining.

This option is currently 'hiding' away under the Misc section of the machining operations parameters and is set by selecting from a drop down list of options or entering point coordinates directly.

Choose 'Select...' from the drop down list to select a point from the drawing, near to where you want to start machining.

When a start point is defined, a small circle will be displayed in the drawing at its location. This circle can be dragged to new positions using the mouse. If multiple machine operations are selected, having the same start point, dragging will move all the selected start points.

Some issues...

If the start point is set outside the toolpath, the toolpath point nearest the start point may not be detected correctly. It is safter to set the start point on or just inside the toolpath for reliable results. This issue is under investigation. - This issue should be resolved in the E revision.

If there are multiple objects for a machining operation, the start point currently only works for the first toolpath. After this, CamBam looks for each next nearest toolpath point. A list of start points for multiple objects is being considered for a later release.

New StepoverFeedrate machining operation option:

In response to a number of requests, there was a change in 0.9.6 to use the plunge feedrate for stepover moves. This may be beneficial for machining harder materials, but it has been reported that this 'slow down' can cause problems when machining plastics due to the extra heat build up.

For Profiles, Pockets and 3DSurfaces, a new StepoverFeedrate option has been added for finer control of this feedrate.

This is another new value that can be selected from a number of presets in a drop down list or a value entered directly.

Improvements to waterline machining reliability.

A number of problems were identified fixed relating to waterline machining reliability.

WARNING! Although the toolpath reliability has been improved, the waterline routines are still a relatively new addition to CamBam and development, testing and bug fixing is ongoing. These routines should be used with caution and testing toolpaths with a simulator or soft materials like foam first is highly recomended.

A common cause of many problems for the waterline machining operation are shapes with many faces converging at a common vertical area. This is typical with many engineering shapes which are generally prismatic.

A new option PlaneSliceOnly has been added the 3D Surface operation (under the Options group), to help with such shapes.

As the name suggests, when PlaneSliceOnly is set to True, only the 'slices' through the 3D model at each depth level, are used to calculate the toolpath boundaries. This avoids much of the more complicated logic in place to detect overhangs and is therefore generally faster and much less prone to toolpath 'glitches'. However...

WARNING! If PlaneSliceOnly=True is used, no attempt is made to detect overhangs in 3D shapes. If the model does contain overhangs, the plane slices underneath these overhangs will overcut the stock from the layers above it. PlaneSliceOnly=True should only be used when the 3D model is known to be prismatic in shape with no overhangs!

Other new features:

  • GCodeOrigin offset (machining 0,0 point) can now be dragged around (the red X when mop selected).
  • In the drawing window, shift+arrow keys translate selected objects.
  • File loading speedups - seems ~ 4-5x faster?
  • gcode Outfile name is now stored as a relative path (to the drawing file).

Bug Fixes

There have been many bug fixes, but some notable ones are:

  • renaming a template to create a new one now inherits settings from template being renamed.
  • Drawing Name property, Filename, renaming drawing in tree behaviour improved.
  • Some fixes to 3D routines which may reduce some toolpath glitches.
  • Fast plunge for drilling should be fixed.
  • Middle mouse button should now end/cancel all repeating commands.
  • $macro = value (with spaces) bug fixed.

Revision D bug fixes

  • Fixed bug with floating point formatting on machines having comma as decimal point in regional setting.
  • Fixed bug related to trimming certain shapes.

Revision E bug fixes

  • Problem with start point not always detected should be resolved. This also should fix some toolapth optimisation inefficiencies.
  • A Polyline offsetting problem was fixed with certain shapes.
  • Improvements to toolpath cut ordering for 3D surfaces. DepthFirst should now be more reliable, but this is still being tested.

Revision F new features!

  • Will now generate around 300 lines of gcode after evaluation has expired!
  • Added new post processor macro {$arccentermode} and ArcCenterAbsolute / ArcCenterIncremental values to handle Mach3 G90.1 & G91.1 codes.

Revision F bug fixes

  • Fixed new bug when parsing text STL files with multiple spaces.
  • Rudimentary interpretation of extrusion direction for 2D arcs in DXF files.
  • Improved handling of rotations and mirroring for Arc entity apply transformations.
  • OpenGL initialisation now checks AntiAlias setting. Attempt to fix occasional OpenGL issues with some hardware.

New for 0.9.6

The major feature of this release is a new 3D profile machining operation that will eventually replace the existing Bas Relief method.

New 3D profile machining operation.

The new 3D profile operation supports the following features.

  • Waterline roughing and finishing methods.
  • Z scanning roughing and finishing methods (similar to Bas Relief).
  • Front face and back face machining
  • Generation of molds
  • Restriction of machining boundary to save machining time.
  • Experimental additive support for extrusion heads.

More details can be found in the 3D Profile documentation

New 3D Profile

The left hand buddha was finish machined at 2000mm/min resulting in a fuzzy finish (but total run time was only 45 minutes including a 3mm depth roughing pass and 0.3mm finish stepover). A faster spindle speed should have been used for the finish. The right buddha had a slower finish speed but the tool was referenced incorrectly resulting in roughing gouges. Practice makes perfect!

These files were made from a 1.5M face model from the wonderful Aim@Shape Shape Repository, down-sampled to 30K faces using the equally marvelous MeshLab application.

OpenGL drawing view.

The OpenGL view now supports the ShowCutWidths=True machining option. The cut width shading is now generated using a more sophiscated approach than the old GDI routines. One main benefit is the cut widths can be viewed from multiple angles rather than only face on as with GDI.

OpenGL mode is now enabled by default. If any problems are experienced with OpenGL, legacy GDI support can be enabled. In Tools - Options, under the Display group, there is an option DisplayMode which can be set to GDI or OpenGL. Changing this option will require restarting CamBam.

Edit - Polyline - Arc Fit.

Arc fitting routines were added to help with the new 3D profiling routines, but can also be used directly to help with machining complex polylines.

Select shapes, then slect the Edit - Polyline - Arc Fit menu option to attempt arc reduction on those shapes. New arc-fitted shapes will be created in the current active drawing layer.

The arc fit routines prompt for a fitting tolerance. This is the maximum allowed error in drawing units when attempting to fit curves to existing polyline segments.

Edit - Polyline - Remove Overlaps.

This function was added to help cope with problematic geometry, often caused by bitmap vectorizing software, that resulted in extra polyline segments overlapping existing ones.

This routine will also help remove instances where entire geomtry is duplicated.

To use this feature, it is a good idea to first create a new drawing layer and make it active. Select shapes to clean then select Edit - Polyline - Remove Overlaps. The new (cleaned) shapes will be inserted into the new active layer.

Toolpath changes

The FastPlungeHeight behaviour was added to a couple more places in the post processor.

This should allow for faster toolpath run times but care should be taken with this early release as this new behaviour has not been well tested.

Cross over moves now use the plunge feedrate setting of machining operations. Cross over moves are small feed moves from one toolpath to the start of another, where the distance to travel is within a threshold set in the MaxCrossoverDistance property of each machining operation. Distances greater than this will result in a retract to the clearance plane, rapid to new position then plunge.

Draw - Fill Region

Region fillers are another development added to support the new 3D profiling routines and useful in other applications.

Region fillers are used to fill a shape with lines according to certain patterns. The lines can the be used to form tool paths (as with 3D profile waterline roughing).

Once the technique has been proved with waterline roughing, the intention is to change the existing 2D pocketing operations to use these routines.

The current region filling styles are:

  • Inside Offsets region filled with offsets from islands radiating outward.
  • Outside Offsets region filled with progressive offsets from outside in (like current pocket method).
  • Inside + Outside Offsets region filled with progressive offsets from outside in, unioned with offsets from islands radiating outward.
  • Horizontal Hatch region filled with horizontal lines
  • Vertical Hatch region filled with vertical lines

Machining - RebuildToolpathBeforePost

Changing this option to Prompt gives the ability to create gcode file without the routines automatically rebuilding toolpaths.

This is especially useful with 3D profiles or other complicated operations which may take many minutes to generate a toolpath, only to having to generate it again when gcode is created.

Other new features:

  • Polyline join has been rewritten and number of improvemnets made.
  • Surface join has been rewritten and now checks for common vertices.
  • Can now Explode surfaces to individual faces.
  • Can now trim point lists.
  • New Transform - Scale operation to scale selected objects to a specific size.
  • Can now change GCodeOriginOffset by clicking the [...] button to the right of the property and selecting a drawing point.
  • Machining operation's source shapes can now be editted from a list of IDs in the property grid and can be selected from the drawing using the [...] button to the right of the property.
  • Added repeat mode for drawing shapes and measure commants. This can be turned off in Tools - Options - Drawing, RepeatCommands.

Bug Fixes

  • Canned cycle drilling operations now reset a number of parameters at the start of a block. This was resulting in potential missing modal parameters such as Z and R.
  • Exporting to DXF now applies transformations to objects first.
  • Bug fixed when bottom toolpath was overcutting holding tabs when lead ins used and depth increment evenly divided the target depth.
  • Added sanity check when spiral drill hole diameter was <= tool diameter.
  • Added sanity check when attempting to pocket open polylines.
  • Number or bug fixes and rewrites relating to polyline offset generation which should hopefully improve toolpath generation reliability.

Revision A bug fixes

  • Remove extra spline frame vertices from DXF files with traced polylines.
  • More toolpath fixes
  • Fixed bug with hatching region fillers.
  • Now should recalculte holding tabs when source objects are rotated.
  • Back plotting files with drilling canned cycles fixed in OpenGL mode
  • Fixed bug in new Arc Fit routines that was causing cumulative errors on polylines with many tiny segments.
  • Made extra degenerate tests on by default for all 3D Profiles as was safer and didn't impact performance much.
  • Fixed bug when multiple surfaces selected when using BoundaryMethod=SelectedShapes

Revision B bug fixes

  • Remove extra spline frame vertices from DXF files with traced polylines.
  • More toolpath fixes
  • Fixed bug with hatching region fillers.
  • Now should recalculte holding tabs when source objects are rotated.
  • Back plotting files with drilling canned cycles fixed in OpenGL mode
  • Fixed bug in new Arc Fit routines that was causing cumulative errors on polylines with many tiny segments.
  • Made extra degenerate tests on by default for all 3D Profiles as was safer and didn't impact performance much.
  • Fixed bug when multiple surfaces selected when using BoundaryMethod=SelectedShapes

Revision C bug fixes

  • Reduced 3D scanline trimming boundary.
  • Fixed boundary calculations for Mold and Backface 3D operations.
  • Fixed bugs relating to closed polylines with 2 points.
  • Fixed bugs with vertical hatch fill.

New for 0.9.5

This release introduces a new OpenGL drawing view and includes a number of bug fixes.

OpenGL drawing view.

As the OpenGL view is still in development, the previous GDI+ viewer is active by default. OpenGL is much faster at rendering 3D scenes which is very apparent with files with many drawing objects or toolpaths. It also makes working with 3D surfaces much nicer as it uses solid shading rather than the wireframe view of GDI.

It is still early days for the OpenGL view and improvements to the look and feel are planned.

Unfortunately, ShowCutWidths=true currently does not work in the OpenGL view. Implimenting this functionality is high on the development priority list.

To enable OpenGL, in Tools - Options, under the Display group, there is a new option DisplayMode which can be set to GDI or OpenGL.

You must restart CamBam for the DisplayMode option to take effect.

I would welcome any feedback and suggestions on the OpenGL view so that we can strive to improve it.

Some machining operation properties have moved.

Roughing Clerance is now found in the Step Over section.

Clearance Plane is now found in the Cutting Depth section.

Pocket Finish Step Over

A new property FinishStepover has been added to pocket operations. This is the thickness of stock to leave for the final cut against the pocket wall surface.

Another property FinishStepoverAtTargetDepth determines when FinishStepover is applied.

If FinishStepoverAtTargetDepth = true then for multiple cut depth pockets, the FinishStepover stock thickness is left on each depth level, which is then removed by the very last cut at full depth.

If FinishStepoverAtTargetDepth = false the FinishStepover stock thickness is removed on the last cut at each depth level.

This property has currently only been added to pockets but will be later extended to work with profiles.

Added Feedrate Option To LeadIns

The LeadInMove information contains a new property LeadInFeedrate.

If set to 0, the CutFeedrate will be used for the leadin. A postive number will result in the explicit feedrate being used for lead in moves.

As a safety precaution, leadin feedrates will use the CutFeedrate if the lead in feedrate is set larger than CutFeedrate.

New Layer Context Menus

  • 'Hide All But This' (Layer) right click menu option in drawing tree.
  • 'Show All' (Layers) right click menu option in drawing tree.

Bug Fixes

  • Last used File Open folder is now remembered.
  • Bug with top 3D surface machining menu.
  • Duplicate primitive IDs and corrupt XML file errors.
  • Double clicking empty message window crash.
  • Lowest holding tab toolpath error when even number of depth cuts.
  • Incorrect setting of DXF units.
  • Innermost pocket toolpath glitch.
  • Holding tabs were broken for open polylines with climb milling.
  • Resolved some pocket properties not stored in template.
  • Prevent leadins on toolpaths below a certain size resulting in crazy tight spirals.
  • Prevent regenerating toolpaths for disabled MOPs.
  • No toolpaths were being generated for pockets with RoughingClearace = -tool radius.
  • Sometimes wasn't moving directly to next concentric toolpath when stepover = max crossover.

New for 0.9.4

There has been a lot of work on toolpath generation in this release. This should allow much smoother and more efficient toolpaths as well as allowing machining of shapes that were not possible before.

Warning! A lot of code that has been tried and tested by hundreds of users over the years has been rewritten so please treat this early release with some caution and I would strongly recomend running simulations before cutting.

Toolpath collision detection (unioning)

I think the best way to describe this feature is with some pictures...

Overlapping toolpaths 0.9.3

Toolpaths for shapes close together would overlap in previous versions, resulting in overcutting

New toolpath collision detection

With collision detection, all toolpaths are unioned together, avoiding overcutting.

Another use for collision detections is for inside profiles for regions. This provides an alternative method for island pocketing which requires no 'clean up' pass around inner islands. This will be added as an extra option to pocketing operations.

Alternative Island Pocketing

This new feature also makes it possible to do better isolation routing files for printed circuit boards as previously increasing cut widths would over cut tracks.

New union drawing routine

Unioning is also available as a drawing operation, by selecting multiple objects then using Edit->Union or CTRL+U.

Union operation

This example shows the results of unioning multiple regions.

Side Profiles

Side profiles are a new feature available in 2.5D profile machine operations, though their use will soon be extended to pockets and 3D profiling.

They allow 3D effects from 2D shapes by specifying a profile shape for the cut face.

Side Profile properties are defined in the 'Misc' section of the profile's machining operations properties. Similar to holding tabs and lead ins, this property requires expanding by clicking the '+' plus icon to the left of the property.

AdjustCutWidthsA better description for this property might be 'Roughing or Finishing'
When True, all layers above a profile cut are also cut.
When False, only the side profile shapes are cut.
MethodThe shape of the profile cut. Options are... None - Turns off side profiling and uses normal verticle cuts.
Slope - The cut face is a straight slope or bevel with Value the angle of the slope in degrees from the verticle.
ConvexRadius - The cut face is an outer radius with Value the radius of the curve.
ConcaveRadius - The cut face is an inner radius with Value the radius of the curve.
ValueThis number is used as a parameter for the selected profile shape.

The sign of Value is significant and changes the behaviour of the side profile.
The samples folder contains a file 'side profiles.cb' which shows an example of all the permutation of side profile methods, value signs and inside / outside profiles.

Another example 'heart-shaped-box.cb' is also provided which uses side profiles.

Heart Shaped Box Heart Shaped Box

More lead ins

Lead in moves are now used in pocketing operations as well as profiles.

Holding tabs also now use a lead in move for the trailing edge which avoids the direct plunge used in the previous release.

This behaviour can be turned off with a new property UseLeadIns under the holding tab information.

Improvements to drawing tree view

Machining operations can now be enabled / disabled by the right clicking on them in the tree view and selecting the 'Enable / Disable' menu option. The machine operation icon now also changes to reflect it's state.

The layer icons have been changed to show a green arrow to indicate the active drawing layer and hidden layers are shown faded.

Offline Help Files

Local help is now availble from the Help->Contents menu option. Help is provided as HTML files.

The help files are still in development so there is some missing content. I am also aware of display issues when viewing with Internet Explorer.

Setting Window Transparancy

The CamBam application window can now be made transparent by changing the View->Window Opacity Option which is a percent.

Why do this? I found this very handy for hand-digitising simple shapes, by setting opacity to 70% then positioning CamBam over a bitmap, then drawing around the underlying shape using the polyline drawing tool. A spline drawing tool would make this even more useful but alas this is still on the todo list.

Involute Gear Plugin

With many thanks to Ajayre the CamBam plus toolkit now contains an involute gear generator. This is available under the 'Toolkit' top menu.

Involute Gear Plugin Involute Gear

Changes to top menu

Although not a major change, I have upgraded the control used for the top main menu. This does unfortunately break existing plugins which will need to be modified slightly and recompiled for the new release.

    // Old menu declaration...
    //    MenuItem mi = new MenuItem();
    // Changes to this...
    ToolStripMenuItem mi = new ToolStripMenuItem();
    mi.Text = "HeightMap Generator";
    mi.Click += new EventHandler(HeightMap_Click);
    // Old menu insertion...
    // ui.Menus.mnuTools.MenuItems.Add(mi);
    // Changes to this...

Other Improvements

  • Can now do island pocketing of text objects without converting to polylines first.
  • New interactive arc drawing function.
  • Use of keyboard arrows to pan the drawing view.
  • Better fading of unselected objects.
  • GCode interpreter now supports G91.1 G90.1 instructions
  • More items in template list without scrolling.
  • .dxf is now not appended to drawing name when open DXF files.
  • Post processor now obeys the MaxCrossoverDistance property for machine operations.
  • New option DefaultGCodeExtendion under tools options.
  • Better defaul filename selection when generating gcode from single mop.
  • Improved toolpath efficiency.
  • Objects can be free-hand rotated by holding down shift then rotating using ALT+drag or Middle Mouse+Left Click dragging. A change is planned to rotate in set increments and lock rotation about axis.
  • Rapids are now displayed for the toolpath. These can be turned off under the machining properties in the drawing tree.
  • Some toolpath generation speed improvements.
  • The current CAM Template properties can now be modified by clicking on the word 'Template' to the left of the Template drop down list.
  • A bug was fixed when creating new CAM templates, the new template was not being selected.

New for CamBam plus (versions up to 0.9.3)

This quick guide to some of the new features in CamBam plus.

Including : Holding Tabs, Lead Ins, Undo/Redo, Moving Objects


Holding Tabs

Generate your profile mops, then under the mop's options under Misc there is a HoldingTabs property. You need to click on the + sign to the left of it to expand the property to modify. The sub properties are:
Height - this is the height of the tab
MaximumTabs - used to autocreate tabs
MinimumTabs - used to autocreate tabs
TabDistance - used to autocreate tabs
TabMethod - None | Auto | Manual
Width - the width of the auto tabs

Set the tab method to Auto then regenerate the toolpath.

The number of tabs is worked out by dividing the perimeter of the drawing object by the tabdistance. It then uses the minimum and maximum tab settings to limit the number of tabs it adds.

Once the tabs are visible, you can drag them around to where you would prefer them.
As soon as you drag them, the tab method is changed to manual. To autocalc them again you need to set this back to Auto.

Tabs can be removed and added by selecting the profile mop in the tree then right clicking the holding tab or source geometry where a new tab should be inserted then selecting an option from the HoldingTabs context menu.

NOTE: Holding tabs are only currently working where the source geometry is polylines.


Lead Ins

Under the properties for the profile mop there is a group called LeadInMove, this group needs to be expanded to change the sub-properties.

LeadInType : There are currently 2 options. Tangents and Spirals. Spirals should perhaps more accurately be called spiral ramps as the toolpath is extended and stretched in the Z direction to form the lead in move.

Spiral Angle: If omitted, spiral ramps will get their angle from the plunge and cutting feedrates. Entering an angle in this property (in degrees) will override this. This angle is also used by tangent approaches .

NOTE : Lead ins are only working for profiles at the moment. Leadins for pockets and other mops will be added soon.

NOTE: Lead outs and transition moves between same level stopovers will also be added soon.


Moving Objects

Objects can now be moved by holding the shift key and dragging. Alternatively there is a new context menu option :

Right Click->Transform->Translate, which uses a start and end point for moving.

I have tried to remove the need for ‘applying transformations’. You should now be able to resize, move and rotate objects and the toolpaths will be automatically updated.


Undo / Redo

There is now an unlimited undo / redo facility.

Copyright (c) 2018 HexRay Ltd