// ---------------------------------------- // // 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 ANILAM.NTS 01/30/90 Machine: Anilam Vertical Mill with Anilam Crusader Control Machine File Name: ANILAM.SMF Template File Name: ANILAM.TMP Tape-to-Shape File Name: ANILAM.TTS Application Notes: 1. This SmartCAM Custom Code Generator has been modified by Morningstar CAD/CAM for your particular application. If further modifications are required, please contact Morningstar at (704) 983-6844. It is not recommended that you modify this code generator without first contacting Morningstar. 2. 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 G83 - Peck Drill Cycle G85 - Boring Cycle 3. In order for a tool change to be properly executed, a point with the features of the first tool must be the first element in the shape. This point should be assigned Prof_Top = No, and Clear_Z = No, and it should be placed at the desired X and Y tool change positions. 4. This code generator is set up to automatically output a tooling table at the beginning of the program, starting with tool #1 and continuing through the number of tools contained in the Job_Plan. In order to execute this feature properly, variable #U1 must be assigned. This variable reflects the total number of tools specified in the Job_Plan. This variable must be preceeded by the "#" sign, and the letter "U" must be capitalized. It is assigned in the Notes line of the first page of Job_Plan. See example below. Filename:?????? Date:??/??/?? Units:Inch Machine Type:????? Machine:Anilam Customer:??? Dwg.#:??? Part:???? Operation:??? Material Blank:??? Notes:#U1=???? (total number of tools) 5. 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. 6. For peck drilling the value for the depth of peck is defaulted to .05". This number can be changed by typing the word #PECK=???? in the tool comment line of Job_Plan following the tool that has been selected. The word "PECK" must be capitalized and preceeded by the "#" sign. Remember to select the peck drill option in the Features menu of Shape to execute peck drilling. All holemaking operations use the proper canned cycle codes (G81, etc.) and will cancel these at the end of the operation with a G80. G98 and G99 codes are also automatically output. 7. The default value of dwell is set to .2 seconds. If another value is required, assign the word #DWELL=???? (new value) in the tool comment line of the desired tool. The word "DWELL" must be capitalized and preceeded by the "#" sign. 8. SmartCAM will automatically output G40, G41, and G42 cutter diameter compensation if the contouring tool has an offset left or right specified in Shape. It will also automatically add a Lead_ In move of .050", turn on cutter compensation, then turn it off after the tool retracts in "Z". However, if you choose to use SmartCAM's Lead_In Lead_Out feature in the Tool_Path menu, SmartCAM will ignore the automatic feature and use the Lead_In Lead_Out geometry that you create. You will need to use this selection if you need a Lead_In move greater than the .050" default amount. The default amount can be changed by changing the ANILAM Machine Define question #122. (Utilities, Machine Define, Files, Read from SmartCAM Main Menu) Profiles with no offset do not require Lead_In Lead_Out moves. The following procedure is highly recommended for creating Lead_In Lead_Out moves: 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. The .050" is automatic unless otherwise specified. 9. SmartCAM's 2-1/2 Axis Programming System does not currently support subroutines. However, they can be built by constructing only the first Z-level cut for each tool that is to be repeated in the sub- routine. After each tool's geometry is defined at the proper Z-level code the part. Then go to Edit Plus and read the file. At each tool change, find the line that turns cutter compensation on, then find the line that turns it off. Select Partial_Save from the menu and save these lines as a separate file. This file will become the subroutine for that particluar tool. Subroutine example: N43 X4. Y5. N44 G28 G44 G91 Z0 (T8 0.750 DIA END MILL) N45 G80 G40 G44 G17 N45 M6 T8 N46 M3 S1000 N47 G54 N48 G90 G0 G43 X-0.5 Y1.874 Z1.0 H8 M8 N49 Z0.1 N50 G1 Z-1.0 F10.0 Copy from > N51 G41 D18 X-0.8763 Y0.9867 N52 X..... Y.... N.. X..... Y.... Copy to > N66 G40 X-0.5 Y0.5 After the Partial Save, read the file into Edit Plus. Add the necessary blocks of information to each subroutine so that it may be called by the master program (CLS L?????) After this information is added, select the Resequence option from the menu and resequence the block numbers as necessary. After each subroutine has been edited, recall the master program. Determine where each subroutine will be called. Insert the necessary "call" information (CLS L????) Next, insert the Z move amount for each "call". Then select Xtras, Repeat and copy these (2) lines the desired number of times in the Z axis. Master program example: N54 (CLS, L1 ????? N?? X... Y.... N?? X... Y.... >These lines represent the subroutine. N?? X... Y.... N86 X... Y.... Z.... @START % #ONBLK T100#TOOL #EVAL(#U2=#TOOL) #IF(#U2=#U1)< T0 Z0 X#XPOS Y#YPOS T#TOOL> #IF(#U2=#U1)<#EXIT>#ELSE<#EVAL(#U2=#U2+1)> T100#U2 #IF(#U2=#U1)< T0 Z0 X#XPOS Y#YPOS T#TOOL> #IF(#U2=#U1)<#EXIT>#ELSE<#EVAL(#U2=#U2+1)> T100#U2 #IF(#U2=#U1)< T0 Z0 X#XPOS Y#YPOS T#TOOL> #IF(#U2=#U1)<#EXIT>#ELSE<#EVAL(#U2=#U2+1)> T100#U2 #IF(#U2=#U1)< T0 Z0 X#XPOS Y#YPOS T#TOOL> #IF(#U2=#U1)<#EXIT>#ELSE<#EVAL(#U2=#U2+1)> T100#U2 #IF(#U2=#U1)< T0 Z0 X#XPOS Y#YPOS T#TOOL> #IF(#U2=#U1)<#EXIT>#ELSE<#EVAL(#U2=#U2+1)> T100#U2 #IF(#U2=#U1)< T0 Z0 X#XPOS Y#YPOS T#TOOL> #IF(#U2=#U1)<#EXIT>#ELSE<#EVAL(#U2=#U2+1)> T100#U2 #IF(#U2=#U1)< T0 Z0 X#XPOS Y#YPOS T#TOOL> #IF(#U2=#U1)<#EXIT>#ELSE<#EVAL(#U2=#U2+1)> T100#U2 #IF(#U2=#U1)< T0 Z0 X#XPOS Y#YPOS T#TOOL> #IF(#U2=#U1)<#EXIT>#ELSE<#EVAL(#U2=#U2+1)> T100#U2 #IF(#U2=#U1)< T0 Z0 X#XPOS Y#YPOS T#TOOL> #IF(#U2=#U1)<#EXIT>#ELSE<#EVAL(#U2=#U2+1)> T10#U2 #IF(#U2=#U1)< T0 Z0 X#XPOS Y#YPOS T#TOOL> #IF(#U2=#U1)<#EXIT> @TOOLCHG #EVAL(#V0=0) < #FXD> G0 T0 Z0 X#XHOME Y#YHOME T#TOOL @END < #FXD> G0 T0 Z0 X#XHOME Y#YHOME #OFFBLK% @STPROF < #ABSI> < #FXD> < #MOV>< X#XPOS>< Y#YPOS>< Z#ZPOS> @ENDPROF #MOV Z#ZPOS < #DCOMP> @RAP < #ABSI> < #FXD> < #MOV>< X#XPOS>< Y#YPOS> @LINE < #DCOMP> < #MOV>< X#XPOS>< Y#YPOS>< Z#ZPOS>< F#FEED> @ARC #MOV X#XPOS Y#YPOS I#XCTR J#YCTR< F#FEED> @ZCHKMV < #FXD> < #MOV>< Z#ZPOS> @ZDPTHMV < #MOV>< Z#ZPOS>< F#FEED> @FXD1 < #ABSI> < V20=#FEED V21=#ZCHK #FXD> < X#XPOS>< Y#YPOS>< Z#ZDPTH> @FXD2 < #ABSI> < V20=#FEED V21=#ZCHK V22=#DWELL #FXD> < X#XPOS>< Y#YPOS>< Z#ZDPTH> @FXD3 < #ABSI> < V20=#FEED V21=#ZCHK #FXD> < X#XPOS>< Y#YPOS>< Z#ZDPTH> @FXD4 < #ABSI> < V20=#FEED V21=#ZCHK #FXD> < X#XPOS>< Y#YPOS>< Z#ZDPTH> @FXD5 < #ABSI> < V20=#FEED V21=#ZCHK V23=#PECK #FXD> < X#XPOS>< Y#YPOS>< Z#ZDPTH> @DWELL G04 @