Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

Execute Tcl Online

#
# 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

Advertisements
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.