Not hard to program in any case. Here's an example for an M20 hole using an imaginary 10mm cutter. it's metric too so sub stitute your own values. Usual discalimers apply.
%
g0 x0 y0 (go to the axial centre of the hole at x0 y0)
#1=3.0 (create a variable called #1, value 3)
g0 x0 y10 z#1
g41 (set leftwards compensation for the tool of your choice)
(the first call of the subroutine is an introductory move over the work)
m98 p1 L15 (repeat the subroutine o1 ffiteen times)
g40 (cancel tool diameter offset)
g0 x0 y0 (retract to axial centre of hole)
g0 z20 (pull out to safe Z value)
m30 (finished!)
O1 (start of subroutine o1)
#1=[#1-2.5] (subtract thread pitch value from #1)
g03 x0 y10 z[#1] i0 j0 (mill a vertical helix descending by 1.25mm per turn)
m99 (end of subroutine)
%
I need to get some thread milling cutters actually, they'd save a lot of time. the program here would work with only one tooth but if you had a multi toothed cutter you could drop the cutter most of the way into the hole, then do two subroutine passes (one as an introductory move) to cut the thread.
As i said ... usual discalimers apply ... this should work, but try it on foam first. i would, so you should too
