# # Tcl script to generate CNC g-code from Eagle Cam files # # rename puts original_puts proc puts {args} { if {[llength $args] == 1} { return "[lindex $args 0]" } else { eval original_puts $args } } # set ScriptName "cam2tap.tcl" set outfl [open $ScriptName w] puts $outfl { puts stdout "#Setup object propertys" puts {set ProjectName "Test3"} puts {set ProjectExt "flatcam"} puts {set gbrExt "gbr"} puts {set excExt "exc"} puts {set geoExt "geo"} puts {set cncExt "cnc"} puts {set tapExt "tap"} puts {set etachExt "etch"} puts {set millExt "mill"} puts {set textExt "text"} puts {set drillExt "drill"} puts "#Setup CAM file name - input data fom Eagle" puts {set TopTextFileName [format %s.top.text.%s $ProjectName $gbrObjExt]} puts {set BottomTextFileName [format %s.bot.text%s $ProjectName $gbrObjExt]} puts {} puts "#FlatCam object" puts {set gbrObjName [format %s_%s $ProjectName $gbrObjExt]} puts {set excObjName [format %s_%s $ProjectName $excObjExt]} puts {set geoObjName [format %s_%s $ProjectName $geoObjExt]} puts {set cncObjName [format %s_%s $ProjectName $cncObjExt]} puts {} puts "#Setup G-code file name - output data to grblControl" puts {set TopEtachGcodeFileName [format %s.top.%s.%s $ProjectName $etachExt $TapExt]} puts {set BottomEtachGcodeFileName [format %s.bot.etch.%s $ProjectName $TapExt]} puts {set geoObjName [format %s_%s $ProjectName $geoObjExt]} puts {set cncObjName [format %s_%s $ProjectName $cncObjExt]} puts {} puts {set_sys units MM} puts {set_sys_excellion_zeros T} puts "# Starts a new project. Clears objects from memory." puts {new} puts "" puts "#" puts "# Isolation Routing proc" puts "#" puts "proc isolate_path layer {" puts " # Opens a Gerber file." puts { set in [format %s.%s.etch.%s $ProjectName $layer $gbrExt]} puts { set out [format %s_%s_etch_%s $ProjectName $layer $gbrExt]} puts { open_gerber $in –outname $out } puts " # Creates isolation routing geometry for the given Gerber." puts { set in $out } puts { set out [format %s_%s_etch_%s $ProjectName $layer $geoExt]} puts { isolate $in -dia 0.2 -passes 3 -overlap 0.15 -combine 1 -outname $out} puts " # Generates a CNC Job from a Geometry Object." puts { set in $out } puts { set out [format %s_%s_etch_%s $ProjectName $layer $cncExt]} puts { cncjob $geoObjName -z_cut 0.1 -z_move 15.0 -feedrate 180.0 \ -tooldia 0.2 -spindlespeed 1000 -multidepth 0 -depthperpass 0.0 \ -outname $ObjName} puts " # Saves G-code of a CNC Job object to file." puts { write_gcode $ObjName [format %s.%s.etch.%s $ProjectName $layer $tapExt]} puts "}" puts "#" puts "# Drill holes proc" puts "#" puts "proc drill_holes {" puts { set in [format %s.drill.%s $ProjectName $excExt]} puts { set out [format %s.drill.%s $ProjectName $excExt]} puts {open_excellon [format %s.drill.%s $ProjectName $excExt] } puts "# Generates a CNC Job from a Geometry Object." puts { set in $out } puts { set out [format %s_%s_etch_%s $ProjectName $layer $cncExt] } puts { cncjob $in -z_cut 0.1 -z_move 15.0 -feedrate 180.0 \ -tooldia 0.2 -spindlespeed 1000 -multidepth 0 -depthperpass 0.0 \ -outname $out} puts "# Saves G-code of a CNC Job object t o file." puts { set in $out } puts { set out [format %s_%s_%s $ProjectName $millExt $tapExt] } puts { write_gcode $in $ou } puts "}" puts "#" puts "# Drill spot holes proc" puts "#" puts "proc drill_spot {" puts { set in [format %s.drill.%s $ProjectName $excExt]} puts { set out [format %s.drill.%s $ProjectName $excExt]} puts {open_excellon [format %s.drill.%s $ProjectName $excExt] } puts "# Generates a CNC Job from a Geometry Object." puts { set in $out } puts { set out [format %s_%s_etch_%s $ProjectName $layer $cncExt] } puts { cncjob $in -z_cut 0.1 -z_move 15.0 -feedrate 180.0 \ -tooldia 0.2 -spindlespeed 1000 -multidepth 0 -depthperpass 0.0 \ -outname $out} puts "# Saves G-code of a CNC Job object t o file." puts { set in $out } puts { set out [format %s_%s_%s $ProjectName $millExt $tapExt] } puts { write_gcode $in $ou } puts "}" puts "#" puts "# Board cutouts proc" puts "#" puts "proc cut_outline {" puts " # Opens a Gerber file." puts { set in [format %s.%s.%s $ProjectName $millExt $gbrExt] } puts { set out [format %s_%s_%s $ProjectName $millExt $gbrExt] } puts { open_gerber $in -follow 1 –outname $out } puts " # Create geometry from Gerber Object" puts { set in $out } puts { set out [format %s_%s_%s $ProjectName $millExt $geoExt] } puts { follow $in -outname $out } puts " # Generates a CNC Job from a Geometry Object." puts { set in $out } puts { set out [format %s_%s_%s $ProjectName $millExt $cncExt] } puts { cncjob $in -z_cut 1.8 -z_move 15.0 -feedrate 60.0 \ -tooldia 1.5 -spindlespeed 1000 -multidepth 0 \ -depthperpass 0.0 -outname $out } puts " # Saves G-code of a CNC Job object to file." puts { set in $out } puts { set out [format %s_%s_%s $ProjectName $millExt $tapExt] } puts { write_gcode $in $out } puts "}" puts "#" puts "# Engrave text proc" puts "#" puts "proc engrave_text layer {" puts " # Opens a Gerber file." puts { set in [format %s.%s.text.%s $ProjectName $layer $textExt] } puts { set out [format %s_%s_text_%s $ProjectName $layer $textExt] } puts { open_gerber $in -follow 1 –outname $out } puts " # Create geometry from Gerber Object" puts { set in $out } puts { set out [format %s_%s_text_%s $ProjectName $layer $geoExt] } puts { follow $in -outname $out } puts " # Generates a CNC Job from a Geometry Object." puts { set in $out } puts { set out [format %s_%s_text_%s $ProjectName $layer $cncExt] } puts { cncjob $in -z_cut 0.2 -z_move 15.0 -feedrate 60.0 \ -tooldia 1.5 -spindlespeed 1000 -multidepth 0 \ -depthperpass 0.0 -outname $out } puts " # Saves G-code of a CNC Job object to file." puts { set in $out } puts { set out [format %s_%s_text_%s $ProjectName $layer $tapExt] } puts { write_gcode $in $out } puts "}" puts "#" puts "# ......... proc" puts "#" puts "proc etach layer {" puts { isolate_path $layer } puts { engrave_text $layer } puts { if $layer == "bot" : } puts { drill_spot } puts "}" puts "" puts { set step "Create alignment drill" } puts { cut_outline } puts { drill_aligment } puts { set step "Top side isolation routing and text engrave" } puts { isolate_path "top" } puts { engrave_text "top" } puts { set step "Turn the board around" } puts { set step "Bottom side isolation routing, text engrave and spot drill" } puts { isolate_path "bot" } puts { engrave_text "bot" } puts { drill_spot } puts { set step "Create alignment drill" } puts { set step "Create drill holes" } puts { set step "Cuting the board" } puts "# Saves the FlatCAM project to file.." puts { save_project [format %s.%s $ProjectNam $ProjectExt] } puts "" exit 0 } flush $outfl close $outfl # # Define run comand # proc run args { foreach arg $args { eval { puts stdout [exec [info nameofexecutable] $arg ] } } } run cam2tap.tcl exit 0 } flush $outfl close $outfl # # Define run comand # proc run args { foreach arg $args { eval { puts stdout [exec [info nameofexecutable] $arg ] } } } run cam2tap.tcl
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more