// ---------------------------------------- // // The following SmartCAM code generator has been // created to generate NC code for the respective // machine and control combinations listed below. // // Due to differences in programming styles, // controller versions, and optional equipment, // SmartCAMcnc DOES NOT and CANNOT guarantee // that the NC code generated is correct for any // specific machine. Some modification to the code // generator to match your setup and output // requirements is likely necessary. // // Modifications to code generators do not TYPICALLY // require a significant amount of time. SmartCAM // customers with active SSA contracts are entitled // to support for their code generators from the // SmartCAMcnc Support Group. To contact them for // support, please send an email to: // Support@SmartCAMcnc.com. If you would like // information on purchasing SSA for your SmartCAM // products, please contact: Sales@SmartCAMcnc.com // // DISCLAIMER: It is the responsibility of the end // user to confirm and verify that the NC code // created by any code generator is accurate and // will not cause a machine malfunction which // could result in stock, tooling, machine, and/or // personal injury. // // SmartCAMcnc assumes no responsibility or // liability for any damage caused or alleged to // have been caused by the use of any of the code // generators it provides. // ---------------------------------------- @COMMENTS 10/28/90 Machine: Kerney-Trecker Horizontal Machining Center with Gemini CNC Control Notes: 1. This machine and template file have been set up to support the following fixed cycles: G80 - Fixed Cycle Cancel G81 - Drill Cycle G82 - Spot Drill Cycle G84 - Tapping Cycle G85 - Boring Cycle G87 - Peck Drilling (See note 3) ** Special Variables ** (See Note 6 Below) #V1 - Assigns "X" Pos. Offset From Machine Zero #V2 - Assigns "Y" Pos. Offset From Machine Zero #V3 - Assigns "Z" Pos. of Workpiece From Center of Rotary Table 2. For programming in 3-D, the first element in Shape should be a point assigned to the first tool with Clear_Z and Prof_Top set to NO. Set the Z_Level of the point to the desired "Z" retract location for rotational moves. This will move the tool tip to this "Z" at the current "X" and "Y" locations before rotating the table. At a tool change, "Z" is always positioned to 20". If a rotation immediately follows a tool change, the rotation occurs while the "Z" is still at 20", then the machine moves to the programmed "X" and "Y" locations. 3. Speeds in the Job Plan should be specified in revolutions per minute (RPM). Feeds should be in inches per minute (IPM). In order to produce code which will turn the spindle in a reverse direction, type the spindle speed in Job Plan as a minus number. 4. For peck drilling the value for the depth of peck can be specified by assigning a value to the variable word #PECK in Job Plan. If you want to peck drill, remember to turn on the peck drill hole operation ( Hole_Op - Peck_Drill) before creating the Hole element and remember to specify the tool as a drill. SmartCAM will automatically output all G0 and G1 movements necessary. If no value is assigned to #PECK in Job Plan, SmartCAM will use the default value of .100 found in question #150 in Machine Define file. When assigning #PECK in Job_Plan, it must be in capital letters perceeded by the "#" symbol. It can be assigned either in the Notes section or the Tool Comment line. 5. SmartCAM will output all the necessary moves to turn cutter diameter compensation on and off correctly (G40/G41/G42) but certain rules must be followed in the Shape Module. Any Profile in Shape with an Offset of None needs no Lead_In or Lead_Out moves. All Profiles in Shape with either Offset Right or Left require Lead_In and Lead_Out Lines and may also have Lead_in and Lead_Out Arcs as well. The following procedure is recommended highly: If you wish to use Lead_In and Lead_Out Lines only, it is best to use an Angle of 90 degrees and a Length greater than the tool radius. If you wish to use Lead_In and Lead_Out Arcs, it is best to use a Radius equal to the same amount and an Angle of 45 degrees, then Lead_In and Lead_Out Lines to those Arcs at an Angle of 90 degrees and a length equal to the same amount. Any time Lead_In and Lead_Out Arcs are used, Lead_In and Lead_Out Lines are absolutely necessary. 6. Variables #V1, #V2, and #V3 are used to assign offset amounts so that the quill location can be programmed from machine zero without having to add these amounts manually. Assign these variables in the Notes section of Job_Plan. Also required are all tool lengths. Assign these values in the Length column of Job_Plan's tool page. An example is given below: Filename:?????? Date:??/??/?? Units:Inch Machine Type:????? Machine:Kiwa (or SL25) Customer:??? Dwg.#:??? Part:???? Operation:??? Material Blank:??? Notes:#V1=15 #V2=5 #V3=12.5 In the above example, an "X" position of 2" will be output as 17". A "Y" location of 0" will be output as 5". A cut 1/2" deep using a 3" endmill will be output as 9" (based on following: Depth + #V3 + Tool Length - 6" (dead band on rotary table)). By assign these three vari- ables you are able to define your geometry as you normally would, setting part zero wherever you choose. 7. When using Tape_To_Shape, all geometry is interpreted as center of tool. After the translation, it is necessary to change the offsets of the applicable geometry in Shape so that the shape file is a true representation of the translated information. This is done by select- ing Update, Feature_Change, Offset, then choosing the desired geometry on the screen. @START % #EVAL(#U0=0) #EVAL(#C0=1) #EVAL(#XPOFF=#V1) #EVAL(#YPOFF=#V2) #EVAL(#V9=#ZPOS+#V3+#TLEN-6) #RESET(#RFEED) #ONBLK#MOVG90G94G70X30.0000Y11.5000Z20.0000B#INDXC#RFEEDM19#EXLN M25T#TOOLP0D0 M06 #ONBLK#MOVG90G94G70X#XPOFFY#YPOFFZ#V9B#INDXC#RFEEDM19#EXLN M25T#NTOOLP0D0 @TOOLCHG #IF(#U0=1)<***toolchg***> #EVAL(#XPOFF=#V1) #EVAL(#YPOFF=#V2) #EVAL(#V9=#ZPOS+#V3+#TLEN-6) <#FXD> Z20.0000#RFEEDM09M19P0 X30.0000 M06 #MOVG90G94G70X#XPOSY#YPOSZ20.0000S#SPEED#SPNDL#EXLN #IF(#NTOOL<>#U1)P0D0<#C0> #UPDATE(#ZPOS) #RESET(#C0) @TPINDX #IF(#U0=1)<***index***> #RESET(#MOV) <#FXD>M09 B#INDXC #NEXTPT #MOVG90G94G70X#XPOSY#YPOSS#SPEED#SPNDLP0D0<#C0> #RESET(#LOFF,#C0) @END <#FXD> #MOVX30.0000Y11.5000Z20.0000#RFEED T0M06 M30 #OFFBLK% @STPROF #IF(#U0=1)<***stprof***> #EVAL(#V9=#ZPOS+#V3+#TLEN-6) <#ABSI><#MOV><#RFEED><#SPNDL><#C0> @LINE #IF(#U0=1)<***line***> #EVAL(#V9=#ZPOS+#V3+#TLEN-6) <#MOV><#DCOMP#EXC> @ARC <#PLANE><#DCOMP>#MOVI#XCTRJ#YCTR @XZARC #EVAL(#V9=#ZPOS+#V3+#TLEN-6) <#PLANE><#DCOMP>#MOVZ#V9I#XCTRK#ZCTR @YZARC #EVAL(#V9=#ZPOS+#V3+#TLEN-6) <#PLANE><#DCOMP>#MOVZ#V9J#YCTRK#ZCTR @HELIX #EVAL(#V9=#ZPOS+#V3+#TLEN-6) #EVAL(#ZSET=ABS(#INC/(2*3.141592654))) <#PLANE>#MOV<><>Z#V9I#XCTRJ#YCTRK#ZSET @XZHELIX #EVAL(#V9=#ZPOS+#V3+#TLEN-6) #EVAL(#YSET=ABS(#INC/(2*3.141592654))) <#PLANE>#MOV<>I#XCTRK#ZCTRJ#YSET @YZHELIX #EVAL(#V9=#ZPOS+#V3+#TLEN-6) #EVAL(#XSET=ABS(#INC/(2*3.141592654))) <#PLANE>#MOV<>J#YCTRK#ZCTRI#XSET @ZCLRMV #IF(#U0=1)<***zclear***> #EVAL(#V9=#ZPOS+#V3+#TLEN-6) <#FXD> <#ABSI><#MOV><#RFEED> #UPDATE(#ZPOS) @ZCHKMV #IF(#U0=1)<***zcheck***> #EVAL(#V9=#ZPOS+#V3+#TLEN-6) <#FXD> <#MOV><#RFEED> #UPDATE(#ZPOS) @ZDPTHMV #IF(#U0=1)<***zdepth***> #EVAL(#V9=#ZPOS+#V3+#TLEN-6) <#MOV> @FXD1 #IF(#U0=1)<***fxd1***> #EVAL(#V9=#V3+#TLEN-6) #EVAL(#V8=#V9+#ZCHK) #EVAL(#V7=#V9+#ZDPTH) #EVAL(#C0=1) <#ABSI><#FXD><#C0> #UPDATE(#ZPOS) @FXD2 #IF(#U0=1)<***fxd2***> #EVAL(#V9=#V3+#TLEN-6) #EVAL(#V8=#V9+#ZCHK) #EVAL(#V7=#V9+#ZDPTH) #EVAL(#C0=1) <#ABSI><#FXD><#C0> @FXD3 #IF(#U0=1)<***fxd3***> #EVAL(#V9=#V3+#TLEN-6) #EVAL(#V8=#V9+#ZCHK) #EVAL(#V7=#V9+#ZDPTH) #EVAL(#C0=1) <#ABSI><#FXD><#C0> @FXD4 #IF(#U0=1)<***fxd4***> #EVAL(#V9=#V3+#TLEN-6) #EVAL(#V8=#V9+#ZCHK) #EVAL(#V7=#V9+#ZDPTH) #EVAL(#C0=1) <#ABSI><#FXD><#C0> @FXD5 #IF(#U0=1)<***fxd5***> #EVAL(#V9=#V3+#TLEN-6) #EVAL(#V8=#V9+#ZCHK) #EVAL(#V7=#V9+#ZDPTH) #EVAL(#C0=1) <#ABSI><#FXD>#EXLN <#C0> @