Request for comment (roughing)

I would like to restrict “roughing” to what is now termed “inside only” for a few reasons:

  • path routing with outside “roughing” is non-sensical
  • outline cuts in “roughing” aren’t really “roughing”
  • outline now has “outside only” which is basically a cut-out pass
  • roughing in + outline out = old school roughing with better sequence control

I’ve been playing with it all morning and there is, as far as I can tell, no downside. The upsides are:

  • more logical, sensible
  • fewer chances for mistakes
  • cleaner code and UI

Roughing has the “leave stock” option, where outlining does not. Outlining may well be your finishing pass, particularly for vertical surfaces, so I’d think the ability to choose a different bit or feed rate for those passes would be desirable.

I guess generally, I’m not sure why the arguments for having separate roughing and outlining passes are different for inside and outside surfaces.

outline has wide cutout, which roughing does not. leave stock makes sense when you want to leave a bit of material for the contouring passes. but I no longer think it makes sense for a process that’s designed to remove as much as material as possible to also complete the cutout of the part. as you point out, you likely want different parameters for that operation.

I’m afraid I don’t really understand any of your answer.

Are you saying that you’ll be moving “leave stock” to the outlining phase?

Here’s the example I’m thinking of: Say I have a part with vertical external curved sides – a letter or numeral, for instance. The curves are tight, so I want a small bit, and I want a smooth finish on those sides, so obviously outlining is the pass at which that should happen – vertical contouring movements won’t give a smooth vertical face. And forcing me to do the deeper initial cuts (I want to use the term “rough” here) with a small bit, during outlining, doesn’t make sense.

Again: why does vertical roughing make sense for the inside of a part, but not the outside? Why do holes need “leave stock” while the perimeter does not?


wasn’t thinking of changing how leave stock works. but it does bring up the interesting point of whether that should be a more general parameter that could be applied to any pass. the way I’ve used it traditionally is just to leave something for the outlining or contouring to clean up. fair point about the outside vertical faces, which was why I pointed out that the wide cutout option could be effective in that capacity. outlining never left stock anyway.

I anticipate in the 2.5 series that you will have the ability to have many more configurable (and re-order-able) operations targeted more specifically which will likely render this discussion moot.

Hi Stewart. As I’ve mentioned before, I also need the leave stock option for the outer contour if this will replace the external roughing. On my machine it’s absolutely required for alu. It sounds good apart from that potentially missing.

@cosmin I thought you were using wide cutout in the outlining pass

My preferred ops for the outline in alu with the current codebase is:

  • rough + leave stock of ~0.2mm + (for deep cuts) wide cutout
  • followed by a full depth outline

With appreciation for your continuing work and inviting comment:

Me three (with @pgf and @cosmin) re wanting something akin to roughing before finishing around the outside of a part.

My use of KM may be something of a corner case, so with a grain of salt: I’m nearly always pushing limits of my feeble machine, fragile bits, and impatience while trying to make each part better than the last. At least until I get to a “done” machine with known capabilities. I break a lot of bits, and would like to break fewer.

My setup straight up cannot cut a single-width slot thru substantial material, so I rely on something like “wide cutout” for chip clearance while digging a trench around a part. Outline with wide cutout suffices when the outside edge of a part is

  • entirely vertical, and
  • not a significant surface of the part.

If the outside edge varies from vertical and/or is a significant element of a part – i.e. finish and/or accuracy matter – then my CAM strategy includes trenching around ~.05-1.5d outside the outside of the part to make room to cut the outside of the part [d=roughing tool diameter]. When the outside is not vertical, there’s more to that than running two offsets from a waterline.

From my perspective, the work to be done seems a lot like roughing. I’ve been making fake “CAM” parts with an underlying plate to extend the “outside” of the part and using “inside only” roughing jobs to generate outside-part toolpaths for my combination of machine+parts. I’m not able to generate an example right now - please let me know if an example will help.

1 Like

I was only referring to a change to roughing, not outline. At present, only outline has the wide-cutout option.

With that said, I’m also happy to leave things as they are and revisit in 2.5

I guess I was replying to the whole discussion.

As to your original rfc:

  1. I think I follow your argument for only-inside-only roughing as an adjustment to improve current function. So my first response amounts to a tangentially related feature request for outside roughing.

  2. I can’t see right now, but iirc you had “outside” roughing (“inside only” not selected) working well for cases where a machine could cut a slot without requiring "wide cutout” for a simple outline operation. If still true, then limiting roughing to inside-only would give up functionality for machines that can cut a slot and parts with non-vertical outside edges.

  3. I’d like to hear more about what you mean by
    ‘path routing with outside “roughing” is non-sensical’

  4. A general answer might be “easy”:
    a) internally code roughing as ”inside only"
    b) for a not ”inside only" operation, internally derive a pocket wall around the part - allowing for flute diameter, “leave stock”, and a “wide cutout”-like option then do inside-only roughing inside that pocket.
    … and construct tabs/onionskin to rough around… so the idea is getting less “easy”… maybe I should go to bed now

  1. you’re not really giving anything up because outline outside offers the same option, but with the added feature of wide cutout

  2. roughing really is suited to pockets (externally bounded in some way). once you get into external geometries, you hit a routing problem that’s difficult to describe without getting into algoriths

I’m redesigning the way operations are implemented and ordered for 2.5, so this is just a tiny step in the right direction.


Well, I’m not giving anything up because my machine doesn’t like to cut slots. But if it did, this would work for me:

For me I’d rather not bet more bits on the the last few layers, particularly with the small/thin/fragile bit needed to cut this part:


(eh, that’s not the example I thought it would be. just those five slices might go ok. but the inside is actually straight down the full thickness and around the outer ends of the teeth become intermittent slots for ~1/2 thickness)

Roughing with “clear voids” solves the inner outline (in reasonable time for small voids) but the outside remains unsolved.

Outlining with “wide cutout” would solve the bottom of that part:


But I can’t cut the outlines without roughing off material over the top half of the part and the bottom half of the “wide cutout” perimeter:


a) I do think there is function in “outside” roughing that outlining does not duplicate, and that other people might miss more than I would.

b) responding to your rfc gets me talking about wanting outside roughing with something like “wide cutout” again. (or outlining that includes roughing as needed to complete the outline operation)

The “” export I sent earlier this evening should include this part and config parameters other than en/disabling rough/outlining.


From outside the black box, I do see that roughing inside pockets works.
Hence the idea of accomplishing not-inside roughing by internally constructing an implicit pocket and roughing inside that. Today I see that roughing already respects tabs (pretty obvious - I just haven’t used tabs and didn’t have like KM to look at), so my concern that the idea was “getting less ‘easy’” was spurious.

which is super amazingly great for amateur CAM that you’re a) giving so much effort to this and b) rethinking and reworking so much of what you’ve already done!

So beyond floating an idea for what might be low-hanging fruit for the current codebase (roughing inside implicit pocket), I guess I’m just trying to speak up for a use case that seems unaccounted for. Unless I’m really just not getting it.

this has actually changed in 2.4 if you select outside only. check it out.

If not in 2.5 then in 2.6 you will have the ability to apply arbitrary operation to arbitrary features on a part. So pocketing will be come much more capable and targeted.

:= didn’t have live KM

Ah. That was right up there in the first post. My bad.
I blameshift to not having live KM to internalize that at the time :grimacing:

Ok, now I’m on the inside roughing/outside outline clue train. Sorry to be the slow kid. :confounded:

But alas, collisions:


I’ll discord an export.

hopefully the same bug i just fixed

1 Like

Not a dumpster fire:

Inside-only roughing without “clear voids” does this:


In this rough/outline scheme, the void cutout seems more like an outline thing.

I can’t cut that slot without making it a “wide cutout” - which makes it more like an outline op.

Using “clear voids” works for this part but would hurt more for larger voids.

Maybe uncleared voids are “outside” the part in the domain of outline ops? - which would make “outside” discontinuous. Maybe they are a different kind of “outside”. Questions that will evaporate in 2.5/6 refactoring, I suppose.

yeah, that’s intentional. the double-wide cutout thing needs to be a more generic parameter, but it’s stuck with outlining at the moment.

also, this was the same bug. so looks good now.

1 Like