BobCAD-CAM is able to manage multiple machine setups in the same project. This is a very useful feature when the workpiece should be cut in several phases with a different fixture for each of them. Below an example with 3 machine setups.
The generated G-Code file contains all operations in the same file, except if you enable manually only one fixture. So, saving one different G-Code file for each machine setup is possible, but quite painful and risky.
To solve this issue, I have designed a custom BobCAD-CAM postprocessor and a dedicated LinuxCNC/Gmoccapy panel to select from one single G-Code file the operations to be executed for a given machine setup. Also, the Gremlin preview is automatically updated according to the selected machine setup. Here is a video showing how it works:
In the BobCAD-CAM generated G-Code file, the section associated to each machine setup is surrounded by if / elseif / endif statements for dynamic selection.
... (Machine Setup - 1 Facing) (FACING) O100 if [ #<_selected_setup> EQ 1 ] T1 M6 G53 G0 Z#<_ini [ AXIS_2 ] SAFE_POSITION> S15915 M3 G0 X60.150 Y-22.600 M7 (MIST COOLANT) G0 (Machine Setup - 2 Pocket) (POCKET) M5 T2 M6 S3559 M3 M7 (MIST COOLANT) G0 G0 X5.969 Y.000 G0 Z35.480 ... (NEXT MACHINE SETUP - Machine Setup - 2) O100 elseif [ #<_selected_setup> EQ 2 ] T1 M6 G53 G0 Z#<_ini [ AXIS_2 ] SAFE_POSITION> .... (NEXT MACHINE SETUP - Machine Setup - 3) O100 elseif [ #<_selected_setup> EQ 3 ] .... G0 Z25.480 G0 Z55.800 O100 endif M5 M30
The #<_selected_setup> is a custom named parameter linked to a Gmoccapy panel where the setup number can be selected from 1 to 6.
For those who are not using Gmoccapy or LinuxCNC, another option is to get the chosen machine setup by reading an analog input with a M66 statement.
I have spent some hours to configure properly my BobCAD-CAM postprocessor for good result. One tricky aspect is the tools management: if the tool does not change from one machine setup to the next one, the original postprocessor does not include any further tool change statements in the G-Code file. This is not compatible with my O100 if/elseif/endif hack because, the tool change sequence would be issued only for first machine setup. So, I have added a systematic tool change in the following section of the posprocessor:
16. Machine Setup Change " " "(NEXT MACHINE SETUP - ",setup_name,")" " " n,"O100 elseif ","[","# EQ ", program_block_5, "]" n,t,"M6" n,"G53 G0 Z#<_ini","[","AXIS_2","]","SAFE_POSITION>" n,s n,spindle_on n,rapid_move,force_x,xr,force_y,yr,rotary_xyr_angle n,program_block_1 "G0" output_rotary_angle
I am not yet fully happy with this solution because I have some unnecessary tool change requests in some situations. But, at least it works, in any case!
I have now to test this modification on the real machine … Stay tuned!