├── fusion360 ├── images │ ├── F360_PP.png │ ├── spindle_properties.png │ └── F360_PP_PROPERTY_TABLE.png ├── README.md ├── LICENSE └── buildbotics_jet.cps ├── SolidWorks ├── SW_BUILDBOTICS_POST.ctl ├── .~lock.Setting up SolidWorks CAM.docx# ├── Setting up SolidWorks CAM.docx ├── PostProcessorInfoDoc.txt ├── SW_BUILDBOTICS_POST.lng ├── SW_BUILDBOTICS_POST.LIB ├── SW_BUILDBOTICS_POST.LIB.txt └── SW_BUILDBOTICS_POST.SRC ├── BobCAD ├── Buildbotics_OEM_3x_Mill │ ├── TableReflection.bmp │ └── Buildbotics_OEM_3x_Mill.xml ├── README.md └── Buildbotics_OEM_3x_Mill.BCPst ├── vetric ├── README.md ├── Buildbotics_no_jet_inch.pp ├── Buildbotics_no_jet_mm.pp ├── Buildbotics_inch.pp └── Buildbotics_mm.pp ├── qcad ├── README.md ├── BuildBoticsNoToolChangerIN.js ├── BuildBoticsNoToolChangerMM.js ├── BuildBoticsMM.js ├── BuildBoticsIN.js └── BuildBoticsNewIN.js └── Carveco ├── Buildbotics_Metric.con └── Buildbotics_Inch.con /fusion360/images/F360_PP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buildbotics/bbctrl-posts/HEAD/fusion360/images/F360_PP.png -------------------------------------------------------------------------------- /SolidWorks/SW_BUILDBOTICS_POST.ctl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buildbotics/bbctrl-posts/HEAD/SolidWorks/SW_BUILDBOTICS_POST.ctl -------------------------------------------------------------------------------- /SolidWorks/.~lock.Setting up SolidWorks CAM.docx#: -------------------------------------------------------------------------------- 1 | ,doug,DougDebian.doug.net,27.10.2022 18:48,file:///home/doug/.config/libreoffice/4; -------------------------------------------------------------------------------- /fusion360/images/spindle_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buildbotics/bbctrl-posts/HEAD/fusion360/images/spindle_properties.png -------------------------------------------------------------------------------- /SolidWorks/Setting up SolidWorks CAM.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buildbotics/bbctrl-posts/HEAD/SolidWorks/Setting up SolidWorks CAM.docx -------------------------------------------------------------------------------- /fusion360/images/F360_PP_PROPERTY_TABLE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buildbotics/bbctrl-posts/HEAD/fusion360/images/F360_PP_PROPERTY_TABLE.png -------------------------------------------------------------------------------- /BobCAD/Buildbotics_OEM_3x_Mill/TableReflection.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/buildbotics/bbctrl-posts/HEAD/BobCAD/Buildbotics_OEM_3x_Mill/TableReflection.bmp -------------------------------------------------------------------------------- /vetric/README.md: -------------------------------------------------------------------------------- 1 | Use this post processor when using Vectric CAD/CAM products. It will be included in future versions of Vectric products. For older versions you can access it by saving it at "File > Open Application Data Folder > My_PostP" 2 | (from the main menu bar of the application) 3 | 4 | # buildbotics_inch.pp 5 | Use this file for Imperial units on late versions of Vectric software 6 | # buildbotics_mm.pp 7 | Use this file for Metric units on late versions of Vectric software 8 | # buildbotics_no_jet_inch.pp 9 | Use this file for Imperial units on older versions of Vectric software. This version has laser jet control removed. 10 | # buildbotics_no_jet_mm.pp 11 | Use this file for Metric units on older versions of Vectric software. This version has laser jet control removed. 12 | -------------------------------------------------------------------------------- /qcad/README.md: -------------------------------------------------------------------------------- 1 | # BuildBotics Post Processors 2 | 3 | These are post processors for QCAD/CAM that create gcode for the BuildBotics controller. 4 | 5 | There are 4 files: 6 | * BuildBoticsIN.js -- This creates gcode for imperial measurements and assumes the presence of a tool changer. 7 | * BuildBoticsMM.js -- This creates gcode for metric measurements and assumes the presence of a tool changer. 8 | * BuildBoticsNoToolChangerIN.js -- This creates gcode for imperial measurements and assumes there is no tool changer. 9 | * BuildBoticsNoToolChangerMM.js -- This creates gcode for metric measurements and assumes there is no tool changer. 10 | 11 | These files are provided with no restrictions, warranty, or support. If you break something or hurt yourself, you are the only one responsible for it. 12 | 13 | The BuildBotics web site: 14 | https://buildbotics.com/ 15 | 16 | The QCAD/CAM web site: 17 | https://www.ribbonsoft.com/en/ 18 | -------------------------------------------------------------------------------- /BobCAD/README.md: -------------------------------------------------------------------------------- 1 | Thanks to Mohammad Hejazi at BobCAD or providing this post processor and these instructions. 2 | 3 | BobCAD requires the machine definition file and the post-processor file together in order to output the correct code. 4 | 5 | ## There are two ways to install post-processor and machine definition. 6 | 7 | ### Manual installation 8 | 1. Make sure BobCAD-CAM is closed 9 | 2. Move the Post Processor file "Buildbotics_OEM_3x_Mill.BCPst" into the default Post Processor folder location for desired BobCAD version. For example, if you are installing the post-processor for BobCAD-CAM V33, the default Post Processor folder location is: C:\BobCAD-CAM Data\BobCAD-CAM V33\Posts\Mill 10 | 3. Move the machine definition folder "Buildbotics_OEM_3x_Mill" into the default MachSim folder location for desired BobCAD version. For example, if you are installing the machine definition for BobCAD-CAM V33, the default MachSim folder location is: C:\BobCAD-CAM Data\BobCAD-CAM V33\MachSim 11 | 4. Once these files are transferred into the respective folders, open BobCAD to test the Post Processor output and update the machining results to ensure the functionality of the Post. 12 | 13 | ### Using Installer file 14 | 1. Download the installer from [here](https://bobcad.awsapps.com/workdocs/index.html#/share/document/0f89403d950a66a2327d16fce693785055212dea7af6431e4baf208641d769a1). 15 | 2. Close BobCAD if it's open 16 | 3. Run the installer 17 | 4. Select the desired BobCAD version 18 | 5. Complete the installation process 19 | -------------------------------------------------------------------------------- /qcad/BuildBoticsNoToolChangerIN.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This file generated by Chuck Tilbury Sept. 2019 3 | * 4 | * This is a postprocessor for the Masso controller. 5 | */ 6 | include("GCodeBase.js"); 7 | 8 | function BuildBoticsNoToolChangerIN(cadDocumentInterface, camDocumentInterface) { 9 | GCodeBase.call(this, cadDocumentInterface, camDocumentInterface); 10 | 11 | this.decimals = 4; 12 | this.unit = RS.Inch; 13 | this.outputOffsetPath = true; 14 | this.fileExtensions = ["nc"] 15 | this.lineNumber = 1000; 16 | this.lineNumberIncrement = 10; 17 | 18 | 19 | this.header = [ 20 | "(Program name: [PROGRAM_NAME])", 21 | "(Imperial measure)", 22 | "(File: [FILENAME] -- [DATETIME])", 23 | "", 24 | "[N] G20 G17 G90 G80" 25 | ]; 26 | 27 | this.footer = [ 28 | "[N] M05", // stop the spindle 29 | "[N] G0 X0 Y0", // reset to start location 30 | "[N] M30", // rewind the program 31 | "(end program)", 32 | "" 33 | ]; 34 | 35 | this.toolpathHeader = [ 36 | "", 37 | "(Begin Tool Path [TOOLPATH_INDEX]: [TOOLPATH_NAME])" 38 | ]; 39 | 40 | this.toolpathFooter = [ 41 | "(End Tool Path [TOOLPATH_INDEX]: [TOOLPATH_NAME])", 42 | "" 43 | ]; 44 | 45 | } 46 | 47 | // Configuration is derived from GCodeBase: 48 | BuildBoticsNoToolChangerIN.prototype = new GCodeBase(); 49 | 50 | // Display name shown in user interface: 51 | BuildBoticsNoToolChangerIN.displayName = "BuildBoticsNoToolChanger[in]"; 52 | 53 | -------------------------------------------------------------------------------- /qcad/BuildBoticsNoToolChangerMM.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This file generated by Chuck Tilbury Sept. 2019 3 | * 4 | * This is a postprocessor for the Masso controller. 5 | */ 6 | include("GCodeBase.js"); 7 | 8 | function BuildBoticsNoToolChangerMM(cadDocumentInterface, camDocumentInterface) { 9 | GCodeBase.call(this, cadDocumentInterface, camDocumentInterface); 10 | 11 | this.decimals = 4; 12 | this.unit = RS.Millimeter; 13 | this.outputOffsetPath = true; 14 | this.fileExtensions = ["nc"] 15 | this.lineNumber = 1000; 16 | this.lineNumberIncrement = 10; 17 | 18 | 19 | this.header = [ 20 | "(Program name: [PROGRAM_NAME])", 21 | "(Metric measure)", 22 | "(File: [FILENAME] -- [DATETIME])", 23 | "", 24 | "[N] G21 G17 G90 G80" 25 | ]; 26 | 27 | this.footer = [ 28 | "[N] M05", // stop the spindle 29 | "[N] G0 X0 Y0", // reset to start location 30 | "[N] M30", // rewind the program 31 | "(end program)", 32 | "" 33 | ]; 34 | 35 | this.toolpathHeader = [ 36 | "", 37 | "(Begin Tool Path [TOOLPATH_INDEX]: [TOOLPATH_NAME])" 38 | ]; 39 | 40 | this.toolpathFooter = [ 41 | "(End Tool Path [TOOLPATH_INDEX]: [TOOLPATH_NAME])", 42 | "" 43 | ]; 44 | 45 | } 46 | 47 | // Configuration is derived from GCodeBase: 48 | BuildBoticsNoToolChangerMM.prototype = new GCodeBase(); 49 | 50 | // Display name shown in user interface: 51 | BuildBoticsNoToolChangerMM.displayName = "BuildBoticsNoToolChanger[mm]"; 52 | 53 | -------------------------------------------------------------------------------- /Carveco/Buildbotics_Metric.con: -------------------------------------------------------------------------------- 1 | ; Buildbotics PostP file 2 | ; 3 | ; === ======== ======================================== 4 | ;LA 16/03/21 created for Buildbotics 5 | ; 6 | ; 7 | DESCRIPTION = "Buildbotics (mm) (*.ngc)" 8 | ; 9 | FILE_EXTENSION = "ngc" 10 | ; 11 | UNITS = MM 12 | ; 13 | ; Cariage return - line feed at end of each line 14 | ; 15 | END_OF_LINE = "[13][10]" 16 | ; 17 | ; Spindle Speed 18 | FORMAT = [S|@|S|1.0] 19 | ; Feed Rate 20 | FORMAT = [F|#|F|1.1] 21 | ; Tool moves in x,y and z 22 | FORMAT = [X|#|X|1.3] 23 | FORMAT = [Y|#|Y|1.3] 24 | FORMAT = [Z|#|Z|1.3] 25 | ; Arc Center Coords 26 | FORMAT = [I|@|I|1.3] 27 | FORMAT = [J|@|J|1.3] 28 | ; Home tool positions 29 | FORMAT = [XH|@|X|1.3] 30 | FORMAT = [YH|@|Y|1.3] 31 | FORMAT = [ZH|@|Z|1.3] 32 | ; 33 | ; 34 | ; Set up program header 35 | ; 36 | START = "%" 37 | START = "T[T] (MSG, Insert Tool [T])" 38 | START = "G0 G17 G21 G90 G40 G49 G64" 39 | START = "G0 [ZH]" 40 | START = "G0 [XH] [YH] M03 [S]" 41 | START = "M0(MSG, Click 'Continue' when the spindle is up to speed)" 42 | ; 43 | ; Program moves 44 | ; 45 | FIRST_RAPID_RATE_MOVE = "G0 [X] [Y] [Z]" 46 | ; 47 | FIRST_FEED_RATE_MOVE = "G1 [X] [Y] [Z] [F]" 48 | FEED_RATE_MOVE = "[X] [Y] [Z]" 49 | ; 50 | FIRST_CW_ARC_MOVE = "G2 [X] [Y] [I] [J] [F]" 51 | CW_ARC_MOVE = "G2 [X] [Y] [I] [J]" 52 | ; 53 | FIRST_CCW_ARC_MOVE = "G3 [X] [Y] [I] [J] [F]" 54 | CCW_ARC_MOVE = "G3 [X] [Y] [I] [J]" 55 | ; 56 | NEW_SEGMENT_POST_TOOLCHANGE= "G0 [Z] M03 [S]" 57 | NEW_SEGMENT_POST_TOOLCHANGE= "M0(MSG, Click 'Continue' when the spindle is up to speed)" 58 | ; 59 | ;Setup Toolchange Commands 60 | ; 61 | TOOLCHANGE = "G0 [ZH]" 62 | TOOLCHANGE = "G0 [XH] [YH]" 63 | TOOLCHANGE = "M05" 64 | TOOLCHANGE = "M06 T[T]" 65 | ; 66 | ; End of file 67 | ; 68 | END = "M05" 69 | END = "G0 [ZH]" 70 | END = "G0 [XH] [YH]" 71 | END = "M02" 72 | -------------------------------------------------------------------------------- /Carveco/Buildbotics_Inch.con: -------------------------------------------------------------------------------- 1 | ; Buildbotics PostP file 2 | ; 3 | ; === ======== ======================================== 4 | ;LA 16/03/21 created for Buildbotics 5 | ; 6 | ; 7 | DESCRIPTION = "Buildbotics (inch) (*.ngc)" 8 | ; 9 | FILE_EXTENSION = "ngc" 10 | ; 11 | UNITS = INCH 12 | ; 13 | ; Cariage return - line feed at end of each line 14 | ; 15 | END_OF_LINE = "[13][10]" 16 | ; 17 | ; Spindle Speed 18 | FORMAT = [S|@|S|1.0] 19 | ; Feed Rate 20 | FORMAT = [F|#|F|1.1] 21 | ; Tool moves in x,y and z 22 | FORMAT = [X|#|X|1.3] 23 | FORMAT = [Y|#|Y|1.3] 24 | FORMAT = [Z|#|Z|1.3] 25 | ; Arc Center Coords 26 | FORMAT = [I|@|I|1.3] 27 | FORMAT = [J|@|J|1.3] 28 | ; Home tool positions 29 | FORMAT = [XH|@|X|1.3] 30 | FORMAT = [YH|@|Y|1.3] 31 | FORMAT = [ZH|@|Z|1.3] 32 | ; 33 | ; 34 | ; Set up program header 35 | ; 36 | START = "%" 37 | START = "T[T] (MSG, Insert Tool [T])" 38 | START = "G0 G17 G20 G90 G40 G49 G64" 39 | START = "G0 [ZH]" 40 | START = "G0 [XH] [YH] M03 [S]" 41 | START = "M0(MSG, Click 'Continue' when the spindle is up to speed)" 42 | ; 43 | ; Program moves 44 | ; 45 | FIRST_RAPID_RATE_MOVE = "G0 [X] [Y] [Z]" 46 | ; 47 | FIRST_FEED_RATE_MOVE = "G1 [X] [Y] [Z] [F]" 48 | FEED_RATE_MOVE = "[X] [Y] [Z]" 49 | ; 50 | FIRST_CW_ARC_MOVE = "G2 [X] [Y] [I] [J] [F]" 51 | CW_ARC_MOVE = "G2 [X] [Y] [I] [J]" 52 | ; 53 | FIRST_CCW_ARC_MOVE = "G3 [X] [Y] [I] [J] [F]" 54 | CCW_ARC_MOVE = "G3 [X] [Y] [I] [J]" 55 | ; 56 | NEW_SEGMENT_POST_TOOLCHANGE= "G0 [Z] M03 [S]" 57 | NEW_SEGMENT_POST_TOOLCHANGE= "M0(MSG, Click 'Continue' when the spindle is up to speed)" 58 | ; 59 | ;Setup Toolchange Commands 60 | ; 61 | TOOLCHANGE = "G0 [ZH]" 62 | TOOLCHANGE = "G0 [XH] [YH]" 63 | TOOLCHANGE = "M05" 64 | TOOLCHANGE = "M06 T[T]" 65 | ; 66 | ; End of file 67 | ; 68 | END = "M05" 69 | END = "G0 [ZH]" 70 | END = "G0 [XH] [YH]" 71 | END = "M02" 72 | -------------------------------------------------------------------------------- /SolidWorks/PostProcessorInfoDoc.txt: -------------------------------------------------------------------------------- 1 | Order of operations for editing Post Processors for SolidWorks 2 | 3 | 1. Open the .scr source file that you want to work on in Ec Edit 4 | 2. Check the LIBRARY paths are correct, the first should point at the local .lib file, the second at the general .lib file usually located in C:\CAMWorksData\UPG\MasterLibraryFiles\MILL.LIB 5 | 3. Open the local.lib file in Ec Edit 6 | 4. once you are done with your editing, save the file in Ec Edit. 7 | 5. Open up UPG and open the source file that you had open in Ec Edit. It is best to have the source file saved on the local machine and not a network drive. 8 | 6. When the source file is open, click 'File' -> 'Compile Source' and then compile 9 | 7. The .ctl file and .lib file will now be updated with the new changes. It is much safer to compile and edit the files on the local machine, then copy them to a directory where Solidworks reads 10 | the ctl files from. For example, I compile the ctl and lib files to C:\CAMWorksData\UPG\ctl, and then manually copy them to C:\ProgramData\SOLIDWORKS\SOLIDWORKS CAM 2019\Posts, which is the 11 | default SolidWorks post directory. If there is already a file in that directory with the same name because you are updating a file that you have used in the past, it is fine to overwrite it. 12 | 8. Open SolidWorks and in the CAM section, click on 'Define Machine'. Inside there, go to the 'Post Processor' tab and click on 'Browse', it should default to the normal directory which is the 13 | same location that you just copied your ctl file to. 14 | 9. Inside there select your updated ctl file (check the timestamp to be sure that you are selecting the new version). It should then add the updated file to the available post processor list. 15 | 10. Click the 'Select' button a few times to ensure it has selected it, and you should see the Active Post Processor file field update with the new file name. If you ever start getting errors in 16 | the post processor generation, it is wise to come back and check that the correct post processor is selsected, it likes to default back to a random one. It is also wise to always click the 17 | Select' button several times to ensure it accept the new post processor. 18 | 11. Now you have your updated post processor accepted into SolidWorks. Go ahead and do all your normal process for creating a post process file, ensureing to save it in a .ns file format. -------------------------------------------------------------------------------- /fusion360/README.md: -------------------------------------------------------------------------------- 1 | # buildbotics-fusion360-post 2 | Post processor for fusion 360 3 | 4 | Just select 'builbotics.cps' as your post processor from within Fusion 360. 5 | 6 | 7 | 8 | A few new feature were added to the property table in the Fusion 360 post processor dialog. 9 | 10 | 11 | 12 | The "Optional Stop" option was added because the Buildbotics Controller currently ignores 13 | the 'M1' command. This was made optional because 'M1' will be supported in a future release. 14 | 15 | The default value for "Enable tool length compensation" was set to "No" because the Buildbotics 16 | Controller does not current support this capability. It is planned for a future release. 17 | 18 | "Write Simulation Data" was added because this post processor will automatically generate 19 | simulation commands that are compatible with the CutViewer CNC simulator. Setting this to "Yes" 20 | puts this simulation in the comments in the g-code file. 21 | 22 | "Set Z-axis retract height" feature was added to avoid confusion about retract height. 23 | 24 | "Disable coolant control" feature was added so users that want to use the Load1 or Load2 outputs for something other than coolant control, or to just manually control coolant can prevent F360 from generating coolant control commands in the GCode. The default value for this field is "No", meaning that coolant control is not disabled. Set this field to "Yes" to turn off coolant control commands in F360. 25 | 26 | The following two spindle control properties were added by Vincet Schmidt. Thanks Vincent! 27 | 28 | 29 | 30 | > "Spindle Delay" was added to insert a delay, specified in seconds, after the spindle start command has been issued (M3). This is useful if you experience issues with your spindle not reaching the desired speed quickly enough before engaging with the material. 31 | 32 | > "Spindle Confirmation" feature was added to insert a pause with a prompt (M0) after the spindle start command (M3). This lets users manually confirm if the spindle is running correctly before continuing with their program. 33 | 34 | Modified the writeRetact program to simply make a rapid move (G0) to the retract height specified by the "Set Z-Axis retract height value". 35 | 36 | ## Probing support added on 10/10/19 37 | The following types of probing are now supported: 38 | * probing-xy-outer-corner 39 | * probing-x 40 | * probing-y 41 | * probing-z 42 | -------------------------------------------------------------------------------- /qcad/BuildBoticsMM.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This file generated by Chuck Tilbury Sept. 2019 3 | * 4 | * This is a postprocessor for the Masso controller. 5 | */ 6 | include("GCodeBase.js"); 7 | 8 | function BuildBoticsMM(cadDocumentInterface, camDocumentInterface) { 9 | GCodeBase.call(this, cadDocumentInterface, camDocumentInterface); 10 | 11 | this.decimals = 4; 12 | this.unit = RS.Millimeter; 13 | this.outputOffsetPath = true; 14 | this.fileExtensions = ["nc"] 15 | this.lineNumber = 1000; 16 | this.lineNumberIncrement = 10; 17 | 18 | 19 | this.header = [ 20 | "(Program name: [PROGRAM_NAME])", 21 | "(Metric measure)", 22 | "(File: [FILENAME] -- [DATETIME])", 23 | "", 24 | "[N] G21 G17 G90 G80" 25 | ]; 26 | 27 | this.footer = [ 28 | "[N] M05", // stop the spindle 29 | "[N] G0 X0 Y0", // reset to start location 30 | "[N] M30", // rewind the program 31 | "(end program)", 32 | "" 33 | ]; 34 | 35 | this.toolpathHeader = [ 36 | "", 37 | "(Begin Tool Path [TOOLPATH_INDEX]: [TOOLPATH_NAME])" 38 | ]; 39 | 40 | this.toolpathFooter = [ 41 | "(End Tool Path [TOOLPATH_INDEX]: [TOOLPATH_NAME])", 42 | "" 43 | ]; 44 | 45 | } 46 | 47 | // Configuration is derived from GCodeBase: 48 | BuildBoticsMM.prototype = new GCodeBase(); 49 | 50 | // Display name shown in user interface: 51 | BuildBoticsMM.displayName = "BuildBotics[mm]"; 52 | 53 | /** 54 | * Write tool list in header. 55 | */ 56 | BuildBoticsMM.prototype.writeHeader = function() { 57 | this.writeBlock("header"); 58 | 59 | // backup member variables: 60 | var tool = this.tool; 61 | var toolDiameter = this.toolDiameter; 62 | var toolRadius = this.toolRadius; 63 | 64 | // write list of tools with tool radius 65 | var toolNames = Cam.getToolNames(this.cadDocument); 66 | toolNames.sort(Array.alphaNumericalSorter); 67 | //toolNames = RS.sortAlphanumerical(toolNames); 68 | for (var i=0; i 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /vetric/Buildbotics_no_jet_inch.pp: -------------------------------------------------------------------------------- 1 | +================================================ 2 | + 3 | + Buildbotics - Vectric machine output configuration file 4 | + 5 | +================================================ 6 | + 7 | + History 8 | + 9 | + Who When What 10 | + ======== ========== =========================== 11 | + Doug C. 11/5/19 Copied buildbotics_mm, changed to inches, changed accuracy to 1.4, changed G21 to G20 12 | + ======== ========== =========================== 13 | 14 | POST_NAME = "Buildbotics No Jet (inches) (*.gcode)" 15 | 16 | FILE_EXTENSION = "ngc" 17 | 18 | UNITS = "INCHES" 19 | 20 | +------------------------------------------------ 21 | + Line terminating characters 22 | +------------------------------------------------ 23 | 24 | LINE_ENDING = "[13][10]" 25 | 26 | +------------------------------------------------ 27 | + Block numbering 28 | +------------------------------------------------ 29 | 30 | LINE_NUMBER_START = 0 31 | LINE_NUMBER_INCREMENT = 10 32 | LINE_NUMBER_MAXIMUM = 9999999 33 | 34 | +================================================ 35 | + 36 | + Formatting for variables 37 | + 38 | +================================================ 39 | 40 | VAR LINE_NUMBER = [N|A|N|1.0] 41 | VAR SPINDLE_SPEED = [S|A| S|1.0] 42 | VAR FEED_RATE = [F|C|F|1.1] 43 | VAR X_POSITION = [X|C|X|1.4] 44 | VAR Y_POSITION = [Y|C|Y|1.4] 45 | VAR Z_POSITION = [Z|C|Z|1.4] 46 | VAR ARC_CENTRE_I_INC_POSITION = [I|A|I|1.4] 47 | VAR ARC_CENTRE_J_INC_POSITION = [J|A|J|1.4] 48 | VAR X_HOME_POSITION = [XH|A| X|1.4] 49 | VAR Y_HOME_POSITION = [YH|A| Y|1.4] 50 | VAR Z_HOME_POSITION = [ZH|A| Z|1.4] 51 | VAR SAFE_Z_HEIGHT = [SAFEZ|A| Z|1.4] 52 | 53 | +================================================ 54 | + 55 | + Block definitions for toolpath output 56 | + 57 | +================================================ 58 | 59 | +--------------------------------------------------- 60 | + Commands output at the start of the file 61 | +--------------------------------------------------- 62 | 63 | begin HEADER 64 | 65 | "%" 66 | "T[T] M6" 67 | "G0 G17 G20 G90 G40 G49 G64 P0.001" 68 | "G0[ZH]" 69 | "G0[XH][YH] M03[S]" 70 | "M0(MSG, Click 'Continue' when the spindle is up to speed)" 71 | 72 | +--------------------------------------------------- 73 | + Commands output at toolchange 74 | +--------------------------------------------------- 75 | 76 | begin TOOLCHANGE 77 | 78 | "G0[ZH]" 79 | "G0[XH][YH]" 80 | "M05" 81 | "M06 T[T]" 82 | 83 | +--------------------------------------------------- 84 | + Commands output for a new segment - toolpath 85 | + with same toolnumber but maybe different feedrates 86 | +--------------------------------------------------- 87 | 88 | begin NEW_SEGMENT 89 | 90 | "G0[SAFEZ] M03[S]" 91 | "M0(MSG, Click 'Continue' when the spindle is up to speed)" 92 | 93 | 94 | 95 | +--------------------------------------------------- 96 | + Commands output for rapid moves 97 | +--------------------------------------------------- 98 | 99 | begin RAPID_MOVE 100 | 101 | "G0[X][Y][Z]" 102 | 103 | 104 | +--------------------------------------------------- 105 | + Commands output for the first feed rate move 106 | +--------------------------------------------------- 107 | 108 | begin FIRST_FEED_MOVE 109 | 110 | "G1[X][Y][Z][F]" 111 | 112 | 113 | +--------------------------------------------------- 114 | + Commands output for feed rate moves 115 | +--------------------------------------------------- 116 | 117 | begin FEED_MOVE 118 | 119 | "G1[X][Y][Z]" 120 | 121 | 122 | +--------------------------------------------------- 123 | + Commands output for the first clockwise arc move 124 | +--------------------------------------------------- 125 | 126 | begin FIRST_CW_ARC_MOVE 127 | 128 | "G2[X][Y][I][J][F]" 129 | 130 | 131 | +--------------------------------------------------- 132 | + Commands output for clockwise arc move 133 | +--------------------------------------------------- 134 | 135 | begin CW_ARC_MOVE 136 | 137 | "G2[X][Y][I][J]" 138 | 139 | 140 | +--------------------------------------------------- 141 | + Commands output for the first counterclockwise arc move 142 | +--------------------------------------------------- 143 | 144 | begin FIRST_CCW_ARC_MOVE 145 | 146 | "G3[X][Y][I][J][F]" 147 | 148 | 149 | +--------------------------------------------------- 150 | + Commands output for counterclockwise arc move 151 | +--------------------------------------------------- 152 | 153 | begin CCW_ARC_MOVE 154 | 155 | "G3[X][Y][I][J]" 156 | 157 | +--------------------------------------------------- 158 | + Commands output at the end of the file 159 | +--------------------------------------------------- 160 | 161 | begin FOOTER 162 | 163 | "M5" 164 | "G0[ZH]" 165 | "G0[XH][YH]" 166 | "M2" -------------------------------------------------------------------------------- /vetric/Buildbotics_no_jet_mm.pp: -------------------------------------------------------------------------------- 1 | +================================================ 2 | + 3 | + Buildbotics - Vectric machine output configuration file 4 | + 5 | +================================================ 6 | + 7 | + History 8 | + 9 | + Who When What 10 | + ======== ========== =========================== 11 | + Mark 08/10/2019 Written - first draft from sample. 12 | + Doug C. 11/1/2019 Corrected file extension, adds pause after tool change to allow spindle time to start 13 | + Doug C. 11/5/19 Added support for tool changes, removed SUBSTITUTE statement,increased max line count to 9999999 14 | + ======== ========== =========================== 15 | 16 | POST_NAME = "Buildbotics No Jet (mm) (*.gcode)" 17 | 18 | FILE_EXTENSION = "ngc" 19 | 20 | UNITS = "MM" 21 | 22 | +------------------------------------------------ 23 | + Line terminating characters 24 | +------------------------------------------------ 25 | 26 | LINE_ENDING = "[13][10]" 27 | 28 | +------------------------------------------------ 29 | + Block numbering 30 | +------------------------------------------------ 31 | 32 | LINE_NUMBER_START = 0 33 | LINE_NUMBER_INCREMENT = 10 34 | LINE_NUMBER_MAXIMUM = 9999999 35 | 36 | +================================================ 37 | + 38 | + Formatting for variables 39 | + 40 | +================================================ 41 | 42 | VAR LINE_NUMBER = [N|A|N|1.0] 43 | VAR SPINDLE_SPEED = [S|A| S|1.0] 44 | VAR FEED_RATE = [F|C| F|1.1] 45 | VAR X_POSITION = [X|C| X|1.3] 46 | VAR Y_POSITION = [Y|C| Y|1.3] 47 | VAR Z_POSITION = [Z|C| Z|1.3] 48 | VAR ARC_CENTRE_I_INC_POSITION = [I|A| I|1.3] 49 | VAR ARC_CENTRE_J_INC_POSITION = [J|A| J|1.3] 50 | VAR X_HOME_POSITION = [XH|A| X|1.3] 51 | VAR Y_HOME_POSITION = [YH|A| Y|1.3] 52 | VAR Z_HOME_POSITION = [ZH|A| Z|1.3] 53 | VAR SAFE_Z_HEIGHT = [SAFEZ|A| Z|1.3] 54 | 55 | +================================================ 56 | + 57 | + Block definitions for toolpath output 58 | + 59 | +================================================ 60 | 61 | +--------------------------------------------------- 62 | + Commands output at the start of the file 63 | +--------------------------------------------------- 64 | 65 | begin HEADER 66 | 67 | "%" 68 | "T[T] M6" 69 | "G0 G17 G21 G90 G40 G49 G64 P0.001" 70 | "G0[ZH]" 71 | "G0[XH][YH] M03[S]" 72 | "M0(MSG, Click 'Continue' when the spindle is up to speed)" 73 | 74 | +--------------------------------------------------- 75 | + Commands output at toolchange 76 | +--------------------------------------------------- 77 | 78 | begin TOOLCHANGE 79 | 80 | "G0[ZH]" 81 | "G0[XH][YH]" 82 | "M05" 83 | "M06 T[T]" 84 | 85 | +--------------------------------------------------- 86 | + Commands output for a new segment - toolpath 87 | + with same toolnumber but maybe different feedrates 88 | +--------------------------------------------------- 89 | 90 | begin NEW_SEGMENT 91 | 92 | "G0[SAFEZ] M03[S]" 93 | "M0(MSG, Click 'Continue' when the spindle is up to speed)" 94 | 95 | 96 | 97 | +--------------------------------------------------- 98 | + Commands output for rapid moves 99 | +--------------------------------------------------- 100 | 101 | begin RAPID_MOVE 102 | 103 | "G0[X][Y][Z]" 104 | 105 | 106 | +--------------------------------------------------- 107 | + Commands output for the first feed rate move 108 | +--------------------------------------------------- 109 | 110 | begin FIRST_FEED_MOVE 111 | 112 | "G1[X][Y][Z][F]" 113 | 114 | 115 | +--------------------------------------------------- 116 | + Commands output for feed rate moves 117 | +--------------------------------------------------- 118 | 119 | begin FEED_MOVE 120 | 121 | "G1[X][Y][Z]" 122 | 123 | 124 | +--------------------------------------------------- 125 | + Commands output for the first clockwise arc move 126 | +--------------------------------------------------- 127 | 128 | begin FIRST_CW_ARC_MOVE 129 | 130 | "G2[X][Y][I][J][F]" 131 | 132 | 133 | +--------------------------------------------------- 134 | + Commands output for clockwise arc move 135 | +--------------------------------------------------- 136 | 137 | begin CW_ARC_MOVE 138 | 139 | "G2[X][Y][I][J]" 140 | 141 | 142 | +--------------------------------------------------- 143 | + Commands output for the first counterclockwise arc move 144 | +--------------------------------------------------- 145 | 146 | begin FIRST_CCW_ARC_MOVE 147 | 148 | "G3[X][Y][I][J][F]" 149 | 150 | 151 | +--------------------------------------------------- 152 | + Commands output for counterclockwise arc move 153 | +--------------------------------------------------- 154 | 155 | begin CCW_ARC_MOVE 156 | 157 | "G3[X][Y][I][J]" 158 | 159 | 160 | 161 | +--------------------------------------------------- 162 | + Commands output at the end of the file 163 | +--------------------------------------------------- 164 | 165 | begin FOOTER 166 | 167 | "M5" 168 | "G0[ZH]" 169 | "G0[XH][YH]" 170 | "M2" -------------------------------------------------------------------------------- /vetric/Buildbotics_inch.pp: -------------------------------------------------------------------------------- 1 | +================================================ 2 | + 3 | + Buildbotics - Vectric machine output configuration file 4 | + 5 | +================================================ 6 | + 7 | + History 8 | + 9 | + Who When What 10 | + ======== ========== =========================== 11 | + Doug C. 11/5/19 Copied buildbotics_mm, changed to inches, changed accuracy to 1.4, changed G21 to G20 12 | + ======== ========== =========================== 13 | 14 | POST_NAME = "Buildbotics (inches) (*.gcode)" 15 | 16 | FILE_EXTENSION = "ngc" 17 | 18 | UNITS = "INCHES" 19 | 20 | +------------------------------------------------ 21 | + Line terminating characters 22 | +------------------------------------------------ 23 | 24 | LINE_ENDING = "[13][10]" 25 | 26 | +------------------------------------------------ 27 | + Block numbering 28 | +------------------------------------------------ 29 | 30 | LINE_NUMBER_START = 0 31 | LINE_NUMBER_INCREMENT = 10 32 | LINE_NUMBER_MAXIMUM = 9999999 33 | 34 | +================================================ 35 | + 36 | + Formatting for variables 37 | + 38 | +================================================ 39 | 40 | VAR LINE_NUMBER = [N|A|N|1.0] 41 | VAR POWER = [P|C|S|1.0|10.0] 42 | VAR SPINDLE_SPEED = [S|A| S|1.0] 43 | VAR FEED_RATE = [F|C|F|1.1] 44 | VAR X_POSITION = [X|C|X|1.4] 45 | VAR Y_POSITION = [Y|C|Y|1.4] 46 | VAR Z_POSITION = [Z|C|Z|1.4] 47 | VAR ARC_CENTRE_I_INC_POSITION = [I|A|I|1.4] 48 | VAR ARC_CENTRE_J_INC_POSITION = [J|A|J|1.4] 49 | VAR X_HOME_POSITION = [XH|A| X|1.4] 50 | VAR Y_HOME_POSITION = [YH|A| Y|1.4] 51 | VAR Z_HOME_POSITION = [ZH|A| Z|1.4] 52 | VAR SAFE_Z_HEIGHT = [SAFEZ|A| Z|1.4] 53 | 54 | +================================================ 55 | + 56 | + Block definitions for toolpath output 57 | + 58 | +================================================ 59 | 60 | +--------------------------------------------------- 61 | + Commands output at the start of the file 62 | +--------------------------------------------------- 63 | 64 | begin HEADER 65 | 66 | "%" 67 | "T[T] M6" 68 | "G0 G17 G20 G90 G40 G49 G64 P0.001" 69 | "G0[ZH]" 70 | "G0[XH][YH] M03[S]" 71 | "M0(MSG, Click 'Continue' when the spindle is up to speed)" 72 | 73 | +--------------------------------------------------- 74 | + Commands output at toolchange 75 | +--------------------------------------------------- 76 | 77 | begin TOOLCHANGE 78 | 79 | "G0[ZH]" 80 | "G0[XH][YH]" 81 | "M05" 82 | "M06 T[T]" 83 | 84 | +--------------------------------------------------- 85 | + Commands output for a new segment - toolpath 86 | + with same toolnumber but maybe different feedrates 87 | +--------------------------------------------------- 88 | 89 | begin NEW_SEGMENT 90 | 91 | "G0[SAFEZ] M03[S]" 92 | "M0(MSG, Click 'Continue' when the spindle is up to speed)" 93 | 94 | 95 | 96 | +--------------------------------------------------- 97 | + Commands output for rapid moves 98 | +--------------------------------------------------- 99 | 100 | begin RAPID_MOVE 101 | 102 | "G0[X][Y][Z]" 103 | 104 | 105 | +--------------------------------------------------- 106 | + Commands output for the first feed rate move 107 | +--------------------------------------------------- 108 | 109 | begin FIRST_FEED_MOVE 110 | 111 | "G1[X][Y][Z][P][F]" 112 | 113 | 114 | +--------------------------------------------------- 115 | + Commands output for feed rate moves 116 | +--------------------------------------------------- 117 | 118 | begin FEED_MOVE 119 | 120 | "G1[X][Y][Z][P]" 121 | 122 | 123 | +--------------------------------------------------- 124 | + Commands output for the first clockwise arc move 125 | +--------------------------------------------------- 126 | 127 | begin FIRST_CW_ARC_MOVE 128 | 129 | "G2[X][Y][I][J][F][P]" 130 | 131 | 132 | +--------------------------------------------------- 133 | + Commands output for clockwise arc move 134 | +--------------------------------------------------- 135 | 136 | begin CW_ARC_MOVE 137 | 138 | "G2[X][Y][I][J]" 139 | 140 | 141 | +--------------------------------------------------- 142 | + Commands output for the first counterclockwise arc move 143 | +--------------------------------------------------- 144 | 145 | begin FIRST_CCW_ARC_MOVE 146 | 147 | "G3[X][Y][I][J][F][P]" 148 | 149 | 150 | +--------------------------------------------------- 151 | + Commands output for counterclockwise arc move 152 | +--------------------------------------------------- 153 | 154 | begin CCW_ARC_MOVE 155 | 156 | "G3[X][Y][I][J]" 157 | 158 | +--------------------------------------------------- 159 | + Commands output when the jet is turned on 160 | +--------------------------------------------------- 161 | 162 | begin JET_TOOL_ON 163 | 164 | "M03S0" 165 | 166 | +--------------------------------------------------- 167 | + Commands output when the jet is turned off 168 | +--------------------------------------------------- 169 | 170 | begin JET_TOOL_OFF 171 | 172 | "M5" 173 | 174 | +--------------------------------------------------- 175 | + Commands output when the jet power is changed 176 | +--------------------------------------------------- 177 | 178 | begin JET_TOOL_POWER 179 | "[P]" 180 | 181 | +--------------------------------------------------- 182 | + Commands output at the end of the file 183 | +--------------------------------------------------- 184 | 185 | begin FOOTER 186 | 187 | "M5" 188 | "G0[ZH]" 189 | "G0[XH][YH]" 190 | "M2" -------------------------------------------------------------------------------- /vetric/Buildbotics_mm.pp: -------------------------------------------------------------------------------- 1 | +================================================ 2 | + 3 | + Buildbotics - Vectric machine output configuration file 4 | + 5 | +================================================ 6 | + 7 | + History 8 | + 9 | + Who When What 10 | + ======== ========== =========================== 11 | + Mark 08/10/2019 Written - first draft from sample. 12 | + Doug C. 11/1/2019 Corrected file extension, adds pause after tool change to allow spindle time to start 13 | + Doug C. 11/5/19 Added support for tool changes, removed SUBSTITUTE statement,increased max line count to 9999999 14 | + ======== ========== =========================== 15 | 16 | POST_NAME = "Buildbotics (mm) (*.gcode)" 17 | 18 | FILE_EXTENSION = "ngc" 19 | 20 | UNITS = "MM" 21 | 22 | +------------------------------------------------ 23 | + Line terminating characters 24 | +------------------------------------------------ 25 | 26 | LINE_ENDING = "[13][10]" 27 | 28 | +------------------------------------------------ 29 | + Block numbering 30 | +------------------------------------------------ 31 | 32 | LINE_NUMBER_START = 0 33 | LINE_NUMBER_INCREMENT = 10 34 | LINE_NUMBER_MAXIMUM = 9999999 35 | 36 | +================================================ 37 | + 38 | + Formatting for variables 39 | + 40 | +================================================ 41 | 42 | VAR LINE_NUMBER = [N|A|N|1.0] 43 | VAR POWER = [P|C|S|1.0|10.0] 44 | VAR SPINDLE_SPEED = [S|A| S|1.0] 45 | VAR FEED_RATE = [F|C| F|1.1] 46 | VAR X_POSITION = [X|C| X|1.3] 47 | VAR Y_POSITION = [Y|C| Y|1.3] 48 | VAR Z_POSITION = [Z|C| Z|1.3] 49 | VAR ARC_CENTRE_I_INC_POSITION = [I|A| I|1.3] 50 | VAR ARC_CENTRE_J_INC_POSITION = [J|A| J|1.3] 51 | VAR X_HOME_POSITION = [XH|A| X|1.3] 52 | VAR Y_HOME_POSITION = [YH|A| Y|1.3] 53 | VAR Z_HOME_POSITION = [ZH|A| Z|1.3] 54 | VAR SAFE_Z_HEIGHT = [SAFEZ|A| Z|1.3] 55 | 56 | +================================================ 57 | + 58 | + Block definitions for toolpath output 59 | + 60 | +================================================ 61 | 62 | +--------------------------------------------------- 63 | + Commands output at the start of the file 64 | +--------------------------------------------------- 65 | 66 | begin HEADER 67 | 68 | "%" 69 | "T[T] M6" 70 | "G0 G17 G21 G90 G40 G49 G64 P0.001" 71 | "G0[ZH]" 72 | "G0[XH][YH] M03[S]" 73 | "M0(MSG, Click 'Continue' when the spindle is up to speed)" 74 | 75 | +--------------------------------------------------- 76 | + Commands output at toolchange 77 | +--------------------------------------------------- 78 | 79 | begin TOOLCHANGE 80 | 81 | "G0[ZH]" 82 | "G0[XH][YH]" 83 | "M05" 84 | "M06 T[T]" 85 | 86 | +--------------------------------------------------- 87 | + Commands output for a new segment - toolpath 88 | + with same toolnumber but maybe different feedrates 89 | +--------------------------------------------------- 90 | 91 | begin NEW_SEGMENT 92 | 93 | "G0[SAFEZ] M03[S]" 94 | "M0(MSG, Click 'Continue' when the spindle is up to speed)" 95 | 96 | 97 | 98 | +--------------------------------------------------- 99 | + Commands output for rapid moves 100 | +--------------------------------------------------- 101 | 102 | begin RAPID_MOVE 103 | 104 | "G0[X][Y][Z]" 105 | 106 | 107 | +--------------------------------------------------- 108 | + Commands output for the first feed rate move 109 | +--------------------------------------------------- 110 | 111 | begin FIRST_FEED_MOVE 112 | 113 | "G1[X][Y][Z][P][F]" 114 | 115 | 116 | +--------------------------------------------------- 117 | + Commands output for feed rate moves 118 | +--------------------------------------------------- 119 | 120 | begin FEED_MOVE 121 | 122 | "G1[X][Y][Z][P]" 123 | 124 | 125 | +--------------------------------------------------- 126 | + Commands output for the first clockwise arc move 127 | +--------------------------------------------------- 128 | 129 | begin FIRST_CW_ARC_MOVE 130 | 131 | "G2[X][Y][I][J][F][P]" 132 | 133 | 134 | +--------------------------------------------------- 135 | + Commands output for clockwise arc move 136 | +--------------------------------------------------- 137 | 138 | begin CW_ARC_MOVE 139 | 140 | "G2[X][Y][I][J]" 141 | 142 | 143 | +--------------------------------------------------- 144 | + Commands output for the first counterclockwise arc move 145 | +--------------------------------------------------- 146 | 147 | begin FIRST_CCW_ARC_MOVE 148 | 149 | "G3[X][Y][I][J][F][P]" 150 | 151 | 152 | +--------------------------------------------------- 153 | + Commands output for counterclockwise arc move 154 | +--------------------------------------------------- 155 | 156 | begin CCW_ARC_MOVE 157 | 158 | "G3[X][Y][I][J]" 159 | 160 | +--------------------------------------------------- 161 | + Commands output when the jet is turned on 162 | +--------------------------------------------------- 163 | 164 | begin JET_TOOL_ON 165 | 166 | "M03S0" 167 | 168 | +--------------------------------------------------- 169 | + Commands output when the jet is turned off 170 | +--------------------------------------------------- 171 | 172 | begin JET_TOOL_OFF 173 | 174 | "M5" 175 | 176 | +--------------------------------------------------- 177 | + Commands output when the jet power is changed 178 | +--------------------------------------------------- 179 | 180 | begin JET_TOOL_POWER 181 | "[P]" 182 | 183 | +--------------------------------------------------- 184 | + Commands output at the end of the file 185 | +--------------------------------------------------- 186 | 187 | begin FOOTER 188 | 189 | "M5" 190 | "G0[ZH]" 191 | "G0[XH][YH]" 192 | "M2" -------------------------------------------------------------------------------- /SolidWorks/SW_BUILDBOTICS_POST.lng: -------------------------------------------------------------------------------- 1 | program stop :0001: 2 | optional stop :0002: 3 | DRILLING :0003: 4 | SPOT_DRILLING :0004: 5 | PECKING :0005: 6 | TAPPING :0006: 7 | BORING :0007: 8 | HIGH_SPEED_PECKING :0008: 9 | VARIABLE_PECKING :0009: 10 | REVERSE_TAPPING :0010: 11 | REAMING :0011: 12 | REAMING_DWELL :0012: 13 | BORE_DWELL :0013: 14 | BACK_BORING :0014: 15 | FINE_BORING :0015: 16 | MILL_LACE :0016: 17 | MILL_POCKET :0017: 18 | MILL_PROFILING :0018: 19 | MILL_MISC :0019: 20 | MILL_UV_CUT :0020: 21 | MILL_SLICE_CUT :0021: 22 | MILL_ROUGH_CUT :0022: 23 | MILL_CURVE_CUT :0023: 24 | MILL_TOPO_CUT :0024: 25 | MILL_FREEFORM_CUT :0025: 26 | MILL_PENCIL_CUT :0026: 27 | MILL_MACRO :0027: 28 | Machine Name :0028: 29 | :0029: 30 | Controller Type :0030: 31 | :0031: 32 | Z Home :0032: 33 | :0033: 34 | Traverse Rate :0034: 35 | :0035: 36 | System License Number :0036: 37 | :0037: 38 | System License Expiration :0038: 39 | :0039: 40 | :0040: 41 | :0041: 42 | Part Thickness :0042: 43 | ENTER Part Thickness :0043: 44 | Absolute Incremental :0044: 45 | SELECT Absolute Incremental :0045: 46 | Absolute :0046: 47 | Incremental :0047: 48 | Work Coordinate 54 - 59 :0048: 49 | ENTER Work Coordinate 54 - 59 :0049: 50 | Dwell :0050: 51 | ENTER Dwell :0051: 52 | Shift Amount :0052: 53 | ENTER Shift Amount :0053: 54 | Program number :0054: 55 | ENTER Program number :0055: 56 | Material :0056: 57 | ENTER Material Type :0057: 58 | 5axis Arc Deviation :0058: 59 | ENTER 5axis Arc Deviation :0059: 60 | Sub Work Coordinate 1 - 1 :0060: 61 | ENTER Sub Work Coordinate 1 - 100 :0061: 62 | Fixture Offset :0062: 63 | ENTER Fixture Offset :0063: 64 | Coolant :0064: 65 | SELECT Coolant :0065: 66 | Off :0066: 67 | Flood :0067: 68 | Mist :0068: 69 | Through Hole :0069: 70 | Compensation :0070: 71 | SELECT Compensation :0071: 72 | On :0072: 73 | Off :0073: 74 | Left :0074: 75 | Right :0075: 76 | Tool Holder Length :0076: 77 | ENTER Tool Holder Length :0077: 78 | Sign Angle A :0078: 79 | SELECT Sign Angle A :0079: 80 | A+ :0080: 81 | A- :0081: 82 | Program/Optional Stop :0082: 83 | SELECT Program/Optional Stop :0083: 84 | Program Stop :0084: 85 | Optional Stop :0085: 86 | Rigid Tap On or Off :0086: 87 | SELECT Rigid Tap On or Off :0087: 88 | On :0088: 89 | Off :0089: 90 | |(|MACHINE= :0090: 91 | |) :0091: 92 | |(|CONTROLLER= :0092: 93 | |) :0093: 94 | |(|PART|NAME= :0094: 95 | |) :0095: 96 | |(|PROGRAM|NUMBER= :0096: 97 | |) :0097: 98 | |(|MATERIAL= :0098: 99 | |) :0099: 100 | |(|THICKNESS= :0100: 101 | |) :0101: 102 | -------------------------------------------------------------------------------- /fusion360/LICENSE: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | 9 | This version of the GNU Lesser General Public License incorporates 10 | the terms and conditions of version 3 of the GNU General Public 11 | License, supplemented by the additional permissions listed below. 12 | 13 | 0. Additional Definitions. 14 | 15 | As used herein, "this License" refers to version 3 of the GNU Lesser 16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU 17 | General Public License. 18 | 19 | "The Library" refers to a covered work governed by this License, 20 | other than an Application or a Combined Work as defined below. 21 | 22 | An "Application" is any work that makes use of an interface provided 23 | by the Library, but which is not otherwise based on the Library. 24 | Defining a subclass of a class defined by the Library is deemed a mode 25 | of using an interface provided by the Library. 26 | 27 | A "Combined Work" is a work produced by combining or linking an 28 | Application with the Library. The particular version of the Library 29 | with which the Combined Work was made is also called the "Linked 30 | Version". 31 | 32 | The "Minimal Corresponding Source" for a Combined Work means the 33 | Corresponding Source for the Combined Work, excluding any source code 34 | for portions of the Combined Work that, considered in isolation, are 35 | based on the Application, and not on the Linked Version. 36 | 37 | The "Corresponding Application Code" for a Combined Work means the 38 | object code and/or source code for the Application, including any data 39 | and utility programs needed for reproducing the Combined Work from the 40 | Application, but excluding the System Libraries of the Combined Work. 41 | 42 | 1. Exception to Section 3 of the GNU GPL. 43 | 44 | You may convey a covered work under sections 3 and 4 of this License 45 | without being bound by section 3 of the GNU GPL. 46 | 47 | 2. Conveying Modified Versions. 48 | 49 | If you modify a copy of the Library, and, in your modifications, a 50 | facility refers to a function or data to be supplied by an Application 51 | that uses the facility (other than as an argument passed when the 52 | facility is invoked), then you may convey a copy of the modified 53 | version: 54 | 55 | a) under this License, provided that you make a good faith effort to 56 | ensure that, in the event an Application does not supply the 57 | function or data, the facility still operates, and performs 58 | whatever part of its purpose remains meaningful, or 59 | 60 | b) under the GNU GPL, with none of the additional permissions of 61 | this License applicable to that copy. 62 | 63 | 3. Object Code Incorporating Material from Library Header Files. 64 | 65 | The object code form of an Application may incorporate material from 66 | a header file that is part of the Library. You may convey such object 67 | code under terms of your choice, provided that, if the incorporated 68 | material is not limited to numerical parameters, data structure 69 | layouts and accessors, or small macros, inline functions and templates 70 | (ten or fewer lines in length), you do both of the following: 71 | 72 | a) Give prominent notice with each copy of the object code that the 73 | Library is used in it and that the Library and its use are 74 | covered by this License. 75 | 76 | b) Accompany the object code with a copy of the GNU GPL and this license 77 | document. 78 | 79 | 4. Combined Works. 80 | 81 | You may convey a Combined Work under terms of your choice that, 82 | taken together, effectively do not restrict modification of the 83 | portions of the Library contained in the Combined Work and reverse 84 | engineering for debugging such modifications, if you also do each of 85 | the following: 86 | 87 | a) Give prominent notice with each copy of the Combined Work that 88 | the Library is used in it and that the Library and its use are 89 | covered by this License. 90 | 91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 92 | document. 93 | 94 | c) For a Combined Work that displays copyright notices during 95 | execution, include the copyright notice for the Library among 96 | these notices, as well as a reference directing the user to the 97 | copies of the GNU GPL and this license document. 98 | 99 | d) Do one of the following: 100 | 101 | 0) Convey the Minimal Corresponding Source under the terms of this 102 | License, and the Corresponding Application Code in a form 103 | suitable for, and under terms that permit, the user to 104 | recombine or relink the Application with a modified version of 105 | the Linked Version to produce a modified Combined Work, in the 106 | manner specified by section 6 of the GNU GPL for conveying 107 | Corresponding Source. 108 | 109 | 1) Use a suitable shared library mechanism for linking with the 110 | Library. A suitable mechanism is one that (a) uses at run time 111 | a copy of the Library already present on the user's computer 112 | system, and (b) will operate properly with a modified version 113 | of the Library that is interface-compatible with the Linked 114 | Version. 115 | 116 | e) Provide Installation Information, but only if you would otherwise 117 | be required to provide such information under section 6 of the 118 | GNU GPL, and only to the extent that such information is 119 | necessary to install and execute a modified version of the 120 | Combined Work produced by recombining or relinking the 121 | Application with a modified version of the Linked Version. (If 122 | you use option 4d0, the Installation Information must accompany 123 | the Minimal Corresponding Source and Corresponding Application 124 | Code. If you use option 4d1, you must provide the Installation 125 | Information in the manner specified by section 6 of the GNU GPL 126 | for conveying Corresponding Source.) 127 | 128 | 5. Combined Libraries. 129 | 130 | You may place library facilities that are a work based on the 131 | Library side by side in a single library together with other library 132 | facilities that are not Applications and are not covered by this 133 | License, and convey such a combined library under terms of your 134 | choice, if you do both of the following: 135 | 136 | a) Accompany the combined library with a copy of the same work based 137 | on the Library, uncombined with any other library facilities, 138 | conveyed under the terms of this License. 139 | 140 | b) Give prominent notice with the combined library that part of it 141 | is a work based on the Library, and explaining where to find the 142 | accompanying uncombined form of the same work. 143 | 144 | 6. Revised Versions of the GNU Lesser General Public License. 145 | 146 | The Free Software Foundation may publish revised and/or new versions 147 | of the GNU Lesser General Public License from time to time. Such new 148 | versions will be similar in spirit to the present version, but may 149 | differ in detail to address new problems or concerns. 150 | 151 | Each version is given a distinguishing version number. If the 152 | Library as you received it specifies that a certain numbered version 153 | of the GNU Lesser General Public License "or any later version" 154 | applies to it, you have the option of following the terms and 155 | conditions either of that published version or of any later version 156 | published by the Free Software Foundation. If the Library as you 157 | received it does not specify a version number of the GNU Lesser 158 | General Public License, you may choose any version of the GNU Lesser 159 | General Public License ever published by the Free Software Foundation. 160 | 161 | If the Library as you received it specifies that a proxy can decide 162 | whether future versions of the GNU Lesser General Public License shall 163 | apply, that proxy's public statement of acceptance of any version is 164 | permanent authorization for you to choose that version for the 165 | Library. 166 | -------------------------------------------------------------------------------- /SolidWorks/SW_BUILDBOTICS_POST.LIB: -------------------------------------------------------------------------------- 1 | *----------------------------------- 2 | :ATTRNAME=TOOL QT COMMENT 3 | :ATTRTYPE=POST 4 | :ATTREMARK= 5 | :CODETYPE=FORMAT 6 | :WORD_ADDRESS_BEF= 7 | :MODAL=FALSE 8 | :ATTREND 9 | *----------------------------------- 10 | :ATTRNAME=SEQ CONFIG 11 | :ATTRTYPE=POST 12 | :ATTRVTYPE=INTEGER 13 | :ATTREMARK=Config. seq. numbers 14 | :ATTREND 15 | *---------------------------------------------------------- 16 | * Define OUTPUT CODE Attributes 17 | *---------------------------------------------------------- 18 | :ATTRNAME=N 19 | :ATTRTYPE=POST 20 | :ATTRVTYPE=INTEGER 21 | :ATTREMARK=Sequence number 22 | :CODETYPE=SELECT_FORMAT 23 | :ATTRCFUNC=CALC_REG_N(SEQ,MAX_SEQUENCE) 24 | :VAR=SEQ_CONFIG 25 | :SELECT=0 26 | :WORD_ADDRESS_BEF=N 27 | :VARB=SEQ 28 | :LEFT_PLACES=4 29 | :RIGHT_PLACES=0 30 | :CANNOT_BE_LEADING 31 | :MUST_BE_TRAILING 32 | :CANNOT_BE_DECIMAL 33 | :CANNOT_BE_SIGNED 34 | :SELECT=1 35 | :WORD_ADDRESS_BEF=N 36 | :VARB=SEQ 37 | :LEFT_PLACES=4 38 | :RIGHT_PLACES=0 39 | :MUST_BE_LEADING 40 | :MUST_BE_TRAILING 41 | :CANNOT_BE_DECIMAL 42 | :CANNOT_BE_SIGNED 43 | :SELECT=2 44 | :WORD_ADDRESS_BEF=N 45 | :VARB=SEQ 46 | :LEFT_PLACES=3 47 | :RIGHT_PLACES=0 48 | :MUST_BE_LEADING 49 | :MUST_BE_TRAILING 50 | :CANNOT_BE_DECIMAL 51 | :CANNOT_BE_SIGNED 52 | :UNITFLAG=NON_CONVERT 53 | :ATTREND 54 | *----------------------------------- 55 | :ATTRNAME=S 56 | :ATTRTYPE=POST 57 | :ATTRVTYPE=INTEGER 58 | :ATTREMARK=Spindle RPM 59 | :CODETYPE=FORMAT 60 | :ATTRCFUNC=CALC_INT_REGISTER(S,MACH,OPR_SPEED,REG_S) 61 | :WORD_ADDRESS_BEF=|S 62 | :LEFT_PLACES=4 63 | :RIGHT_PLACES=0 64 | :CANNOT_BE_DECIMAL 65 | :MUST_BE_TRAILING 66 | :CANNOT_BE_SIGNED 67 | :UNITFLAG=NON_CONVERT 68 | :MODAL=YES 69 | :ATTREND 70 | *----------------------------------- 71 | :ATTRNAME=T 72 | :ATTRTYPE=POST 73 | :ATTRVTYPE=INTEGER 74 | :ATTREMARK=Tool Number 75 | :CODETYPE=FORMAT 76 | :ATTRCFUNC=CALC_INT_REGISTER(T,MACH,TOOL,REG_T2) 77 | :WORD_ADDRESS_BEF=|T 78 | :RIGHT_PLACES=0 79 | :CANNOT_BE_DECIMAL 80 | :CANNOT_BE_SIGNED 81 | :UNITFLAG=NON_CONVERT 82 | :ATTREND 83 | *----------------------------------- 84 | *---------------------------------------------------------- 85 | * Define OUTPUT CODE Attributes (G Codes...) 86 | *---------------------------------------------------------- 87 | :ATTRNAME=G 88 | :ATTRTYPE=POST 89 | :ATTRVTYPE=INTEGER 90 | :ATTREMARK=G Codes 91 | :CODETYPE=FORMAT 92 | :ATTRCFUNC=CALC_G_GROUP(G,GC,GG,GM,MACH,G_GROUP,ATTRIVALUE,INDEX) 93 | :CODETYPE=FORMAT 94 | :WORD_ADDRESS_BEF=|G 95 | :RIGHT_PLACES=0 96 | :CANNOT_BE_DECIMAL 97 | :CANNOT_BE_SIGNED 98 | :UNITFLAG=NON_CONVERT 99 | :MODAL=YES 100 | :ATTRUSED=1 101 | :ATTREND 102 | *---------------------------------------------------------- 103 | * Define OUTPUT CODE Attributes (M Codes...) 104 | *---------------------------------------------------------- 105 | :ATTRNAME=M 106 | :ATTRTYPE=POST 107 | :ATTRVTYPE=INTEGER 108 | :ATTREMARK=M Codes 109 | :CODETYPE=FORMAT 110 | :ATTRCFUNC=CALC_M_GROUP(M,MC,MG,MM,MACH,M_GROUP,ATTRIVALUE,INDEX) 111 | :CODETYPE=FORMAT 112 | :RIGHT_PLACES=0 113 | :WORD_ADDRESS_BEF=|M 114 | :CANNOT_BE_DECIMAL 115 | :CANNOT_BE_SIGNED 116 | :UNITFLAG=NON_CONVERT 117 | :MODAL=YES 118 | :ATTRUSED=1 119 | :ATTREND 120 | *---------------------------------------------------------- 121 | * Define OUTPUT CODE Attributes (Movement...) 122 | *---------------------------------------------------------- 123 | :ATTRNAME=X 124 | :ATTRTYPE=POST 125 | :ATTRVTYPE=DECIMAL 126 | :ATTREMARK=X End 127 | :CODETYPE=FORMAT 128 | :ATTRCFUNC=CALC_ENDPOINT(X,X_POS,GC,GG,G_GROUP,MACH,PREV,REG_X) 129 | :WORD_ADDRESS_BEF=|X 130 | :MODAL=YES 131 | :ATTREND 132 | *----------------------------------- 133 | :ATTRNAME=Y 134 | :ATTRTYPE=POST 135 | :ATTRVTYPE=DECIMAL 136 | :ATTREMARK=Y End 137 | :CODETYPE=FORMAT 138 | :ATTRCFUNC=CALC_ENDPOINT(Y,Y_POS,GC,GG,G_GROUP,MACH,PREV,REG_Y) 139 | :WORD_ADDRESS_BEF=|Y 140 | :MODAL=YES 141 | :ATTREND 142 | *----------------------------------- 143 | :ATTRNAME=Z 144 | :ATTRTYPE=POST 145 | :ATTRVTYPE=DECIMAL 146 | :ATTREMARK=Z End 147 | :CODETYPE=FORMAT 148 | :ATTRCFUNC=CALC_ENDPOINT(Z,ABS_Z_END,GC,GG,G_GROUP,MACH,PREV,REG_Z) 149 | :WORD_ADDRESS_BEF=|Z 150 | :MODAL=YES 151 | :ATTREND 152 | *----------------------------------- 153 | :ATTRNAME=VI 154 | :ATTRTYPE=POST 155 | :ATTRVTYPE=DECIMAL 156 | :ATTREMARK=I Vector 157 | :CODETYPE=FORMAT 158 | :ATTRCFUNC=CALC_ENDPOINT(VI,VECTOR_I,GC,GG,G_GROUP,MACH,PREV,REG_VI) 159 | :WORD_ADDRESS_BEF=|I 160 | :MODAL=YES 161 | :ATTREND 162 | *----------------------------------- 163 | :ATTRNAME=VJ 164 | :ATTRTYPE=POST 165 | :ATTRVTYPE=DECIMAL 166 | :ATTREMARK=J Vector 167 | :CODETYPE=FORMAT 168 | :ATTRCFUNC=CALC_ENDPOINT(VJ,VECTOR_J,GC,GG,G_GROUP,MACH,PREV,REG_VJ) 169 | :WORD_ADDRESS_BEF=|J 170 | :MODAL=YES 171 | :ATTREND 172 | *----------------------------------- 173 | :ATTRNAME=VK 174 | :ATTRTYPE=POST 175 | :ATTRVTYPE=DECIMAL 176 | :ATTREMARK=K Vector 177 | :CODETYPE=FORMAT 178 | :ATTRCFUNC=CALC_ENDPOINT(VK,VECTOR_K,GC,GG,G_GROUP,MACH,PREV,REG_VK) 179 | :WORD_ADDRESS_BEF=|K 180 | :MODAL=YES 181 | :ATTREND 182 | *----------------------------------- 183 | :ATTRNAME=A 184 | :ATTRTYPE=POST 185 | :ATTRVTYPE=DECIMAL 186 | :ATTREMARK=Angle A 187 | :CODETYPE=FORMAT 188 | :ATTRCFUNC=CALC_ROT_ANGLE_A(A,MACH,INC_ROT_TILT_A,REG_A) 189 | :WORD_ADDRESS_BEF=|A 190 | :WORD_ADDRESS_AFT=| 191 | :MODAL=YES 192 | :UNITFLAG=NON_CONVERT 193 | :ATTREND 194 | *----------------------------------- 195 | :ATTRNAME=B 196 | :ATTRTYPE=POST 197 | :ATTRVTYPE=DECIMAL 198 | :ATTREMARK=Angle B 199 | :CODETYPE=FORMAT 200 | :ATTRCFUNC=CALC_ROT_ANGLE_B(B,MACH,INC_ROT_TILT_B,REG_B) 201 | :WORD_ADDRESS_BEF=|B 202 | :WORD_ADDRESS_AFT=| 203 | :MODAL=YES 204 | :UNITFLAG=NON_CONVERT 205 | :ATTREND 206 | *----------------------------------- 207 | :ATTRNAME=X OFFSET 208 | :ATTRTYPE=POST 209 | :ATTRVTYPE=DECIMAL 210 | :ATTREMARK=X End 211 | :CODETYPE=FORMAT 212 | :ATTRCFUNC=CALC_MACRO_ORIGIN(X_OFFSET,REG_X,X_OFFSET) 213 | :WORD_ADDRESS_BEF=|X 214 | :ATTREND 215 | *----------------------------------- 216 | :ATTRNAME=Y OFFSET 217 | :ATTRTYPE=POST 218 | :ATTRVTYPE=DECIMAL 219 | :ATTREMARK=Y End 220 | :CODETYPE=FORMAT 221 | :ATTRCFUNC=CALC_MACRO_ORIGIN(Y_OFFSET,REG_Y,Y_OFFSET) 222 | :WORD_ADDRESS_BEF=|Y 223 | :ATTREND 224 | *----------------------------------- 225 | :ATTRNAME=Z CLEAR 226 | :ATTRTYPE=POST 227 | :ATTRVTYPE=DECIMAL 228 | :ATTREMARK=X End 229 | :CODETYPE=FORMAT 230 | :ATTRCFUNC=CALC_DEC_REGISTER(Z_CLEAR,MACH,OPR_Z_CLEARANCE,REG_Z) 231 | :WORD_ADDRESS_BEF=|R 232 | :MODAL=NO 233 | :ATTREND 234 | *----------------------------------- 235 | :ATTRNAME=Z DEPTH 236 | :ATTRTYPE=POST 237 | :ATTRVTYPE=DECIMAL 238 | :ATTREMARK=X End 239 | :CODETYPE=FORMAT 240 | :ATTRCFUNC=CALC_DEC_REGISTER(Z_DEPTH,MACH,OPR_Z_DEPTH,REG_Z) 241 | :WORD_ADDRESS_BEF=|Z 242 | :MODAL=NO 243 | :ATTREND 244 | *----------------------------------- 245 | :ATTRNAME=SUB PECK 246 | :ATTRTYPE=POST 247 | :ATTRVTYPE=DECIMAL 248 | :ATTREMARK=X End 249 | :CODETYPE=FORMAT 250 | :ATTRCFUNC=CALC_DEC_REGISTER(SUB_PECK,MACH,OPR_Z_SUB_PECK,REG_Q) 251 | :WORD_ADDRESS_BEF=|Q 252 | :MODAL=NO 253 | :ATTREND 254 | *----------------------------------- 255 | :ATTRNAME=I 256 | :ATTRTYPE=POST 257 | :ATTRVTYPE=DECIMAL 258 | :ATTREMARK=X Center 259 | :CODETYPE=FORMAT 260 | :ATTRCFUNC=CALC_CENTER(I,ABS_I_CENTER,GC,GG,G_GROUP,MACH,PREV,REG_X,REG_I,AIC) 261 | :WORD_ADDRESS_BEF=|I 262 | :ATTREND 263 | *----------------------------------- 264 | :ATTRNAME=J 265 | :ATTRTYPE=POST 266 | :ATTRVTYPE=DECIMAL 267 | :ATTREMARK=J Center 268 | :CODETYPE=FORMAT 269 | :ATTRCFUNC=CALC_CENTER(J,ABS_J_CENTER,GC,GG,G_GROUP,MACH,PREV,REG_Y,REG_J,AIC) 270 | :WORD_ADDRESS_BEF=|J 271 | :ATTREND 272 | *----------------------------------- 273 | :ATTRNAME=R 274 | :ATTRTYPE=POST 275 | :ATTRVTYPE=DECIMAL 276 | :ATTREMARK=R Radius 277 | :CODETYPE=FORMAT 278 | :ATTRCFUNC=CALC_RADIUS(R,MACH,REG_R) 279 | :WORD_ADDRESS_BEF=|R 280 | :MODAL=YES 281 | :ATTREND 282 | *----------------------------------- 283 | :ATTRNAME=F 284 | :ATTRTYPE=POST 285 | :ATTRVTYPE=DECIMAL 286 | :ATTREMARK=Feedrate IPM/MPM 287 | :CODETYPE=FORMAT 288 | :ATTRCFUNC=CALC_REG_F(MACH,REG_F,F) 289 | :WORD_ADDRESS_BEF=|F 290 | :CANNOT_BE_SIGNED 291 | :MODAL=YES 292 | :ATTREND 293 | *----------------------------------- 294 | :ATTRNAME=MACRO NAME 295 | :ATTRTYPE=POST 296 | :ATTREMARK= 297 | :CODETYPE=FORMAT 298 | :WORD_ADDRESS_BEF=|( 299 | :VAR=MACRO NAME 300 | :WORD_ADDRESS_AFT=) 301 | :LEFT_PLACES=0 302 | :RIGHT_PLACES=0 303 | :UNITFLAG=NON_CONVERT 304 | :ATTRSPACES=YES 305 | *:MODAL=YES 306 | :ATTRUSED=1 307 | :ATTREND 308 | *----------------------------------- 309 | :ATTRNAME=CURRENT MACRO NAME 310 | :ATTRTYPE=POST 311 | :ATTREMARK= 312 | :CODETYPE=FORMAT 313 | :WORD_ADDRESS_BEF=|( 314 | :VAR=CURRENT MACRO NAME 315 | :WORD_ADDRESS_AFT=) 316 | :LEFT_PLACES=0 317 | :RIGHT_PLACES=0 318 | :UNITFLAG=NON_CONVERT 319 | :ATTRSPACES=YES 320 | *:MODAL=YES 321 | :ATTRUSED=1 322 | :ATTREND 323 | ***** 324 | **** 325 | :SECTION=CALC_START_DRILL_CYCLE 326 | :C: TOTAL_Z_FEED=0 327 | :C: TOTAL_Z_RAPID=0 328 | :C: IF SECTIONEXIST(MACRO_RAPID_CALL_MILL) THEN 329 | :C: CALL(CALC_START_DRILL_CYCLE_MACRO) 330 | :C: RETURN 331 | :C: ENDIF 332 | :C: IF OPR_RETRACT_TYPE=CLEARANCE_PLANE THEN Z_POS=OPR_Z_CLEARANCE ENDIF 333 | :C: IF OPR_RETRACT_TYPE=RAPID_PLANE THEN Z_POS=OPR_Z_RAPID_PLANE ENDIF 334 | :C: IF SECTIONEXIST(DRILL_POSITION) THEN 335 | :C: CALL(CALC_DRILL_POSITION) 336 | :C: ELSE 337 | :C: Z_SAVE=ABS_Z_END 338 | :C: ABS_Z_END=Z_POS 339 | :C: CALL(CALC_RAPID_MOVE_MILL) 340 | :C: ABS_Z_END=Z_SAVE 341 | :C: ENDIF 342 | :C: FORCE_XY=0 343 | :C: SAVE_Z=ABS_Z_END ABS_Z_END=Z_POS 344 | :C: IF GC(G_LEN_COMP)<>GC(G_LEN_CANCEL) THEN 345 | :C: IF MACH(REG_Z)=MILL_Z_HOME THEN 346 | :C: IF SECTIONEXIST(FIRST_RAPID_Z_PRELOAD_DOWN_MILL) THEN 347 | :C: CALL(CALC_FIRST_RAPID_Z_PRELOAD_DOWN_MILL) 348 | :C: ELSE 349 | :C: CALL(CALC_FIRST_RAPID_Z_MOVE_DOWN_MILL) 350 | :C: ENDIF 351 | :C: ELSE 352 | :C: CALL(RAPID_Z_MOVE_DOWN_MILL) 353 | :C: ENDIF 354 | :C: ENDIF 355 | :C: ABS_Z_END=SAVE_Z 356 | :C: IF OPR_DRILL_CYCLE_TYPE=DRILLING THEN 357 | :C: CALL(CALC_DRILLING_CYCLE) 358 | :C: GOTO10 359 | :C: ENDIF 360 | :C: IF OPR_DRILL_CYCLE_TYPE=SPOT_DRILLING THEN 361 | :C: CALL(CALC_SPOT_DRILLING_CYCLE) 362 | :C: GOTO10 363 | :C: ENDIF 364 | :C: IF OPR_DRILL_CYCLE_TYPE=PECKING THEN 365 | * this will force it to use drill cycle always 366 | :C: CALL(CALC_DRILLING_CYCLE) 367 | * Comment out the next two lines and replace with above one 368 | *:C: CALL(CALC_NUM_PECKS) 369 | *:C: CALL(CALC_PECKING_CYCLE) 370 | :C: GOTO10 371 | :C: ENDIF 372 | :C: IF OPR_DRILL_CYCLE_TYPE=HIGH_SPEED_PECKING THEN 373 | * this will force it to use drill cycle always 374 | :C: CALL(CALC_DRILLING_CYCLE) 375 | * Comment out the next two lines and replace with above one 376 | *:C: CALL(CALC_NUM_PECKS) 377 | *:C: CALL(CALC_HIGH_SPEED_PECKING_CYCLE) 378 | :C: GOTO10 379 | :C: ENDIF 380 | :C: IF OPR_DRILL_CYCLE_TYPE=VARIABLE_PECKING THEN 381 | * this will force it to use drill cycle always 382 | :C: CALL(CALC_DRILLING_CYCLE) 383 | * Comment out the next two lines and replace with above one 384 | *:C: CALL(CALC_NUM_PECKS) 385 | *:C: CALL(CALC_VARIABLE_PECKING_CYCLE) 386 | :C: GOTO10 387 | :C: ENDIF 388 | :C: IF OPR_DRILL_CYCLE_TYPE=TAPPING THEN 389 | :C: CALL(CALC_TAPPING_CYCLE) 390 | :C: GOTO10 391 | :C: ENDIF 392 | :C: IF OPR_DRILL_CYCLE_TYPE=REVERSE_TAPPING THEN 393 | :C: CALL(CALC_REVERSE_TAPPING_CYCLE) 394 | :C: GOTO10 395 | :C: ENDIF 396 | :C: IF OPR_DRILL_CYCLE_TYPE=FINE_BORING THEN 397 | :C: CALL(CALC_FINE_BORING_CYCLE) 398 | :C: GOTO10 399 | :C: ENDIF 400 | :C: IF OPR_DRILL_CYCLE_TYPE=REAMING THEN 401 | :C: CALL(CALC_REAMING_CYCLE) 402 | :C: GOTO10 403 | :C: ENDIF 404 | :C: IF OPR_DRILL_CYCLE_TYPE=REAMING_DWELL THEN 405 | :C: CALL(CALC_REAM_DWELL_CYCLE) 406 | :C: GOTO10 407 | :C: ENDIF 408 | :C: IF OPR_DRILL_CYCLE_TYPE=BORING THEN 409 | :C: CALL(CALC_BORING_CYCLE) 410 | :C: GOTO10 411 | :C: ENDIF 412 | :C: IF OPR_DRILL_CYCLE_TYPE=BORE_DWELL THEN 413 | :C: CALL(CALC_BORE_DWELL_CYCLE) 414 | :C: GOTO10 415 | :C: ENDIF 416 | :C: IF OPR_DRILL_CYCLE_TYPE=BACK_BORING THEN 417 | :C: CALL(CALC_BACK_BORING_CYCLE) 418 | :C: GOTO10 419 | :C: ENDIF 420 | * 421 | * Time Calculations 422 | * 423 | :C10: Z_DISTANCE=TOTAL_Z_RAPID 424 | :C: IF SECTIONEXIST(OUTPUT_ESTIMATED_TIME) THEN 425 | :C: CALL(CALC_ESTIMATE_RAPID_TIME) 426 | :C: CALL(CALC_ESTIMATE_DRILL_Z_INIT_TIME) 427 | :C: Z_DISTANCE=TOTAL_Z_RAPID 428 | :C: CALL(CALC_ESTIMATE_DRILL_RAPID_TIME) 429 | :C: Z_DISTANCE=TOTAL_Z_FEED 430 | :C: CALL(CALC_ESTIMATE_DRILL_FEED_TIME) 431 | :C: ENDIF 432 | * 433 | * 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | -------------------------------------------------------------------------------- /SolidWorks/SW_BUILDBOTICS_POST.LIB.txt: -------------------------------------------------------------------------------- 1 | *----------------------------------- 2 | :ATTRNAME=TOOL QT COMMENT 3 | :ATTRTYPE=POST 4 | :ATTREMARK= 5 | :CODETYPE=FORMAT 6 | :WORD_ADDRESS_BEF= 7 | :MODAL=FALSE 8 | :ATTREND 9 | *----------------------------------- 10 | :ATTRNAME=SEQ CONFIG 11 | :ATTRTYPE=POST 12 | :ATTRVTYPE=INTEGER 13 | :ATTREMARK=Config. seq. numbers 14 | :ATTREND 15 | *---------------------------------------------------------- 16 | * Define OUTPUT CODE Attributes 17 | *---------------------------------------------------------- 18 | :ATTRNAME=N 19 | :ATTRTYPE=POST 20 | :ATTRVTYPE=INTEGER 21 | :ATTREMARK=Sequence number 22 | :CODETYPE=SELECT_FORMAT 23 | :ATTRCFUNC=CALC_REG_N(SEQ,MAX_SEQUENCE) 24 | :VAR=SEQ_CONFIG 25 | :SELECT=0 26 | :WORD_ADDRESS_BEF=N 27 | :VARB=SEQ 28 | :LEFT_PLACES=4 29 | :RIGHT_PLACES=0 30 | :CANNOT_BE_LEADING 31 | :MUST_BE_TRAILING 32 | :CANNOT_BE_DECIMAL 33 | :CANNOT_BE_SIGNED 34 | :SELECT=1 35 | :WORD_ADDRESS_BEF=N 36 | :VARB=SEQ 37 | :LEFT_PLACES=4 38 | :RIGHT_PLACES=0 39 | :MUST_BE_LEADING 40 | :MUST_BE_TRAILING 41 | :CANNOT_BE_DECIMAL 42 | :CANNOT_BE_SIGNED 43 | :SELECT=2 44 | :WORD_ADDRESS_BEF=N 45 | :VARB=SEQ 46 | :LEFT_PLACES=3 47 | :RIGHT_PLACES=0 48 | :MUST_BE_LEADING 49 | :MUST_BE_TRAILING 50 | :CANNOT_BE_DECIMAL 51 | :CANNOT_BE_SIGNED 52 | :UNITFLAG=NON_CONVERT 53 | :ATTREND 54 | *----------------------------------- 55 | :ATTRNAME=S 56 | :ATTRTYPE=POST 57 | :ATTRVTYPE=INTEGER 58 | :ATTREMARK=Spindle RPM 59 | :CODETYPE=FORMAT 60 | :ATTRCFUNC=CALC_INT_REGISTER(S,MACH,OPR_SPEED,REG_S) 61 | :WORD_ADDRESS_BEF=|S 62 | :LEFT_PLACES=4 63 | :RIGHT_PLACES=0 64 | :CANNOT_BE_DECIMAL 65 | :MUST_BE_TRAILING 66 | :CANNOT_BE_SIGNED 67 | :UNITFLAG=NON_CONVERT 68 | :MODAL=YES 69 | :ATTREND 70 | *----------------------------------- 71 | :ATTRNAME=T 72 | :ATTRTYPE=POST 73 | :ATTRVTYPE=INTEGER 74 | :ATTREMARK=Tool Number 75 | :CODETYPE=FORMAT 76 | :ATTRCFUNC=CALC_INT_REGISTER(T,MACH,TOOL,REG_T2) 77 | :WORD_ADDRESS_BEF=|T 78 | :RIGHT_PLACES=0 79 | :CANNOT_BE_DECIMAL 80 | :CANNOT_BE_SIGNED 81 | :UNITFLAG=NON_CONVERT 82 | :ATTREND 83 | *----------------------------------- 84 | *---------------------------------------------------------- 85 | * Define OUTPUT CODE Attributes (G Codes...) 86 | *---------------------------------------------------------- 87 | :ATTRNAME=G 88 | :ATTRTYPE=POST 89 | :ATTRVTYPE=INTEGER 90 | :ATTREMARK=G Codes 91 | :CODETYPE=FORMAT 92 | :ATTRCFUNC=CALC_G_GROUP(G,GC,GG,GM,MACH,G_GROUP,ATTRIVALUE,INDEX) 93 | :CODETYPE=FORMAT 94 | :WORD_ADDRESS_BEF=|G 95 | :RIGHT_PLACES=0 96 | :CANNOT_BE_DECIMAL 97 | :CANNOT_BE_SIGNED 98 | :UNITFLAG=NON_CONVERT 99 | :MODAL=YES 100 | :ATTRUSED=1 101 | :ATTREND 102 | *---------------------------------------------------------- 103 | * Define OUTPUT CODE Attributes (M Codes...) 104 | *---------------------------------------------------------- 105 | :ATTRNAME=M 106 | :ATTRTYPE=POST 107 | :ATTRVTYPE=INTEGER 108 | :ATTREMARK=M Codes 109 | :CODETYPE=FORMAT 110 | :ATTRCFUNC=CALC_M_GROUP(M,MC,MG,MM,MACH,M_GROUP,ATTRIVALUE,INDEX) 111 | :CODETYPE=FORMAT 112 | :RIGHT_PLACES=0 113 | :WORD_ADDRESS_BEF=|M 114 | :CANNOT_BE_DECIMAL 115 | :CANNOT_BE_SIGNED 116 | :UNITFLAG=NON_CONVERT 117 | :MODAL=YES 118 | :ATTRUSED=1 119 | :ATTREND 120 | *---------------------------------------------------------- 121 | * Define OUTPUT CODE Attributes (Movement...) 122 | *---------------------------------------------------------- 123 | :ATTRNAME=X 124 | :ATTRTYPE=POST 125 | :ATTRVTYPE=DECIMAL 126 | :ATTREMARK=X End 127 | :CODETYPE=FORMAT 128 | :ATTRCFUNC=CALC_ENDPOINT(X,X_POS,GC,GG,G_GROUP,MACH,PREV,REG_X) 129 | :WORD_ADDRESS_BEF=|X 130 | :MODAL=YES 131 | :ATTREND 132 | *----------------------------------- 133 | :ATTRNAME=Y 134 | :ATTRTYPE=POST 135 | :ATTRVTYPE=DECIMAL 136 | :ATTREMARK=Y End 137 | :CODETYPE=FORMAT 138 | :ATTRCFUNC=CALC_ENDPOINT(Y,Y_POS,GC,GG,G_GROUP,MACH,PREV,REG_Y) 139 | :WORD_ADDRESS_BEF=|Y 140 | :MODAL=YES 141 | :ATTREND 142 | *----------------------------------- 143 | :ATTRNAME=Z 144 | :ATTRTYPE=POST 145 | :ATTRVTYPE=DECIMAL 146 | :ATTREMARK=Z End 147 | :CODETYPE=FORMAT 148 | :ATTRCFUNC=CALC_ENDPOINT(Z,ABS_Z_END,GC,GG,G_GROUP,MACH,PREV,REG_Z) 149 | :WORD_ADDRESS_BEF=|Z 150 | :MODAL=YES 151 | :ATTREND 152 | *----------------------------------- 153 | :ATTRNAME=VI 154 | :ATTRTYPE=POST 155 | :ATTRVTYPE=DECIMAL 156 | :ATTREMARK=I Vector 157 | :CODETYPE=FORMAT 158 | :ATTRCFUNC=CALC_ENDPOINT(VI,VECTOR_I,GC,GG,G_GROUP,MACH,PREV,REG_VI) 159 | :WORD_ADDRESS_BEF=|I 160 | :MODAL=YES 161 | :ATTREND 162 | *----------------------------------- 163 | :ATTRNAME=VJ 164 | :ATTRTYPE=POST 165 | :ATTRVTYPE=DECIMAL 166 | :ATTREMARK=J Vector 167 | :CODETYPE=FORMAT 168 | :ATTRCFUNC=CALC_ENDPOINT(VJ,VECTOR_J,GC,GG,G_GROUP,MACH,PREV,REG_VJ) 169 | :WORD_ADDRESS_BEF=|J 170 | :MODAL=YES 171 | :ATTREND 172 | *----------------------------------- 173 | :ATTRNAME=VK 174 | :ATTRTYPE=POST 175 | :ATTRVTYPE=DECIMAL 176 | :ATTREMARK=K Vector 177 | :CODETYPE=FORMAT 178 | :ATTRCFUNC=CALC_ENDPOINT(VK,VECTOR_K,GC,GG,G_GROUP,MACH,PREV,REG_VK) 179 | :WORD_ADDRESS_BEF=|K 180 | :MODAL=YES 181 | :ATTREND 182 | *----------------------------------- 183 | :ATTRNAME=A 184 | :ATTRTYPE=POST 185 | :ATTRVTYPE=DECIMAL 186 | :ATTREMARK=Angle A 187 | :CODETYPE=FORMAT 188 | :ATTRCFUNC=CALC_ROT_ANGLE_A(A,MACH,INC_ROT_TILT_A,REG_A) 189 | :WORD_ADDRESS_BEF=|A 190 | :WORD_ADDRESS_AFT=| 191 | :MODAL=YES 192 | :UNITFLAG=NON_CONVERT 193 | :ATTREND 194 | *----------------------------------- 195 | :ATTRNAME=B 196 | :ATTRTYPE=POST 197 | :ATTRVTYPE=DECIMAL 198 | :ATTREMARK=Angle B 199 | :CODETYPE=FORMAT 200 | :ATTRCFUNC=CALC_ROT_ANGLE_B(B,MACH,INC_ROT_TILT_B,REG_B) 201 | :WORD_ADDRESS_BEF=|B 202 | :WORD_ADDRESS_AFT=| 203 | :MODAL=YES 204 | :UNITFLAG=NON_CONVERT 205 | :ATTREND 206 | *----------------------------------- 207 | :ATTRNAME=X OFFSET 208 | :ATTRTYPE=POST 209 | :ATTRVTYPE=DECIMAL 210 | :ATTREMARK=X End 211 | :CODETYPE=FORMAT 212 | :ATTRCFUNC=CALC_MACRO_ORIGIN(X_OFFSET,REG_X,X_OFFSET) 213 | :WORD_ADDRESS_BEF=|X 214 | :ATTREND 215 | *----------------------------------- 216 | :ATTRNAME=Y OFFSET 217 | :ATTRTYPE=POST 218 | :ATTRVTYPE=DECIMAL 219 | :ATTREMARK=Y End 220 | :CODETYPE=FORMAT 221 | :ATTRCFUNC=CALC_MACRO_ORIGIN(Y_OFFSET,REG_Y,Y_OFFSET) 222 | :WORD_ADDRESS_BEF=|Y 223 | :ATTREND 224 | *----------------------------------- 225 | :ATTRNAME=Z CLEAR 226 | :ATTRTYPE=POST 227 | :ATTRVTYPE=DECIMAL 228 | :ATTREMARK=X End 229 | :CODETYPE=FORMAT 230 | :ATTRCFUNC=CALC_DEC_REGISTER(Z_CLEAR,MACH,OPR_Z_CLEARANCE,REG_Z) 231 | :WORD_ADDRESS_BEF=|R 232 | :MODAL=NO 233 | :ATTREND 234 | *----------------------------------- 235 | :ATTRNAME=Z DEPTH 236 | :ATTRTYPE=POST 237 | :ATTRVTYPE=DECIMAL 238 | :ATTREMARK=X End 239 | :CODETYPE=FORMAT 240 | :ATTRCFUNC=CALC_DEC_REGISTER(Z_DEPTH,MACH,OPR_Z_DEPTH,REG_Z) 241 | :WORD_ADDRESS_BEF=|Z 242 | :MODAL=NO 243 | :ATTREND 244 | *----------------------------------- 245 | :ATTRNAME=SUB PECK 246 | :ATTRTYPE=POST 247 | :ATTRVTYPE=DECIMAL 248 | :ATTREMARK=X End 249 | :CODETYPE=FORMAT 250 | :ATTRCFUNC=CALC_DEC_REGISTER(SUB_PECK,MACH,OPR_Z_SUB_PECK,REG_Q) 251 | :WORD_ADDRESS_BEF=|Q 252 | :MODAL=NO 253 | :ATTREND 254 | *----------------------------------- 255 | :ATTRNAME=I 256 | :ATTRTYPE=POST 257 | :ATTRVTYPE=DECIMAL 258 | :ATTREMARK=X Center 259 | :CODETYPE=FORMAT 260 | :ATTRCFUNC=CALC_CENTER(I,ABS_I_CENTER,GC,GG,G_GROUP,MACH,PREV,REG_X,REG_I,AIC) 261 | :WORD_ADDRESS_BEF=|I 262 | :ATTREND 263 | *----------------------------------- 264 | :ATTRNAME=J 265 | :ATTRTYPE=POST 266 | :ATTRVTYPE=DECIMAL 267 | :ATTREMARK=J Center 268 | :CODETYPE=FORMAT 269 | :ATTRCFUNC=CALC_CENTER(J,ABS_J_CENTER,GC,GG,G_GROUP,MACH,PREV,REG_Y,REG_J,AIC) 270 | :WORD_ADDRESS_BEF=|J 271 | :ATTREND 272 | *----------------------------------- 273 | :ATTRNAME=R 274 | :ATTRTYPE=POST 275 | :ATTRVTYPE=DECIMAL 276 | :ATTREMARK=R Radius 277 | :CODETYPE=FORMAT 278 | :ATTRCFUNC=CALC_RADIUS(R,MACH,REG_R) 279 | :WORD_ADDRESS_BEF=|R 280 | :MODAL=YES 281 | :ATTREND 282 | *----------------------------------- 283 | :ATTRNAME=F 284 | :ATTRTYPE=POST 285 | :ATTRVTYPE=DECIMAL 286 | :ATTREMARK=Feedrate IPM/MPM 287 | :CODETYPE=FORMAT 288 | :ATTRCFUNC=CALC_REG_F(MACH,REG_F,F) 289 | :WORD_ADDRESS_BEF=|F 290 | :CANNOT_BE_SIGNED 291 | :MODAL=YES 292 | :ATTREND 293 | *----------------------------------- 294 | :ATTRNAME=MACRO NAME 295 | :ATTRTYPE=POST 296 | :ATTREMARK= 297 | :CODETYPE=FORMAT 298 | :WORD_ADDRESS_BEF=|( 299 | :VAR=MACRO NAME 300 | :WORD_ADDRESS_AFT=) 301 | :LEFT_PLACES=0 302 | :RIGHT_PLACES=0 303 | :UNITFLAG=NON_CONVERT 304 | :ATTRSPACES=YES 305 | *:MODAL=YES 306 | :ATTRUSED=1 307 | :ATTREND 308 | *----------------------------------- 309 | :ATTRNAME=CURRENT MACRO NAME 310 | :ATTRTYPE=POST 311 | :ATTREMARK= 312 | :CODETYPE=FORMAT 313 | :WORD_ADDRESS_BEF=|( 314 | :VAR=CURRENT MACRO NAME 315 | :WORD_ADDRESS_AFT=) 316 | :LEFT_PLACES=0 317 | :RIGHT_PLACES=0 318 | :UNITFLAG=NON_CONVERT 319 | :ATTRSPACES=YES 320 | *:MODAL=YES 321 | :ATTRUSED=1 322 | :ATTREND 323 | ***** 324 | **** 325 | :SECTION=CALC_START_DRILL_CYCLE 326 | :C: TOTAL_Z_FEED=0 327 | :C: TOTAL_Z_RAPID=0 328 | :C: IF SECTIONEXIST(MACRO_RAPID_CALL_MILL) THEN 329 | :C: CALL(CALC_START_DRILL_CYCLE_MACRO) 330 | :C: RETURN 331 | :C: ENDIF 332 | :C: IF OPR_RETRACT_TYPE=CLEARANCE_PLANE THEN Z_POS=OPR_Z_CLEARANCE ENDIF 333 | :C: IF OPR_RETRACT_TYPE=RAPID_PLANE THEN Z_POS=OPR_Z_RAPID_PLANE ENDIF 334 | :C: IF SECTIONEXIST(DRILL_POSITION) THEN 335 | :C: CALL(CALC_DRILL_POSITION) 336 | :C: ELSE 337 | :C: Z_SAVE=ABS_Z_END 338 | :C: ABS_Z_END=Z_POS 339 | :C: CALL(CALC_RAPID_MOVE_MILL) 340 | :C: ABS_Z_END=Z_SAVE 341 | :C: ENDIF 342 | :C: FORCE_XY=0 343 | :C: SAVE_Z=ABS_Z_END ABS_Z_END=Z_POS 344 | :C: IF GC(G_LEN_COMP)<>GC(G_LEN_CANCEL) THEN 345 | :C: IF MACH(REG_Z)=MILL_Z_HOME THEN 346 | :C: IF SECTIONEXIST(FIRST_RAPID_Z_PRELOAD_DOWN_MILL) THEN 347 | :C: CALL(CALC_FIRST_RAPID_Z_PRELOAD_DOWN_MILL) 348 | :C: ELSE 349 | :C: CALL(CALC_FIRST_RAPID_Z_MOVE_DOWN_MILL) 350 | :C: ENDIF 351 | :C: ELSE 352 | :C: CALL(RAPID_Z_MOVE_DOWN_MILL) 353 | :C: ENDIF 354 | :C: ENDIF 355 | :C: ABS_Z_END=SAVE_Z 356 | :C: IF OPR_DRILL_CYCLE_TYPE=DRILLING THEN 357 | :C: CALL(CALC_DRILLING_CYCLE) 358 | :C: GOTO10 359 | :C: ENDIF 360 | :C: IF OPR_DRILL_CYCLE_TYPE=SPOT_DRILLING THEN 361 | :C: CALL(CALC_SPOT_DRILLING_CYCLE) 362 | :C: GOTO10 363 | :C: ENDIF 364 | :C: IF OPR_DRILL_CYCLE_TYPE=PECKING THEN 365 | * this will force it to use drill cycle always 366 | :C: CALL(CALC_DRILLING_CYCLE) 367 | * Comment out the next two lines and replace with above one 368 | *:C: CALL(CALC_NUM_PECKS) 369 | *:C: CALL(CALC_PECKING_CYCLE) 370 | :C: GOTO10 371 | :C: ENDIF 372 | :C: IF OPR_DRILL_CYCLE_TYPE=HIGH_SPEED_PECKING THEN 373 | * this will force it to use drill cycle always 374 | :C: CALL(CALC_DRILLING_CYCLE) 375 | * Comment out the next two lines and replace with above one 376 | *:C: CALL(CALC_NUM_PECKS) 377 | *:C: CALL(CALC_HIGH_SPEED_PECKING_CYCLE) 378 | :C: GOTO10 379 | :C: ENDIF 380 | :C: IF OPR_DRILL_CYCLE_TYPE=VARIABLE_PECKING THEN 381 | * this will force it to use drill cycle always 382 | :C: CALL(CALC_DRILLING_CYCLE) 383 | * Comment out the next two lines and replace with above one 384 | *:C: CALL(CALC_NUM_PECKS) 385 | *:C: CALL(CALC_VARIABLE_PECKING_CYCLE) 386 | :C: GOTO10 387 | :C: ENDIF 388 | :C: IF OPR_DRILL_CYCLE_TYPE=TAPPING THEN 389 | :C: CALL(CALC_TAPPING_CYCLE) 390 | :C: GOTO10 391 | :C: ENDIF 392 | :C: IF OPR_DRILL_CYCLE_TYPE=REVERSE_TAPPING THEN 393 | :C: CALL(CALC_REVERSE_TAPPING_CYCLE) 394 | :C: GOTO10 395 | :C: ENDIF 396 | :C: IF OPR_DRILL_CYCLE_TYPE=FINE_BORING THEN 397 | :C: CALL(CALC_FINE_BORING_CYCLE) 398 | :C: GOTO10 399 | :C: ENDIF 400 | :C: IF OPR_DRILL_CYCLE_TYPE=REAMING THEN 401 | :C: CALL(CALC_REAMING_CYCLE) 402 | :C: GOTO10 403 | :C: ENDIF 404 | :C: IF OPR_DRILL_CYCLE_TYPE=REAMING_DWELL THEN 405 | :C: CALL(CALC_REAM_DWELL_CYCLE) 406 | :C: GOTO10 407 | :C: ENDIF 408 | :C: IF OPR_DRILL_CYCLE_TYPE=BORING THEN 409 | :C: CALL(CALC_BORING_CYCLE) 410 | :C: GOTO10 411 | :C: ENDIF 412 | :C: IF OPR_DRILL_CYCLE_TYPE=BORE_DWELL THEN 413 | :C: CALL(CALC_BORE_DWELL_CYCLE) 414 | :C: GOTO10 415 | :C: ENDIF 416 | :C: IF OPR_DRILL_CYCLE_TYPE=BACK_BORING THEN 417 | :C: CALL(CALC_BACK_BORING_CYCLE) 418 | :C: GOTO10 419 | :C: ENDIF 420 | * 421 | * Time Calculations 422 | * 423 | :C10: Z_DISTANCE=TOTAL_Z_RAPID 424 | :C: IF SECTIONEXIST(OUTPUT_ESTIMATED_TIME) THEN 425 | :C: CALL(CALC_ESTIMATE_RAPID_TIME) 426 | :C: CALL(CALC_ESTIMATE_DRILL_Z_INIT_TIME) 427 | :C: Z_DISTANCE=TOTAL_Z_RAPID 428 | :C: CALL(CALC_ESTIMATE_DRILL_RAPID_TIME) 429 | :C: Z_DISTANCE=TOTAL_Z_FEED 430 | :C: CALL(CALC_ESTIMATE_DRILL_FEED_TIME) 431 | :C: ENDIF 432 | * 433 | * 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | -------------------------------------------------------------------------------- /fusion360/buildbotics_jet.cps: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (C) 2012-2019 by Autodesk, Inc. 3 | All rights reserved. 4 | 5 | Grbl post processor configuration. 6 | 7 | $Revision: 42473 905303e8374380273c82d214b32b7e80091ba92e $ 8 | $Date: 2019-09-04 00:46:02 $ 9 | 10 | FORKID {0A45B7F8-16FA-450B-AB4F-0E1BC1A65FAA} 11 | 12 | Modified for Buildbotics Controller with Jet operation 13 | */ 14 | 15 | description = "Buildbotics Jet"; 16 | vendor = "Buildbotics LLC"; 17 | vendorUrl = "https://buildbotics.com"; 18 | legal = "Copyright (C) 2012-2019 by Autodesk, Inc."; 19 | certificationLevel = 2; 20 | minimumRevision = 24000; 21 | highFeedrate = (unit == IN) ? 100 : 2500; 22 | 23 | longDescription = "Generic post for Buildbotics Jet cutting."; 24 | 25 | extension = "nc"; 26 | setCodePage("ascii"); 27 | 28 | capabilities = CAPABILITY_JET; 29 | tolerance = spatial(0.002, MM); 30 | 31 | minimumChordLength = spatial(0.25, MM); 32 | minimumCircularRadius = spatial(0.01, MM); 33 | maximumCircularRadius = spatial(1000, MM); 34 | minimumCircularSweep = toRad(0.01); 35 | maximumCircularSweep = toRad(180); 36 | allowHelicalMoves = true; 37 | allowedCircularPlanes = undefined; // allow any circular motion 38 | 39 | // user-defined properties 40 | properties = { 41 | writeMachine: true, // write machine 42 | showSequenceNumbers: false, // show sequence numbers 43 | sequenceNumberStart: 10, // first sequence number 44 | sequenceNumberIncrement: 1, // increment for sequence numbers 45 | separateWordsWithSpace: true, // specifies that the words should be separated with a white space 46 | pierceDelay: 1, // specifies the delay to pierce in seconds 47 | useZAxis: false, // specifies to enable the output for Z coordinates 48 | pierceHeight: 0, // specifies the pierce height 49 | useG0: true // toggle between using G0 or G1 with a highFeedrate for rapid movements 50 | //throughPower: 255, // set the Laser Power for though cutting 51 | //etchPower: 50, // set the power for etching 52 | //vaporizePower: 255 // set the power for vaporize 53 | }; 54 | 55 | // user-defined property definitions 56 | propertyDefinitions = { 57 | writeMachine: {title:"Write machine", description:"Output the machine settings in the header of the code.", group:0, type:"boolean"}, 58 | showSequenceNumbers: {title:"Use sequence numbers", description:"Use sequence numbers for each block of outputted code.", group:1, type:"boolean"}, 59 | sequenceNumberStart: {title:"Start sequence number", description:"The number at which to start the sequence numbers.", group:1, type:"integer"}, 60 | sequenceNumberIncrement: {title:"Sequence number increment", description:"The amount by which the sequence number is incremented by in each block.", group:1, type:"integer"}, 61 | separateWordsWithSpace: {title:"Separate words with space", description:"Adds spaces between words if 'yes' is selected.", type:"boolean"}, 62 | 63 | pierceDelay: {title:"Pierce delay", description:"Specifies the delay to pierce in seconds.", type:"number"}, 64 | useZAxis: {title:"Use Z axis", description:"Specifies to enable the output for Z coordinates.", type:"boolean"}, 65 | pierceHeight: {title:"Pierce Height", description:"Specifies the pierce height.", type:"number"}, 66 | useG0: {title:"Use G0", description:"Toggle between using G0 or G1 with a highFeedrate for rapid movements.", type:"boolean"} 67 | //throughPower: {title: "Through power", description: "Sets the laser power used for through cutting.", type: "number"}, 68 | //etchPower: {title:"Etch power", description:"Sets the laser power used for etching.", type:"number"}, 69 | //vaporizePower: {title:"Vaporize power", description:"Sets the laser power used for vaporize cutting.", type:"number"} 70 | }; 71 | 72 | var gFormat = createFormat({prefix:"G", decimals:0}); 73 | var mFormat = createFormat({prefix:"M", decimals:0}); 74 | 75 | var xyzFormat = createFormat({decimals:(unit == MM ? 3 : 4)}); 76 | var zFormat = createFormat({decimals:(unit == MM ? 3 : 4), forceDecimal:true}); 77 | var feedFormat = createFormat({decimals:(unit == MM ? 1 : 2)}); 78 | var toolFormat = createFormat({decimals:0}); 79 | var powerFormat = createFormat({decimals:0}); 80 | var secFormat = createFormat({decimals:3, forceDecimal:true}); // seconds - range 0.001-1000 81 | 82 | var xOutput = createVariable({prefix:"X"}, xyzFormat); 83 | var yOutput = createVariable({prefix:"Y"}, xyzFormat); 84 | var zOutput = createVariable({prefix:"Z"}, xyzFormat); 85 | var feedOutput = createVariable({prefix:"F"}, feedFormat); 86 | var sOutput = createVariable({prefix:"S", force:true}, powerFormat); 87 | 88 | // circular output 89 | var iOutput = createVariable({prefix:"I"}, xyzFormat); 90 | var jOutput = createVariable({prefix:"J"}, xyzFormat); 91 | 92 | var gMotionModal = createModal({force:true}, gFormat); // modal group 1 // G0-G3, ... 93 | var gPlaneModal = createModal({onchange:function () {gMotionModal.reset();}}, gFormat); // modal group 2 // G17-19 94 | var gAbsIncModal = createModal({}, gFormat); // modal group 3 // G90-91 95 | var gFeedModeModal = createModal({}, gFormat); // modal group 5 // G93-94 96 | var gUnitModal = createModal({}, gFormat); // modal group 6 // G20-21 97 | 98 | var WARNING_WORK_OFFSET = 0; 99 | 100 | // collected state 101 | var sequenceNumber; 102 | var currentWorkOffset; 103 | 104 | /** 105 | Writes the specified block. 106 | */ 107 | function writeBlock() { 108 | if (properties.showSequenceNumbers) { 109 | writeWords2("N" + sequenceNumber, arguments); 110 | sequenceNumber += properties.sequenceNumberIncrement; 111 | } else { 112 | writeWords(arguments); 113 | } 114 | } 115 | 116 | function formatComment(text) { 117 | return "(" + String(text).replace(/[()]/g, "") + ")"; 118 | } 119 | 120 | /** 121 | Output a comment. 122 | */ 123 | function writeComment(text) { 124 | writeln(formatComment(text)); 125 | } 126 | 127 | function getPowerMode(section) { 128 | var mode; 129 | switch (section.quality) { 130 | case 0: // auto 131 | mode = 4; 132 | break; 133 | case 1: // high 134 | mode = 3; 135 | break; 136 | /* 137 | case 2: // medium 138 | case 3: // low 139 | */ 140 | default: 141 | error(localize("Only Cutting Mode Through-auto and Through-high are supported.")); 142 | return 0; 143 | } 144 | return mode; 145 | } 146 | 147 | function onOpen() { 148 | 149 | if (properties.useZAxis) { 150 | zFormat.setOffset(0); 151 | zOutput = createVariable({prefix:"Z"}, zFormat); 152 | } else { 153 | zOutput.disable(); 154 | } 155 | 156 | if (!properties.separateWordsWithSpace) { 157 | setWordSeparator(""); 158 | } 159 | 160 | sequenceNumber = properties.sequenceNumberStart; 161 | writeln("%"); 162 | 163 | if (programName) { 164 | writeComment(programName); 165 | } 166 | if (programComment) { 167 | writeComment(programComment); 168 | } 169 | 170 | // dump machine configuration 171 | var vendor = machineConfiguration.getVendor(); 172 | var model = machineConfiguration.getModel(); 173 | var description = machineConfiguration.getDescription(); 174 | 175 | if (properties.writeMachine && (vendor || model || description)) { 176 | writeComment(localize("Machine")); 177 | if (vendor) { 178 | writeComment(" " + localize("vendor") + ": " + vendor); 179 | } 180 | if (model) { 181 | writeComment(" " + localize("model") + ": " + model); 182 | } 183 | if (description) { 184 | writeComment(" " + localize("description") + ": " + description); 185 | } 186 | } 187 | 188 | if ((getNumberOfSections() > 0) && (getSection(0).workOffset == 0)) { 189 | for (var i = 0; i < getNumberOfSections(); ++i) { 190 | if (getSection(i).workOffset > 0) { 191 | error(localize("Using multiple work offsets is not possible if the initial work offset is 0.")); 192 | return; 193 | } 194 | } 195 | } 196 | 197 | // absolute coordinates and feed per min 198 | writeBlock(gAbsIncModal.format(90), gFeedModeModal.format(94)); 199 | writeBlock(gPlaneModal.format(17)); 200 | 201 | switch (unit) { 202 | case IN: 203 | writeBlock(gUnitModal.format(20)); 204 | break; 205 | case MM: 206 | writeBlock(gUnitModal.format(21)); 207 | break; 208 | } 209 | } 210 | 211 | function onComment(message) { 212 | writeComment(message); 213 | } 214 | 215 | /** Force output of X, Y, and Z. */ 216 | function forceXYZ() { 217 | xOutput.reset(); 218 | yOutput.reset(); 219 | zOutput.reset(); 220 | } 221 | 222 | /** Force output of X, Y, Z, and F on next output. */ 223 | function forceAny() { 224 | forceXYZ(); 225 | feedOutput.reset(); 226 | } 227 | 228 | function onSection() { 229 | 230 | writeln(""); 231 | 232 | if (hasParameter("operation-comment")) { 233 | var comment = getParameter("operation-comment"); 234 | if (comment) { 235 | writeComment(comment); 236 | } 237 | } 238 | 239 | if (currentSection.getType() == TYPE_JET) { 240 | switch (tool.type) { 241 | case TOOL_LASER_CUTTER: 242 | break; 243 | default: 244 | error(localize("The CNC does not support the required tool/process. Only laser cutting is supported.")); 245 | return; 246 | } 247 | 248 | var power = 0; 249 | switch (currentSection.jetMode) { 250 | case JET_MODE_THROUGH: 251 | power = properties.throughPower; 252 | break; 253 | case JET_MODE_ETCHING: 254 | power = properties.etchPower; 255 | break; 256 | case JET_MODE_VAPORIZE: 257 | power = properties.vaporizePower; 258 | break; 259 | default: 260 | error(localize("Unsupported cutting mode.")); 261 | return; 262 | } 263 | } else { 264 | error(localize("The CNC does not support the required tool/process. Only laser cutting is supported.")); 265 | return; 266 | } 267 | 268 | { // pure 3D 269 | var remaining = currentSection.workPlane; 270 | if (!isSameDirection(remaining.forward, new Vector(0, 0, 1))) { 271 | error(localize("Tool orientation is not supported.")); 272 | return; 273 | } 274 | setRotation(remaining); 275 | } 276 | 277 | forceAny(); 278 | 279 | var initialPosition = getFramePosition(currentSection.getInitialPosition()); 280 | var zIsOutput = false; 281 | if (properties.useZAxis) { 282 | var previousFinalPosition = isFirstSection() ? initialPosition : getFramePosition(getPreviousSection().getFinalPosition()); 283 | if (xyzFormat.getResultingValue(previousFinalPosition.z) <= xyzFormat.getResultingValue(initialPosition.z)) { 284 | if (properties.useG0) { 285 | writeBlock(gMotionModal.format(0), zOutput.format(initialPosition.z)); 286 | } else { 287 | writeBlock(gMotionModal.format(1), zOutput.format(initialPosition.z), feedOutput.format(highFeedrate)); 288 | } 289 | zIsOutput = true; 290 | } 291 | } 292 | 293 | if (properties.useG0) { 294 | writeBlock(gMotionModal.format(0), xOutput.format(initialPosition.x), yOutput.format(initialPosition.y)); 295 | } else { 296 | writeBlock(gMotionModal.format(1), xOutput.format(initialPosition.x), yOutput.format(initialPosition.y), feedOutput.format(highFeedrate)); 297 | } 298 | 299 | if (properties.useZAxis && !zIsOutput) { 300 | if (properties.useG0) { 301 | writeBlock(gMotionModal.format(0), zOutput.format(initialPosition.z)); 302 | } else { 303 | writeBlock(gMotionModal.format(1), zOutput.format(initialPosition.z), feedOutput.format(highFeedrate)); 304 | } 305 | } 306 | } 307 | 308 | function onDwell(seconds) { 309 | if (seconds > 99999.999) { 310 | warning(localize("Dwelling time is out of range.")); 311 | } 312 | seconds = clamp(0.001, seconds, 99999.999); 313 | writeBlock(gFormat.format(4), "P" + secFormat.format(seconds)); 314 | } 315 | 316 | var pendingRadiusCompensation = -1; 317 | 318 | function onRadiusCompensation() { 319 | pendingRadiusCompensation = radiusCompensation; 320 | } 321 | 322 | var powerIsOn = false 323 | function onPower(power) { 324 | if (properties.useZAxis && power) { 325 | if (properties.useG0) { 326 | writeBlock(gMotionModal.format(0), zOutput.format(properties.pierceHeight + getCurrentPosition().z)); 327 | } else { 328 | writeBlock(gMotionModal.format(1), zOutput.format(properties.pierceHeight + getCurrentPosition().z), feedOutput.format(highFeedrate)); 329 | } 330 | zFormat.setOffset(0); 331 | } 332 | writeBlock(mFormat.format(power ? 3 : 5), 'S1'); 333 | powerIsOn = power; 334 | if (power) { 335 | onDwell(properties.pierceDelay); 336 | if (zFormat.isSignificant(properties.pierceHeight)) { 337 | feedOutput.reset(); 338 | var f = (hasParameter("operation:tool_feedEntry") ? getParameter("operation:tool_feedEntry") : toPreciseUnit(1000, MM)); 339 | zOutput = createVariable({prefix:"Z"}, zFormat); 340 | writeBlock(gMotionModal.format(1), zOutput.format(getCurrentPosition().z), feedOutput.format(f)); 341 | zFormat.setOffset(0); 342 | } 343 | } else { 344 | if (zFormat.isSignificant(properties.pierceHeight)) { 345 | zFormat.setOffset(0); 346 | zOutput = createVariable({prefix:"Z"}, zFormat); 347 | } 348 | 349 | var initialPosition = getFramePosition(currentSection.getInitialPosition()); 350 | if (properties.useG0) { 351 | writeBlock(gMotionModal.format(0), zOutput.format(initialPosition.z)); 352 | } else { 353 | writeBlock(gMotionModal.format(1), zOutput.format(initialPosition.z), feedOutput.format(highFeedrate)); 354 | } 355 | writeln(""); 356 | } 357 | } 358 | 359 | function onRapid(_x, _y, _z) { 360 | var x = xOutput.format(_x); 361 | var y = yOutput.format(_y); 362 | var z = zOutput.format(_z); 363 | if (x || y) { 364 | if (pendingRadiusCompensation >= 0) { 365 | error(localize("Radius compensation mode cannot be changed at rapid traversal.")); 366 | return; 367 | } 368 | if (properties.useG0) { 369 | writeBlock(gMotionModal.format(0), x, y, z); 370 | } else { 371 | writeBlock(gMotionModal.format(1), x, y, z, feedOutput.format(highFeedrate)); 372 | } 373 | feedOutput.reset(); 374 | } 375 | } 376 | 377 | function onLinear(_x, _y, _z, feed) { 378 | // at least one axis is required 379 | if (pendingRadiusCompensation >= 0) { 380 | // ensure that we end at desired position when compensation is turned off 381 | xOutput.reset(); 382 | yOutput.reset(); 383 | } 384 | var x = xOutput.format(_x); 385 | var y = yOutput.format(_y); 386 | var f = feedOutput.format(feed); 387 | if (x || y) { 388 | if (pendingRadiusCompensation >= 0) { 389 | error(localize("Radius compensation mode is not supported.")); 390 | return; 391 | } else { 392 | writeBlock(gMotionModal.format(1), x, y, f); 393 | } 394 | } else if (f) { 395 | if (getNextRecord().isMotion()) { // try not to output feed without motion 396 | feedOutput.reset(); // force feed on next line 397 | } else { 398 | writeBlock(gMotionModal.format(1), f); 399 | } 400 | } 401 | } 402 | 403 | function onRapid5D(_x, _y, _z, _a, _b, _c) { 404 | error(localize("The CNC does not support 5-axis simultaneous toolpath.")); 405 | } 406 | 407 | function onLinear5D(_x, _y, _z, _a, _b, _c, feed) { 408 | error(localize("The CNC does not support 5-axis simultaneous toolpath.")); 409 | } 410 | 411 | function forceCircular(plane) { 412 | switch (plane) { 413 | case PLANE_XY: 414 | xOutput.reset(); 415 | yOutput.reset(); 416 | iOutput.reset(); 417 | jOutput.reset(); 418 | break; 419 | case PLANE_ZX: 420 | zOutput.reset(); 421 | xOutput.reset(); 422 | kOutput.reset(); 423 | iOutput.reset(); 424 | break; 425 | case PLANE_YZ: 426 | yOutput.reset(); 427 | zOutput.reset(); 428 | jOutput.reset(); 429 | kOutput.reset(); 430 | break; 431 | } 432 | } 433 | 434 | function onCircular(clockwise, cx, cy, cz, x, y, z, feed) { 435 | if (pendingRadiusCompensation >= 0) { 436 | error(localize("Radius compensation cannot be activated/deactivated for a circular move.")); 437 | return; 438 | } 439 | 440 | var start = getCurrentPosition(); 441 | 442 | if (isFullCircle()) { 443 | if (isHelical()) { 444 | linearize(tolerance); 445 | return; 446 | } 447 | switch (getCircularPlane()) { 448 | case PLANE_XY: 449 | forceCircular(getCircularPlane()); 450 | writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), iOutput.format(cx - start.x), jOutput.format(cy - start.y), feedOutput.format(feed)); 451 | break; 452 | default: 453 | linearize(tolerance); 454 | } 455 | } else { 456 | switch (getCircularPlane()) { 457 | case PLANE_XY: 458 | forceCircular(getCircularPlane()); 459 | writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), iOutput.format(cx - start.x), jOutput.format(cy - start.y), feedOutput.format(feed)); 460 | break; 461 | default: 462 | linearize(tolerance); 463 | } 464 | } 465 | } 466 | 467 | var mapCommand = { 468 | COMMAND_STOP:0, 469 | COMMAND_END:2 470 | }; 471 | 472 | function onCommand(command) { 473 | switch (command) { 474 | case COMMAND_POWER_ON: 475 | return; 476 | case COMMAND_POWER_OFF: 477 | return; 478 | case COMMAND_LOCK_MULTI_AXIS: 479 | return; 480 | case COMMAND_UNLOCK_MULTI_AXIS: 481 | return; 482 | case COMMAND_BREAK_CONTROL: 483 | return; 484 | case COMMAND_TOOL_MEASURE: 485 | return; 486 | } 487 | 488 | var stringId = getCommandStringId(command); 489 | var mcode = mapCommand[stringId]; 490 | if (mcode != undefined) { 491 | writeBlock(mFormat.format(mcode)); 492 | } else { 493 | onUnsupportedCommand(command); 494 | } 495 | } 496 | 497 | function onSectionEnd() { 498 | forceAny(); 499 | } 500 | 501 | function onClose() { 502 | writeBlock(sOutput.format(0)); // laser off 503 | writeBlock(mFormat.format(30)); // stop program, spindle stop, coolant off 504 | writeln("%"); 505 | } 506 | -------------------------------------------------------------------------------- /SolidWorks/SW_BUILDBOTICS_POST.SRC: -------------------------------------------------------------------------------- 1 | *FANUCM 2 | :SYSTEM=MILL 3 | :LEADING=FALSE 4 | :TRAILING=FALSE 5 | :DECIMAL=TRUE 6 | :QUAD=TRUE 7 | :SPACE=TRUE 8 | :ARCS=CENTER 9 | :METRIC_SHIFT=1 10 | :G_LEFT_PLACES=3 11 | :G_RIGHT_PLACES=5 12 | :G_INT_LEFT_PLACES=2 13 | :INT_LEADING=TRUE 14 | :INT_TRAILING=TRUE 15 | :HELICAL=TRUE 16 | :5AXIS_MILLING=FALSE 17 | :4AXIS_X_MILLING=FALSE 18 | :4AXIS_Y_MILLING=FALSE 19 | :MAXIMUM_LINE=100 20 | :SINGLE_MACROS=YES 21 | :MULT_MACROS=NO 22 | :LAYOUT_MACROS=NO 23 | :MACROS_CALL=BEFORE 24 | :MACROS_MULT=AFTER 25 | :MACROS_LAYOUT=BEFORE 26 | :MACROS_MAIN=AFTER 27 | :MACROS_OUT=CALLED 28 | :MACROS_TAPE=SAME 29 | :MACROS_XYZ=TRUE 30 | :MACROS_ROTATE=TRUE 31 | :MACRO_ROTATE_X=TRUE 32 | :MACRO_ROTATE_Y=FALSE 33 | :MACRO_ROTATE_Z=FALSE 34 | *----------------------------------- 35 | :ATTRNAME=MACHINE NAME 36 | :ATTRTYPE=DESCRIPTOR 37 | :ATTRVTYPE=CHARACTER 38 | :ATTRSEL=N 39 | :ATTRINLEN=60 40 | :ATTRSHORT=Machine Name 41 | :ATTRDEFAULT=Buildbotics 42 | :CODETYPE=FORMAT 43 | :WORD_ADDRESS_BEF=|(|MACHINE= 44 | :WORD_ADDRESS_AFT=|) 45 | :LEFT_PLACES=0 46 | :RIGHT_PLACES=0 47 | :UNITFLAG=NON_CONVERT 48 | :ATTRUSED=1 49 | :ATTREND 50 | *----------------------------------- 51 | :ATTRNAME=CONTROLLER TYPE 52 | :ATTRTYPE=DESCRIPTOR 53 | :ATTRVTYPE=CHARACTER 54 | :ATTRSEL=N 55 | :ATTRINLEN=60 56 | :ATTRSHORT=Controller Type 57 | :ATTRDEFAULT=Buildbotics 58 | :CODETYPE=FORMAT 59 | :WORD_ADDRESS_BEF=|(|CONTROLLER= 60 | :WORD_ADDRESS_AFT=|) 61 | :LEFT_PLACES=0 62 | :RIGHT_PLACES=0 63 | :UNITFLAG=NON_CONVERT 64 | :ATTRUSED=1 65 | :ATTREND 66 | *----------------------------------- 67 | :ATTRNAME=MILL Z HOME 68 | :ATTRTYPE=DESCRIPTOR 69 | :ATTRVTYPE=DECIMAL 70 | :ATTRSEL=N 71 | :ATTRINLEN=3 72 | :ATTRSHORT=Z Home 73 | :ATTRDEFAULT=20 74 | :ATTREND 75 | *----------------------------------- 76 | :ATTRNAME=TRAVERSE RATE 77 | :ATTRTYPE=DESCRIPTOR 78 | :ATTRVTYPE=DECIMAL 79 | :ATTRSEL=N 80 | :ATTRINLEN=10 81 | :ATTRSHORT=Traverse Rate 82 | :ATTRDEFAULT=250 83 | :ATTREND 84 | *----------------------------------- 85 | :ATTRNAME=SYS LICENSE 86 | :ATTRTYPE=DESCRIPTOR 87 | :ATTRVTYPE=CHARACTER 88 | :ATTRSEL=N 89 | :ATTRINLEN=60 90 | :ATTRSHORT=System License Number 91 | :ATTRDEFAULT= 92 | :CODETYPE=FORMAT 93 | :WORD_ADDRESS_BEF=|(|SYSTEM|LICENSE|NUMBER= 94 | :WORD_ADDRESS_AFT=|) 95 | :LEFT_PLACES=0 96 | :RIGHT_PLACES=0 97 | :UNITFLAG=NON_CONVERT 98 | :ATTRUSED=1 99 | :ATTREND 100 | *----------------------------------- 101 | :ATTRNAME=SYS EXPIRATION DATE 102 | :ATTRTYPE=DESCRIPTOR 103 | :ATTRVTYPE=CHARACTER 104 | :ATTRSEL=N 105 | :ATTRINLEN=60 106 | :ATTRSHORT=System License Expiration Date 107 | :ATTRDEFAULT= 108 | :CODETYPE=FORMAT 109 | :WORD_ADDRESS_BEF=|(|SYSTEM|LICENSE|EXPIRATION|DATE= 110 | :WORD_ADDRESS_AFT=|) 111 | :LEFT_PLACES=0 112 | :RIGHT_PLACES=0 113 | :UNITFLAG=NON_CONVERT 114 | :ATTRUSED=1 115 | :ATTREND 116 | *----------------------------------- 117 | :LIBRARY=.\SW_BUILDBOTICS_POST.LIB 118 | :LIBRARY=..\..\CAMWorksData\UPG\MasterLibraryFiles\MILL.LIB 119 | *----------------------------------- 120 | :ATTRNAME=attachable 121 | :ATTRTYPE=LIST 122 | :ATTRSEL=N 123 | :ATTRTITLE=Attachable 124 | :ATTRLIST=program stop 125 | :ATTRLISTDEF=1 126 | :ATTRLIST=optional stop 127 | :ATTRLISTDEF=1 128 | :ATTRUSED=1 129 | :ATTRDEFAULT=1 130 | :ATTREND 131 | *----------------------------------- 132 | :ATTRNAME=setup 133 | :ATTRTYPE=LIST 134 | :ATTRSEL=N 135 | :ATTRTITLE=Setup 136 | :ATTRLIST=thickness 137 | :ATTRLISTDEF=.125 138 | :ATTRUSED=1 139 | :ATTRDEFAULT=1 140 | :ATTREND 141 | *----------------------------------- 142 | :OPERID=MILL_DRILLING 143 | :OPERSUB=DRILLING 144 | :OPEREND 145 | *----------------------------------- 146 | :OPERID=MILL_DRILLING 147 | :OPERSUB=SPOT_DRILLING 148 | :OPEREND 149 | *----------------------------------- 150 | :OPERID=MILL_DRILLING 151 | :OPERSUB=PECKING 152 | :OPEREND 153 | *----------------------------------- 154 | :OPERID=MILL_DRILLING 155 | :OPERSUB=TAPPING 156 | :OPEREND 157 | *----------------------------------- 158 | :OPERID=MILL_DRILLING 159 | :OPERSUB=BORING 160 | :OPEREND 161 | *----------------------------------- 162 | :OPERID=MILL_DRILLING 163 | :OPERSUB=HIGH_SPEED_PECKING 164 | :OPEREND 165 | *----------------------------------- 166 | :OPERID=MILL_DRILLING 167 | :OPERSUB=VARIABLE_PECKING 168 | :OPEREND 169 | *----------------------------------- 170 | :OPERID=MILL_DRILLING 171 | :OPERSUB=REVERSE_TAPPING 172 | :OPEREND 173 | *----------------------------------- 174 | :OPERID=MILL_DRILLING 175 | :OPERSUB=REAMING 176 | :OPEREND 177 | *----------------------------------- 178 | :OPERID=MILL_DRILLING 179 | :OPERSUB=REAMING_DWELL 180 | :OPEREND 181 | *----------------------------------- 182 | :OPERID=MILL_DRILLING 183 | :OPERSUB=BORE_DWELL 184 | :OPEREND 185 | *----------------------------------- 186 | :OPERID=MILL_DRILLING 187 | :OPERSUB=BACK_BORING 188 | :OPEREND 189 | *----------------------------------- 190 | :OPERID=MILL_DRILLING 191 | :OPERSUB=FINE_BORING 192 | :OPEREND 193 | *----------------------------------- 194 | :OPERID=MILL_LACE 195 | :OPERLIST=abs inc 196 | :OPERLIST=work coord 197 | :OPEREND 198 | *----------------------------------- 199 | :OPERID=MILL_POCKET 200 | :OPERLIST=abs inc 201 | :OPERLIST=work coord 202 | :OPEREND 203 | *----------------------------------- 204 | :OPERID=MILL_PROFILING 205 | :OPERLIST=abs inc 206 | :OPERLIST=work coord 207 | :OPEREND 208 | *----------------------------------- 209 | :OPERID=MILL_MISC 210 | :OPERLIST=abs inc 211 | :OPERLIST=work coord 212 | :OPEREND 213 | *----------------------------------- 214 | :OPERID=MILL_UV_CUT 215 | :OPERLIST=abs inc 216 | :OPERLIST=work coord 217 | :OPEREND 218 | *----------------------------------- 219 | :OPERID=MILL_SLICE_CUT 220 | :OPERLIST=abs inc 221 | :OPERLIST=work coord 222 | :OPEREND 223 | *----------------------------------- 224 | :OPERID=MILL_ROUGH_CUT 225 | :OPERLIST=abs inc 226 | :OPERLIST=work coord 227 | :OPEREND 228 | *----------------------------------- 229 | :OPERID=MILL_CURVE_CUT 230 | :OPERLIST=abs inc 231 | :OPERLIST=work coord 232 | :OPEREND 233 | *----------------------------------- 234 | :OPERID=MILL_TOPO_CUT 235 | :OPERLIST=abs inc 236 | :OPERLIST=work coord 237 | :OPEREND 238 | *----------------------------------- 239 | :OPERID=MILL_FREEFORM_CUT 240 | :OPERLIST=abs inc 241 | :OPERLIST=work coord 242 | :OPEREND 243 | *----------------------------------- 244 | :OPERID=MILL_PENCIL_CUT 245 | :OPERLIST=abs inc 246 | :OPERLIST=work coord 247 | :OPEREND 248 | *----------------------------------- 249 | :OPERID=MILL_MACRO 250 | :OPEREND 251 | *------------------------------ 252 | :SECTION=START_OF_TAPE 253 | :T: 254 | *:T: 255 | * 256 | :SECTION=INIT_TOOL_CHANGE_MILL 257 | :T: 258 | :T: (Stop Spindle) 259 | :T: 260 | :T: 261 | :T: 262 | :T: P<%:10> * 263 | *:SECTION=INIT_PRELOAD_TOOL_CHANGE_MILL 264 | * 265 | *:SECTION=INIT_PRELOAD_TOOL_CHANGE_MILL 266 | * 267 | :SECTION=SUB_TOOL_CHANGE_MILL 268 | :T: 269 | :T: (Stop Spindle) 270 | :T: 271 | :T: 272 | :T: 273 | :T: P<%:10> * 274 | *:SECTION=SUB_PRELOAD_TOOL_CHANGE_MILL 275 | * 276 | *:SECTION=SUB_PRELOAD_TOOL_CHANGE_MILL 277 | * 278 | :SECTION=FIRST_RAPID_Z_MOVE_DOWN_MILL 279 | :T: 280 | * 281 | *:SECTION=FIRST_RAPID_Z_PRELOAD_DOWN_MILL 282 | * 283 | *:SECTION=FIVE_AXIS_FIRST_RAPID_Z_DOWN 284 | * 285 | :SECTION=RAPID_Z_MOVE_DOWN_MILL 286 | :T: 287 | * 288 | *:SECTION=FIVE_AXIS_RAPID_Z_MOVE_DOWN 289 | * 290 | :SECTION=RAPID_Z_MOVE_UP_MILL 291 | :T: 292 | * 293 | *:SECTION=FIVE_AXIS_RAPID_Z_MOVE_UP 294 | * 295 | :SECTION=LAST_RAPID_Z_MOVE_UP_MILL 296 | :T: 297 | * 298 | *:SECTION=FIVE_AXIS_LAST_RAPID_Z_MOVE_UP 299 | * 300 | *:SECTION=RAPID_FROM_TOOL_CHANGE_MILL 301 | * 302 | *:SECTION=RAPID_LEADIN_FROM_TOOL_CHANGE_MILL 303 | * 304 | *:SECTION=FIVE_AXIS_RAPID_FROM_T_CHANGE 305 | * 306 | :SECTION=RAPID_MOVE_MILL 307 | :T: 308 | :T: 309 | * 310 | :SECTION=RAPID_LEADIN_MOVE_MILL 311 | :T: 312 | :T: 313 | *:T:LEADIN=<%:LEADIN> 314 | * 315 | :SECTION=RAPID_LEADOUT_MOVE_MILL 316 | :T: 317 | * 318 | *:SECTION=FIVE_AXIS_RAPID_MOVE_MILL 319 | * 320 | *:SECTION=RAPID_TO_TOOL_CHANGE_MILL 321 | * 322 | *:SECTION=RAPID_LEADOUT_TO_TOOL_CHANGE_MILL 323 | * 324 | *:SECTION=FIVE_AXIS_RAPID_TO_T_CHANGE 325 | * 326 | :SECTION=FEED_Z_MOVE_DOWN_MILL 327 | :T: 328 | * 329 | *:SECTION=FIVE_AXIS_FEED_Z_MOVE_DOWN 330 | * 331 | :SECTION=LINE_LEADIN_MOVE_MILL 332 | :T: 333 | * 334 | :SECTION=LINE_MOVE_MILL 335 | :T: 336 | * 337 | *:SECTION=FASTLINE 338 | * 339 | *:SECTION=FIVE_AXIS_LINE_MOVE_MILL 340 | * 341 | :SECTION=LINE_LEADOUT_MOVE_MILL 342 | :T: 343 | * 344 | :SECTION=ARC_MOVE_MILL 345 | :T: 346 | * 347 | :SECTION=RADIUS_MOVE_MILL 348 | :T: 349 | * 350 | *:SECTION=DRILL_POSITION 351 | * 352 | :SECTION=DRILLING_CYCLE 353 | :T: 354 | * 355 | :SECTION=SPOT_DRILLING_CYCLE 356 | :T: P<%:(dwell*1)> 357 | * 358 | :SECTION=PECKING_CYCLE 359 | :T: 360 | * 361 | :SECTION=VARIABLE_PECKING_CYCLE 362 | :T: 363 | * 364 | :SECTION=TAPPING_CYCLE 365 | :T: 366 | * 367 | *:SECTION=RIGID_TAPPING_CYCLE 368 | * 369 | :SECTION=REAMING_CYCLE 370 | :T: 371 | * 372 | :SECTION=BORING_CYCLE 373 | :T: 374 | * 375 | :SECTION=BACK_BORING_CYCLE 376 | :T: Q<#:shift_amount> 377 | * 378 | :SECTION=BORE_DWELL_CYCLE 379 | :T: P<%:(dwell*1)> 380 | * 381 | :SECTION=REAM_DWELL_CYCLE 382 | :T: P<%:(dwell*1)> 383 | * 384 | :SECTION=HIGH_SPEED_PECK_CYCLE 385 | :T: 386 | * 387 | :SECTION=REVERSE_TAPPING_CYCLE 388 | :T: 389 | * 390 | *:SECTION=RIGID_REVERSE_TAPPING_CYCLE 391 | * 392 | :SECTION=FINE_BORING_CYCLE 393 | :T: Q<#:shift_amount> 394 | * 395 | *:SECTION=PAT_DRILLING_CYCLE 396 | * 397 | *:SECTION=PAT_SPOT_DRILLING_CYCLE 398 | * 399 | *:SECTION=PAT_PECKING_CYCLE 400 | * 401 | *:SECTION=PAT_VARIABLE_PECKING_CYCLE 402 | * 403 | *:SECTION=PAT_TAPPING_CYCLE 404 | * 405 | *:SECTION=PAT_RIGID_TAPPING_CYCLE 406 | * 407 | *:SECTION=PAT_REAMING_CYCLE 408 | * 409 | *:SECTION=PAT_BORING_CYCLE 410 | * 411 | *:SECTION=PAT_BACK_BORING_CYCLE 412 | * 413 | *:SECTION=PAT_BORE_DWELL_CYCLE 414 | * 415 | *:SECTION=PAT_REAM_DWELL_CYCLE 416 | * 417 | *:SECTION=PAT_HIGH_SPEED_PECKING_CYCLE 418 | * 419 | *:SECTION=PAT_REVERSE_TAPPING_CYCLE 420 | * 421 | *:SECTION=PAT_RIGID_REVERSE_TAPPING_CYCLE 422 | * 423 | *:SECTION=PAT_FINE_BORING_CYCLE 424 | * 425 | *:SECTION=ARC_PATTERN 426 | * 427 | *:SECTION=BOLT_HOLE_PATTERN 428 | * 429 | *:SECTION=GRID_X_PATTERN 430 | * 431 | *:SECTION=GRID_Y_PATTERN 432 | * 433 | *:SECTION=SQUARE_X_PATTERN 434 | * 435 | *:SECTION=SQUARE_Y_PATTERN 436 | * 437 | :SECTION=CONTINUE_DRILL_CYCLE 438 | :T: 439 | * 440 | :SECTION=DRILL_AT_ANGLE 441 | *:T:OPR_TYPE=<"%2T":OPR_TYPE> 442 | :T: L<%:((NUM_HITS-1)-SKIP_1ST_HIT)> 443 | * 444 | :SECTION=CANCEL_DRILL_CYCLE 445 | :T: 446 | * 447 | :SECTION=END_DRILL_CYCLE 448 | :T: 449 | * 450 | :SECTION=PROGRAM_STOP 451 | :T: 452 | * 453 | :SECTION=ABSOLUTE_PRESET 454 | :T: 455 | * 456 | :SECTION=BEG_MACRO_MILL 457 | :T:O<"%4LT":(program_number+CURRENT_MACRO_NUMBER)> 458 | * 459 | :SECTION=END_MACRO_MILL 460 | :T: 461 | :T: 462 | * 463 | :SECTION=MACRO_CALL_MILL 464 | :T: 465 | :T: 466 | :T: P<"%4LT":(program_number+CURRENT_MACRO_NUMBER)> 467 | * 468 | *:SECTION=MACRO_RAPID_CALL_MILL 469 | * 470 | *:SECTION=MACRO_FIRST_RAPID_CALL_MILL 471 | * 472 | :SECTION=MACRO_ROTATE_CALL_MILL 473 | :T: 474 | :T: 475 | :T: P<"%4LT":(program_number+CURRENT_MACRO_NUMBER)> 476 | * 477 | *:SECTION=MACRO_ROTATE_FIRST_RAPID_CALL_MILL 478 | * 479 | *:SECTION=MACRO_ROTATE_RAPID_CALL_MILL 480 | * 481 | *:SECTION=MACRO_CALL_WORK_COORD_MILL 482 | * 483 | *:SECTION=MACRO_CALL_WORK_COORD_FIRST_RAPID 484 | * 485 | *:SECTION=MACRO_CALL_WORK_COORD_RAPID 486 | * 487 | :SECTION=OFFSET_PART 488 | :T: 489 | :T: 490 | * 491 | :SECTION=OFFSET_ROTATE_PART 492 | :T: 493 | :T: 494 | * 495 | :SECTION=OFFSET_X 496 | :T: 497 | :T: 498 | * 499 | :SECTION=OFFSET_ROTATE_X 500 | :T: 501 | :T: 502 | * 503 | :SECTION=OFFSET_Y 504 | :T: 505 | :T: 506 | * 507 | :SECTION=OFFSET_ROTATE_Y 508 | :T: 509 | :T: 510 | * 511 | :SECTION=ROTATE_X 512 | :T: A<"#3.3N":ROTATE_ANGLE_X> 513 | * 514 | :SECTION=ROTATE_Y 515 | :T: B<"#3.3N":ROTATE_ANGLE_Y> 516 | * 517 | :SECTION=ROTATE_Z 518 | :T: C<"#3.3N":ROTATE_ANGLE_Z> 519 | * 520 | :SECTION=RESET_X 521 | :T: A0 522 | * 523 | :SECTION=RESET_Y 524 | :T: B0 525 | * 526 | :SECTION=RESET_Z 527 | :T: C0 528 | * 529 | :SECTION=END_OF_TAPE 530 | :T: 531 | :T: 532 | * 533 | *:SECTION=END_OF_TAPE_PRELOAD 534 | * 535 | :SECTION=OUTPUT_OPER_COMMENT 536 | :T: 537 | * 538 | :SECTION=BEFORE_ATTRIBUTES 539 | :T: 540 | :T: 541 | * 542 | :SECTION=AFTER_ATTRIBUTES 543 | :T: 544 | :T: 545 | * 546 | :SECTION=program_stop 547 | :T: 548 | * 549 | :SECTION=optional_stop 550 | :T: 551 | * 552 | :SECTION=SETUP_SHEET_MILL 553 | :T: 554 | :T: 555 | :T: 556 | :T: 557 | :T: 558 | :T: 559 | * 560 | :SECTION=OUTPUT_ESTIMATED_TIME 561 | :T: 562 | * 563 | :SECTION=CALC_POST_INITIALIZE 564 | :C: IF SECTIONEXIST(FIVE_AXIS_LINE_MOVE_MILL) THEN 565 | :C: CALL(CALC_RESET_REGISTERS) 566 | :C: CALL(CALC_RESET_FIVE_AXIS_REGISTERS) 567 | :C: ENDIF 568 | * 569 | :SECTION=CALC_INITIALIZE 570 | :C: CALL(CALC_INIT_GCODES) 571 | :C: CALL(CALC_INIT_MCODES) 572 | :C: CALL(CALC_INIT_CODES) 573 | :C: CALL(CALC_RESET_REGISTERS) 574 | :C: CALL(CALC_ENGMET) 575 | :C: CALL(CALC_ROUNDING_POINT) 576 | * 577 | :SECTION=CALC_INIT_CODES 578 | :C: DEFINING_MACRO=NO 579 | :C: OFFSET_RESIDENT=NO 580 | :C: SEQ=1 581 | :C: SEQ_INCREMENT=1 582 | :C: MAX_SEQUENCE=9999 583 | :C: WORK_COORD_CONFIG=NO 584 | :C: END_OF_TAPE_PRELOAD=NO 585 | :C: NO_SMALL_ARC=NO 586 | :C: ARC_ROUNDING_POINT=.00005 587 | :C: HOLD_Z_DOWN_FLAG=0 588 | :C: LAST_PRELOAD=0 589 | :C: SEQ_CONFIG=0 590 | :C: AIC=1 591 | :C: COMP_OFFSET=0 592 | :C: FEEDTYPE=1 593 | :C: MULTIAXIS_TYPE=0 594 | :C: ROTATION_DIRECTION=0 595 | * 596 | :SECTION=CALC_RESET_REGISTERS 597 | :C: MACH(REG_X)=0 PREV(REG_X)=0 598 | :C: MACH(REG_Y)=0 PREV(REG_Y)=0 599 | :C: MACH(REG_Z)=MILL_Z_HOME PREV(REG_Z)=MILL_Z_HOME 600 | :C: MACH(REG_F)=0 601 | :C: MACH(REG_G)=0 602 | :C: MACH(REG_S)=0 603 | :C: MACH(REG_T)=0 604 | :C: M_GROUP(MG(M_COOL_OFF))=0 605 | :C: M_GROUP(MG(M_SPIN_STOP))=0 606 | :C: G_GROUP(GG(G_ABS))=0 607 | :C: G_GROUP(GG(G_ENGLISH))=0 608 | :C: G_GROUP(GG(G_LINE))=999 609 | :C: G_GROUP(GG(G_COMP_OFF))=GC(G_COMP_OFF) 610 | :C: G_GROUP(GG(G_WORK_1))=0 611 | * 612 | :SECTION=CALC_RESET_FIVE_AXIS_REGISTERS 613 | * 614 | :C: IF SECTIONEXIST(FIVE_AXIS_LINE_MOVE_MILL) THEN 615 | :C: ROTATE_TILT=RT_THX 616 | :C: ARM_LEN=0 617 | :C: HEAD_LEN=0 618 | :C: ENDIF 619 | *----------------------------------- 620 | :SECTION=CALC_INIT_GCODES 621 | *----------------------------------------------------------------------------* 622 | * G Code Definition G Group Definition G Modal Definition * 623 | *----------------------------------------------------------------------------* 624 | :C: GC(G_RAPID) = 0 GG(G_RAPID) = 1 GM(G_RAPID) = YES 625 | :C: GC(G_LINE) = 1 GG(G_LINE) = 1 GM(G_LINE) = YES 626 | :C: GC(G_CW_ARC) = 2 GG(G_CW_ARC) = 1 GM(G_CW_ARC) = YES 627 | :C: GC(G_CCW_ARC) = 3 GG(G_CCW_ARC) = 1 GM(G_CCW_ARC) = YES 628 | :C: GC(G_DWELL) = 4 GG(G_DWELL) = 0 GM(G_DWELL) = NO 629 | :C: GC(G_XY_PLANE) = 17 GG(G_XY_PLANE) = 2 GM(G_XY_PLANE) = YES 630 | :C: GC(G_ZX_PLANE) = 18 GG(G_ZX_PLANE) = 2 GM(G_ZX_PLANE) = YES 631 | :C: GC(G_YZ_PLANE) = 19 GG(G_YZ_PLANE) = 2 GM(G_YZ_PLANE) = YES 632 | :C: GC(G_ENGLISH) = 20 GG(G_ENGLISH) = 2 GM(G_ENGLISH) = YES 633 | :C: GC(G_METRIC) = 21 GG(G_METRIC) = 2 GM(G_METRIC) = YES 634 | :C: GC(G_HOME) = 28 GG(G_HOME) = 0 GM(G_HOME) = NO 635 | :C: GC(G_COMP_OFF) = 40 GG(G_COMP_OFF) = 7 GM(G_COMP_OFF) = YES 636 | :C: GC(G_COMP_LEFT) = 41 GG(G_COMP_LEFT) = 7 GM(G_COMP_LEFT) = YES 637 | :C: GC(G_COMP_RIGHT) = 42 GG(G_COMP_RIGHT) = 7 GM(G_COMP_RIGHT) = YES 638 | :C: GC(G_LEN_COMP) = 43 GG(G_LEN_COMP) = 8 GM(G_LEN_COMP) = NO 639 | :C: GC(G_LEN_CANCEL) = 49 GG(G_LEN_CANCEL) = 8 GM(G_LEN_CANCEL) = NO 640 | :C: GC(G_WORK_1) = 54 GG(G_WORK_1) = 12 GM(G_WORK_1) = YES 641 | :C: GC(G_WORK_2) = 55 GG(G_WORK_2) = 12 GM(G_WORK_2) = YES 642 | :C: GC(G_WORK_3) = 56 GG(G_WORK_3) = 12 GM(G_WORK_3) = YES 643 | :C: GC(G_WORK_4) = 57 GG(G_WORK_4) = 12 GM(G_WORK_4) = YES 644 | :C: GC(G_WORK_5) = 58 GG(G_WORK_5) = 12 GM(G_WORK_5) = YES 645 | :C: GC(G_WORK_6) = 59 GG(G_WORK_6) = 12 GM(G_WORK_6) = YES 646 | :C: GC(G_VARIABLE_PECK)= 83 GG(G_VARIABLE_PECK)= 9 GM(G_VARIABLE_PECK)= YES 647 | :C: GC(G_HIGH_PECK) = 73 GG(G_HIGH_PECK) = 9 GM(G_HIGH_PECK) = YES 648 | :C: GC(G_REVERSE_TAP) = 74 GG(G_REVERSE_TAP) = 9 GM(G_REVERSE_TAP) = YES 649 | :C: GC(G_FINE_BORE) = 76 GG(G_FINE_BORE) = 9 GM(G_FINE_BORE) = YES 650 | :C: GC(G_CANCEL_CYC) = 80 GG(G_CANCEL_CYC) = 9 GM(G_CANCEL_CYC) = YES 651 | :C: GC(G_DRILL) = 81 GG(G_DRILL) = 9 GM(G_DRILL) = YES 652 | :C: GC(G_SPOT_DRILL) = 82 GG(G_SPOT_DRILL) = 9 GM(G_SPOT_DRILL) = YES 653 | :C: GC(G_PECK) = 83 GG(G_PECK) = 9 GM(G_PECK) = YES 654 | :C: GC(G_TAP) = 84 GG(G_TAP) = 9 GM(G_TAP) = YES 655 | :C: GC(G_REAM) = 85 GG(G_REAM) = 9 GM(G_REAM) = YES 656 | :C: GC(G_BORE) = 86 GG(G_BORE) = 9 GM(G_BORE) = YES 657 | :C: GC(G_BACK_BORE) = 87 GG(G_BACK_BORE) = 9 GM(G_BACK_BORE) = YES 658 | :C: GC(G_BORE_DWELL) = 88 GG(G_BORE_DWELL) = 9 GM(G_BORE_DWELL) = YES 659 | :C: GC(G_REAM_DWELL) = 89 GG(G_REAM_DWELL) = 9 GM(G_REAM_DWELL) = YES 660 | :C: GC(G_ABS) = 90 GG(G_ABS) = 3 GM(G_ABS) = YES 661 | :C: GC(G_INC) = 91 GG(G_INC) = 3 GM(G_INC) = YES 662 | :C: GC(G_PRESET) = 92 GG(G_PRESET) = 0 GM(G_PRESET) = NO 663 | :C: GC(G_INIT_PLANE) = 98 GG(G_INIT_PLANE) = 0 GM(G_INIT_PLANE) = NO 664 | :C: GC(G_R_PLANE) = 99 GG(G_R_PLANE) = 0 GM(G_R_PLANE) = NO 665 | * 666 | *----------------------------------- 667 | :SECTION=CALC_INIT_MCODES 668 | *----------------------------------------------------------------------------* 669 | * M Code M Group M Modal * 670 | *----------------------------------------------------------------------------* 671 | :C: MC(M_STOP) = 0 MG(M_STOP) = 0 MM(M_STOP) = NO 672 | :C: MC(M_OPT_STOP) = 1 MG(M_OPT_STOP) = 0 MM(M_OPT_STOP) = NO 673 | :C: MC(M_PROG_END) = 2 MG(M_PROG_END) = 0 MM(M_PROG_END) = NO 674 | :C: MC(M_SPIN_CW) = 3 MG(M_SPIN_CW) = 1 MM(M_SPIN_CW) = YES 675 | :C: MC(M_SPIN_CCW) = 4 MG(M_SPIN_CCW) = 1 MM(M_SPIN_CCW) = YES 676 | :C: MC(M_SPIN_STOP) = 5 MG(M_SPIN_STOP) = 1 MM(M_SPIN_STOP) = YES 677 | :C: MC(M_TOOL_CHANGE) = 6 MG(M_TOOL_CHANGE) = 0 MM(M_TOOL_CHANGE) = NO 678 | :C: MC(M_COOL_MIST) = 7 MG(M_COOL_MIST) = 2 MM(M_COOL_MIST) = YES 679 | :C: MC(M_COOL_FLOOD) = 8 MG(M_COOL_FLOOD) = 2 MM(M_COOL_FLOOD) = YES 680 | :C: MC(M_COOL_OFF) = 9 MG(M_COOL_OFF) = 2 MM(M_COOL_OFF) = YES 681 | :C: MC(M_CW_FLOOD) = 13 MG(M_CW_FLOOD) = 1 MM(M_CW_FLOOD) = YES 682 | :C: MC(M_CCW_FLOOD) = 14 MG(M_CCW_FLOOD) = 1 MM(M_CCW_FLOOD) = YES 683 | :C: MC(M_ORIENT) = 19 MG(M_ORIENT) = 0 MM(M_ORIENT) = NO 684 | :C: MC(M_END_PROG) = 30 MG(M_END_PROG) = 0 MM(M_END_PROG) = NO 685 | :C: MC(M_COOL_THRU) = 50 MG(M_COOL_THRU) = 1 MM(M_COOL_THRU) = YES 686 | :C: MC(M_SUB_CALL) = 98 MG(M_SUB_CALL) = 0 MM(M_SUB_CALL) = NO 687 | :C: MC(M_SUB_END) = 99 MG(M_SUB_END) = 0 MM(M_SUB_END) = NO 688 | * 689 | *START COMMENTS 690 | 691 | *END COMMENTS 692 | -------------------------------------------------------------------------------- /BobCAD/Buildbotics_OEM_3x_Mill.BCPst: -------------------------------------------------------------------------------- 1 | // Mill 2 | //--------------------------------------------------------------------- 3 | //--------------------------------------------------------------------- 4 | //--BobCAD-CAM Mill Post Processor ------------------------------------ 5 | //--------------------------------------------------------------------- 6 | //-- Initial Software Version: BobCAD-CAM V33 7 | //-- Initial Creation Date: 12-03-2020 8 | //-- Author: MH 9 | //-- Controller: Buildbotics (v0.4.15) 10 | //--------------------------------------------------------------------- 11 | //--------------------------------------------------------------------- 12 | //--REVISION LOG ------------------------------------------------------ 13 | //--------------------------------------------------------------------- 14 | //-- 10/29/2020 - MH 15 | //-- 1) Initial post-processor creation for V33 16 | //-- 2) Disabled fine boring, back boring, tapping, and peck drilling 17 | //-- (G83) cycles 18 | //-- 3) Arc center format is set to radius and arcs are broken into 19 | //-- quadrants 20 | //--------------------------------------------------------------------- 21 | //--------------------------------------------------------------------- 22 | //--SPECIAL NOTES ABOUT THIS POST AND MACHINE ------------------------- 23 | //--------------------------------------------------------------------- 24 | //-- 12/30/2020 - MH 25 | //-- 1) This machine doesn't accept cutter dimater compensation codes 26 | //-- (G41/G42) so variable "cc" was removed from blocks 56 and 57 27 | //--------------------------------------------------------------------- 28 | 29 | ****Version Number MONTH DAY YEAR**** 30 | 1000. Version Information = Version Month Day Year? "11.0 10 29 2020" 31 | 32 | 0. File header 33 | n,measure_mode 34 | n,"(FILE: ",single_quote,prog_name,single_quote,")" 35 | n,"G91.1" 36 | 37 | 1. Start of file programmed zero 38 | 39 | 2. Start of file Standard 40 | n,force_feed_rate_on,feed_rate,force_feed_rate_off 41 | n,movement_mode 42 | n,spindle_on,s 43 | n,"M6",t 44 | output_primary_rotary_index 45 | output_secondary_rotary_index 46 | n,force_x,force_y,rapid_move,xr,yr,p_rot,s_rot 47 | n,force_z,rapid_move,zr 48 | 49 | 3. Tool change 50 | n,force_feed_rate_on,feed_rate,force_feed_rate_off 51 | n,movement_mode 52 | n,spindle_on,s 53 | n,"M6",t 54 | output_primary_rotary_index 55 | output_secondary_rotary_index 56 | n,force_x,force_y,rapid_move,xr,yr,p_rot,s_rot 57 | n,force_z,rapid_move,zr 58 | 59 | 4. Null tool change 60 | n,force_feed_rate_on,feed_rate,force_feed_rate_off 61 | n,movement_mode 62 | //n,spindle_on,s 63 | //n,"M6",t 64 | output_primary_rotary_index 65 | output_secondary_rotary_index 66 | n,force_x,force_y,rapid_move,xr,yr,p_rot,s_rot 67 | n,force_z,rapid_move,zr 68 | 69 | 5. End of file for non-zero tool 70 | n,end_of_file 71 | 72 | 7. Sub program call 73 | n,sub_call,sub_num,comment_start,"SUBPROGRAM CALL",comment_end 74 | 75 | 8. Sub definition 76 | sub_num_with_prefix,sub_comment 77 | 78 | 9. Sub program return 79 | n,sub_return,comment_start,"SUBPROGRAM RETURN",comment_end 80 | 81 | 10. Rotary axis index string 82 | n,rapid_move,primary_rotary_angle_output 83 | 84 | 11. Cancel cutter compensation 85 | "G40" 86 | 87 | 12. Cutter compensation left 88 | "G41" 89 | 90 | 13. Cutter compensation right 91 | "G42" 92 | 93 | 14. Tool length compensation 94 | 95 | 15. First Machine Setup 96 | 97 | 16. Machine Setup Change 98 | comment_start,"NEXT MACHINE SETUP - ",setup_name,comment_end 99 | 100 | 17.Second_Rotary axis index string 101 | n,rapid_move,secondary_rotary_angle_output 102 | 103 | 18.Third_Rotary axis index string 104 | 105 | 19. End of Operation. 106 | 107 | 20. Spindle speed low range 108 | "M41","(LOW RANGE SPINDLE)" 109 | 110 | 21. Spindle speed high range 111 | "M42","(HIGH RANGE SPINDLE)" 112 | 113 | 22. Rigid tapping start. 114 | 115 | 23. Rigid tapping end. 116 | 117 | 24. File trailer. 118 | 119 | 25. Format for offset when using offset registers. 120 | 121 | 26. Set debug. 122 | debug_off 123 | 124 | 27. First Rapid Move. 125 | n,rapid_move,zr 126 | 127 | 28. Rapid Move. 128 | n,rapid_move,zr 129 | 130 | 30. Initial positioning code for operation not on transform plane 131 | 132 | 31. Initial positioning code for operation on transform plane 133 | 134 | 32. End code for operation not on transform plane 135 | 136 | 33. End code for operation on transform plane 137 | 138 | 39. Part Number. 139 | 140 | 40. Start of 2axis contour. 141 | 142 | 41. End of contour. 143 | 144 | 45. 5 axis tool length compensation 145 | 146 | 50. Line first rapid move Z. 147 | n,rapid_move,zr,p_rot,s_rot 148 | 149 | 51. Line feed move Z.G41 150 | n,feed_move,z_f,p_rot,s_rot 151 | 152 | 52. Line rapid move XY. 153 | n,rapid_move,xr,yr,p_rot,s_rot 154 | 155 | 53. Line feed move XY. 156 | n,feed_move,x_f,y_f,p_rot,s_rot 157 | 158 | 54. Line rapid move XYZ. 159 | n,rapid_move,xr,yr,zr,p_rot,s_rot 160 | 161 | 55. Line feed move XYZ. 162 | n,feed_move,x_f,y_f,z_f,p_rot,s_rot 163 | 164 | 56. Line feed move XY on Leadin. 165 | n,feed_move,x_f,y_f 166 | 167 | 57. Line feed move XY on Leadout. 168 | n,feed_move,x_f,y_f 169 | 170 | 64. Arc move XY. 171 | n,g_arc_plane,g_arc_move,x_f,y_f,z_f,arc_center 172 | 173 | 65. Arc move YZ. 174 | n,g_arc_plane,g_arc_move,y_f,z_f,x_f,arc_center 175 | 176 | 66. Arc move XZ. 177 | n,g_arc_plane,g_arc_move,z_f,x_f,y_f,arc_center 178 | 179 | 71. End of 2axis cutting. 180 | 181 | 73. High speed peck drill canned cycle. 182 | n,g98_g99,g_canned_cycle,x_f,y_f,drill_depth,reference_plane,program_block_1 183 | 184 | 74. Left handed tapping canned cycle. 185 | n,g98_g99,g_canned_cycle,x_f,y_f,drill_depth,reference_plane 186 | 187 | 76. Fine boring canned cycle. 188 | n,g98_g99,g_canned_cycle,x_f,y_f,drill_depth,reference_plane,program_block_1,dwell 189 | 190 | 80. Drill canned cycle cancel. 191 | n,cancel_drill_cycle 192 | 193 | 81. Standard drill canned cycle. 194 | n,g98_g99,g_canned_cycle,x_f,y_f,drill_depth,reference_plane 195 | 196 | 82. Standard drill canned cycle with dwell. 197 | n,g98_g99,g_canned_cycle,x_f,y_f,drill_depth,reference_plane,dwell 198 | 199 | 83. Peck drill canned cycle. 200 | n,g98_g99,g_canned_cycle,x_f,y_f,drill_depth,reference_plane,program_block_1 201 | 202 | 84. Tapping canned cycle. 203 | n,g98_g99,g_canned_cycle,x_f,y_f,drill_depth,reference_plane 204 | 205 | 85. Boring cycle #1 canned cycle. 206 | n,g98_g99,g_canned_cycle,x_f,y_f,drill_depth,reference_plane 207 | 208 | 86. Boring cycle #2 canned cycle. 209 | n,g98_g99,g_canned_cycle,x_f,y_f,drill_depth,reference_plane 210 | 211 | 87. Back boring cycle canned cycle. 212 | n,g98_g99,g_canned_cycle,x_f,y_f,drill_depth,reference_plane,program_block_1,dwell 213 | 214 | 88. Boring cycle #1 canned cycle with dwell. 215 | n,g98_g99,g_canned_cycle,x_f,y_f,drill_depth,reference_plane,dwell 216 | 217 | 89. Boring cycle #2 canned cycle with dwell. 218 | n,g98_g99,g_canned_cycle,x_f,y_f,drill_depth,reference_plane,dwell 219 | 220 | 90. Canned cycle drill point format WITH SUBPROGRAMS. 221 | n,x_f,y_f,p_rot,s_rot 222 | 223 | 91. Canned cycle drill point format for standard drill canned cycle NO SUBPROGRAMS. 224 | n,x_f,y_f,p_rot,s_rot 225 | 226 | 92. Canned cycle drill point format for standard drill canned cycle with dwell NO SUBPROGRAMS. 227 | n,x_f,y_f,p_rot,s_rot 228 | 229 | 93. Canned cycle drill point format for peck drill canned cycle NO SUBPROGRAMS. 230 | n,x_f,y_f,p_rot,s_rot 231 | 232 | 94. Canned cycle drill point format for tapping canned cycle NO SUBPROGRAMS. 233 | n,x_f,y_f,p_rot,s_rot 234 | 235 | 95. Canned cycle drill point format for boring cycle #1 canned cycle NO SUBPROGRAMS. 236 | n,x_f,y_f,p_rot,s_rot 237 | 238 | 96. Canned cycle drill point format for boring cycle #2 canned cycle NO SUBPROGRAMS. 239 | n,x_f,y_f,p_rot,s_rot 240 | 241 | 97. Canned cycle drill point format for back boring cycle canned cycle NO SUBPROGRAMS. 242 | n,x_f,y_f,p_rot,s_rot 243 | 244 | 98. Canned cycle drill point format for boring cycle #1 canned cycle with dwell NO SUBPROGRAMS. 245 | n,x_f,y_f,p_rot,s_rot 246 | 247 | 99. Canned cycle drill point format for boring cycle #2 canned cycle with dwell NO SUBPROGRAMS. 248 | n,x_f,y_f,p_rot,s_rot 249 | 250 | 100. Absolute coordinate output. 251 | absolute_coord 252 | 253 | 101. Incremental coordinate output. 254 | incremental_coord 255 | 256 | 108. Rectangular stock format. 257 | "(SBOX","X",stock_min_x,"Y",stock_min_y,"Z",stock_min_z,"L",stock_length,"W",stock_width, "H",stock_height,")" 258 | 259 | 109. Rotary stock format. 260 | "(SCYL",rotation_axis,"X0","Y0","Z0",rotary_stock_diameter,rotary_stock_length,")" 261 | 262 | 110. Tool list format. 263 | "(MTOOL","T",list_tool_number,mtool_type,"D",tool_diameter,"H",tool_length,mtool_angle,mtool_corner_rad,"DIAM_OFFSET ",list_tool_number,"= ",tool_radius,")" 264 | 265 | 111. Rotary Rewind Before Tool Change Block. 266 | 267 | 113. Canned cycle drill point format for high speed peck drill canned cycle NO SUBPROGRAMS. 268 | n,x_f,y_f,p_rot,s_rot 269 | 270 | 114. Canned cycle drill point format for left handed tapping canned cycle NO SUBPROGRAMS. 271 | n,x_f,y_f,p_rot,s_rot 272 | 273 | 116. Canned cycle drill point format for fine boring canned cycle NO SUBPROGRAMS. 274 | n,x_f,y_f,p_rot,s_rot 275 | 276 | 152. Line rapid move XY. 277 | n,rapid_move,xr,p_rot,s_rot 278 | 279 | 153. Line feed move XY. 280 | n,feed_move,feed_mode,rotary_xy_f,p_rot,s_rot,feed_rate 281 | 282 | 154. Line rapid move XYZ. 283 | n,rapid_move,xr,p_rot,s_rot,zr 284 | 285 | 155. Line feed move XYZ. 286 | n,feed_move,feed_mode,rotary_xy_f,p_rot,s_rot,z_f,feed_rate 287 | 288 | 156. Line feed move XY on Leadin. 289 | n,cc,feed_move,feed_mode,rotary_xy_f,p_rot,s_rot,feed_rate 290 | 291 | 157. Line feed move XY on Leadout. 292 | n,cc,feed_move,feed_mode,rotary_xy_f,p_rot,s_rot,feed_rate 293 | 294 | 164. Arc move. 295 | n,g_arc_move,p_rot,s_rot,arc_center,feed_rate 296 | 297 | 170. High speed peck drill canned cycle. 298 | n,g98_g99,g_canned_cycle,rotary_xy_f,p_rot,s_rot,drill_depth,reference_plane,program_block_1,dwell 299 | 300 | 171. Left handed tapping canned cycle. 301 | rigid_tapping_start 302 | n,g98_g99,g_canned_cycle,rotary_xy_f,p_rot,s_rot,drill_depth,reference_plane 303 | 304 | 172. Fine boring canned cycle. 305 | n,g98_g99,g_canned_cycle,rotary_xy_f,p_rot,s_rot,drill_depth,reference_plane,program_block_1,dwell 306 | 307 | 173. Drill canned cycle cancel. 308 | 309 | 174. Standard drill canned cycle. 310 | n,g98_g99,g_canned_cycle,rotary_xy_f,p_rot,s_rot,drill_depth,reference_plane 311 | 312 | 175. Standard drill canned cycle with dwell. 313 | n,g98_g99,g_canned_cycle,rotary_xy_f,p_rot,s_rot,drill_depth,reference_plane,dwell 314 | 315 | 176. Peck drill canned cycle. 316 | n,g98_g99,g_canned_cycle,rotary_xy_f,p_rot,s_rot,drill_depth,reference_plane,program_block_1 317 | 318 | 177. Tapping canned cycle. 319 | rigid_tapping_start 320 | n,g98_g99,g_canned_cycle,rotary_xy_f,p_rot,s_rot,drill_depth,reference_plane 321 | 322 | 178. Boring cycle #1 canned cycle. 323 | n,g98_g99,g_canned_cycle,rotary_xy_f,p_rot,s_rot,drill_depth,reference_plane 324 | 325 | 179. Boring cycle #2 canned cycle. 326 | n,g98_g99,g_canned_cycle,rotary_xy_f,p_rot,s_rot,drill_depth,reference_plane 327 | 328 | 180. Back boring cycle canned cycle. 329 | n,g98_g99,g_canned_cycle,rotary_xy_f,p_rot,s_rot,drill_depth,reference_plane,program_block_1,dwell 330 | 331 | 181. Boring cycle #1 canned cycle with dwell. 332 | n,g98_g99,g_canned_cycle,rotary_xy_f,p_rot,s_rot,drill_depth,reference_plane,dwell 333 | 334 | 182. Boring cycle #2 canned cycle with dwell. 335 | n,g98_g99,g_canned_cycle,rotary_xy_f,p_rot,s_rot,drill_depth,reference_plane,dwell 336 | 337 | 183. Canned cycle drill point format for standard drill canned cycle NO SUBPROGRAMS. 338 | n,rotary_xy_f,p_rot,s_rot,zr_no_output 339 | 340 | 184. Canned cycle drill point format high speed peck drill with wrap. 341 | n,rotary_xy_f,p_rot,s_rot,zr_no_output 342 | 343 | 185. Canned cycle drill point format left hand tapping with wrap. 344 | n,rotary_xy_f,p_rot,s_rot,zr_no_output 345 | 346 | 186. Canned cycle drill point format fine boring with wrap. 347 | n,rotary_xy_f,p_rot,s_rot,zr_no_output 348 | 349 | 187. Canned cycle drill point format standard drill with wrap. 350 | n,rotary_xy_f,p_rot,s_rot,zr_no_output 351 | 352 | 188. Canned cycle drill point format standard drill with dwell with wrap. 353 | n,rotary_xy_f,p_rot,s_rot,zr_no_output 354 | 355 | 189. Canned cycle drill point format peck drill with wrap. 356 | n,rotary_xy_f,p_rot,s_rot,zr_no_output 357 | 358 | 190. Canned cycle drill point format point tap with wrap. 359 | n,rotary_xy_f,p_rot,s_rot,zr_no_output 360 | 361 | 191. Canned cycle drill point format boring 1 with wrap. 362 | n,rotary_xy_f,p_rot,s_rot,zr_no_output 363 | 364 | 192. Canned cycle drill point format boring 2 with wrap. 365 | n,rotary_xy_f,p_rot,s_rot,zr_no_output 366 | 367 | 193. Canned cycle drill point format back boring (boring 3) with wrap. 368 | n,rotary_xy_f,p_rot,s_rot,zr_no_output 369 | 370 | 194. Canned cycle drill point format boring 1 with dwell with wrap. 371 | n,rotary_xy_f,p_rot,s_rot,zr_no_output 372 | 373 | 195. Canned cycle drill point format boring 2 with dwell with wrap. 374 | n,rotary_xy_f,p_rot,s_rot,zr_no_output 375 | 376 | 197. End of Operation Toolchange. 377 | n,spindle_off 378 | n,optional_stop 379 | 380 | 198. End of Operation No Toolchange. 381 | 382 | 199. End of Last Operation. 383 | n,spindle_off 384 | 385 | 200. Is X modal? y 386 | 201. Is Y modal? y 387 | 202. Is Z modal? y 388 | 203. Are the g codes modal? n 389 | 204. Are the g codes (G02 and G03) modal in arc milling? n 390 | 205. Are the xy (or yz or xz) coordinates modal in arc milling? n 391 | 206. Are work coordiantes modal ? n 392 | 207. Output sequence numbers in subprograms ? n 393 | 208. Output sequence numbers? y 394 | 209. Number of places for sequence numbers? 2 395 | 210. Delete the decimal point? n 396 | 211. Delete leading zeros? n 397 | 212. Delete trailing zeros? y 398 | 213. English or Metric format (E/M)? E 399 | 214. Places before decimal point for reals (X, Y, Z)? 1 400 | 215. Number of places for Tool Numbers? 2 401 | 216. Places after decimal for feedrate ? 1 402 | 217. Scale factor for feedrate ? 1 403 | 218. Number of Places for Program Number? 4 404 | 219. Add spaces to the program? y 405 | 406 | 221. Break arcs into quadrants? n 407 | 222. Arc center a=absolute, b=incremental, d=unsigned inc., e=radius? b 408 | 223. Break arcs into two pieces if greater than 180 degrees? n 409 | 228. Support Unicode Output? y 410 | 411 | 230. Use Standard drilling canned cycle? y 412 | 231. Use peck drill canned cycle? n 413 | 232. Use High speed peck drill canned cycle? y 414 | 233. Use tapping canned cycle? n 415 | 234. Use boring cycle #1 canned cycle? y 416 | 235. Use boring cycle #2 canned cycle? y 417 | 236. Use back boring cycle canned cycle? n 418 | 237. Use left hand tap cycle canned cycle? n 419 | 238. Use fine boring cycle canned cycle? n 420 | 421 | 240. Amount to add to t to obtain t1? 0 422 | 241. Amount to add to t to obtain t2? 0 423 | 242. Value of t1 at t = 0? 0 424 | 243. Value of t2 at t = 0? 0 425 | 258. Maximum number of work offsets? 1 426 | 262. Add sign to all coordinate values? n 427 | 267. Amount to add to tool # for tool register value? 0 428 | 429 | 272. Rigid tapping? n 430 | 431 | 273. Output programmable rotary axis codes? y 432 | 280. Primary Rotary Axis Modal? y 433 | 281. Secondary Rotary Axis Modal? y 434 | 435 | 315. Minimum part heigth? 0.00000 436 | 437 | 319. Break Arcs with Radius Larger than? 9999.9999 438 | 320. Arc segment breaking tolerance? 0.001 439 | 321. Line segment max length? 999.99 440 | 441 | 322. Maximum inverse feedrate? 9999.99 442 | 323. Minimum inverse feedrate? 0.0 443 | 444 | 414. Number of decimal places for metric numbers ? 3 445 | 415. Number of decimal places for english numbers? 4 446 | 425. Number of decimal for angles? 3 447 | 426. Number of leading decimal places for angles? 1 448 | 449 | 427. Tapping feed rate (1=ipm 2=ipr)? 1 450 | 428. Feed rates other than tapping (1=ipm 2=ipr)? 1 451 | 429. Maximum spindle speed for tapping? 20000 452 | 430. Maximum spindle speed? 20000 453 | 431. Spindle speed for high range? 20000 454 | 455 | 432. Add amount for tool number in tool list? 0 456 | 457 | 433. Maximum sequence number allowed (used when #534 is y)? 999999 458 | 459 | 440. What is the rotary output type (0=Abs Pos, 1=Signed ABS, 2=Signed Continuous)? 2 460 | 441. Multiaxis feed type (0=UPM 1=INV on all 2=INV on Rotary 3=INV on 4 and 5 Axis 4=DPM on Rotary Only 5=DPM on Rotary with Linear)? 0 461 | 442. Wrapping X axis is (1=primary, 2=secondary, 3=tertiary)? 1 462 | 443. Wrapping Y axis is (1=primary, 2=secondary, 3=tertiary)? 2 463 | 444. Wrapping Z axis is (1=primary, 2=secondary, 3=tertiary)? 3 464 | 445. Rewind Rotary Axes at Tool Change? y 465 | 466 | 446. Are Arc Centers Modal? y 467 | 468 | 511. Use incremental coordinates? n 469 | 512. Use block delete for stop codes (M00)? n 470 | 513. Output F feedrate values? n 471 | 515. Output G99 instead of G98 in drilling? n 472 | 516. Output G98/G99 in drilling? y 473 | 518. Output M00 codes? n 474 | 526. Start renumbering from start number for subprograms? n 475 | 527. Create subdirectory for nc file? n 476 | 531. Replace spaces in comment with commas ? n 477 | 533. Output suprograms at the beginning of the program? n 478 | 534. Re-Start sequence numbering once max sequence number is reached? n 479 | 535. Are Feed Rates modal? y 480 | 536. Force all codes to upper case ? y 481 | 540. Check each output line with scripting? n 482 | 483 | 550. Break arc segments into lines (Make sure to adjust value in block 319)? n 484 | 551. Break line segments into smaller lines? n 485 | 552. Support only G17 Arcs? n 486 | 553. Break Helix into Lines? n 487 | 554. Convert small arcs to lines (arc length to be specified in block 555.)? n 488 | 555. Small arc length to break? 0.0025 489 | 490 | 605. Spindle speed prefix? "S" 491 | 606. Feedrate prefix? "F" 492 | 607. Dwell prefix? "P" 493 | 610. Miscellaneous end of file string? "" 494 | 613. Pattern contour subprogram start code? "" 495 | 614. Inch mode machining? "G20" 496 | 615. Metric mode machining? "G21" 497 | 620. Absolute coordinates? "G90" 498 | 621. Incremental coordinates? "G91" 499 | 622. Coordinate zero set? "G92" 500 | 625. End of file? "M2" 501 | 626. Stop? "M0" 502 | 627. Optional Stop? "M1" 503 | 628. Subprogram call? "" 504 | 629. Subprogram return? "" 505 | 630. Comment Start? "(" 506 | 631. Comment End? ")" 507 | 639. Cancel Cutter Compensation? "G40" 508 | 640. Prefix for arc Z center? "K" 509 | 641. Prefix for radius values? "R" 510 | 642. Prefix for arc X center? "I" 511 | 643. Prefix for arc Y center? "J" 512 | 645. Subprogram prefix? "P" 513 | 646. Machine maker? "CNC MASTERS" 514 | 647. Machine model? "MAX" 515 | 648. Part Height prefix? "None" 516 | 649. Reference Plane prefix? "R" 517 | 650. Cutter Compensation Left Code? "G41" 518 | 651. Cutter Compensation Right Code? "G42" 519 | 652. Machine Coordinate Code? "" 520 | 653. Machine Home Code? "" 521 | 654. Tool Change Code? "" 522 | 655. G-Code for Dwell? "" 523 | 524 | 656. Block delete? "/" 525 | 658. Subprogram call subnumber prefix? "P" 526 | 659. Add these characters to the end of each line? "" 527 | 670. Spindle forward string? "M3" 528 | 671. Spindle reverse string? "M4" 529 | 672. Spindle off string? "M5" 530 | 673. Coolant on string? "M8" 531 | 674. Coolant off String? "M9" 532 | 675. First peck prefix? "I" 533 | 676. Peck drill prefix? "Q" 534 | 677. Drill depth prefix? "Z" 535 | 678. Cutter offset prefix? "D" 536 | 679. Cancel drilling canned cycle? "G80" 537 | 538 | 680. GCode for Rapid Move? "G0" 539 | 681. GCode for Feed Move? "G1" 540 | 682. GCode for Arc CW? "G2" 541 | 683. GCode for Arc CCW? "G3" 542 | 543 | 684. Prefix for X Move? "X" 544 | 685. Prefix for Y Move? "Y" 545 | 686. Prefix for Z Move? "Z" 546 | 547 | 687. Prefix for drill canned cycle feed rate? "F" 548 | 688. Prefix for tool length offset? "H" 549 | 689. Prefix for initial plane? "I" 550 | 690. Prefix for X Rotation Move? "W" 551 | 691. Prefix for XY Machining Plane? "G17" 552 | 692. Prefix for XZ Machining Plane? "G18" 553 | 693. Prefix for YZ Machining Plane? "G19" 554 | 694. Prefix for Y Rotation Move? "B" 555 | 556 | 695. Prefix for tapping feed rate (variable tapping_feedrate)? "FF" 557 | 696. Prefix for tapping spindle speed (variable tapping_spindle_speed)? "SS" 558 | 697. Prefix for threads per inch (variable threads_per_inch)? "?" 559 | 698. Prefix for thread lead (variable thread_lead)? "?" 560 | 699. Prefix for Tool Angle (variable mtool_angle)? "A" 561 | 700. Prefix for Tool CornerRadius (variable mtool_corner_rad)? "C" 562 | 701. Prefix for Tool Type (variable mtool_type)? "S" 563 | 702. Prefix for rotation axis (variable rotation_axis)? "S" 564 | 703. Prefix for rotary stock diameter (variable rotary_stock_diameter)? "D" 565 | 704. Prefix for rotary stock length (variable rotary_stock_length)? "L" 566 | 705. Prefix for Z Feed Rate? "F" 567 | 706. Coolant Mist code? "M7" 568 | 707. Coolant Air code? "M7" 569 | 708. Coolant Oil code? "M7" 570 | 710. Primary Rotary CW direction code? "M13" 571 | 711. Primary Rotary CCW direction code? "M14" 572 | 712. Secondary rotary CW direction code? "M113" 573 | 713. Secondary rotary CCW direction code? "M114" 574 | 714. Inverse feedrate machining? "G93" 575 | 715. Feed per minute machining? 576 | 716. Primary rotary axis clamp on? "M10" 577 | 717. Primary rotary axis clamp off? "M11" 578 | 718. Secondary rotary axis clamp on? "M110" 579 | 719. Secondary rotary axis clamp off? "M111" 580 | 720. RTCP code ON? "G43.4" 581 | 721. RTCP code OFF? "G49" 582 | 722. Primary Rotary prefix string? "A" 583 | 723. Secondary Rotary prefix string? "B" 584 | 724. Third Rotary Prefix String? "" 585 | 725. Rotary forward direction string? "+" 586 | 726. Rotary reverse direction string? "-" 587 | 727. Retract to initial position? "G98" 588 | 728. Retract to R Plane? "G99" 589 | 729. Feed Mode UPR Code? "" 590 | 730. Origin tracking on Code? "" 591 | 731. Origin tracking off Code? "" 592 | 593 | 750. Laser-Plasma-Waterjet Cutter Width Prefix? "" 594 | 751. Laser-Plasma-Waterjet Pierce Height Z Location Prefix? "" 595 | 752. Laser-Plasma-Waterjet Cutter On Code? "" 596 | 753. Laser-Plasma-Waterjet Cutter Off Code? "" 597 | 760. Laser-Plasma Gas Assist On? "" 598 | 761. Laser-Plasma Gas Assist Off? "" 599 | 762. Laser-Plasma Gas Assist With Air? "" 600 | 763. Laser-Plasma Gas Assist With Oxygen? "" 601 | 764. Laser-Plasma Gas Assist With Oxyacetylene? "" 602 | 765. Laser-Plasma Shutter Open? "" 603 | 766. Laser-Plasma Shutter Closed? "" 604 | 767. Laser-Plasma Pulse Frequency Prefix? "" 605 | 768. Laser-Plasma Power Setting Prefix? "" 606 | 769. Laser-Plasma Torch Height Control Prefix? "" 607 | 780. Waterjet Abrasive ON? "" 608 | 781. Waterjet Abrasive OFF? "" 609 | 782. Waterjet Vacuuum Assist ON? "" 610 | 783. Waterjet Vacuuum Assist OFF? "" 611 | 784. Waterjet Pressure Low? "" 612 | 785. Waterjet Pressure Medium? "" 613 | 786. Waterjet Pressure High? "" 614 | 615 | 800. Standard drilling cycle no dwell #1? "G81" 616 | 801. Peck drill cycle no dwell #2? "" 617 | 802. High speed peck drill cycle no dwell #3? "G73" 618 | 803. Tapping cycle no dwell #4? "" 619 | 804. Boring cycle #1 no dwell #5? "G85" 620 | 805. Boring cycle #2 no dwell #6? "G85" 621 | 806. Back boring cycle no dwell #7? "G87" 622 | 807. Left hand tapping cycle no dwell #8? "" 623 | 808. Fine boring cycle no dwell #9? "" 624 | 625 | 820. Standard drilling cycle with dwell #1? "G82" 626 | 821. Peck drill cycle with dwell #2? "" 627 | 822. High speed peck drill cycle with dwell #3? "G73" 628 | 823. Tapping cycle with dwell #4? "" 629 | 824. Boring cycle #1 with dwell #5? "G86" 630 | 825. Boring cycle #2 with dwell #6? "G89" 631 | 826. Back boring cycle with dwell #7? "" 632 | 827. Left hand tapping cycle with dwell #8? "" 633 | 828. Fine boring cycle with dwell #9? "" 634 | 635 | 900. Work shift #1? "" 636 | 901. Work shift #2? "" 637 | 902. Work shift #3? "" 638 | 903. Work shift #4? "" 639 | 904. Work shift #5? "" 640 | 905. Work shift #6? "" 641 | 906. Work shift #7? "" 642 | 907. Work shift #8? "" 643 | 908. Work shift #9? "" 644 | 909. Work shift #10? "" 645 | 910. Work shift #11? "" 646 | 911. Work shift #12? "" 647 | 912. Work shift #13? "" 648 | 913. Work shift #14? "" 649 | 914. Work shift #15? "" 650 | 915. Work shift #16? "" 651 | 916. Work shift #17? "" 652 | 917. Work shift #18? "" 653 | 918. Work shift #19? "" 654 | 919. Work shift #20? "" 655 | 920. Work shift #21? "" 656 | 921. Work shift #22? "" 657 | 922. Work shift #23? "" 658 | 923. Work shift #24? "" 659 | 924. Work shift #25? "" 660 | 925. Work shift #26? "" 661 | 926. Work shift #27? "" 662 | 927. Work shift #28? "" 663 | 928. Work shift #29? "" 664 | 929. Work shift #30? "" 665 | 930. Work shift #31? "" 666 | 931. Work shift #32? "" 667 | 932. Work shift #33? "" 668 | 933. Work shift #34? "" 669 | 934. Work shift #35? "" 670 | 935. Work shift #36? "" 671 | 936. Work shift #37? "" 672 | 937. Work shift #38? "" 673 | 938. Work shift #39? "" 674 | 939. Work shift #40? "" 675 | 940. Work shift #41? "" 676 | 941. Work shift #42? "" 677 | 942. Work shift #43? "" 678 | 943. Work shift #44? "" 679 | 944. Work shift #45? "" 680 | 945. Work shift #46? "" 681 | 946. Work shift #47? "" 682 | 947. Work shift #48? "" 683 | 948. Work shift #49? "" 684 | 949. Work shift #50? "" 685 | 950. Work shift #51? "" 686 | 951. Work shift #52? "" 687 | 952. Work shift #53? "" 688 | 953. Work shift #54? "" 689 | 954. Work shift #54? "" 690 | 955. Work shift #55? "" 691 | 956. Work shift #56? "" 692 | 957. Work shift #57? "" 693 | 958. Work shift #58? "" 694 | 959. Work shift #59? "" 695 | 960. Work shift #60? "" 696 | 961. Work shift #61? "" 697 | 962. Work shift #62? "" 698 | 963. Work shift #63? "" 699 | 964. Work shift #64? "" 700 | 965. Work shift #65? "" 701 | 966. Work shift #66? "" 702 | 967. Work shift #67? "" 703 | 968. Work shift #68? "" 704 | 969. Work shift #69? "" 705 | 970. Work shift #70? "" 706 | 971. Work shift #71? "" 707 | 972. Work shift #72? "" 708 | 973. Work shift #73? "" 709 | 974. Work shift #74? "" 710 | 975. Work shift #75? "" 711 | 976. Work shift #76? "" 712 | 977. Work shift #77? "" 713 | 978. Work shift #78? "" 714 | 979. Work shift #79? "" 715 | 980. Work shift #80? "" 716 | 981. Work shift #81? "" 717 | 982. Work shift #82? "" 718 | 983. Work shift #83? "" 719 | 984. Work shift #84? "" 720 | 985. Work shift #85? "" 721 | 986. Work shift #86? "" 722 | 987. Work shift #87? "" 723 | 988. Work shift #88? "" 724 | 989. Work shift #89? "" 725 | 990. Work shift #90? "" 726 | 991. Work shift #91? "" 727 | 992. Work shift #92? "" 728 | 993. Work shift #93? "" 729 | 994. Work shift #94? "" 730 | 995. Work shift #95? "" 731 | 996. Work shift #96? "" 732 | 997. Work shift #97? "" 733 | 998. Work shift #98? "" 734 | 999. Work shift #99? "" 735 | 736 | 2001. Program Block 1. Return peck increment as a negative number 737 | Dim PeckIncrement : PeckIncrement = -1 * MILL_GetPeckDrillIncrement() 738 | 739 | MILL_SetReturnString(" Q" & PeckIncrement) 740 | 741 | 2002. Program Block 2. 742 | 743 | 2003. Program Block 3. 744 | 745 | 2004. Program Block 4. 746 | 747 | 2005. Program Block 5. 748 | 749 | 2006. Program Block 6. 750 | 751 | 2007. Program Block 7. 752 | 753 | 2008. Program Block 8. 754 | 755 | 2009. Program Block 9. 756 | 757 | 2010. Program Block 10. 758 | 759 | 2011. Program Block 11. 760 | 761 | 2012. Program Block 12. 762 | 763 | 2013. Program Block 13. 764 | 765 | 2014. Program Block 14. 766 | 767 | 2015. Program Block 15. 768 | 769 | 2016. Program Block 16. 770 | 771 | 2017. Program Block 17. 772 | 773 | 2018. Program Block 18. 774 | 775 | 2019. Program Block 19. 776 | 777 | 2020. Program Block 20. 778 | 779 | 2021. Program Block 21. 780 | 781 | 2022. Program Block 22. 782 | 783 | 2023. Program Block 23. 784 | 785 | 2024. Program Block 24. 786 | 787 | 2025. Program Block 25. 788 | 789 | 2026. Program Block 26. 790 | 791 | 2027. Program Block 27. 792 | 793 | 2028. Program Block 28. 794 | 795 | 2029. Program Block 29. 796 | 797 | 2030. Program Block 30. 798 | 799 | 2031. Program Block 31. 800 | 801 | 2032. Program Block 32. 802 | 803 | 2033. Program Block 33. 804 | 805 | 2034. Program Block 34. 806 | 807 | 2035. Program Block 35. 808 | 809 | 2036. Program Block 36. 810 | 811 | 2037. Program Block 37. 812 | 813 | 2038. Program Block 38. 814 | 815 | 2039. Program Block 39. 816 | 817 | 2040. Program Block 40. 818 | 819 | 2041. Program Block 41. 820 | 821 | 2042. Program Block 42. 822 | 823 | 2043. Program Block 43. 824 | 825 | 2044. Program Block 44. 826 | 827 | 2045. Program Block 45. 828 | 829 | 2046. Program Block 46. 830 | 831 | 2047. Program Block 47. 832 | 833 | 2048. Program Block 48. 834 | 835 | 2049. Program Block 49. 836 | 837 | 2050. Program Block 50. 838 | 839 | 2051. Program Block 51. 840 | 841 | 2052. Program Block 52. 842 | 843 | 2053. Program Block 53. 844 | 845 | 2054. Program Block 54. 846 | 847 | 2055. Program Block 55. 848 | 849 | 2056. Program Block 56. 850 | 851 | 2057. Program Block 57. 852 | 853 | 2058. Program Block 58. 854 | 855 | 2059. Program Block 59. 856 | 857 | 2060. Program Block 60. 858 | 859 | 2061. Program Block 61. 860 | 861 | 2062. Program Block 62. 862 | 863 | 2063. Program Block 63. 864 | 865 | 2064. Program Block 64. 866 | 867 | 2065. Program Block 65. 868 | 869 | 2066. Program Block 66. 870 | 871 | 2067. Program Block 67. 872 | 873 | 2068. Program Block 68. 874 | 875 | 2069. Program Block 69. 876 | 877 | 2070. Program Block 70. 878 | 879 | 2071. Program Block 71. 880 | 881 | 2072. Program Block 72. 882 | 883 | 2073. Program Block 73. 884 | 885 | 2074. Program Block 74. 886 | 887 | 2075. Program Block 75. 888 | 889 | 2076. Program Block 76. 890 | 891 | 2077. Program Block 77. 892 | 893 | 2078. Program Block 78. 894 | 895 | 2079. Program Block 79. 896 | 897 | 2080. Program Block 80. 898 | 899 | 2081. Program Block 81. 900 | 901 | 2082. Program Block 82. 902 | 903 | 2083. Program Block 83. 904 | 905 | 2084. Program Block 84. 906 | 907 | 2085. Program Block 85. 908 | 909 | 2086. Program Block 86. 910 | 911 | 2087. Program Block 87. 912 | 913 | 2088. Program Block 88. 914 | 915 | 2089. Program Block 89. 916 | 917 | 2090. Program Block 90. 918 | 919 | 2091. Program Block 91. 920 | 921 | 2092. Program Block 92. 922 | 923 | 2093. Program Block 93. 924 | 925 | 2094. Program Block 94. 926 | 927 | 2095. Program Block 95. 928 | 929 | 2096. Program Block 96. 930 | 931 | 2097. Program Block 97. 932 | 933 | 2098. Program Block 98. 934 | 935 | 2099. Program Block 99. 936 | 937 | 2101. Read entire file after post. 938 | 939 | 2102. Read each line on output (if line 540 is set to Y). 940 | 941 | 2103. VB Script Line by Line --------------------------------------------------------------------------------