Cutting notches to fixed depths?

I’m thinking about how to cut notches out of different materials (eg plywood to fit together) to send to CNC or laser cutting.

Is there a way to cut notches by simply clicking at specified locations to a specified depth and have it automatically align to the edge tangent(s) and cut to the specified depth?


Hi @Turner

Using Rhino Native tools, one thing that comes to my mind for such purposes is _PlaceHole

Have a look …

Rodolfo Santos

1 Like

Hello - is this for 2d curves or solids?


Interesting! Thank you!

Great question… both, but ideally, I’d like to be able to “assemble” pieces and then indicate cuts where the pieces meet to “notch” the materials in a certain way so that they fit together correctly. Booleans are great, but there is some extra geometry needed, I think.

i have an old @pascal script that might help you out.
Notcher.rvb (5.7 KB)

Hello- that notcher script is crude but may do well enough for the solids; for 2d, you can try these - (8.2 KB)
This one is not well tested, but seems to work OK here. Please shout if it is broken. I do not know if placing notches from the center of the cut is the right way, but I started with that, for now.
@turner410 I added dog-bone and t-bone notch styles to the CurveNotcher script. (8.8 KB) (12.0 KB)

To use the Python script use RunPythonScript, or a macro:

_-RunPythonScript "Full path to py file inside double-quotes"


1 Like

Hi Pascal-

Is is the notch width limited in some way? Was just experimenting with this again & found I can’t get the width to be a specific size; for example, below, I have width and depth to be 1mm, but the width is wider than that. Not sure if Clearance has something to do with it, but I can’t adjust Clearance:



Hi @pascal - any thoughts?

Just tried again (this time on a mac) and a 1/4" width setting creates a notch with a width of .45".

Hello - can you post a file or PM me?


Morning Pascal,
Here you go.

notch-dimensions.3dm (45.7 KB)

Looks like bad typing, to me. I’ll figure it out…


1 Like


I think I got it:

vW = Rhino.Geometry.Vector3d(tan) * (n_width/2)
replaces ((n_width/2) + n_gap)

1 Like