Hello Guest it is December 07, 2021, 04:25:25 AM

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - stephanbrunker

Pages: « 1 2 3 4 5 6 »
General Mach Discussion / Re: Bug in G77 / M1077 macro
« on: September 07, 2016, 08:59:02 AM »
Because I don't want to update the code at two locations here the link to my personal page with the last version of the macros:


Version 0.30 is now online. I have included most of the requests, UNC/UNF/UNEF in Class 3, NPT,NPTF,NPSC,NPSF,NPSM threads and extended the tool tip functionality. Now, you can select rounded or chamfered tool tip and according to the thread, it calculates the minimum and maximum values for the tool tip. Did some bugfixes too. Because I could only spot checking for all the data, take care. Even in my datasheets were some typos and I simply don't know how many bugs are there left to find. If you find some, open a ticket on sourceforge, I'll fix it as soon as I can. I left out the trapeze threads, because you either need a tool for each pitch there or a totally different approach to threading.

Code: [Select]

- corrected some little bugs in the tolerances for UN.. and R
- big bug: Cut depth for UN_ inside was 1/8 H too deep
- big bug: X start value for Taper was equivalent of 1 pitch wrong
- Diameter for full inches was wrong
- minimum tool radius for outside BSW,BSF
- shifted infeed formula to settings page
- added tooltypes: chamfer or rounded
- added NPSM,NPT,NPTF,NPSC and NPSF threads
- added 3A/3B (fine) tolerances for UN.. threads
- added display of the taper value

It happens. In Version 0.20 there is a bug if you enter a thread in full inches, like 1 0/0'' . I overlooked there the div/0 problem. I'll fix that in the next version, until then enter like 0 1/1'' ... such things simply does happen.

And that was the idea: Dial the thread to get the G76 line or lines for multiple threads and check how many passes you need. And get a part which is within the tolerance fields because the code aims in the middle of the tolerance so you have maximum error margin.

At my todo list are the trapzeoid threads, but that is not easy. If you have for each pitch a new set of cutters, the mathematics are easy, but it's hard for your lathe. If you want to make more than one pitch with one cutter and simply wide it, that is not so simple ...

Hmm, can't say much to that. But the G76 line (that's whats my  program is for) is basically independent from the M1076.m1s macro, as it is described in the Mach3_Threading.pdf. Did you try that? And which Mach3 version do you use? The macro basically expands the G76 line into single G0/G1/G32 moves. If you set the test=false line to test=true, then the output is written to ThreadTest.tap so you can check the expanded code.

So please try the original M1076.m1s macro to check if it's an error in the macro.


Saw it on the bottom of the screen: Threading does not work with the demo version!! You need the full version, otherwise it wouldn't work. That is written in the description of the demo version ...

The G77 (Turning) is to bring the material to the outside diameter of the thread first - in this case 0.6175''. But it cannot know from which chunk of material this is. So, you have to replace the "XX"es for r with your start dia. For example, you can start with a 0.75'' dia and bring it to 0.6175''. The length z should also be greater than the 0.5'' of the thread to avoid a collision with the uncut part. So, put in there your values or if you do it manually, just delete the G77 line. In either case, you have to change your tool between the two lines, because you will use different tools for roughing and thread cutting ;-)

So, a full code may look like this:
Code: [Select]
g18 g21 g40 g90 g94 g80
g0 x12 z2
#101 = 1.7899
G77 r5 x3.94 k0.0 z-7
g0 z30 x20
#101 = 1.7899
G76 p0.75 r3.866 x3.297 h0.232 i29.5 k3.141 z-5.875 l540 q0

I'm head first in the threadtables now. I corrected one big bug ( threads in full inches had dia 0) and I'm thinking about the tool radius because - that was also wrong - for some threads it's allowed for the tool tip to be sharp, and for some others, not. For BSW and BSF the inside thread can be sharp, but the outside thread has to be rounded at the bottom, there is a minimum value defined. Now I'm thinking how to realize that. For NPT, the value given is the width of the chamfer and not an radius. So, basically you can have two kinds of tools: some with an radius and some with an chamfer - and the limit calculations are different, of course. And, to get it all together, the trapeze treads are kind of in this too. I've broken some tools, especially thin ones. So, a sharp 30° tool is likely going to break. But you don't need a full set of tools for every trapeze thread if you have some with a chamfer more than half of the width at the bottom of the thread, cut alternating flank and shift the other flank for the missing width of the tool.

The table I've found has these threads in it, also NPT/NPTF and NPSM/NPSC. So that is no problem. There I've also the tolerances for the UNC. My code outputs the middle of the tolerance field, so in that case for UNC #12 the flank diameter would be 4.84 mm with a margin of 4/100 mm to each side, thats for class 3A and part of why I left these small ones out. More practiable to use a screwing die. The smallest tool I own for inside threads work from bores of 3 mm upward ...

And for the ACME or the Tr ... trapeze threads:  Perhaps it would be possible to cut a TR with 30° flank angle and a sharp 30° tool, but for that, I'd have to change the M1076.m1s macro on a fundamental basis to cut to the right depth in the first step and then wide it in pitch direction. Possible, but for an clean implementation, the GCode Interpreter of Mach3 has to be changed to add a new variable, and that is - see above - not possible as much as I'd like it to - think of the bugged T-Word. With the right cutter, it is only the depth to respect. So, I think it's going too far. If a change in Mach3 would be possible, I'd do it, but as it now looks, a clean solution is impossible.


adding NPT, Class3A and the small UNF/UNC is simple. Because I'm from the millmeters and metric following, I simply don't know which of these - for me exotic - threads are mostly used. I've a table with #1 - #6, #8, #10 and #12, they have fixed sizes in fractions of an inch and not something like  the x/2^n for the other imperial threads? Does this subgroup has a special name, because I've to make a new entry for them in the drop-down list.

And "if you leave the tables": Basically, what I do for the tolerances is converting the tables to third-order equations. For the range of the tables, I've minmized the difference between the equations and the tables to less than 1/100 mm. But I don't know how the equations behave outside. For 10% more, it should be no real difference, for a diameter 10 times the biggest one in the tables, the values are surely wrong. I did it that way to have the ability to generate threads that aren't in the tables. If you enter 216/1000 inch with 24 TPI for the #12 UNC, you get the right values, I included that range.

Do you have any data for the Acme thread?

Basically, at Newfangled they said that they don't want to change anything at Mach3 anymore, 066 is definitively the last release forever, more or less end-of-life'd it.  And for Mach4, it's not a community project but that of a professional software company which simply does all the work itself and not revealing a scrap of the source code to any outsiders - or have any contributions from them. And about fooling with the macro: Basically, it wasn't programmed very clean. The macro only generates a code of G0, G1 and for the tread G32 moves and that you can change how you want. You can check that out with activating test mode, in this mode it outputs the generated code in a file. The only secret is the special threading mode, entered with two G32 concatunated to chain the retraction move to the previous G32. And that I've tested thoroughly. The threading itself as in the G32 move cannot be tampered with, that's completely internal.

If you are using your own screenset, the threading diag DROs have changed a little bit:
SetUserDRO 1240, StartX       
SetUserDRO 1241, EndX         
SetUserDRO 1242, StartZ         
SetUserDRO 1243, EndZ           
SetUserDRO 1244, Pitch         
SetUserDRO 1245, Taper           
SetUserDRO 1247, Number of passes total
SetUserDRO 1249, Total_Depth
and set while threading is running:
SetUserDRO 1246, actual passnum
SetUserDRO 1248, acutal cutdepth

It took me a while longer, but now version 0.20 is online. You can now work in either millimeters or inches and of course output in both formats. I also figured out how the M1076 macro in every last detail works and improved it. I added a second macro which is called from inside to make runtime displays of the cut depth and set the S-word to true rpm and some minor improvements. I was asked on another place what my program can do what the existing solutions couldn't, and I can answer that like this: You get an improved set of macros for G76, G77 and G78. Then you can generate the code for a very wide range of threads in seconds and you can simulate the number of cuts. For the thread generation you basically only need the Thread type, the pitch and nominal diameter. Everything else like the depth of the cut and the tolerances is calculated for you. As far as I know, this is not provided by any other free solution for Mach3. And if you want to check your thread there is also a tool to calculate the flank diameter if you measure it with three wires.

Pages: « 1 2 3 4 5 6 »