![]() | |
| Home Page | Mark Forums Read | Today's Posts | My Replies | Classifieds | Reviews | Photo Gallery | Web Links | Share Files | Advertise With Us | Ad List |
| |||||||
| Haas Mills Discuss Haas machinery here! |
| This forum is sponsored by: |
![]() |
| | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
| ||||
| ||||
In another thread I was asking about g10's and subs, geof suggested I start another topic ( good idea I am just 3 days late )http://www.cnczone.com/forums/showthread.php?t=99706 And Maybe some of you programming guru's can make this the most complete g10 and sub program thread out there so others may benifit. ![]() I don't do subs as much as I used to due to I usually use cad, however lately I been pulling vise's on and off so much I don't cut the jaws to match like I used to and being the parts are just a few tools and short. I do anywhere from 1 part to vise to 4 parts per vise and up to 3 vise's on the Haas, again my vises come on and off daily so using cad would be a waste of time. My 6" kurt doubles should be here shortly so that will be 6 locations instead of 3. so I will need at least 6 work offsets. height of parts vary and sometimes I run different parts on the machine at one time( I just copy each part program for each part and add a work offset). however in doing that I am wasteing time in tool changes and cut time, cause it will run through all the tools on one part then go and do the next part with all the tools( only if parts are not the same and if I DONT use cad ie being lazy). And before anyone says it, Yes cad is the way to go, but some of these parts are so easy to program in my head there is no need to go into the office and write a cad program, if I can get away with a g10 or a sub program. plus I have the one vise at a time programs that I already made for my customer in small orders and they work , now there just bigger orders. heres a sample program with one part on one vice
Heres the same program with 2 work fixture offsets one for each vises, Notice tool 20 has only the g55 fixture offset and does both vises
|
|
#2
| ||||
| ||||
% O00011 M06 T20 G00 G90 G55 X-3. Y0. M03 S6500 M97 P20 G00 G90 G55 X-3. Y0. M97 P20 M06 T1 G00 G90 G55 X0.995 Y0. M03 S12000 M97 P1 G00 G90 G56 X0.995 Y0. M97 P1 M06 T17 G00 G90 G55 X0.9125 Y0. M03 S12000 M97 P17 G00 G90 G56 X0.9125 Y0. M97 P17 M06 T22 G00 G90 G55 X0. Y0. M03 S5000 M97 P22 G00 G90 G56 X0. Y0. M97 P22 M06 T5 G00 G90 G55 X0.572 Y0. S12000 M03 M97 P5 G00 G90 G56 X0.572 Y0. M97 P5 M30 N20 G43 Z0.5 H20 M08 G01 Z0. F80. G01 X3. G00 Z0.2 M09 G28 G91 Z0. M05 M01 M99 N1 G43 Z0.5 H01 M08 G01 Z-0.75 F50. G02 I-0.995 I-0.995 G01 X1. G00 Z0.3 X0.2 G01 Z0.1 F30. G02 I-0.2 Z-0.2 I-0.2 G02 I-0.2 Z-0.41 I-0.2 G01 X0.3 F50. G03 I-0.3 G01 X0.4 G02 I-0.4 G01 X0.53 G03 I-0.53 I-0.53 G01 X0. G00 Z0.1 G01 Z0. G01 X0.75 G02 I-0.75 G00 Z0.5 M09 G28 G91 Z0. M05 M01 M99 N17 G43 Z0.5 H17 M08 G01 Z0. F50. G02 I-0.9125 Z-0.11 I-0.9125 G00 Z0.2 X0.6175 G01 Z0. G02 I-0.6175 Z-0.15 I-0.6175 M09 G28 G91 Z0. M05 M01 M99 N22 G43 Z0.5 H22 M08 G01 Z-0.408 F40. G01 X0.505 G02 I-0.505 I-0.505 G01 X0. G00 Z0.5 M09 G28 G91 Z0. M05 M01 M99 N5 G43 H05 Z0.3 M08 G01 Z0.2 F50. G02 I-0.572 Z0.1375 G02 I-0.572 Z0.075 G02 I-0.572 Z0.0125 G02 I-0.572 Z-0.05 G02 I-0.572 Z-0.1125 G02 I-0.572 Z-0.175 G02 I-0.572 Z-0.2375 G02 I-0.572 Z-0.3 G02 I-0.572 Z-0.3625 G01 X0. G00 Z0.5 G00 Z0.5 M09 G28 G91 Z0. M05 G91 G28 Y0. M99 % If you have any doubt, please e-mail me: caue.nascimento@haasbrasil.com.br Now is sunday night here (11pm), but early in the morning I'll test this code on a brand new VF-3 I'm going to run tomorrow... Have a nice week! |
|
#3
| ||||
| ||||
| g52 shift works great for multiple fixturing if you scroll down then you'll see my preferred method , which is using macro variables , it lessens the amount of editing time on the machine in cases where thing may need to be shifted this is a quick edit so there is a possibility Ive missed something but I'm sure you'll get the idea this is setup for 3 part % O00011 (1 VICE 1 WORK FIXTURE OFFSET) g52x0y0z0a0. m97p1 g52x2.y0z0a0. m97p1 g52x4.y0z0a0. m97p1 g52x0y0z0a0. m97p12 g52x2.y0z0a0. m97p2 g52x4.y0z0a0. m97p2 g52x0y0z0a0. m97p3 g52x2.y0z0a0. m97p3 g52x4.y0z0a0. m97p3 g52x0y0z0a0. m97p4 g52x2.y0z0a0. m97p4 g52x4.y0z0a0. m97p4 g52x0y0z0a0. m97p5 g52x2.y0z0a0. m97p5 g52x4.y0z0a0. m97p5 G28 G91 Z0. M05 G91 G28 Y0. m30 n1 M06 T20 G00 G90 G55 X-3. Y0. M03 S6500 G43 Z0.5 H20 M08 G01 Z0. F80. G01 X3. G00 Z0.2 m99 n2 M06 T1 G00 G90 G55 X0.995 Y0. M03 S12000 G43 Z0.5 H01 M08 G01 Z-0.75 F50. G02 I-0.995 I-0.995 G01 X1. G00 Z0.3 X0.2 G01 Z0.1 F30. G02 I-0.2 Z-0.2 I-0.2 G02 I-0.2 Z-0.41 I-0.2 G01 X0.3 F50. G03 I-0.3 G01 X0.4 G02 I-0.4 G01 X0.53 G03 I-0.53 I-0.53 G01 X0. G00 Z0.1 G01 Z0. G01 X0.75 G02 I-0.75 G00 Z2. m99 n3 M06 T17 G00 G90 G55 X0.9125 Y0. M03 S12000 G43 Z0.5 H17 M08 G01 Z0. F50. G02 I-0.9125 Z-0.11 I-0.9125 G00 Z0.2 X0.6175 G01 Z0. G02 I-0.6175 Z-0.15 I-0.6175 g0z2. m99 n4 M06 T22 G00 G90 G55 X0. Y0. M03 S5000 G43 Z0.5 H22 M08 G01 Z-0.408 F40. G01 X0.505 G02 I-0.505 I-0.505 G01 X0. G00 Z2. m99 n5 M06 T5 G00 G90 G55 X0.572 Y0. S12000 M03 G43 H05 Z0.3 M08 G01 Z0.2 F50. G02 I-0.572 Z0.1375 G02 I-0.572 Z0.075 G02 I-0.572 Z0.0125 G02 I-0.572 Z-0.05 G02 I-0.572 Z-0.1125 G02 I-0.572 Z-0.175 G02 I-0.572 Z-0.2375 G02 I-0.572 Z-0.3 G02 I-0.572 Z-0.3625 G01 X0. G00 Z0.5 G00 Z2. m99 % OR @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2 #101=0(position 1 x) #102=0(position 1 y) #103=0(position 1 z) #104=0(position 1 a) #111=2.(position 2 x) #112=0(position 2 y) #113=0(position 2 z) #121=4.(position 3 x) #122=0(position 3 y) #123=0(position 3 z) g52x#101y#102z#104a#105 m97p1 g52x#111y#112z#113a#105 m97p1 g52x#121y#122z#123a#105 m97p1 g52x#101y#102z#104a#105 m97p12 g52x#111y#112z#113a#105 m97p2 g52x#121y#122z#123a#105 m97p2 g52x#101y#102z#104a#105 m97p3 g52x#111y#112z#113a#105 m97p3 g52x#121y#122z#123a#105 m97p3 g52x#101y#102z#104a#105 m97p4 g52x#111y#112z#113a#105 m97p4 g52x#121y#122z#123a#105 m97p4 g52x#101y#102z#104a#105 m97p5 g52x#111y#112z#113a#105 m97p5 g52x#121y#122z#123a#105 m97p5 G28 G91 Z0. M05 G91 G28 Y0. m30 n1 M06 T20 G00 G90 G55 X-3. Y0. M03 S6500 G43 Z0.5 H20 M08 G01 Z0. F80. G01 X3. G00 Z0.2 m99 n2 M06 T1 G00 G90 G55 X0.995 Y0. M03 S12000 G43 Z0.5 H01 M08 G01 Z-0.75 F50. G02 I-0.995 I-0.995 G01 X1. G00 Z0.3 X0.2 G01 Z0.1 F30. G02 I-0.2 Z-0.2 I-0.2 G02 I-0.2 Z-0.41 I-0.2 G01 X0.3 F50. G03 I-0.3 G01 X0.4 G02 I-0.4 G01 X0.53 G03 I-0.53 I-0.53 G01 X0. G00 Z0.1 G01 Z0. G01 X0.75 G02 I-0.75 G00 Z2. m99 n3 M06 T17 G00 G90 G55 X0.9125 Y0. M03 S12000 G43 Z0.5 H17 M08 G01 Z0. F50. G02 I-0.9125 Z-0.11 I-0.9125 G00 Z0.2 X0.6175 G01 Z0. G02 I-0.6175 Z-0.15 I-0.6175 g0z2. m99 n4 M06 T22 G00 G90 G55 X0. Y0. M03 S5000 G43 Z0.5 H22 M08 G01 Z-0.408 F40. G01 X0.505 G02 I-0.505 I-0.505 G01 X0. G00 Z2. m99 n5 M06 T5 G00 G90 G55 X0.572 Y0. S12000 M03 G43 H05 Z0.3 M08 G01 Z0.2 F50. G02 I-0.572 Z0.1375 G02 I-0.572 Z0.075 G02 I-0.572 Z0.0125 G02 I-0.572 Z-0.05 G02 I-0.572 Z-0.1125 G02 I-0.572 Z-0.175 G02 I-0.572 Z-0.2375 G02 I-0.572 Z-0.3 G02 I-0.572 Z-0.3625 G01 X0. G00 Z0.5 G00 Z2. m99 %
__________________ A poet knows no boundary yet he is bound to the boundaries of ones own mind !! http://cnctoybox.org |
|
#4
| |||
| |||
| If you have macros, you can alias another work offset that increments with the g10 that way you dont shift you orginal work offset as you progress throught the program, and dont have to cut and dont have to do a lot of hand typing that can be prone to errors. Or you can use a macro to increment your g52 position, which makes it easy to run between n numbers, usings and if < or > and goto commands. I personally alias and use a G10 most of the time because my post is setup to loop with a g10 and goto. I just modified it to alias the work coordinate to g120 that I dont use. I use g110-113 for table center locations for easy 5 axis setups, and ability to move the code from machine to machine without reposting. |
|
#5
| |||
| |||
| Okay, my turn now that I am back from a nice Greek Salad and Sirloin Steak dinner and have a glass of wine at hand. Being lazy I will try to avoid typing as many lines as some others but will try to get my approach across. I use, or used to use, G10 for setting work offsets and subroutines that are run at each offset location quite extensively; I say 'used to use G10' because I switched over to using G52 quite a while back. But I will go further into this after describing my approach to using subroutines for machining multiple parts. Subroutines on Haas machines are very convenient because they can be local; they do not have to consist of a separate program but can be located within the calling program. I normally add them sequentially at the bottom of the calling program although I think the Haas controller will search up and down a program to find the line number that is being called by the command M97 Pnnnn which simply says; find line Nnnnn and keep going from there, returning to the line below here when a M99 is found. (For the sake of completeness I need to comment that it is possible to have an L count; M97 Pnnnn L4 says go to line Nnnnn and return here until L is counted to zero then return one line down. But this is not really relevant to using subroutines for multiple parts.) Because I am going to deal with G10 or G52 later, for this description of my approach to multi-tool, multi-part programs using subroutines I will use Work Location (WL) for the zero point of each of the parts so I can write WL1, WL2, etc. This would be a typical program structure for three tools and four parts; comments between <<<< and >>>> are not part of the program. O00000 (Typical Subroutine Program) N1 G00 G17 G20 G40 G49 G90 G90 G98 (Typical safety line) (Tool 1 description) (Tool 2 description) (Tool 3 description) G10 L12 G90 P1 R0.rrr (Tool 1 tool diameter) G10 L12 G90 P2 R0.rrr (Tool 2 tool diameter) G10 L12 G90 P4 R0.rrr (Tool 3 tool diameter) <<<<Note these G10 commands are not related to setting work zeroes>>>> (Whatever comments you need for the program) <<<<The Work Location selection and subroutine calls are in the following lines>>>> WL1 (Select work location 1) M97 P1000 (Call subroutine for tool 1) M97 P2000 (Call subroutine for tool 2) M97 P3000 (Call subroutine for tool 3) WL1 (Select work location 2) M97 P1000 (Call subroutine for tool 1) M97 P2000 (Call subroutine for tool 2) M97 P3000 (Call subroutine for tool 3) WL1 (Select work location 3) M97 P1000 (Call subroutine for tool 1) M97 P2000 (Call subroutine for tool 2) M97 P3000 (Call subroutine for tool 3) WL1 (Select work location 4) M97 P1000 (Call subroutine for tool 1) M97 P2000 (Call subroutine for tool 2) M97 P3000 (Call subroutine for tool 3) T1 M06 (Back to tool 1 before ending program) G53 G00 Xxxx.xxx Yyyy.yyy Zzzz.zzz (Park table at handy place for reloading M30 (Stop and rewind) ---------------- <<<<Below here are the subroutines>>>> N1000 T1 M06 G43 H01 M03 Ssssss G00 Xx.x Yy.y Zz.z (Move to start) <<<<In here is everything that tool 1 does>>>> M99 (Return from subroutine) ------------ N2000 T2 M06 G43 H02 M03 Ssssss G00 Xx.x Yy.y Zz.z (Move to start) <<<<In here is everything that tool 2 does>>>> M99 (Return from subroutine) ------------ N3000 T3 M06 G43 H03 M03 Ssssss G00 Xx.x Yy.y Zz.z (Move to start) <<<<In here is everything that tool 3 does>>>> M99 (Return from subroutine) ------------ And that is the whole program. The reason I structure things using N1000, N2000 etc is that this makes it handy for writing or editing programs. Things like the tool number, T1, the length offset G43 H01, tool compensation, D01 are all 1 if the line number is 1nnn. This is just a mnemonic to help me when I am writing programs (remember I am such a klutz I cannot do CAM). Incidentally, I am pretty sure Mastercam can output this type of subroutine program. Donkey Hotey (I think) covered this in a thread a while back and I talked to a Mastercam guy about it. Now for the Work Location....Work Offset.....Work Zero.... whatever you want to call it. G10 L2 G90 P1 X-8.0 Y-6.0 Z0.0 puts the G54 Work Zero at X-8. Y-6. and Z 0.0; P2 sets the G55 Work Zero, P3 G56, etc. When would I use G10? If the vises never leave the table, or if the vises always go back to exactly the same location G10 is handy. G10 sets the Work Zeros in machine coordinates so to use G10 the workholding system always has to go back onto the machine in the same location with reference to machine coordinates. this means locating dowels, subplates or some other locating method. When your vises never leave the table or always return to the same location then my WL1 becomes G54, Wl2 G55 etc, and the program has these lines somewhere near the top: G10 L2 G90 P1 Xxxxx Yyyyy Zzzzz (Set G54) G10 L2 G90 P2 Xxxxx Yyyyy Zzzzz (Set G55) etc And you can use G10 to set individual work zeros at each part location in custom jaws in however many vise you have. BUT if your vises do not go back to the same location you have to edit all the G10 lines in all your programs; which, in a practical sense, is a non-starter. This is why I switched to G52. For those unfamiliar with G52 it defines a subsidiary work zero with reference to the active, or primary, work zero. In other words if you have G54 set at X-8. Y-6. Z0. and you use the command; G52 X2. Y2. Z0. your work zero is now at X-6. Y-4. The value of G52 is that if you have a double-lock vise that can hold four parts you only need to locate a single primary work zero and your program then locates the work zeroes for the parts as: G54 (Primary work zero) G52 Xxxx.xxx Yyyy.yyy Zzxzxz.zzz M97 Pnnnn etc for four different locations. And when you re-install the vise you only need to dial in to the primary location which can be at the center of the fixed jaw. (You are allowed to interpolate a hole in the middle of the fixed jaw for this purpos :-)) If you have three double lock vise mounted on a subplate then you dial in to a single primary work zero location that allows you to define twelve part locations using G52. Or, if you make dedicated fixtures you can define many more part locations from a single primary location; my record so far is 32 part locations. And I have to admit the 750 ml of Shiraz I have consumed while typing this is making concentration difficult so any questions will have to wait until I have metabolized the alcohol. P.S. Maybe I did type as many lines as the others. ![]() EDIT Above I have the phrase: The value of G52 is that if you have a double-lock vise that can hold four parts .... This, of course, is two parts per jaw because that is what we run as our parts are small. You may have only one part per jaw.
__________________ An open mind is a virtue...so long as all the common sense has not leaked out. |
| Sponsored Links |
|
#6
| ||||
| ||||
| I've got nothing to add since, I'd approach this in a completely different way. I'll share that way, then shut up and read (and try to learn): ![]() If I were using multiple, dual station vises with square jaws, I'd set a work stop for each jaw position, then I could tram in the vise, touch off the work offsets for each and be done. If the jaws were irregular and holding multiple parts, I'd do the Mastercam programming with the parts sitting in the model of the jaws. In each center (fixed) jaw, I would drill/bore a reference hole and forever use that center as my work zero. Again, tram the vises, indicate to the center of the bore and use only one offset per vise. Using this method, the fixed jaw is always the datum and the center of that reference bore is your XY origin. Even though it doesn't relate to the part in any meaningful way, if the parts were programmed referenced to that point, it wouldn't matter. In either case, Z zero (for me) would be the base of the part surface pocket in the soft jaws. Using the Renishaw probing, finding the center of that bore and the Z surface goes really quickly. http://cnczone.com/forums/showthread...073#post518073
__________________ Greg |
|
#7
| |||
| |||
| these are excellent replies. Thanks. I will read thembetter tomorrow when I am awake. now I am going to throw in a kicker, there will be approx. 40 parts per run. and they will run on a 4th axis tombstone block 10 parts per index at 90º. held on by mitee bite clamps Donkey brought up a good point. the 1st operation is from bar stock. then they needs to be turned and cut on 2 sides and also indexing 30º for some small holes. Hence the 4th axis. then the profiles need to be located in a vise to do the final mill operation. This is enough to get started, thinking and playing. i like the fact there was a bunch of differnt ways even macros, macros bother me LMAO always have, but I am going to be playing with those this year as well. Oh BTW keep these ways coming as there might be more guys that could use the help as well. Delw |
|
#8
| |||
| |||
| Over the past few years we have gone through the transition from all vice work to all rotary tombstone work for dozens of parts and all the tooling time has been recouped many times over. Initially we used just a pair of vises with custom jaws for gripping four round parts per load, used a Blake Indicator to dial into each part and entered work offsets by hand. The custom jaws did not always return to the same spot when they were removed and re-installed which is why it was necessary to relocate the work zeros every run. This approach is perfectly okay, using a probe would be faster but ten years ago probes where not as readily available. Not to mention the vises occupied the entire machine table so there was no space. Then we transitioned to larger machines and double vises with three keyed to a baseplate; using custom jaws a load was twelve parts so dialng in to each part location was inefficient. However, these jaws were keyed to the vise base so they did return to the same spot so we could locate all the part work zeros from a reference hole somewhere on the vises; this is more or less what Greg is talking about. The shortcoming to this system was that the baseplate for the vises was not keyed to the table so if the entire assembly was removed and replaced it was necessary to edit all the G10 work zero commands. This is where dertsap's macro approach would be viable because with this it would just be necessary to entire a correction factor for the main reference point. As I recall back then I had cheaped out and the machine did not have macros activated. Also back then I was not up to speed on G52; we still use these vise setups for some parts and now part locations are set using G52 commands. Then we transitioned to the rotary platforms; these use the central reference hole that all the G52 commands work from. We have custom fixtures for the parts that are done on the rotaries and we simplified program writing and setups by building the fixtures on the platform. This means that the G52 commands used for machining the locating holes in the fixture for the parts are the ones used for machining the part. This is a solid state analog of Greg's procedure of drawing the vises and parts together in Mastercam. Because most of our parts are based on 2.000" and 2.250" diameter round bar some fixtures are used with several parts.I am now a great believer in rotary fixturing when parts have features in more than one plane; the initial tooling time is significant and it may only be viable for repeating parts. However, the improvement in accuracy between related features in different planes can make it worthwhile for non-repeating parts. And now I should run off and install the M-FIN wiring in a machine so we can get an airblast working to blow chips of a tap when tapping Delrin.
__________________ An open mind is a virtue...so long as all the common sense has not leaked out. |
|
#9
| |||
| |||
| I am going to try a few of these ![]() One thing that is nice about running sub programs is that this way you only have one program to change on feeds/speeds/ depths/ corner rads etc etc. if you had 10 parts you would have to change all 10 parts in the programs, Geof, Thats why I bought the 210mm rotary with the vf2ss, however I still dont have my fixture up and running 100% I did mount it on the rotary a few weeks ago and played around making sure everything worked like I drew it up. Never ran a part on it yet. BTW the Mitee Bites with the shopmade T nuts was a very very clever Idea Thanks for that tip. Delw |
|
#10
| |||
| |||
| Another thing I forgot to mention is putting a Block Delete in front of all except one of the M97 Pnnnn commands. This way when you are setting up and checking sizes you press block delete and run through every tool finishing one part rather than losing a whole load because a tool was over or undersize. When you are proving programs it is also sometimes convenient to block out a particular tool which can be done by going to the subroutine and putting M99 in place of the Tn M06 at line Nnnnn. Also because each subroutine has all the tool commands from selection to speed and everything the tool does it is possible to do a Restart very quickly even with a very long program. Jump the program down to the tool you are restarting on and then move one line down. This means that the machine position immediately preceding the restart line is the tool change position so you are confident the machine is not going to hit anything. Also the machine seems to scan the program faster, much faster if you are using block delete, than a straight program with no subroutines.
__________________ An open mind is a virtue...so long as all the common sense has not leaked out. Last edited by Geof; 02-22-2010 at 04:01 PM. |
| Sponsored Links |
|
#11
| |||
| |||
On my old Acroloc with a yasnac mx1 control this was one thing that I couldnt do so I had to run the parts ( block skip on the board/software) was broke) BTW Geof, Your typing is getting as bad as mine, I blame it on the keyboard ![]() Thanks again Delw |
|
#12
| |||
| |||
![]() Did I get them all? I often have to spend a couple of minutes proofing and correcting a post; I blame big fingers. Doing similar things on a machine controller can sometimes elicit far more alarming results than someone commenting on your bad typing.
__________________ An open mind is a virtue...so long as all the common sense has not leaked out. |
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | Search this Thread |
| Display Modes | |
| |
Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| PLC programs? | KC8QVO | General Electronics Discussion | 1 | 05-09-2007 11:06 PM |
| CAD programs | Crazycorkey | General CAM Discussion | 3 | 02-10-2007 06:21 PM |
| DNC Programs | zoeper | General CNC (Mill and Lathe) Control Software (NC) | 3 | 01-12-2007 03:48 PM |
| What programs can do this- | july_favre | General CAM Discussion | 19 | 09-22-2005 11:36 PM |
| Which programs do you use ? | bunalmis | DIY-CNC Router Table Machines | 23 | 07-25-2003 09:02 AM |