587,490 active members*
7,499 visitors online*
Register for free
Login
IndustryArena Forum > MetalWorking Machines > Fadal > Macro programing or subroutine
Results 1 to 18 of 18
  1. #1
    Join Date
    Sep 2006
    Posts
    48

    Macro programing or subroutine

    I need to fix several hundred parts that were made wrong by another company gone bankrupt. Essentially I need to relocate 4 holes in 6061 T6 aluminum plate that will be drilled and tapped and have threaded inserts installed. That part is easy.

    On all of the parts, there are also 3 holes that were originally drilled and tapped for 1/4 x 20 TPI and some, but rarely all of them have already be retapped and had inserts installed.

    I need to find an easy way to have 7 locations for each of the center/chamfer drill, drill, and tap cycles. And then either selectively run, or selectively ignore the other 3 holes. I don't want to write separate programs. I know spit about macro programing, other than the stock Fadal warmup program O9999

    Thanks,

    Stu

  2. #2
    Join Date
    Apr 2007
    Posts
    64
    Try Block Skip.

  3. #3
    Join Date
    Sep 2006
    Posts
    48
    Block skip is the way I currently do it, but it creates 3 times the effort and allows to much room for error.

    I have 7 holes with 3 ops each to complete the part.
    4 holes will always be drilled and tapped and the remaining 3 may or may not be required, and any (or none) of the 3 parts may need to be done.

    Using block skip I have to add or remove a block skip character for each of the 3 lines at every process.

    I'd rather modify 3 spearate lines for example at the start of the program that duplicate for each operation...

    I don't think you can turn off block skip in a macro...

    Any ideas?

  4. #4
    Join Date
    Apr 2007
    Posts
    64
    Why are you removing the Block Skip character. All you would need to do is flip the Block Skip switch. Can you post a copy of your program and a pic of the part. Is the insert a Heli-Coil or some thing else?


    Here's a sample program:

    TA,1
    %
    N1O1* PART REWORK PROGRAM
    N2* X0 LEFT Y0 FRONT Z0 TOP
    N3* T1 .375 90 DEGREE SPOTTER
    N4* T2 .201 DRILL
    N5* T3 1/4-20 CUT TAP ( RIGID )
    N6M6T1
    N7M3S6500
    N8X1.Y1.G8E1
    N9H1Z.1M7
    N10G82X1.Y1.Z-.135R.1F20.P250.
    N11X2.
    N12X3.
    N13X4.
    /N14X5.
    /N15X6.
    /N16X7.
    N17G80
    N18G0Z3.
    N19M5M9
    N20G49Z0
    N21M1
    N22M6T2
    N23M3S6500
    N24H2Z.1M7
    N25G83X1.Y1.Z-.75R.1Q.075F20.P.01
    N26X2.
    N27X3.
    N28X4.
    /N29X5.
    /N30X6.
    /N31X7.
    N32G80
    N33G0Z3.
    N34M5M9
    N35G49Z0
    N36M1
    N37M6T3
    N38M5S500.2G80
    N39G84.2
    N40H3Z.1M7
    N41G84.1X1.Y1.Z-.5R.1Q.05F500.2
    N42X2.
    N43X3.
    N44X4.
    /N45X5.
    /N46X6.
    /N47X7.
    N48G80
    N49G0Z3.
    N50M5M9
    N51X0Y0E0
    N52G49Z0
    N53M1
    N54M6T1
    N55M2
    %

    If you have Block Skip on it will do only the first 4 holes. if you shut it off it will run all seven holes. You do not need to delete the Block Skip characters. If you have the older control with out the switch just type MU while the program is active and toggle the block skip on or off.

  5. #5
    Join Date
    Sep 2006
    Posts
    48
    That's what I currently do except now what do you do when you can't just ignore all 3 holes or not. It could be that you need to skip none of them, or any combination of the 3 of them. In which case block skip doesn't help, unless you go through and edit those lines with the block skip to remove the block skip character so that particular hole, but not the others doens't get skipped.

    Just ot make life tougher, I'm fixing 2 parts at the same time, so it may be 6 sets of holes to skip or not.

    Hence the macro question. There must be a way to write a macro that says at the start to drill or skip 6 specific loatations. This will then turn on the process for each oepration or not. I was thinking of a way to toggle the block skip character, but I don't know if that's acceptable. It might be to set a variable for the holes to be drilled and a goto statement to drill certain holes and go top the end of the section if they are to be skipped.

    Thanks for the insights,

    Stu

  6. #6
    Join Date
    Apr 2006
    Posts
    3206
    ..Just a quick idea...

    How about doing a chart that hangs on the machine with each hole assigned a number.

    Write a macro that prompts the user to input which number or numbers needs to have the operations performed at the beginning of the program.

    The Macro then does a If Then GoTo and only does the numbered holes that were selected. Sounds like you've got to inspect and make the call on each part anyway..

  7. #7
    Join Date
    Sep 2006
    Posts
    48
    Exactly! Only minor detail is I don't know how to write the macro.

    I have 2 parts fixtured, each of which is guaranteed to get 4 cneter drilled, drilled, and tapped holes. then I can make a chart with 6 other holes and enter the numbers (variables for their location????) and then the program adds these into each unit to process the operation at those locations as well as the other locations.

    I just don't know how. An example of the code would be wonderful.

    I can program a microcontroller and all of my CNC machines, I've just never dealt in Macros for a Fadal legacy control, and I don't have any examples to plagerize....

    Thanks for the inputs,

    Stu

  8. #8
    Join Date
    Jun 2008
    Posts
    1511
    I don’t know your machine or control so some of the syntax might not be correct. First off get rid of all of your sequenced N addresses. This is for the purpose of using GOTO statements. You don’t want all the N if you are jumping to an address, too much room for a mistake.

    This is probably the easiest and quickest way to set it up. If I think of a more creative way I will let you know but for now this should work.

    Ok again I don’t know your control but if you have macro programming you should have variables #1-?. I would set up as many variables as you would need for each hole that you may or may not want to skip. Example below uses 6 holes. #1 is for the first hole and #6 is for the 6th. If you want to drill the hole make it =1 if you do not want to drill that hole make it =0. The example below will skip the 4th hole.

    TA,1
    #1=1
    #2=1
    #3=1
    #4=1
    #5=1
    #6=1
    H1Z.1M7
    (spot drill)
    G82X1.Y1.Z-.135R.1F20.P250.
    IF[#1EQ0]GOTO5
    X2.
    N5IF[#2EQ0]GOTO10
    X3.
    N10IF[#3EQ0]GOTO15
    X4.
    N15IF[#4EQ0]GOTO20
    X5.
    N20IF[#5EQ0]GOTO30
    X6.
    N30IF[#6EQ0]GOTO40
    X7.
    N40G80
    G0Z3.
    M5M9
    G49Z0
    M1
    M6T2
    M3S6500
    H2Z.1M7
    (drill)
    G83X1.Y1.Z-.75R.1Q.075F20.P.01
    IF[#1EQ0]GOTO50
    X2.
    N50IF[#2EQ0]GOTO55
    X3.
    N55IF[#3EQ0]GOTO60
    X4.
    N60IF[#4EQ0]GOTO65
    X5.
    N65IF[#5EQ0]GOTO70
    X6.
    N70IF[#6EQ0]GOTO75
    X7.
    N75G80
    G80
    G0Z3.

    Sorry I did not read your last post in great detail. I am posting this anyway because I typed it up. If you want just 6 locations and they can always be the same then you might be better off with a macro call or even a macro modal call with the coordinates block skipped or used via parameters. When I get some more time maybe today I will write something up using that format.


    Stevo

  9. #9
    Join Date
    Apr 2006
    Posts
    3206

    ORing Macro

    I wrote this in Format 1

    It's a macro to machine an O-Ring groove where the control prompts you for data on the dimensions of the oring and other parameters...copy and paste this into your machine and run it to see what happens...

    I'm pretty sure this is the copy that works....but you get the idea..

    Fadal has in its manuals a section on writing macros. Once you get hooked on how powerful they can be you'll find out how fun it is to write 'em!

    %
    N5O500(ORNGMAC
    N10G80G90G49G40G17M5M9
    N15R+0R1+0R2+0R3+0R4+0R5+0R6+0R7+0R8+0R9+0
    N20T3M6(.125DIA EMILL CONVENTIONAL CUTTING
    N25M3S2000
    N30G0G90X0Y0E10
    N35H3D3Z1.M8
    N40G0X0Y0Z1.
    N45#CLEAR
    N50#PRINT "ENTER CUTTER DIAMETER CD V1"
    N55#INPUT V1
    N60#PRINT "ENTER RADIUS VALUE OF MEAN GROOVE GR =GD/2 V3"
    N65#INPUT V3
    N70#PRINT "ENTER INNER GROOVE RADIUS IR V5"
    N75#INPUT V5
    N80#PRINT "ENTER OUTER GROOVE RADIUS OR V7"
    N85#INPUT V7
    N90#PRINT "ENTER ROUGHING DEPTH DR V8"
    N95#INPUT V8
    N100#PRINT "ENTER OFFSET ANGLE OA V11 (RECOMMEND 6.)"
    N105#INPUT V11
    N110#V18=COS(V11)*V5+3*V1 'X OF G42 INI INNER RAD
    N115#V19=SIN(V11)*V5 'Y VALUE G42 INI FOR INNER RAD
    N120#V20=COS(V11)*V7-3*V1 'X OF G42 INI OUTER RAD
    N125#V21=SIN(V11)*V7 'Y VALUE OF G42 INI FOR OUTER RAD
    N140#V24=V5 'X POINT 2
    N145#V25=0 'Y POINT 2
    N170#V30=(V7) 'X POINT 5
    N175#V31=0 'Y POINT 5
    N190#V44=V5 'I POINT 2
    N195#V45=0 'J POINT 2
    N200#V50=V7 'I POINT 5
    N205#V51=0 'J POINT 5
    N211#V60=COS(V11)*V3-.5*V1 'X ON MEAN DIA POINT 1 & 3
    N215#V61=SIN(V11)*V3 'Y ON MEAN DIA POINT 1 & 3
    N216#V62=COS(V11)*V3+.5*V1 'X ON MEAN DIA FOR OUTER POINT 4 & 6
    N217#V63=SIN(V11)*V3 'Y ON MEAN DIA FOR OUTER POINT 4 & 6
    N225#R1=0
    N230#R1=V3 'X
    N235#R2=V44 'I
    N240#R3=0 'Y
    N245#R4=V45 'J
    N250#R5=V8 'Z ROUGH DEPTH
    N255#R7=V12*2 'D
    N265#R9=0 'R9 IS ALWAYS A VALUE OF ZERO
    N270G0X+R1Y+R9(START ROUGH MEAN GROOVE
    N275G1Z-R5F6.
    N280G3X+R1Y+R9I-R1J+R9F6.5
    N285G0Z0.1
    N290#R1=V18 'X G42 INI
    N295#R3=V19 'Y G42 INI
    N300G0X+R1Y-R3F10.(MOVE TO G42 INI POINT FOR INNER RAD
    N320#R1=V60 'X OF MEAN DIA POINT 1
    N325#R3=V61 'Y OF MEAN DIA POINT 1
    N330G1G42X+R1Y-R3F10.(MOVE TO POINT 1
    N345#R1=V24 'X OF POINT 2
    N350#R3=V25
    N355#R2=V44 'I OF POINT 2
    N360#R4=V45
    N365G1Z-R5F3.
    N370G1X+R1Y+R9F6.2(MOVE TO POINT 2
    N375G3X+R1Y+R9I-R1J+R9(CUT INNER RADIUS
    N390#R1=V60
    N395#R3=V61
    N400G1X+R1Y+R3F6.(MOVE TO POINT 3
    N405G0Z0.1
    N420#R1=V18
    N425#R3=V19
    N430G1G40X+R1Y+R3F25.
    N445#R1=V20
    N450#R3=V21
    N455G1X+R1Y+R3(MOVE TO G42 INI POINT FOR OUTER RAD
    N471#R1=V62 'X OF MEAN DIA POINT 4
    N476#R3=V63 'Y OF MEAN DIA POINT 4
    N480G1G42X+R1Y+R3F6.(MOVE TO POINT 4
    N500#R1=V30
    N505#R3=V31
    N520#R2=V50
    N525#R4=V51
    N526G1Z-R5F3.
    N530G1X+R1Y+R9F6.(MOVE TO POINT 5
    N535G2X+R1Y+R9I-R1J+R9(CUT OUTER RADIUS
    N550#R1=V62
    N555#R3=V63
    N560G1X+R1Y-R3F6.(MOVE TO POINT 6
    N565G0Z1.
    N580#R1=V18
    N585#R3=V19
    N590G1G40X+R1Y+R3F10.
    N595M9
    N600H0Z0M5G0
    N605G0G40G90X0Y0E0
    N610M2
    %

  10. #10
    Join Date
    Apr 2006
    Posts
    3206
    T'Other ORing Macro....
    Same program, later version which I think works better....not sure without loading it up and playing...and I don't have time at the moment.

    In the Fadal User Manual Chapt. 18 (in my 2001 version) is a whole section on Macros with some samples, syntax, and all the good stuff you need. Fadal also put out a short 24page booklet on macro programming which is pretty good....see if Neal will email you a copy!

    What I think would be easiest would be to develop a program/subroutine for each individual hole that is associated with the number on the map. (so you're not doing a bunch of mathmatical stuff shifting coords, etc..)

    Inputing the map number then calls up that corresponding program/subroutine specifically. You might find it easiest to have the operator just punch in the number and let it run that hole, then punch in the next number and let it run...and so on.

    %
    N5O501(ORNGMAC2
    N10G80G90G49G40G17M5M9
    N15R+0R1+0R2+0R3+0R4+0R5+0R6+0R7+0R8+0R9+0
    N20T3M6(.125DIA EMILL
    N25M3S2000
    N30G0G90X0Y0E10
    N35H3D3Z1.M8
    N40G0X0Y0Z1.
    N45#CLEAR
    N50#PRINT "ENTER CUTTER DIAMETER CD V1"
    N55#INPUT V1
    N60#PRINT "ENTER RADIUS VALUE OF MEAN GROOVE GR =GD/2 V3"
    N65#INPUT V3
    N70#PRINT "ENTER INNER GROOVE RADIUS IR V5"
    N75#INPUT V5
    N80#PRINT "ENTER OUTER GROOVE RADIUS OR V7"
    N85#INPUT V7
    N90#PRINT "ENTER ROUGHING DEPTH DR V8"
    N95#INPUT V8
    N100#PRINT "ENTER OFFSET ANGLE OA V11 (RECOMMEND 6.)"
    N105#INPUT V11
    N110#V18=COS(V11)*V5+3*V1 'X OF G42 INI INNER RAD
    N115#V19=SIN(V11)*V5 'Y VALUE G42 INI FOR INNER RAD
    N120#V20=COS(V11)*V7-3*V1 'X OF G42 INI OUTER RAD
    N125#V21=SIN(V11)*V7 'Y VALUE OF G42 INI FOR OUTER RAD
    N130#V22=COS(V11)*V5 'X POINT 1
    N135#V23=SIN(V11)*V5 'Y POINT 1
    N140#V24=V5 'X POINT 2
    N145#V25=0 'Y POINT 2
    N150#V26=COS(V11)*V5 'X POINT 3
    N155#V27=SIN(V11)*V5 'Y POINT 3
    N160#V28=COS(V11)*V7 'X POINT 4
    N165#V29=SIN(V11)*V7 'Y POINT 4
    N170#V30=(V7) 'X POINT 5
    N175#V31=0 'Y POINT 5
    N180#V32=COS(V11)*V7 'X POINT 6
    N185#V33=SIN(V11)*V7 'Y POINT 6
    N190#V44=V5 'I POINT 2
    N195#V45=0 'J POINT 2
    N200#V50=V7 'I POINT 5
    N205#V51=0 'J POINT 5
    N211#V60=COS(V11)*V3-.5*V1 'X ON MEAN DIA
    N215#V61=SIN(V11)*V3 'Y ON MEAN DIA
    N216#V62=COS(V11)*V3+.5*V1 'X ON MEAN DIA FOR OUTER
    N217#V63=SIN(V11)*V3 'Y ON MEAN DIA FOR OUTER
    N220#R0=0
    N225#R1=0
    N230#R1=V3 'X
    N235#R2=V44 'I
    N240#R3=0 'Y
    N245#R4=V45 'J
    N250#R5=V8 'Z ROUGH DEPTH
    N255#R7=V12*2 'D
    N260#R8=V28 'H
    N265#R9=0 'R9 IS ALWAYS A VALUE OF ZERO
    N270G0X+R1Y+R9(START ROUGH MEAN GROOVE
    N275G1Z-R5F6.
    N280G3X+R1Y+R9I-R1J+R9F6.5
    N285G0Z0.1
    N290#R1=V18 'X G42 INI
    N295#R3=V19 'Y G42 INI
    N300G0X+R1Y-R3F10.(MOVE TO G42 INI POINT FOR INNER RAD
    N320#R1=V60 'X OF MEAN DIA POINT 1
    N325#R3=V61 'Y OF MEAN DIA POINT 1
    N330G1G42X+R1Y-R3F10.(MOVE TO POINT 1
    N345#R1=V24 'X OF POINT 2
    N350#R3=V25
    N355#R2=V44 'I OF POINT 2
    N360#R4=V45
    N365G1Z-R5F3.
    N370G1X+R1Y+R9F6.2(MOVE TO POINT 2
    N375G3X+R1Y+R9I-R1J+R9(CUT INNER RADIUS
    N390#R1=V26
    N395#R3=V27
    N400G1X+R1Y+R3F6.(MOVE TO POINT 3
    N405G0Z0.1
    N420#R1=V18
    N425#R3=V19
    N430G1G40X+R1Y+R3F25.
    N445#R1=V20
    N450#R3=V21
    N455G1X+R1Y+R3(MOVE TO G42 INI POINT FOR OUTER RAD
    N471#R1=V62 'X OF MEAN DIA POINT 4
    N476#R3=V63 'Y OF MEAN DIA POINT 4
    N480G1G42X+R1Y+R3F6.(MOVE TO POINT 4
    N500#R1=V30
    N505#R3=V31
    N520#R2=V50
    N525#R4=V51
    N526G1Z-R5F3.
    N530G1X+R1Y+R9F6.(MOVE TO POINT 5
    N535G2X+R1Y+R9I-R1J+R9(CUT OUTER RADIUS
    N550#R1=V32
    N555#R3=V33
    N560G1X+R1Y-R3F6.(MOVE TO POINT 6
    N565G0Z1.
    N580#R1=V18
    N585#R3=V19
    N590G1G40X+R1Y+R3F10.
    N595M9
    N600H0Z0M5G0
    N605G0G40G90X0Y0E0
    N610M2
    %

  11. #11
    Join Date
    Sep 2010
    Posts
    0
    Help! I don't even know how to post a new thread. Anyhow, I'm using a Fadal 88. It's actually a very good machine. Unfortunately, as far as I can tell, the software version running this old friend is NOT capable of using variables and or macro language. I've tried running in both Format 1 and 2 to no avail. As soon as the control accepts a line with a #sign in it, it bombs out.

    1. Is there a way to get this control to read/accept macro language? (I'm not great with macros but with time I can make a FANUC control do most anything I want.)

    2. If the control software has to be upgraded, how do I go about this. How much might it cost?

    Thanks so much in advance for any advice anyone can give.

    P.S. The only software the company I now work for supplies for CAM is Bob Cam. I'm used to MasterCam/SmartCam/Gibbs. So, if I can get macros to work, I'll be so far ahead of where I am now. Also, does anyone know if its possible to get an AFFORDABLE version of MasterCam for milling 4 axis? I mean under one thousand dollars. I don't even know if that's affordable to tell the truth. I'd have to pay for it myself.

  12. #12
    Join Date
    Mar 2010
    Posts
    0

    software

    Go to enter next command and enter MU, go to the last page,the software version will be listed there,or pull out the cpu and read it off the sticker.we will need to know what version it is.

  13. #13
    Join Date
    Sep 2010
    Posts
    0

    COOL!

    I will do as suggested and reply within a few days. Thanks so much. Without a nice CAM setup, I believe MACRO will be the only way I can be efficient and also have some fun while I'm at it.

    There is nothing wrong with having fun while I'm getting paid is there?(wedge)

  14. #14
    Join Date
    Apr 2008
    Posts
    1577
    Quote Originally Posted by stevo1 View Post
    I don’t know your machine or control so some of the syntax might not be correct. First off get rid of all of your sequenced N addresses. This is for the purpose of using GOTO statements. You don’t want all the N if you are jumping to an address, too much room for a mistake.

    This is probably the easiest and quickest way to set it up. If I think of a more creative way I will let you know but for now this should work.

    Ok again I don’t know your control but if you have macro programming you should have variables #1-?. I would set up as many variables as you would need for each hole that you may or may not want to skip. Example below uses 6 holes. #1 is for the first hole and #6 is for the 6th. If you want to drill the hole make it =1 if you do not want to drill that hole make it =0. The example below will skip the 4th hole.

    TA,1
    #1=1
    #2=1
    #3=1
    #4=1
    #5=1
    #6=1
    H1Z.1M7
    (spot drill)
    G82X1.Y1.Z-.135R.1F20.P250.
    IF[#1EQ0]GOTO5
    X2.
    N5IF[#2EQ0]GOTO10
    X3.
    N10IF[#3EQ0]GOTO15
    X4.
    N15IF[#4EQ0]GOTO20
    X5.
    N20IF[#5EQ0]GOTO30
    X6.
    N30IF[#6EQ0]GOTO40
    X7.
    N40G80
    G0Z3.
    M5M9
    G49Z0
    M1
    M6T2
    M3S6500
    H2Z.1M7
    (drill)
    G83X1.Y1.Z-.75R.1Q.075F20.P.01
    IF[#1EQ0]GOTO50
    X2.
    N50IF[#2EQ0]GOTO55
    X3.
    N55IF[#3EQ0]GOTO60
    X4.
    N60IF[#4EQ0]GOTO65
    X5.
    N65IF[#5EQ0]GOTO70
    X6.
    N70IF[#6EQ0]GOTO75
    X7.
    N75G80
    G80
    G0Z3.

    Sorry I did not read your last post in great detail. I am posting this anyway because I typed it up. If you want just 6 locations and they can always be the same then you might be better off with a macro call or even a macro modal call with the coordinates block skipped or used via parameters. When I get some more time maybe today I will write something up using that format.


    Stevo
    This is an old post, but I though I would add an FYI.

    The Fadal inserts a N sequence at every line so that is unavoidable. To compensate the control will accept a label function:

    N25 ..........
    N26 #:SOMELABEL <------The GOTO will loop back to here
    N27 ..........
    N28 ..........
    N29 ..........
    N30 #GOTO :SOMELABEL

    I know you said you weren't familiar with the control so thought I would put it out there.

  15. #15
    Join Date
    Jun 2008
    Posts
    1511
    Quote Originally Posted by SBC Cycle View Post
    I know you said you weren't familiar with the control so thought I would put it out there.
    Thanks for the info, it is good to know.

    The Fanucs will do the same thing but there is a parameter bit SQN that you can turn off so it does not insert the N() addresses before every line.

    “Note to self” “don’t buy a Fadal”. That would drive me nuts if all of my programs had to have the sequence number before every line. We have an old monarch that has the same thing. I don’t program it thank God.

    Stevo

  16. #16
    Join Date
    Apr 2008
    Posts
    1577
    Yeah, the sequence number thing drives me nuts too. You have to be careful with mid-tape starts when using subprograms. I also have to watch how many lines I insert in between existing lines, doing a "renumber" every so often so goofy things don't happen.

    BTW, I forgot above that the macro lines should have a # before them, edit time...

  17. #17
    Join Date
    Sep 2010
    Posts
    0

    Question

    Finally! I've got the numbers. I think. i went to the last page of MU and at the bottom of the screen along with the fact that I was running Format 2 for that part was the following information. ID 89.1 N-2 I hope this is it. I look forward to seeing what's next.

  18. #18
    Join Date
    Mar 2003
    Posts
    900
    Sorry to bring you bad news, but 89.1N-2 is too old a software version. It does not have macro capabilities. You will need to upgrade your whole system to get macros on your machine. The minimum software to use for macros is 91.1Y-3 which would require you to up grade the whole dash 2 system.

    Neal

Similar Threads

  1. macro code inside of a subroutine
    By brockmo in forum Fadal
    Replies: 7
    Last Post: 03-13-2009, 04:32 AM
  2. macro programing
    By ikneb in forum Fanuc
    Replies: 10
    Last Post: 10-03-2008, 01:52 AM
  3. macro programing
    By 9axis in forum G-Code Programing
    Replies: 2
    Last Post: 03-19-2008, 11:52 AM
  4. Example of a Subroutine?
    By donl517 in forum Fadal
    Replies: 14
    Last Post: 06-27-2007, 04:05 PM
  5. Need help with subroutine
    By 2_jammer in forum Uncategorised CAM Discussion
    Replies: 1
    Last Post: 01-18-2005, 05:46 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •