Posts Tagged ‘ meshcam

Using Autodesk Fusion 360 with the X-Carve CNC & 3D Mesh


I’d been stuck on an old Macbook Air for all my CAD/CAM work for the past number of years.  And because of that, I was limited to MeshCAM (no disrespect, I quite like it, but one of the few mac apps for CNC I could find) for all my 3d-mesh carving.  I’d dabbled with Autodesk Fusion 360, but the ol’ Mac wasn’t powerful enough to handle it well unfortunately.

Finally got a new PC, and can start to branch out into other CAD/CAM apps.  I’ve been using my X-Carve CNC for just over a year now, been a great learning experience both with its hardware, and the CAM software that generates the toolpaths for it.  And as much as I appreciate how much I’ve learned from MeshCAM, I felt like there could be a more robust solution, and that’s where F360 comes into play.  I am by no stretch any sort of CNC expert, just an avid hobbyist, but I was really surprised how much the F360 team has put into its CAM solutions.

The below post is an overview on my first steps to get it working, specifically for cutting 3d mesh (rather than parametric solids) so I don’t forget what I did in the future.

I should note though, if you don’t care about cutting 3d mesh, this tutorial is still a valid intro to generating toolpaths with F360.

Disclaimer : Not a CNC expert.  Not a F360 expert.  What I list below are ways I figured out how to do things by looking through the docs, and a lot of forum posts.  There may be better ways out there to do any of this.  If so, please let me know!

Note, I use the term “RMB” a lot below.  That means “RightMouseButton”.

Fusion 360 CAM Docs

These are the docs I got the most out of when it came to learning its CAM capabilities.

And an informative tutorial:

F360 Installation

Really nothing to report here:  Install went off without a hitch.  It should be noted that F360 is cloud-app, meaning everything you do gets uploaded to the cloud.  I remember back in the day when it first came out there was a way around this, to only ever work locally.  I’ve not looked into that recently though.

Importing your mesh

F360’s CAM package can’t deal with 3d mesh natively (at least, I’ve been unable to find a way) : You first need to convert it into a solid it can deal with.  And in this case, it needs converted to a ‘BRep’ : I’ve been unable to actually figure out what the definition of a BRep is, but I’m guessing it’s a (solid)BodyRepresentation.  This process probably took me the most time to figure out, not having a broad knowledge of how F360 works.  The trick is, you can’t have any ‘history’ enabled when you do the conversion : The menu won’t even be there if that’s the case.

Note if you don’t care about 3d mesh, and just want to cut your solids, you can just skip this section.

Prep the mesh for import

Before you import/convert your mesh, you should be certain of a few things, based on the way you want to import/convert the mesh:

  • There are no holes in it.  It should be a solid mesh, no non-manifold geometry… quality solid geometry.


  • It should be triangulated:  While F360 accepts quads or n-sided polys, I found that it’s internal triangulation function, which appears to be auto-ran when converting to a BRep, sucks, causing poorly converted mesh. Pre-triangulate your mesh.
  • F360 will complain (but still do the conversion if you tell it to) if the mesh is over 10k tri’s, citing poor performance to BRep’s.  I presume this is for good reason.  Right now, I just auto-downres my mesh via Meshmixer or Remake.
  • Note, if you want to use this method on mesh that is more than 10k tris, you can cut your mesh up into 10k or less chunks via software like Meshmixer, export all those chunks, then import them all in one at a time via the below instructions.  Super clunky.


  • If you want to get passed the 10k poly limit, you can instead import quad-based OBJ data.  The trick is to first get it converted to a quad obj:  I learned most of this from this video.
  • Very important:  Make sure in your F360 Mesh Preferences, the “Triangulate Mesh Polygons” option is turned off.
  • Based on what I’ve read, you can do this via Remake:  First you should still decimate the model to some reasonable amount (via its Retopologize menu).
  • Then, via its Export Model windows ‘advanced’ tab, you can choose OBJ(Quads) as an export format.  You can additionally reduce the poly count here, but remember the tri count will be 2x the quad count you’re putting in.
  • Also note, this tool likes to blue-screen my PC from time to time :(
  • I’ve tried to get software like Meshlab to convert to quads and export as an OBJ, but F360 doesn’t seem to like that output (maybe I’m doing it wrong…).

Import into F360

Initial import steps:

To import in your mesh, regardless of it being triangles or quads:

  • From the Model Workspace, access Create -> Create Base Feature
  • Insert -> Insert Mesh
    • Browse to the mesh on disk, hit “Ok” in the “Insert Mesh” dialog

If you have triangulated mesh:

  • Once inserted, access the RMB marking menu on the mesh and “Mesh to BRep”
  • Finish Base Feature via the top menubar.

The imported mesh:


Via either method, at this point you can delete the original mesh from the Browser.

This will now give you a ‘body’ the CAM package can deal with.


If you have quadrangulated mesh:

  • Press the “Finish Base Feature” after the mesh is imported.
  • Press the Create -> Create Form button:  This will open the Sculpt Environment.
  • Utilities -> Convert
    • Choose : Quad Mesh to T-Splines
    • Select the mesh
    • Hit OK
  • This will create a new T-Spline body.
  • Press “Finish Form” From the top menubar:  This will auto-convert the T-Spline into a BRep (Body1), ready for CAM.
  • And again, here’s the video link I learned most of this from.

Dealing with scale

Note, that based on where you authored your mesh and the units it was in, you may need to scale it up.  For example, I work in Autodesk Maya in cm units.  I need to scale that mesh up by a factor of 1o either before I export, or once in F360, to get it in mm correctly.

Setting up CAM

First, switch to the CAM workspace in F360.

Manage your tools

Before you can start making toolpaths, you need to tell F360 what cutting tools you have:  Via the CAM workspace, access MANAGE -> Tool Library.

Uncheck all the libraries on the left except “Local”/”My Tools”.  Select “My Tools”.

Press the “New Mill Tool” button on the top bar, and start filling out the info for all the bits you own/want to cut with.

Nice page showing what all the values mean:  “New Mill Tool Reference

But in general the below values are always equal to or less than the one that came before it, from the “Cutter” tab:

  • Overall Length:  Total length of the tool,  say, 2.5″ for a fictional bit.
  • Body Length : How much of the tool sticks out of the chuck, or “Holder” in F360 terms. Obviously variable every time you insert it, but say 1.5″ here.  That leaves 1″ inside the chuck.
  • Shoulder Length:  From the tip of the bit to the last part of the thread, even the non-cutting part of the thread, say 1.25″.  That leaves .25″ between the end of the shoulder, and the chuck.
  • Flute Length:  Length of the cutting surface, like 1″:  There’s .25″ of non-usable cutting surface.

I should also note that with the 1/4″ chuck on the DeWalt611, it has 2″ of internal space for bits.

You can also make “Holders” for your different chucks:  Doesn’t seem necessary, but I did it anyway.

Create a Setup

Setups collect the rules that define the the stock to cut, and the toolpaths to cut in them.

Via the SETUP menu: New Setup : This will immediately open the SETUP dialog.  Below are good defaults I start with, but obviously every situation is different.  I skip over values I don’t change.

  • Setup Tab
    • Setup:
      • Operation Type:  Set this to Milling.
    • Work Coordinate System (WCS):
      • Origin: Selected Point : I pick the point on my mesh in the top of bottom left corner, which is the usual (0,0,0) position for the X-Carve:
      • stockZero
  • Stock Tab
    • Stock
      • Mode : Relative Box Size : This creates stock relative to the size of the model you’re working with.
      • Stock Offset Mode : No additional stock:  The stock is the exact size of the model.

This creates a new Setup for the given solid model.  If you hide the body via the lightbulb in the browser, you’ll see a ghost of the resultant stock:


Create a rough clearing operation

Now that there is a setup which defines our stock and the WCS origin, we can start adding toolpaths.  The order is important, since F360 cuts them in that order in Simulate mode.

Note, F360 has great tooltips, many with pictures:  Hover over the given field and see what pops up.

Via the “3D” CAM button, there are two clearing options available:  “Adaptive Clearing” and “Pocket Clearing” :

  • Pocket clearing is closest to what I’m familiar with in MeshCAM:  It removes material layer by layer, which is good for a light-weight machine like the X-Carve.
  • Adaptive Clearing will attempt to burrow down to the full length of your tool, then start cutting material against the full length of the tool. While this sounds great, I’m not sure how well the X-Carve would handle it, and have yet to test at this point (probably would need to cut very slow…).

Choose the “Pocket Clearing” operation:

  • Tool Tab
    • Tool : Select a tool you defined above.  The below “Feed & Speed” section will be auto-populated with that tools defaults.
    • Feed & Speed
      • Adjust as necessary based on the type of material you’re cutting.  How do you know what to set?  Based on my hobbyist level experience it’s all about learning what others have done, + trial & error.
  • Geometry Tab : Controls what area of the mesh will be machined.
  • Heights Tab:  A nice graphical way to set the vertical areas to be machined, and how far the tool-head should retract.
  • Passes Tab
    • Passes
      • Manual Stepover : If you want direct control over this, you can check this and set the min/max values.  Note that F360 can either use hard-coded values, or expressions for the fields : RMB on the “Maximum Stepover” field and “Edit Expression”:  You’ll see something like this pop up:
        • Math.max((tool_diameter – (2 * tool_cornerRadius)) * 0.95; tool_diameter * 0.20)
      • Change it, edit it, etc, based on your needs.  Here’s an example video on how to do that.
      • Direction : Climb by default, but machines like the X-Carve should have it set to “Conventional”, so the cutting edge bites into the material with the direction of toolhead travel.
    • Stock to Leave:  Here you can set how much stock is left over for the finish passes.  How much should you leave?  I generally make this a percentage of the diameter of the finish bit I’m using.
    • Smoothing : In general it sounds like you want this checked on, check the tooltip.
  • Linking Tab
    • Linking
      • Retraction Policy : I’ve had good success with “Minimum Retraction”.
    • Ramp
      • Ramp Type :
        • If you’re cutting wood, “Plunge” seems good.  If you’re cutting metal, then “Helix” is the way to go.

There are obviously many more options, but the above got me started well.

After you hit “Ok” in the dialog, you’ll see the new Pocket operation in the browser show up : While it’s calculating the toolpath a % value will be visible.  After a few seconds, the toolpath should show up, presuming you have the pocket operation selected.



Create one or more finish operations

F360 comes with quite a few finish operations.  Technically you can use can combine as many as you want, but again, build them in order of operation.  In this example, I’ll use the “Parallel” operation, because it most closely emulates what I’m used to in MeshCAM.

Via the 3D  Menu access “Parallel” operation:

  • Tool Tab
    • Tool : Select the tool for this pass. But default it’ll choose the tool used in the operation before it. Note if you choose a different tool, obviously you’ll need to go through a toolchange operation (which on the X-Carve is a very manual step), and need to save out your gcode as multiple files.
  • Geometry Tab : Controls what area of the mesh will be machined.
  • Heights Tab:  A nice graphical way to set the vertical areas to be machined, and how far the tool-head should retract.
  • Passes Tab
    • Passes Options to control the angle of the surface to be machined, the stepover, etc.
      • I like to set my stepover to be 10% of the bit width to give a nice, smooth finish, which you can set as an expression by RMB on the “Stepover” field & “Edit Expression”:
        • tool_diameter * .1
    • Smoothing : Like in the rough cut, this seems good to check on.
  • Linking Tab
    • Linking
      • Retraction Policy : I’ve had good results with “Minimum Retraction”.

After you hit “Ok” in the dialog, you’ll see the new Parallel operation in the browser show up : While it’s calculating the toolpath a % value will be visible.  After a few seconds, the toolpath should show up, presuming you have the parallel operation selected.


Like mentioned above, you can add more finish passes using different techniques here as needed.

Name your setup and operations

It’s a good idea to name your setup and operations, so you know what you were up to months later.  Click once on a name in the Browser, then click again after a second: It’ll let you rename them:


Save operation templates

Presuming you get values you like and want to resuse thes on other cuts later, there are two ways to access the data:

  • You can open a previous cut, then RMB on any operation and “copy” it.   You can go to your other cut’s setup, and “paste” it.  Works, but clunky.
  • Better, is to select one or more operations in the browser, and RMB on them -> Store as template : This will give you a broswer to your local HD for storage, and later import via the “Create from Template” Setup RMB menu.

Simulate / preview the cut

This is an incredibly powerful part of F360:  You can pre-visualize your cut.  Either select your setup folder in the Browser, or multi-select all the operations you want to preview (basically, whatever toolpaths are shown will be simulated), and press the  ACTIONS -> Simulate button.

In the SIMULATE popup, check on the “Stock” box.  This will show you the uncut stock.  You can uncheck the “Toolpath” if you don’t want the lines to obscure the view.  Then simply press the > Play button at the bottom of the screen:  All the selected operations will begin previewing their cut:


Green is the roughcut, blue is the final pass.

Using the correct postprocessor

For F360 to generate the correct gcode/nc data, it needs to be post-processed for your given machine.  Since I’m using an Inventables X-Carve (grbl-based), I had to do some searching.

This section has been edited since the original blogging:  Originally I’d found a couple postprocessors online, and they “worked”, but had a “bug” where at the end of the cut, they’d send the machine back to the “machine home” (where the toolhead was when the machine was powered on), not the “work home” (the zero/home position of the cut).  This caused two failed cuts for me as the tool-head ripped into my stock trying to go somewhere bad.

After troubleshooting and posting on the forums, I was made aware that F360 comes with a ‘generic grbl postprocessor’, that needs only one small adjustment.  I’ll show that info below.

Generate or “post” the gcode/nc data

Once you’re happy with your toolpaths, you can ‘post’ the data for your CNC to use.

The big decision here is how you’ll save the operations you’ve made previous:  If they all share the same bit, you can select them all at once in the Browser, and save a single file for all of them.  However, if toolchange is needed, you should save each operation as a separate file, selecting one at a time and going through the below steps.

Via the ACTIONS -> Post Process Menu:

  • Setup your postprocessor.  Since I’m using an X-Carve that runs grbl:
    • Setup : Use Generic Posts
    • In the Post Configuration section, select “grbl.cps – Generic grbl”
    • In the “Property” section in the bottom right, make sure that “useG28” is “No”.  If this is “Yes”, it’ll return to machine home (instead of work home, where you zeroed the cut) upon completion of the job, discussed above.  If this is “No”, it simply raises the toolhead and leaves it there.
    • grbl_post
  • Define the Output folder where you want the .nc data saved.
  • Under Program Settings, set the name of the file under “Program name or number”.
  • Press the “Post” button:  The .nc data is saved to disk.

Cutting with the data

There are number of sender software available to send the .nc data to your machine:  Easel (browser-based) can do it, I’ve had success with Chlipeppr (browser-based), I hear good things about LaserWeb/CNCWeb (browser-based, not yet tried), but currently use Universal GCode Sender (Java applet)  for all my work.

The F360 data didn’t cut any differntly in UGS than MeshCAM data, and had great result:


In fact, the few hard-edges around the hemisphere are due to a pencil-cut I was toying around with as an extra pass.

In Conclusion

I feel F360 provides a tremendous amount of power to the hobbyist CNC user, especially considering the price (free).  The learning curve is a bit steep, but it has a large amount of helpful documentation, and videos available.  It’ll be my go-to piece of CAM software in the future, hands down.


New CNC cut: Honeywood

I’ve been teaching myself the MASH toolkit in Autodesk Maya.  It’s been a lot of fun to learn.  As a challenge, I decided to design a hexagonal-based structure, which I then cut into some reclaimed redwood with my X-Carve CNC:


I applied a ‘natural’ stain to the inside section, and a darker ‘walnut’ stain to the outside.  The rough cut was with a 1/8″ 1-flute upcut endmill, and I did a pencil-cleanup pass with a 1/16″ 2-flute upcut endmill.  Whole cut took maybe 45 minutes.  The piece measures 8″ square, and the cut is around 1″ deep at the lowest point.  I used MeshCAM to generate the toolpaths from the stl file exported from Maya.

Visual comparison of ballnose stepover values on the X-Carve

I built my X-Carve back in December:  It’s been a great new tool to learn.  I’m still very new to the world of CNC, and like to visually grasp the concepts.  So I decided to do a series of tests to understand how ‘stepover’ values effect the finish-pass quality of the surface both on X, and on the XY axes.

The MeshCAM blog does a great job of describing the fundamentals of stepover here.

Here are the stats for the cuts:

  • Hardware:  Inventables 1000mm X-Carve.
  • 1/4″ ballnose bit, 2-flute upcut.
  • Feedrate 60ipm, DeWalt set 1 to 2.
  • Wood type:  Unknown (came from an old bookshelf bottom), but if I had to take a guess, I’d say pine.
  • 3d Design Software: Autodesk Maya
  • CAM: MeshCAM
  • Sender: Chilipeppr

The specifics from MeshCAM below. All values for all cuts were the same except of the stepover, and either “Cut along X”, or “Cut X then Y”.


I wanted really extreme examples, so I set the following stepover percentages for my test: 100% (1/4″), 75%, 50%, 25%, 10%, 5% (only done on X, not XY).

I started by designing a model in Maya that incorporates a variety of surface angles.  The inside volume is just over 2×2″, by about 1/4″ deep.

stepoverCompare_maya (that’s a flattened sphere in the middle)

I then made multiple different gcode (nc) via MeshCAM, and started cutting them.

The whole piece for the X-cut:


And the whole piece for the XY cut:

stepoverCompare_allXY (note, no 5% test here)

Individual close-ups below.  X pass on the left, XY on the right.

Note the rough-cut for all pieces took just about exactly 2 minutes.  All the times listed below are for the X & XY-Axis Finish pass in min:sec.  So to get the total cut time, just add two minutes to the below values.

stepoverCompare_100 stepoverCompare_100xy

  • 100% stepover, .25″ : This is obviously super rough.  I honestly expected the segment to be closer together.
  • X Finish Pass Time:  0:47
  • XY Finish Pass Time : 1:34

stepoverCompare_75 stepoverCompare_75xy

  • 75% stepover, .1875″ : Not too much different than 100 really.
  • X Finish Pass time : 1:03
  • XY Finish Pass time : 2:03

stepoverCompare_50 stepoverCompare_50xy

  • 50% stepover, .125″ : Still really rough, but arguably could do something artistic with the ridges at this point.
  • X Finish Pass time: 1:30
  • XY Finish Pass time : 3:00

stepoverCompare_25 stepoverCompare_25xy

  • 25% stepover, .0625″ : Carry on, nothing to see here.  Even with the XY pass, it’s still pretty rough.
  • X Finish Pass time: 2:50
  • XY Finish Pass time : 6:40

stepoverCompare_10 stepoverCompare_10xy

  • 10 % stepover, .025″ : Now we’re getting somewhere: Ridges are still visible, but small.  Pretty smooth to the touch, but you can still make them out.  Sanding could take care of this.
  • X Finish Pass time: 7:10
  • XY Finish Pass time : 14:00


  • 5% stepover, .0125″ : Done.  Finished.  Can’t make out the ridges with the naked eye.  Very smooth to the touch.  No sanding needed really.
  • X Finish Pass time: 14:20
  • No XY pass done.  Not much point considering the quality already achieved.

Final thoughts:

  • Notice on all X-cuts that the lower-left section of the hemisphere is rough.  Must have to do with the direction of the toolhead (left<>right on X) and the spinning of the bit (clockwise).  The XY cuts removed these issues.
  • If you are ok with sanding, 10%/.025 stepover is ok.  If you want to avoid sanding entirely, go with the 5%/.0125″ stepover.
  • Even though the 5% X-only stepover and  10% XY stepover took the same amount of time, the X-only has a far better surface quality.  You’d still need to sand the 10% XY one.
  • What do I take away the XY Finish pass?  The XY Finish Pass times are generally 2x the X-only times, but don’t really increase the quality.  Not much point unless you’re looking for ‘that look’ in the cuts.
  • I feel like the speeds could be greatly increased on the finish pass:  I was only running the router on speed 1 to 2.  The smaller the stepover, the smaller the amount of material you’re removing, so arguably the faster the toolhead could move to compensate for this under load:  There’s a lot of speed left in the router…. sounds like another good test to try.

New X-Carve project: Soap Dish

Working with the X-Carve has been a lot of fun.  A while back I 3d printed the “Soap Holder by piuLAB“, and figured something similar would be great to route.

Took some time in Maya generating a pleasing voronoi pattern for the top of my soap dish, which I cut out of alder, and the bottom out of some red oak:


Generated the gcode in MeshCAM, and use Chilipeppr to send it to the X-Carve.  Still a lot of learning:

  • For the top:
    • Used a 1/8″ 1-flute upcut endmill at 120″/min, 1/16″doc, 1/16″ stepover, Dewalt611 at 1.5, based on chipload calculators.  It seemed to cut just fine. but as you can see (if you zoom in) there is vertical banding on the Z.  After posting to the forums, the consensus is I’m cutting too fast.  So… I’ll slow it down next time 😉
    • It didn’t cut all the way though, so I had to use an x-acto to cut out the rest of the pockets.  Either I need to trick it into thinking my material is thicker, or do more tuning on my Z-steps.
  • For the bottom:
    • Used a 1/4″ 1-flute upcut endmill at 120″/min, 1/8″doc, 1/8″ stepover, Dewalt611 at about 2, based on chipload calculators.  It seemed to cut just find as well using a conventional climb cut on the rough pass, but on certain sections I got a lot of chugging.  Again, too fast.  Slower next time.

When it was done I applied some stain to the top, and sealant to both, and came up with this:


Not too bad all things considered :)

You can download the STL’s from Thingiverse here for routing, or 3d printing.

Digital to wood : A new X-carve piece

New piece I made on the X-Carve:  It measures just under 12″ square, by 1/3″ thick, birch plywood, with some ‘natural’ stain applied:


So how did I get there?

Years ago, like ’98-2000-ish, I was really into building shader networks in Maya.  I loved their ramp shader, so versatile.  Later Maya introduced their ‘layered shader’, which is a lot like a layered file in Photoshop.  Over the years my career in CG has taken me away from shader creation, but I always remember how much fun it was ‘back in the day’.

Fast forward to now with the X-Carve :  I know that I can turn a grayscale height-field into mesh, and MeshCAM will turn it into a toolpath, so this was my first attempt at doing just that, via a shader network in Maya:


This visualizes (from right to left) the shading group (which the mesh is assigned to) that has both a lambert (just for mesh visualization) and displacement material (for later conversion to displaced polys) assigned.  They’re in turn both fed by a layered texture, that has inputs from a ramp (on top) that defines the border, an ocean texture (that makes the ripples), and another ramp that makes the circles.  I authored a Python script that automates this whole creation process and mesh assignment, with a simple window so I can repeat this process easily.  Iteration is king.

From there, I had something that looked like this, assigned to a flat, tessellated polygonal plane:


Which I then converted into displaced polygons (Maya: Modify -> Convert ->  Displacement To Polygons)


Exported as an stl, and brought that into MeshCAM for toolpath generation as a two-part cut:

  • Rough pass with a 1/4″ two-flute upcut endmill.
    • 60 inch/min
    • DOC .0625″
    • Stepover .125″
  • Finish pass with a 1/8″ two-flute upcut ballnose.
    • 60 inch/min
    • DOC .0312″
    • Stepover .025″ : Should have doubled this to get rid of the scalloping.
  • Had the DeWalt 611 router speed set to 1 on both based on rough chipload calculators:  Seemed to do fine, occasionally had some stuttering on the rough pass.

I sent the gcode to the X-Carve via Chilipeppr, and over the next 2.5 hours watched the magic ensue:


The above pic shows the final pass emerging from the rough.

Until the final product appeared:


All the hold-downs are overkill, but I realized I had told MesCAM to machine the entire stock, so I had to move them around as the progressed from bottom to top, or I would have machined the clamps themselves.  Noob move.

Pretty happy with the end-result:  It’s actually quite confusing to the eye in person as the shadows dance around it.  Great test though, and a lot learned.