Bezier Curve CAD Tools

Specials Menu (2.7X) / Context Menu (2.80):

  • Fillet: Round corners by inserting arcs or chamfers
  • Boolean: Union, intersection and difference in 2D
  • Intersection: Subdivide selected curve segments at their intersection
  • Merge Ends: Bring together two end control points but keep their relative handle positions
  • Subdivide: Offers additional control over the parameters as opposed to the built-in tool
  • Array: Unlike the array modifier this copies the curves not just their meshes
  • Circle Reconstruction: Find circle center and orientation from an arc segment
  • Arc Length: Measure the length of the selected curve segments

Add Curve > Toolpath:

  • Offset Curve: Generates offset polygons from a given curve
  • Slice Mesh: Cuts a mesh into many layers of polygon splines
  • Discretize Curve: Converts a bezier spline to a polygon spline
  • Truncate: Cut polygon splines to fit in a box volume
  • CNC Toolpath Macros: Rectangle and drill

File > Export:

  • Curves (.svg)
  • Toolpath (.gcode)

Available under GPLv3.
NOTE: Master branch is 2.80 and a separate branch is for Blender27X.


Nice! Is this related to Vilem’s Blender CAM project?

thank you lichtso, very useful.

No not directly. But thanks for the link!
It seems it was last updated over 2 years ago.

I think the biggest difference so far is that with most CAM software you start with your model and then generate a strategy / tool path from it, while in this add-on you start with a strategy / tool path and generate a model from it.
This allows for more control over what the machine is doing but also requires more knowledge and potentially more work.
So I am working on more utils to make it easier.
Also I can send the results directly to my machine using TCP/IP but that is not included in this release yet.

Thanks for this good thing

Very good, thanks! Are boolean operations planned for this addon? That would be very nice to have

Hi Lichtso, i have here 3 three other offset curve addons;
But only yours works for my satisfaction!
How about a filleting tool? There is kaum a good one out there!
Yepp booleans would be extreme fine!

Well boolean geometry (union, intersection, difference) is already possible:

  1. Blender comes with even / odd rules for curves inside curves and overlapping areas.
  2. As far as I can tell, boolean operations in 2D are just multiple intersection tests with automatic cleanup of specific parts depending on the operation.
    But yes, I can look into that automation part and try to add it.

By “filetting” you mean rounded corners like bevel but inserting bezier curve handles instead of polygon vertices?

In both cases, could you both give me a reference for what already exists and what you dislike about it?

one more suggestion i have is to implement an option to extend (or not extend) selection. For example, i’m offsetting 20 curves in 1 object, and i’d like to delete the original curves since i won’t need them, but since the addon extends selection to the created offset, i have to manually select the original curves to be able to delete em. Kinda inconvenient imo

Thank you for your feedback.
I added a checkbox “Select” to the “Bezier Offset” operator.

I am also working on:

  • some tool path macros (e.g. rect and drill)
  • a simple G-Code exporter (seek, line and circle)
  • bezier boolean operations (union, intersection, difference)

So, stay tuned.

very useful bezier tools,thanks.there is also a GSOC project (under code review) for curve tools may be useful reference for you.

Thank you for the link, I’ll have a look into it.

By the way, the “bezier boolean operations” are ready and available now.

Finaly some bezier tools that are working as supposed!
Man, others needed months to werfen the Handtuch and haben sich the Zähne ausgebissen, und du schüttelst jede Woche so benötigte Bezierfunktionen out of the Ärmel :smiley:
Wahnsinn, vielen vielen Dank!

PS.: Im preparing some files regaring the bezier fillet problems of the other addons
The offset curves function was better placed in the specials section in my opininion, lichtso!


The offset option doesn’t seem to work for me :open_mouth: from the shift+a menu. I’m using the latest master build

Are you in Object or Edit Mode?
Have you selected at least one spline completely (select linked) ?
Is it a polygon, bezier curve or NURBS?
Do you get an error message or just unexpected results?

both object and edit mode don’t give any results whatsoever (in object mode it just creates a new empty object)

bezier curve, full selection, no error message, the offset curve just doesn’t appear

Interesting, it might be that there is no solution for the given parameters.
Could you send me the file or a screen shot?
And try different values especially offset / pitch (including negative ones), also try switching the direction of the spline.

i’m offsetting a standard bezier curve from shift+a. I ofcourse tried to change every parameter available, no go

Well, I will add some more tool path macros in that category (Add Curve), then it will make more sense.
The idea was, that you can create a new tool path object (when using it from Object Mode) or add it to an existing one (from Edit Mode).
This would also allow you to separate the selection of the new offset curve and the original one, in case you want to delete it afterwards.

Thank you. I fixed it: The bug was a “> 0” but it needed to be “>= 0” else single segments wouldn’t work.

I also released the simple G-Code exporter with it.
It uses the soft body-weight property of the vertices to control the relative speed at that vertex.