// ---------------------------------------- // // 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 SMA 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 SMA 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. // ---------------------------------------- @NOTES // V12 USED TO GIVE "COUNT" FOR CUT NUMBER //JOB COMMENT #EVAL(#S10=,comment description etc.) //IF CUTTING ON RIGHT IS DESIRED ADD WITH LINE ABOVE #EVAL(#U2=1) // I.E. #EVAL(#S10=,JOB DESCRIPTION)#EVAL(#U2=1) both on same line. //TEMPLATE FOR HMC8000 EDGAR WORKING TEMP //SPECIAL MODIFICATION FOR 'W' AXIS MACHINING // no work has been done on fixed cycles // no work done on @arc sections. @START #EVAL(#V12=1)// RE CUT NUMBER % #IF(#SPEED>2200)<#EVAL(#SPEED=2200)> #EVAL(#S2=JOS(PRT_DESC))// pick up part desc, if present append to pgm name. #ONBLK#SAFBLK(PGM,#FILE#IFSTR(#S2<>)<,#S2>) #EVAL(#S2=JOS(TL_DESC)) M00 (MSG,LOAD TOOL #S2) D#LOFF ! D CODE #FDMODE F#FEED S#SPEED (MSP,VERIFY DEE CODE) #IF(#U2=1)<(AXO,X1 Y1)(MSG,MIRROR ON RIGHT SIDE)> (MIR,X1 Y0) !MIR X1 Y0 FOR EAST--X0 Y1 FOR WEST //**************************** //added per conversation with Randy Pakalski at G&L //supposed to make machine apply cutter comp to W axis (AXI,W3 Z4) #PLANE (AXI,W4 Z3) //***************************** #MOV #ABSI W#XPOS #TABLE(COOLANT,#COOLNT) < #MOV> Y#YPOS X#ZPOS #EVAL(#V19=#CLEAR) @TOOLCHG #EVAL(#V12=1)// RE CUT NUMBER #IF(#SPEED>2200)<#EVAL(#SPEED=2200)> G80 #SAFBLK #MOV W#XHOME X#ZHOME #IF(#U2=1)<(AXO,X1 Y1)(MSG, MIRROR ON LEFT SIDE)> //**************************** //added per conversation with Randy Pakalski at G&L //supposed to make machine apply cutter comp to W axis (AXI,W3 Z4) #PLANE (AXI,W4 Z3) //***************************** #EVAL(#S2=JOS(TL_DESC)) M00 (MSG,LOAD TOOL #S2)//#ELSE<(MSG, LOAD TOOL)> D#LOFF! D CODE #ABSI #FDMODE F#FEED S#SPEED #TABLE(COOLANT,#COOLNT) #RESET(#CLEAR) #EVAL(#V19=#CLEAR) #RESET(#V19) #EVAL(#V1=0) #RESET(#SPNDL) #RESET(#PTOP) #RESET(#V17) #RESET(#FXD) @STEPCHG //this section not checked #IF(#SPEED>2200)<#EVAL(#SPEED=2200)> #IF(#U2=1)<(AXO,X1 Y1)(MSG, MIRROR ON LEFT SIDE)> M00 (MSG, SET SAFE TOOLCHANGE) #EVAL(#V12=1)// RE CUT NUMBER #EVAL(#S2=JOS(TL_DESC)) M00 (MSG,LOAD TOOL #S2)//#ELSE<(MSG, LOAD TOOL)> //**************************** //added per conversation with Randy Pakalski at G&L //supposed to make machine apply cutter comp to W axis (AXI,W3 Z4) #PLANE (AXI,W4 Z3) //***************************** D#LOFF ! D CODE #ABSI #FDMODE F#FEED S#SPEED #MOV #ABSI W#XPOS #TABLE(COOLANT,#COOLNT) #RESET(#S19) #TABLE(COOLANT,#COOLNT) #EVAL(#V19=#CLEAR) @END G80 < #MOV> X#ZHOME < #MOV> W#XHOME M30 #OFFBLK ! CUTTER FACE TO THE EAST OR X MINUS DIRECTION. ! FOR CUTTING WEST, USE X-REV SWITCH OR ! ADD MIRROR COMMAND (AXO, X_,Y_) #EVAL(#S2=JOS(REV_DATE))#IFSTR(#S2<>) #EVAL(#S2=JOS(MATL_DESC))#IFSTR(#S2<>) #EVAL(#S2=JOS(MATL_NOTES))#IFSTR(#S2<>) #EVAL(#S2=JOS(JOB_NOTE))#IFSTR(#S2<>) #EVAL(#S2=JOS(NC_RUNTIME))#IFSTR(#S2<>) #EVAL(#S2=JOS(TMP1_MASTER))#EVAL(#S3=JOS(SMF1_MASTER))#EXLN #IFSTR(#S2<>,#AND #S3<>) #EVAL(#S2=JOS(WC_DESC))#IFSTR(#S2<>) #EVAL(#S2=JOS(MACH_PATH))#IFSTR(#S2<>) @STPROF #RESET(#DCOMP) < #ABSI>< #FXD> #MOV W#XPOS Y#YPOS// ! CUT NUMBER #V12 //#EVAL(#V12=#V12+1)// RE CUT NUMBER @HELIX #MOV W#XPOS Y#YPOS X#ZPOS K#XCTR J#YCTR< F#FEED> @COOLANT 0,M09 1,M8 2,M07 3,M28 4,M23 @ENDPROF < #MOV> X#ZPOS //< #DCOMP> @RAP //recheck this section < #ABSI>< #FXD>< #MOV>< W#XPOS>< Y#YPOS>< X#ZPOS> @LINE //recheck this section < #DCOMP>< #MOV>< W#XPOS>< Y#YPOS>< X#ZPOS>< #FDMODE>< F#FEED> @ARC < #DCOMP> #MOV W#XPOS Y#YPOS K#XCTR J#YCTR< F#FEED> // !W CTR = #XCTR Y CTR = #YCTR @ZCHKMV < #ABSI>< #MOV> X#CLEAR @ZDPTHMV #MOV X#ZPOS< #SPNDL>< #TABLE(COOLANT,#COOLNT)> @FXD1 //DRILL CYCLE G81 need to fix-check #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) < #FXD>< X#XPOS>< Y#YPOS>< R#ZCHK>< Z#V17>< P#CLEAR> stopstopstopstopstopstopstopstopstop - section not formatted for W axis @FXD2 //SPOTDRILL WITH DWELL need to check-fix #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) < #FXD>< X#XPOS>< Y#YPOS>< R#ZCHK>< Z#V17>< P#V19>#EXLN < F#FEED>< #SPNDL>< #TABLE(COOLANT,#COOLNT)> stopstopstopstopstopstopstopstopstop - section not formatted for W axis @FXD3 //TAP CYCLE need to check - fix #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) //need to set "r" value 2 threads above part..? < #FXD>< X#XPOS>< Y#YPOS>< R#ZCHK>< Z#V17>< P#V19>#EXLN < K#THDPTCH>< #SPNDL> stopstopstopstopstopstopstopstopstop - section not formatted for W axis @FXD4 //BORE CYCLE need to check - fix #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) < #FXD>< X#XPOS>< Y#YPOS>< R#ZCHK>< Z#V17>< P#CLEAR>< #SPNDL> stopstopstopstopstopstopstopstopstop - section not formatted for W axis @FXD5//PECK DRILL //need to recheck dwell ?? #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) < #FXD>< X#XPOS>< Y#YPOS>< R#ZCHK>< Z#V17>#EXLN < Q-#PECK>< P#V19>< #SPNDL>#IF(#DWELL>0)< G04#DWELL#EVAL(#TIME=#DWELL/60)> stopstopstopstopstopstopstopstopstop - section not formatted for W axis @DWELL //need to check output - fix? G04F#DWELL#EVAL(#TIME=#DWELL/60) // temporary stop here rest needs work //****************** OP_DRL ****************** @OP_DRL #EVAL(#S18=#TABLE(DRL_CODES,#CYCLE)) #IF(#U1)<#RESET(#FXD,#XPOS,#YPOS)#EVAL(#U1=0)> #IFCHG(#FXD)<#RESET(#XPOS,#YPOS,#S18)> #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) < G#S18>< X#XPOS>< Y#YPOS>< R#ZCHK>< Z#V17>< P#V19>< #SPNDL> stopstopstopstopstopstopstopstopstop - section not formatted for W axis @DRL_CODES 0,81 1,81 2,81 3,81 @OP_REAM #EVAL(#S19=#TABLE(REAM_CODES,#CYCLE)) #IF(#U1)<#RESET(#FXD,#XPOS,#YPOS)#EVAL(#U1=0)> #IFCHG(#FXD)<#RESET(#XPOS,#YPOS,#S19)> #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) G#S19< X#XPOS>< Y#YPOS>< R#ZCHK>< Z#V17>#EXLN < P#V19>< F#FEED>< #SPNDL> stopstopstopstopstopstopstopstopstop - section not formatted for W axis @REAM_CODES 0,85 1,85 2,85 3,85 @OP_CBORE #EVAL(#S19=#TABLE(CBORE_CODES,#CYCLE)) #IF(#U1)<#RESET(#FXD,#XPOS,#YPOS)#EVAL(#U1=0)> #IFCHG(#FXD)<#RESET(#XPOS,#YPOS,#S19)> #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) G#S19< X#XPOS>< Y#YPOS>< R#ZCHK>< Z#V17>< P#V19>#EXLN < #SPNDL><#IF(#DWELL>0)> stopstopstopstopstopstopstopstopstop - section not formatted for W axis @CBORE_CODES 0,82 1,82 2,82 3,82 @OP_CDRL #EVAL(#S19=#TABLE(CDRL_CODES,#CYCLE)) #IF(#U1)<#RESET(#FXD,#XPOS,#YPOS)#EVAL(#U1=0)> #IFCHG(#FXD)<#RESET(#XPOS,#YPOS,#S19)> <#ABSI> #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) #IF(#CYCLE=0)#EXLN <#SPNDL>> #IF(#CYCLE=1)< G#S19< X#XPOS>< Y#YPOS>< R#ZCHK>< Z#ZDPTH>< P#V19>#EXLN < #SPNDL>><#IF(#DWELL>0)< G04#DWELL#EVAL(#TIME=#DWELL/60)>> stopstopstopstopstopstopstopstopstop - section not formatted for W axis @CDRL_CODES 0,81 1,82 2,81 3,81 @OP_CSINK #EVAL(G#S19=#TABLE(CSINK_CODES,#CYCLE)) #EVAL(#V17=#ZCHK+.1)//CHANGE IF MORE CLEAR DESIRED #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) G#S19< X#XPOS>< Y#YPOS>< R#ZCHK>< Z#V17>< P#V19>< #SPNDL>#EXLN #IF(#DWELL>0)< G04#DWELL#EVAL(#TIME=#DWELL/60)> stopstopstopstopstopstopstopstopstop - section not formatted for W axis @CSINK_CODES 0,82 1,82 2,82 3,82 //*************************************************** @OP_SPDRL #EVAL(#S19=#TABLE(SPDRL_CODES,#CYCLE)) #IF(#U1)<#RESET(#FXD,#XPOS,#YPOS)#EVAL(#U1=0)> #IFCHG(#FXD)<#RESET(#XPOS,#YPOS,#S19)> #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) < G#S19>< X#XPOS>< Y#YPOS>< R#ZCHK>< Z#V17>< P#V19>< #SPNDL> stopstopstopstopstopstopstopstopstop - section not formatted for W axis @SPDRL_CODES 0,81 1,81 2,81 3,81 //**************************************************** @OP_SPFACE #EVAL(#S19=#TABLE(SPFACE_CODES,#CYCLE)) #IF(#U1)<#RESET(#FXD,#XPOS,#YPOS)#EVAL(#U1=0)> #IFCHG(#FXD)<#RESET(#XPOS,#YPOS)> #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) G#S19< X#XPOS>< Y#YPOS>< R#ZCHK>< Z#V17>< P#V19>#EXLN stopstopstopstopstopstopstopstopstop - section not formatted for W axis @SPFACE_CODES 0,82 1,82 2,82 3,82 //************************************************** @OP_PDRL #EVAL(#S19=#TABLE(PECK_CODES,#CYCLE)) #IF(#U1)<#RESET(#FXD,#XPOS,#YPOS)#EVAL(#U1=0)> #IFCHG(#FXD)<#RESET(#S19,#XPOS,#YPOS)> #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) < #ABSI> //#IF(#CYCLE=0) //#IF(#CYCLE=1) < #ABSI> G#S19< X#XPOS>< Y#YPOS>< R#ZCHK>< Z#V17>#EXLN Q-#PECK< P#V19>< #SPNDL> stopstopstopstopstopstopstopstopstop - section not formatted for W axis @PECK_CODES 0,87 1,83 2,83 3,83 //************************************************** @OP_TAP #EVAL(#S19=#TABLE(TAP_CODES,#CYCLE)) #IF(#U1)<#RESET(#FXD,#XPOS,#YPOS,S#SPEED)#EVAL(#U1=0)> #IFCHG(#FXD)<#RESET(#S19)> <#ABSI> #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) #EVAL(#V18=#THDPTCH) < #ABSI>< G#S19>< X#XPOS>< Y#YPOS>#EXLN < R#CLEAR>< Z#V17>< P#V19>< K#FMT(#V18,D0.6)>< #SPNDL> stopstopstopstopstopstopstopstopstop - section not formatted for W axis @TAP_CODES 0,84 1,84 2,84 3,84 @OP_BORE #EVAL(#S19=#TABLE(BORE_CODES,#CYCLE)) #IF(#U1)<#RESET(#FXD,#XPOS,#YPOS)#EVAL(#U1=0)> #IFCHG(#FXD)<#RESET(#S19)> #EVAL(#V19=#CLEAR) #EVAL(#V17=#ZDPTH) < #ABSI> G#S19< X#XPOS>< Y#YPOS>< R#ZCHK>< Z#V17>< P#V19>#EXLN < F#FEED>< #SPNDL> stopstopstopstopstopstopstopstopstop - section not formatted for W axis @BORE_CODES 0,86 1,86 2,86 3,86 @ //..................END OF HMC8000.TMP................ //CHANGED FXD3 TAP CYCLE TO USE THDPTCH IN LIEU OF // FEED MACH REQUIRES FEED PER REV