Version 269 of Tcl Editors

Updated 2018-10-05 07:34:08 by tientoan123

#!/usr/local/ActiveTcl/bin/wish # the next line restarts using wish\ exec wish "$0" "$@"

if {!info exists vTcl(sourcing)} {

    # Provoke name search
    catch {package require bogus-package-name}
    set packageNames [package names]

    package require BWidget
    switch $tcl_platform(platform) {
        windows {
        }
        default {
            option add *ScrolledWindow.size 14
        }
    }

    package require Tk
    switch $tcl_platform(platform) {
        windows {
            option add *Button.padY 0
        }
        default {
            option add *Scrollbar.width 10
            option add *Scrollbar.highlightThickness 0
            option add *Scrollbar.elementBorderWidth 2
            option add *Scrollbar.borderWidth 2
        }
    }

    # Needs Itcl
    package require Itcl

    # Needs Itk
    package require Itk

    # Needs Iwidgets
    package require Iwidgets

    switch $tcl_platform(platform) {
        windows {
            option add *Pushbutton.padY         0
        }
        default {
            option add *Scrolledhtml.sbWidth    10
            option add *Scrolledtext.sbWidth    10
            option add *Scrolledlistbox.sbWidth 10
            option add *Scrolledframe.sbWidth   10
            option add *Hierarchy.sbWidth       10
            option add *Pushbutton.padY         2
        }
    }

}

# Visual Tcl v1.60 Project #

# VTCL LIBRARY PROCEDURES #

if {!info exists vTcl(sourcing)} { ## Library Procedure: Window

proc ::Window {args} {

    ## This procedure may be used free of restrictions.
    ##    Exception added by Christian Gavin on 08/08/02.
    ## Other packages and widget toolkits have different licensing requirements.
    ##    Please read their license agreements for details.

    global vTcl
    foreach {cmd name newname} [lrange $args 0 2] {}
    set rest    [lrange $args 3 end]
    if {$name == "" || $cmd == ""} { return }
    if {$newname == ""} { set newname $name }
    if {$name == "."} { wm withdraw $name; return }
    set exists [winfo exists $newname]
    switch $cmd {
        show {
            if {$exists} {
                wm deiconify $newname
            } elseif {[info procs vTclWindow$name] != ""} {
                eval "vTclWindow$name $newname $rest"
            }
            if {[winfo exists $newname] && [wm state $newname] == "normal"} {
                vTcl:FireEvent $newname <<Show>>
            }
        }
        hide    {
            if {$exists} {
                wm withdraw $newname
                vTcl:FireEvent $newname <<Hide>>
                return}
        }
        iconify { if $exists {wm iconify $newname; return} }
        destroy { if $exists {destroy $newname; return} }
    }

} ## Library Procedure: vTcl:DefineAlias

proc ::vTcl:DefineAlias {target alias widgetProc top_or_alias cmdalias} {

    ## This procedure may be used free of restrictions.
    ##    Exception added by Christian Gavin on 08/08/02.
    ## Other packages and widget toolkits have different licensing requirements.
    ##    Please read their license agreements for details.

    global widget
    set widget($alias) $target
    set widget(rev,$target) $alias
    if {$cmdalias} {
        interp alias {} $alias {} $widgetProc $target
    }
    if {$top_or_alias != ""} {
        set widget($top_or_alias,$alias) $target
        if {$cmdalias} {
            interp alias {} $top_or_alias.$alias {} $widgetProc $target
        }
    }

} ## Library Procedure: vTcl:DoCmdOption

proc ::vTcl:DoCmdOption {target cmd} {

    ## This procedure may be used free of restrictions.
    ##    Exception added by Christian Gavin on 08/08/02.
    ## Other packages and widget toolkits have different licensing requirements.
    ##    Please read their license agreements for details.

    ## menus are considered toplevel windows
    set parent $target
    while {[winfo class $parent] == "Menu"} {
        set parent [winfo parent $parent]
    }

    regsub -all {\%widget} $cmd $target cmd
    regsub -all {\%top} $cmd [winfo toplevel $parent] cmd

    uplevel #0 [list eval $cmd]

} ## Library Procedure: vTcl:FireEvent

proc ::vTcl:FireEvent {target event {params {}}} {

    ## This procedure may be used free of restrictions.
    ##    Exception added by Christian Gavin on 08/08/02.
    ## Other packages and widget toolkits have different licensing requirements.
    ##    Please read their license agreements for details.

    ## The window may have disappeared
    if {![winfo exists $target]} return
    ## Process each binding tag, looking for the event
    foreach bindtag [bindtags $target] {
        set tag_events [bind $bindtag]
        set stop_processing 0
        foreach tag_event $tag_events {
            if {$tag_event == $event} {
                set bind_code [bind $bindtag $tag_event]
                foreach rep "\{%W $target\} $params" {
                    regsub -all [lindex $rep 0] $bind_code [lindex $rep 1] bind_code
                }
                set result [catch {uplevel #0 $bind_code} errortext]
                if {$result == 3} {
                    ## break exception, stop processing
                    set stop_processing 1
                } elseif {$result != 0} {
                    bgerror $errortext
                }
                break
            }
        }
        if {$stop_processing} {break}
    }

} ## Library Procedure: vTcl:Toplevel:WidgetProc

proc ::vTcl:Toplevel:WidgetProc {w args} {

    ## This procedure may be used free of restrictions.
    ##    Exception added by Christian Gavin on 08/08/02.
    ## Other packages and widget toolkits have different licensing requirements.
    ##    Please read their license agreements for details.

    if {[llength $args] == 0} {
        ## If no arguments, returns the path the alias points to
        return $w
    }
    set command [lindex $args 0]
    set args [lrange $args 1 end]
    switch -- [string tolower $command] {
        "setvar" {
            foreach {varname value} $args {}
            if {$value == ""} {
                return [set ::${w}::${varname}]
            } else {
                return [set ::${w}::${varname} $value]
            }
        }
        "hide" - "show" {
            Window [string tolower $command] $w
        }
        "showmodal" {
            ## modal dialog ends when window is destroyed
            Window show $w; raise $w
            grab $w; tkwait window $w; grab release $w
        }
        "startmodal" {
            ## ends when endmodal called
            Window show $w; raise $w
            set ::${w}::_modal 1
            grab $w; tkwait variable ::${w}::_modal; grab release $w
        }
        "endmodal" {
            ## ends modal dialog started with startmodal, argument is var name
            set ::${w}::_modal 0
            Window hide $w
        }
        default {
            uplevel $w $command $args
        }
    }

} ## Library Procedure: vTcl:WidgetProc

proc ::vTcl:WidgetProc {w args} {

    ## This procedure may be used free of restrictions.
    ##    Exception added by Christian Gavin on 08/08/02.
    ## Other packages and widget toolkits have different licensing requirements.
    ##    Please read their license agreements for details.

    if {[llength $args] == 0} {
        ## If no arguments, returns the path the alias points to
        return $w
    }

    set command [lindex $args 0]
    set args [lrange $args 1 end]
    uplevel $w $command $args

} ## Library Procedure: vTcl:toplevel

proc ::vTcl:toplevel {args} {

    ## This procedure may be used free of restrictions.
    ##    Exception added by Christian Gavin on 08/08/02.
    ## Other packages and widget toolkits have different licensing requirements.
    ##    Please read their license agreements for details.

    uplevel #0 eval toplevel $args
    set target [lindex $args 0]
    namespace eval ::$target {set _modal 0}

} }

if {info exists vTcl(sourcing)} {

proc vTcl:project:info {} {

    set base .nano_pnl
    namespace eval ::widgets::$base {
        set set,origin 1
        set set,size 1
        set runvisible 1
    }
    set site_4_0 [$base.not74 getframe page3]
    set site_4_0 $site_4_0
    set site_4_1 [$base.not74 getframe page1]
    set site_4_0 $site_4_1
    set site_4_2 [$base.not74 getframe page4]
    set site_4_0 $site_4_2
    set site_4_3 [$base.not74 getframe page2]
    set site_4_0 $site_4_3
    set base .odb_steps
    namespace eval ::widgets::$base {
        set set,origin 1
        set set,size 1
        set runvisible 0
    }
    namespace eval ::widgets_bindings {
        set tagslist _TopLevel
    }
    namespace eval ::vTcl::modules::main {
        set procs {
            init
            main
            pcs_info
            apply_attr
            set_pnl_type
            nano_pth
            nano_sbl
            nano_mbl
            nano_stg
            vent_dot
            vent_brick
            dot_line
            in_dot_line
            cornor_rectangle
            trim_line
            trim_sbl
            tg_guide
            bonding_guide
            vent_out
            add_rectangle
            laser_drl_break
            trim_pth
            trim_stg
            nano_stk
            auto_old
            auto_guide
            nano_auto
            nano_auto_old_b0
            nano_auto_old_b1
            nano_auto_old_b2
            resize_guide_drill
            trim_text
            cleanup_map
            outer_layers_trim
            nano_m_tg
            nano_m_tg_b0
            nano_m_tg_b1
            nano_m_tg_b2
            nano_g_tg
            nano_g_tg_b0
            nano_g_tg_b1
            nano_g_tg_b2
            cal_distance
        }
        set compounds {
        }
        set projectType single
    }

} }

# USER DEFINED PROCEDURES # ## Procedure: main

proc ::main {argc argv} { global widget env nano_script

package require math::bignum package require math::bigfloat

DO_INFO -t matrix -e $env(JOB)/matrix -d COL

set nano_script(steps_list) "" foreach step_name $gCOLstep_name {

      lappend nano_script(steps_list) $step_name

}

set nano_script(pnl_step) $env(STEP) set nano_script(pcs_size_x) "0" set nano_script(pcs_size_y) "0" set nano_script(pnl_size_x) "-" set nano_script(pnl_size_y) "-" set nano_script(step_num_x) "0" set nano_script(step_num_y) "0" set nano_script(step_margin_x) "0" set nano_script(step_margin_y) "0" set nano_script(in_scale_x) "100.000" set nano_script(in_scale_y) "100.000" set nano_script(in_tg_x) "0" set nano_script(in_tg_y) "0" set nano_script(b1_tg_x) "0" set nano_script(b1_tg_y) "0" set nano_script(b2_tg_x) "0" set nano_script(b2_tg_y) "0" set nano_script(b3_tg_x) "0" set nano_script(b3_tg_y) "0" set nano_script(trim1_x) "2.0" set nano_script(trim1_y) "2.0" set nano_script(trim2_x) "2.0" set nano_script(trim2_y) "2.0" set nano_script(trim3_x) "2.0" set nano_script(trim3_y) "2.0" set nano_script(trim4_x) "2.0" set nano_script(trim4_y) "2.0" set nano_script(rcc_trim1_x) "0.0" set nano_script(rcc_trim1_y) "0.0" set nano_script(rcc_trim2_x) "0.0" set nano_script(rcc_trim2_y) "0.0" set nano_script(user) "user" set nano_script(model_name) "model name" set nano_script(customer) "customer code" set nano_script(spec_no) "spec no." set nano_script(film_no) "film no." set nano_script(surface) "2" .nano_pnl.cpd91 disable 0

pcs_info set_pnl_type

wm attributes .nano_pnl -topmost 1 } ## Procedure: pcs_info

proc ::pcs_info {} { global widget env nano_script COMANS

COM get_user_name set nano_script(user) $COMANS

DO_INFO -t step -e $env(JOB)/$nano_script(pnl_step),units=mm

set nano_script(pnl_min_x) $gPROF_LIMITSxmin set nano_script(pnl_max_x) $gPROF_LIMITSxmax set nano_script(pnl_min_y) $gPROF_LIMITSymin set nano_script(pnl_max_y) $gPROF_LIMITSymax set nano_script(pnl_size_x) [format %.1f [expr $nano_script(pnl_max_x) - $nano_script(pnl_min_x)] set nano_script(pnl_center_x) [format %.6f [expr $nano_script(pnl_max_x) - ($nano_script(pnl_size_x) / 2.0000)] set nano_script(pnl_size_y) [format %.1f [expr $nano_script(pnl_max_y) - $nano_script(pnl_min_y)] set nano_script(pnl_center_y) [format %.6f [expr $nano_script(pnl_max_y) - ($nano_script(pnl_size_y) / 2.0000)]

set nano_script(trim1_x) [format %.1f [expr $nano_script(pnl_size_x) - 6.00] set nano_script(trim1_y) [format %.1f [expr $nano_script(pnl_size_y) - 6.00] set nano_script(trim2_x) [format %.1f [expr 0.0] set nano_script(trim2_y) [format %.1f [expr 0.0] set nano_script(trim3_x) [format %.1f [expr 0.0] set nano_script(trim3_y) [format %.1f [expr 0.0] set nano_script(trim4_x) [format %.1f [expr 0.0] set nano_script(trim4_y) [format %.1f [expr 0.0]

set nano_script(in_tg_x) "110.000" set nano_script(in_tg_y) [format %.3f [expr $nano_script(pnl_size_y) - 10.00] set nano_script(b1_tg_x) "100.000" set nano_script(b1_tg_y) [format %.3f [expr $nano_script(pnl_size_y) - 25.00] set nano_script(b2_tg_x) "90.000" set nano_script(b2_tg_y) [format %.3f [expr $nano_script(pnl_size_y) - 40.00] set nano_script(b3_tg_x) "80.000" set nano_script(b3_tg_y) [format %.3f [expr $nano_script(pnl_size_y) - 55.00]

set nano_script(num_sr) lindex $gNUM_SR 0 set nano_script(num_repeats) lindex $gNUM_REPEATS 0

set nano_script(pcb_area_min_x) format %.2f $gSR_LIMITSxmin set nano_script(pcb_area_min_y) format %.2f $gSR_LIMITSymin set nano_script(pcb_area_max_x) format %.2f $gSR_LIMITSxmax set nano_script(pcb_area_max_y) format %.2f $gSR_LIMITSymax

if {$nano_script(num_sr) > 0} {

    set nano_script(pcs_step) [lindex $gSRstep 0]
    set nano_script(SRxa) [format %.2f [lindex $gSRxa 0]]
    set nano_script(SRya) [format %.2f [lindex $gSRya 0]]
    set nano_script(SRdx) [format %.2f [lindex $gSRdx 0]]
    set nano_script(SRdy) [format %.2f [lindex $gSRdy 0]]
    set nano_script(SRnx) [lindex $gSRnx 0]
    set nano_script(SRny) [lindex $gSRny 0]
    set nano_script(SRangle) [lindex $gSRangle 0]
    set nano_script(SRmirror) [lindex $gSRmirror 0]

    DO_INFO -t step -e $env(JOB)/$nano_script(pcs_step) -d PROF_LIMITS,units=mm
    set nano_script(pcs_min_x) $gPROF_LIMITSxmin
    set nano_script(pcs_max_x) $gPROF_LIMITSxmax
    set nano_script(pcs_min_y) $gPROF_LIMITSymin
    set nano_script(pcs_max_y) $gPROF_LIMITSymax
    set nano_script(pcs_size_x) [format %.2f [expr $nano_script(pcs_max_x) - $nano_script(pcs_min_x)]]
    set nano_script(pcs_center_x) [format %.6f [expr $nano_script(pcs_max_x) - ($nano_script(pcs_size_x) / 2.0000)]]
    set nano_script(pcs_size_y) [format %.2f [expr $nano_script(pcs_max_y) - $nano_script(pcs_min_y)]]
    set nano_script(pcs_center_y) [format %.6f [expr $nano_script(pcs_max_y) - ($nano_script(pcs_size_y) / 2.0000)]]

    if {$nano_script(SRangle) == "90" || $nano_script(SRangle) == "270"} {
        set nano_script(step_margin_x) [format %.2f [expr $nano_script(SRdx) - $nano_script(pcs_size_y)]]
        set nano_script(step_margin_y) [format %.2f [expr $nano_script(SRdy) - $nano_script(pcs_size_x)]]
    }
    if {$nano_script(SRangle) == "0" || $nano_script(SRangle) == "180"} {
        set nano_script(step_margin_x) [format %.2f [expr $nano_script(SRdx) - $nano_script(pcs_size_x)]]
        set nano_script(step_margin_y) [format %.2f [expr $nano_script(SRdy) - $nano_script(pcs_size_y)]]
    }

}

DO_INFO -t step -e $env(JOB)/$nano_script(pnl_step) -d ATTR

set I 0 foreach attr $gATTRname {

    if {$attr eq "model_name"} {
        if {[lindex $gATTRval $I] != ""} {
            set nano_script(model_name) [lindex $gATTRval $I]
        }
    }
    if {$attr eq "cust_code"} {
        if {[lindex $gATTRval $I] != ""} {
            set nano_script(customer) [lindex $gATTRval $I]
        }
    }
    if {$attr eq "spec_no"} {
        if {[lindex $gATTRval $I] != ""} {
            set nano_script(spec_no) [lindex $gATTRval $I]
        }
    }
    if {$attr eq "film_no"} {
        if {[lindex $gATTRval $I] != ""} {   
            set nano_script(film_no) [lindex $gATTRval $I]
        }
    }
    incr I

} set nano_script(work_date) clock format [clock seconds -format {%Y.%m.%d}]

DO_INFO -t matrix -e $env(JOB)/matrix

set LCT 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $LCT] == "board"} {
        if {[regexp {^l[0-9]t} $LAYER]} { 
            DO_INFO -t layer -e $env(JOB)/$nano_script(pnl_step)/$LAYER -d ATTR

            set CT 0
            foreach SCALE $gATTRname {
                if {[lindex $gATTRname $CT] == ".out_x_scale"} {
                    set nano_script(in_scale_x) [format %.3f [expr [lindex $gATTRval $CT] * 100.000]]
                }
                if {[lindex $gATTRname $CT] == ".out_y_scale"} {
                    set nano_script(in_scale_y) [format %.3f [expr [lindex $gATTRval $CT] * 100.000]]
                }
            incr CT
            }
        }
    }
    incr LCT

} } ## Procedure: apply_attr

proc ::apply_attr {} { global widget env nano_script

set nano_script(panel_wiz) "nano_" append nano_script(panel_wiz) string tolower $nano_script(pnl_type)

#model info ###############################################

COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=model_name,value=$nano_script(model_name),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=film_no,value=$nano_script(film_no),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=spec_no,value=$nano_script(spec_no),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=work_date,value=$nano_script(work_date),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=cust_code,value=$nano_script(customer),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=buried_drl,value=$nano_script(buried_no),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=board_type,value=$nano_script(pnl_type),units=mm

set nano_script(pnl_text1) "[" append nano_script(pnl_text1) $nano_script(customer) "\]" " \(" $nano_script(model_name) "\)" $nano_script(spec_no) set nano_script(pnl_text2) " " append nano_script(pnl_text2) $nano_script(work_date) " NANO " $nano_script(user) " " "[" $nano_script(film_no) "\]"

COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=pnl_text1,value=$nano_script(pnl_text1),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=pnl_text2,value=$nano_script(pnl_text2),units=mm

#Layer Name / Mirror / Polarity / Scale ###################

set I 0

DO_INFO -t matrix -e $env(JOB)/matrix

if {$nano_script(num_layers) > 2} {

    set nano_script(in_scale_x) [format %.3f $nano_script(in_scale_x)]
    set nano_script(in_scale_y) [format %.3f $nano_script(in_scale_y)]
    set nano_script(attr_scale_x) [format %.6f [expr $nano_script(in_scale_x) / 100.00]]
    set nano_script(attr_scale_y) [format %.6f [expr $nano_script(in_scale_y) / 100.00]]

} set LAY_NO 1 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        set nano_script(scale_text_x) "X\=100.00"
        set nano_script(scale_text_y) "Y\=100.00"
        set nano_script(layer_scale_text) $nano_script(scale_text_x)
        append nano_script(layer_scale_text) " " $nano_script(scale_text_y) " " $nano_script(work_date) " " $nano_script(user)
        COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=sc_text_x,value=$nano_script(scale_text_x),units=mm
        COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=sc_text_y,value=$nano_script(scale_text_y),units=mm
        COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=lyr_sc_text,value=$nano_script(layer_scale_text),units=mm

        if {$LAYER == "cslk" } {
            set layer_name "COMP SILK"
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=layer_name,value=$layer_name,units=mm
        }
        if {$LAYER == "csm" } {
            set layer_name "COMP MASK"
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_mirror,value=yes,units=mm
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=layer_name,value=$layer_name,units=mm
        }
        if {[lindex $gROWlayer_type $I] == "signal" || [lindex $gROWlayer_type $I] == "mixed" || [lindex $gROWlayer_type $I] == "power_ground" } {
            set IN_LAY ""
            append IN_LAY LAYER " " $LAY_NO
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_polarity,value=negative,units=mm
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=layer_name,value=$IN_LAY,units=mm
            if {$LAYER == "cs" } {
                set layer_name "COMP SIDE"
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=layer_name,value=$layer_name,units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_mirror,value=yes,units=mm
            }
            if {$LAYER == "ss" } {
                set layer_name "SOLD SIDE"
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=layer_name,value=$layer_name,units=mm
            }
            if {[regexp {l[0-9]*t} $LAYER]} {
                set nano_script(scale_text_x) "X\="
                append nano_script(scale_text_x) "100.00" "\%"
                set nano_script(scale_text_y) "Y\="
                append nano_script(scale_text_y) "100.00" "\%"
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_mirror,value=yes,units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=sc_text_x,value=$nano_script(scale_text_x),units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=sc_text_y,value=$nano_script(scale_text_y),units=mm
            }
            if {[regexp {l[0-9]*b} $LAYER]} {
                set nano_script(scale_text_x) "X\="
                append nano_script(scale_text_x) "100.00" "\%"
                set nano_script(scale_text_y) "Y\="
                append nano_script(scale_text_y) "100.00" "\%"
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_mirror,value=no,units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=sc_text_x,value=$nano_script(scale_text_x),units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=sc_text_y,value=$nano_script(scale_text_y),units=mm
            }
            if {[regexp {l[0-9]*t$} $LAYER]} {
                set nano_script(scale_text_x) "X\="
                append nano_script(scale_text_x) $nano_script(in_scale_x) "\%"
                set nano_script(scale_text_y) "Y\="
                append nano_script(scale_text_y) $nano_script(in_scale_y) "\%"
                set nano_script(tg_dist_text) "TG "
                append nano_script(tg_dist_text) [format %.4f $nano_script(in_tg_y)]
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_x_scale,value=$nano_script(attr_scale_x),units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_y_scale,value=$nano_script(attr_scale_y),units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=sc_text_x,value=$nano_script(scale_text_x),units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=sc_text_y,value=$nano_script(scale_text_y),units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_mirror,value=yes,units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=tg_dist_text,value=$nano_script(tg_dist_text),units=mm
            }
            if {[regexp {l[0-9]*b$} $LAYER]} {
                set nano_script(scale_text_x) "X\="
                append nano_script(scale_text_x) $nano_script(in_scale_x) "\%"
                set nano_script(scale_text_y) "Y\="
                append nano_script(scale_text_y) $nano_script(in_scale_y) "\%"
                set nano_script(tg_dist_text) "TG "
                append nano_script(tg_dist_text) [format %.4f $nano_script(in_tg_y)]
                set nano_script(layer_scale_text) 
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_x_scale,value=$nano_script(attr_scale_x),units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_y_scale,value=$nano_script(attr_scale_y),units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=sc_text_x,value=$nano_script(scale_text_x),units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=sc_text_y,value=$nano_script(scale_text_y),units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_mirror,value=no,units=mm
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=tg_dist_text,value=$nano_script(tg_dist_text),units=mm
            }
            if {[regexp {l[0-9]*t1$} $LAYER] || [regexp {l[0-9]*b1$} $LAYER]} {
                set nano_script(tg_dist_text) "TG "
                append nano_script(tg_dist_text) [format %.4f $nano_script(b1_tg_y)]
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=tg_dist_text,value=$nano_script(tg_dist_text),units=mm
            }
            if {[regexp {l[0-9]*t2$} $LAYER] || [regexp {l[0-9]*b2$} $LAYER]} {
                set nano_script(tg_dist_text) "TG "
                append nano_script(tg_dist_text) [format %.4f $nano_script(b2_tg_y)]
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=tg_dist_text,value=$nano_script(tg_dist_text),units=mm
            }
            if {[regexp {l[0-9]*t3$} $LAYER] || [regexp {l[0-9]*b3$} $LAYER]} {
                set nano_script(tg_dist_text) "TG "
                append nano_script(tg_dist_text) [format %.4f $nano_script(b3_tg_y)]
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=tg_dist_text,value=$nano_script(tg_dist_text),units=mm
            }

            incr LAY_NO
        }
        if {$LAYER == "ssm" } {
            set layer_name "SOLD MASK"
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=layer_name,value=$layer_name,units=mm
        }
        if {$LAYER == "sslk" } {
            set layer_name "SOLD SILK"
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_mirror,value=yes,units=mm
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=layer_name,value=$layer_name,units=mm
        }
        if {[string match -nocase *dd $LAYER]== 1 } {
            set layer_name "POINT"
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=layer_name,value=$layer_name,units=mm
        }
        if {[string match -nocase *drl $LAYER] == 1 } {
            regsub -all {drl} $LAYER {DRILL} layer_name
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=layer_name,value=$layer_name,units=mm
        }
        if {[string match -nocase *win $LAYER] == 1 } {
            regsub -all {win} $LAYER {WINDOW} layer_name
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=layer_name,value=$layer_name,units=mm
        }
        if {$LAYER == $nano_script(out_drl_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=outer_drl
        }
        if {$LAYER == $nano_script(out_lyr_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=outline
        }
        if {$LAYER == $nano_script(out_map_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=outer_map
        }
        if {$nano_script(pnl_type) != "PTH"} {
            if {$LAYER == $nano_script(b1_drl_name)} {
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b1_drl
            }
            if {$LAYER == $nano_script(b2_drl_name)} {
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b2_drl
            }
            if {$LAYER == $nano_script(b3_drl_name)} {
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b3_drl
            }
            if {$LAYER == $nano_script(b4_drl_name)} {
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b4_drl
            }
            if {$LAYER == $nano_script(b1_map_name)} {
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b1_map
            }
            if {$LAYER == $nano_script(b2_map_name)} {
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b2_map
            }
            if {$LAYER == $nano_script(b3_map_name)} {
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b3_map
            }
            if {$LAYER == $nano_script(b4_map_name)} {
                COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b4_map
            }
        }
    }
    incr I

}

#Trim / TG Dist ###################

set nano_script(trim1_text) $nano_script(trim1_x) append nano_script(trim1_text) " X " $nano_script(trim1_y) set nano_script(trim2_text) $nano_script(trim2_x) append nano_script(trim2_text) " X " $nano_script(trim2_y) set nano_script(trim3_text) $nano_script(trim3_x) append nano_script(trim3_text) " X " $nano_script(trim3_y) set nano_script(trim4_text) $nano_script(trim4_x) append nano_script(trim4_text) " X " $nano_script(trim4_y) set nano_script(rcc_trim1_text) $nano_script(rcc_trim1_x) append nano_script(rcc_trim1_text) " X " $nano_script(rcc_trim1_y) set nano_script(rcc_trim2_text) $nano_script(rcc_trim2_x) append nano_script(rcc_trim2_text) " X " $nano_script(rcc_trim2_y)

set nano_script(final_trim_x) $nano_script(trim1_x) set nano_script(final_trim_y) $nano_script(trim1_y)

if {$nano_script(buried_no) < 1} {

    set nano_script(final_trim_x) $nano_script(trim1_x)
    set nano_script(final_trim_y) $nano_script(trim1_y)

} if {$nano_script(buried_no) == 1} {

    set nano_script(final_trim_x) $nano_script(trim2_x)
    set nano_script(final_trim_y) $nano_script(trim2_y)

} if {$nano_script(buried_no) == 2} {

    set nano_script(final_trim_x) $nano_script(trim3_x)
    set nano_script(final_trim_y) $nano_script(trim3_y)

} if {$nano_script(buried_no) == 3} {

    set nano_script(final_trim_x) $nano_script(trim4_x)
    set nano_script(final_trim_y) $nano_script(trim4_y)

} if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {

    set nano_script(final_trim_x) $nano_script(rcc_trim1_x)
    set nano_script(final_trim_y) $nano_script(rcc_trim1_y)

} COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=pcb_size_x,value=$nano_script(pcs_size_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=pcb_size_y,value=$nano_script(pcs_size_y),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=pnl_size_x,value=$nano_script(pnl_size_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=pnl_size_y,value=$nano_script(pnl_size_y),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=pnl_margin_x,value=$nano_script(pcb_area_min_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=pnl_margin_y,value=$nano_script(pcb_area_min_y),units=mm

COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=trim1_size_x,value=$nano_script(trim1_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=trim1_size_y,value=$nano_script(trim1_y),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=trim2_size_x,value=$nano_script(trim2_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=trim2_size_y,value=$nano_script(trim2_y),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=trim3_size_x,value=$nano_script(trim3_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=trim3_size_y,value=$nano_script(trim3_y),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=trim4_size_x,value=$nano_script(trim4_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=trim4_size_y,value=$nano_script(trim4_y),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=rcc_trim1_x,value=$nano_script(rcc_trim1_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=rcc_trim1_y,value=$nano_script(rcc_trim1_y),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=rcc_trim2_x,value=$nano_script(rcc_trim2_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=rcc_trim2_y,value=$nano_script(rcc_trim2_y),units=mm

COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=trim1_text,value=$nano_script(trim1_text),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=trim2_text,value=$nano_script(trim2_text),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=trim3_text,value=$nano_script(trim3_text),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=trim4_text,value=$nano_script(trim4_text),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=rcc_trim1_text,value=$nano_script(rcc_trim1_text),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=rcc_trim2_text,value=$nano_script(rcc_trim2_text),units=mm

set nano_script(active_top) [format %.2f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0] set nano_script(active_left) [format %.2f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0]

COM sr_active,top=$nano_script(active_top),bottom=$nano_script(active_top),left=$nano_script(active_left),right=$nano_script(active_left)

set nano_script(final_trim_text) $nano_script(final_trim_x) append nano_script(final_trim_text) " X " $nano_script(final_trim_y)

COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_size_x,value=$nano_script(final_trim_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_size_y,value=$nano_script(final_trim_y),units=mm

COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_text,value=$nano_script(final_trim_text),units=mm

set nano_script(in_tg_text) $nano_script(in_tg_x) append nano_script(in_tg_text) " X " $nano_script(in_tg_y) set nano_script(b1_tg_text) $nano_script(b1_tg_x) append nano_script(b1_tg_text) " X " $nano_script(b1_tg_y) set nano_script(b2_tg_text) $nano_script(b2_tg_x) append nano_script(b2_tg_text) " X " $nano_script(b2_tg_y) set nano_script(b3_tg_text) $nano_script(b3_tg_x) append nano_script(b3_tg_text) " X " $nano_script(b3_tg_y)

COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=tg1_dist_x,value=$nano_script(in_tg_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=tg1_dist_y,value=$nano_script(in_tg_y),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=tg2_dist_x,value=$nano_script(b1_tg_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=tg2_dist_y,value=$nano_script(b1_tg_y),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=tg3_dist_x,value=$nano_script(b2_tg_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=tg3_dist_y,value=$nano_script(b2_tg_y),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=tg4_dist_x,value=$nano_script(b3_tg_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=tg4_dist_y,value=$nano_script(b3_tg_y),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=target_dist1,value=$nano_script(in_tg_text),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=target_dist2,value=$nano_script(b1_tg_text),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=target_dist3,value=$nano_script(b2_tg_text),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=target_dist4,value=$nano_script(b3_tg_text),units=mm } ## Procedure: set_pnl_type

proc ::set_pnl_type {} { global widget env nano_script

DO_INFO -t matrix -e $env(JOB)/matrix -d ROW

set I 0 set NO 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[lindex $gROWlayer_type $I] eq "signal" || [lindex $gROWlayer_type $I] eq "mixed" || [lindex $gROWlayer_type $I] eq "power_ground" } {
            incr NO
            set layer_name layer$NO
            set nano_script($layer_name) $LAYER
        }
    }
    incr I

} set nano_script(num_layers) $NO set nano_script(pnl_type) "PTH"

if {$nano_script(num_layers) < 3} {

    set nano_script(trim1_x) [format %.1f [expr $nano_script(pnl_size_x)]]
    set nano_script(trim1_y) [format %.1f [expr $nano_script(pnl_size_y)]]

}

.nano_pnl.cpd91 delete 0 10 .nano_pnl.cpd91 insert 1 {PTH} .nano_pnl.cpd91 insert 2 {SBL} .nano_pnl.cpd91 insert 3 {MBL} .nano_pnl.cpd91 insert 4 {STG} .nano_pnl.cpd91 insert 5 {STK}

set nano_script(out_lyr_name) out set nano_script(out_drl_name) 1-$nano_script(num_layers)\drl set nano_script(out_map_name) 1-$nano_script(num_layers)\dd set nano_script(buried_no) 0

if {$nano_script(num_layers) > 2} {

    set nano_script(in_top_lay) ""
    set nano_script(in_btm_lay) ""
    set nano_script(in_lyr_no) 0
    set nano_script(b1_top_lay) ""
    set nano_script(b2_top_lay) ""
    set nano_script(b3_top_lay) ""
    set nano_script(b4_top_lay) ""
    set nano_script(b1_btm_lay) "" 
    set nano_script(b2_btm_lay) ""
    set nano_script(b3_btm_lay) ""
    set nano_script(b4_btm_lay) ""
    set nano_script(b1_top_no) 0
    set nano_script(b2_top_no) 0
    set nano_script(b3_top_no) 0
    set nano_script(b4_top_no) 0
    set nano_script(b1_btm_no) 0 
    set nano_script(b2_btm_no) 0
    set nano_script(b3_btm_no) 0
    set nano_script(b4_btm_no) 0
    set nano_script(core_no) 0

    DO_INFO -t matrix -e $env(JOB)/matrix -d ROW,units=mm
    foreach LAYER $gROWname {
        if {[regexp {l[0-9]*t1$} $LAYER]} {
            set nano_script(b1_top_lay) $LAYER
            set nano_script(b1_top_no) [string trimleft $LAYER l]
            set name_length [string length $nano_script(b1_top_no)]
            set nano_script(b1_top_no) [string range $nano_script(b1_top_no) 0 [expr $name_length - 3]]
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b1_top
        }
        if {[regexp {l[0-9]*t2$} $LAYER]} {
            set nano_script(b2_top_lay) $LAYER
            set nano_script(b2_top_no) [string trimleft $LAYER l]
            set name_length [string length $nano_script(b2_top_no)]
            set nano_script(b2_top_no) [string range $nano_script(b2_top_no) 0 [expr $name_length - 3]]
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b2_top
        }
        if {[regexp {l[0-9]*t3$} $LAYER]} {
            set nano_script(b3_top_lay) $LAYER
            set nano_script(b3_top_no) [string trimleft $LAYER l]
            set name_length [string length $nano_script(b3_top_no)]
            set nano_script(b3_top_no) [string range $nano_script(b3_top_no) 0 [expr $name_length - 3]]
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b3_top
        }
        if {[regexp {l[0-9]*t4$} $LAYER]} {
            set nano_script(b4_top_lay) $LAYER
            set nano_script(b4_top_no) [string trimleft $LAYER l]
            set name_length [string length $nano_script(b4_top_no)]
            set nano_script(b4_top_no) [string range $nano_script(b4_top_no) 0 [expr $name_length - 3]]
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b4_top
        }
        if {[regexp {l[0-9]*b1$} $LAYER]} {
            set nano_script(b1_btm_lay) $LAYER
            set nano_script(buried_no) 1
            set nano_script(b1_btm_no) [string trimleft $LAYER l]
            set name_length [string length $nano_script(b1_btm_no)]
            set nano_script(b1_btm_no) [string range $nano_script(b1_btm_no) 0 [expr $name_length - 3]]
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b1_btm
        }
        if {[regexp {l[0-9]*b2$} $LAYER]} {
            set nano_script(b2_btm_lay) $LAYER
            set nano_script(buried_no) 2
            set nano_script(b2_btm_no) [string trimleft $LAYER l]
            set name_length [string length $nano_script(b2_btm_no)]
            set nano_script(b2_btm_no) [string range $nano_script(b2_btm_no) 0 [expr $name_length - 3]]
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b2_btm
        }
        if {[regexp {l[0-9]*b3$} $LAYER]} {
            set nano_script(b3_btm_lay) $LAYER
            set nano_script(buried_no) 3
            set nano_script(b3_btm_no) [string trimleft $LAYER l]
            set name_length [string length $nano_script(b3_btm_no)]
            set nano_script(b3_btm_no) [string range $nano_script(b3_btm_no) 0 [expr $name_length - 3]]
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b3_btm
        }
        if {[regexp {l[0-9]*b4$} $LAYER]} {
            set nano_script(b4_btm_lay) $LAYER
            set nano_script(buried_no) 4
            set nano_script(b4_btm_no) [string trimleft $LAYER l]
            set name_length [string length $nano_script(b4_btm_no)]
            set nano_script(b4_btm_no) [string range $nano_script(b4_btm_no) 0 [expr $name_length - 3]]
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=b4_btm
        }
        if {[regexp {l[0-9]*t$} $LAYER]} {
            lappend nano_script(in_top_lay) $LAYER
            incr nano_script(in_lyr_no)
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=in_top
        }
        if {[regexp {l[0-9]*b$} $LAYER]} {
            lappend nano_script(in_btm_lay) $LAYER
            incr nano_script(in_lyr_no)
            incr nano_script(core_no)
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=in_btm
        }
    }
    set nano_script(b1_drl_name) $nano_script(b1_top_no)\-$nano_script(b1_btm_no)\drl
    set nano_script(b1_map_name) $nano_script(b1_top_no)\-$nano_script(b1_btm_no)\dd
    set nano_script(b2_drl_name) $nano_script(b2_top_no)\-$nano_script(b2_btm_no)\drl
    set nano_script(b2_map_name) $nano_script(b2_top_no)\-$nano_script(b2_btm_no)\dd
    set nano_script(b3_drl_name) $nano_script(b3_top_no)\-$nano_script(b3_btm_no)\drl
    set nano_script(b3_map_name) $nano_script(b3_top_no)\-$nano_script(b3_btm_no)\dd
    set nano_script(b4_drl_name) $nano_script(b4_top_no)\-$nano_script(b4_btm_no)\drl
    set nano_script(b4_map_name) $nano_script(b4_top_no)\-$nano_script(b4_btm_no)\dd

    set nano_script(t1_no) [format %.0f [expr 1.0 + 1.0]]
    set nano_script(b1_no) [format %.0f [expr $nano_script(num_layers) - 1.0]]
    set nano_script(t2_no) [format %.0f [expr 1.0 + 2.0]]
    set nano_script(b2_no) [format %.0f [expr $nano_script(num_layers) - 2.0]]
    set nano_script(t3_no) [format %.0f [expr 1.0 + 3.0]]
    set nano_script(b3_no) [format %.0f [expr $nano_script(num_layers) - 3.0]]
    set nano_script(t4_no) [format %.0f [expr 1.0 + 4.0]]
    set nano_script(b4_no) [format %.0f [expr $nano_script(num_layers) - 4.0]]

    DO_INFO -t layer -e $env(JOB)/$env(STEP)/1-2drl -d exists
    if {$gEXISTS == "yes"} {
        set nano_script(pnl_type)  "SBL"
        .nano_pnl.cpd91 delete 0 10
        .nano_pnl.cpd91 insert 1 {SBL}
        .nano_pnl.cpd91 insert 2 {PTH}
        .nano_pnl.cpd91 insert 3 {MBL}
        .nano_pnl.cpd91 insert 4 {STG}
        .nano_pnl.cpd91 insert 5 {STK}
    }

    DO_INFO -t layer -e $env(JOB)/$env(STEP)/2-3drl -d exists
    if {$gEXISTS == "yes" && $nano_script(num_layers) > 5} {
        set nano_script(pnl_type)  "STG"
        .nano_pnl.cpd91 delete 0 10
        .nano_pnl.cpd91 insert 1 {STG}
        .nano_pnl.cpd91 insert 2 {PTH}
        .nano_pnl.cpd91 insert 3 {SBL}
        .nano_pnl.cpd91 insert 4 {MBL}
        .nano_pnl.cpd91 insert 5 {STK}
    }

    DO_INFO -t layer -e $env(JOB)/$env(STEP)/1-2-3drl -d exists
    if {$gEXISTS == "yes"} {
        set nano_script(pnl_type)  "STK"
        .nano_pnl.cpd91 delete 0 10
        .nano_pnl.cpd91 insert 1 {STK}
        .nano_pnl.cpd91 insert 2 {PTH}
        .nano_pnl.cpd91 insert 3 {SBL}
        .nano_pnl.cpd91 insert 4 {MBL}
        .nano_pnl.cpd91 insert 5 {STG}
    }

    DO_INFO -t layer -e $env(JOB)/$env(STEP)/1-3drl -d exists

    if {$gEXISTS == "yes"} {
        set nano_script(pnl_type)  "MBL"
        .nano_pnl.cpd91 delete 0 10
        .nano_pnl.cpd91 insert 1 {MBL}
        .nano_pnl.cpd91 insert 2 {PTH}
        .nano_pnl.cpd91 insert 3 {SBL}
        .nano_pnl.cpd91 insert 4 {STG}
        .nano_pnl.cpd91 insert 5 {STK}
    }

} } ## Procedure: nano_pth

proc ::nano_pth {} { global widget env nano_script COMANS

if {$nano_script(panelize) == "1"} {

    nano_pnl hide
    if {$nano_script(num_layers) > 2} {
        vent_dot
        in_dot_line
        trim_pth
        if {$nano_script(core_no) > 1} {
            bonding_guide
        }
        tg_guide
        nano_m_tg
    } else {
        set nano_script(active_top) [format %.2f [expr 0.00]]
        set nano_script(active_left) [format %.2f [expr 0.00]]

        COM sr_active,top=$nano_script(active_top),bottom=$nano_script(active_top),left=$nano_script(active_left),right=$nano_script(active_left)

        set nano_script(final_trim_text) $nano_script(final_trim_x)
        append nano_script(final_trim_text) " X " $nano_script(final_trim_y)

        COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_size_x,value=$nano_script(final_trim_x),units=mm
        COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_size_y,value=$nano_script(final_trim_y),units=mm

        COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_text,value=$nano_script(final_trim_text),units=mm

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers

                                DO_INFO -t matrix -e $env(JOB)/matrix

        set trim_x1 "0.0000"
        set trim_y1 "0.0000"
        set trim_x2 [format %.6f $nano_script(pnl_size_x)]
        set trim_y2 [format %.6f $nano_script(pnl_size_y)]

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == $nano_script(out_map_name)} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }
                if {$LAYER == "cs" || $LAYER == "ss" || $LAYER == "csm" || $LAYER == "ssm" || $LAYER == "cslk" || $LAYER == "sslk"} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }

            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set length "5.0"
            cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
    }
    trim_text
    vent_out
    if {$nano_script(num_layers) > 2} {
        outer_layers_trim
    }
    nano_auto

    COM open_auto_panelize,job=$env(JOB),panel=,pcb=,scheme=
    COM autopan_place_objects,job=$env(JOB),panel=$env(STEP),pcb=$nano_script(pcs_step),scheme=nano_pth
    COM close_auto_panelize  

    laser_drl_break 
    resize_guide_drill
    cleanup_map

}

exit } ## Procedure: nano_sbl

proc ::nano_sbl {} { global widget env nano_script

set nano_script(sbl_t1_drl_name) 1-2drl set nano_script(sbl_t1_map_name) 1-2dd set nano_script(sbl_t1_win_name) 1-2win set nano_script(sbl_b1_drl_name) $nano_script(b1_no)\-$nano_script(num_layers)\drl set nano_script(sbl_b1_map_name) $nano_script(b1_no)\-$nano_script(num_layers)\dd set nano_script(sbl_b1_win_name) $nano_script(b1_no)\-$nano_script(num_layers)\win set nano_script(sbl_t1_layer) $nano_script(layer2) set nano_script(sbl_b1_layer) $nano_script(layer$nano_script(b1_no))

set nano_script(active_top) [format %.2f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y))] set nano_script(active_left) [format %.2f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x))] COM sr_active,top=$nano_script(active_top),bottom=$nano_script(active_top),left=$nano_script(active_left),right=$nano_script(active_left)

set nano_script(final_trim_text) $nano_script(final_trim_x) append nano_script(final_trim_text) " X " $nano_script(final_trim_y) set I 0

DO_INFO -t matrix -e $env(JOB)/matrix

set LAY_NO 1 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $nano_script(sbl_t1_drl_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=sbl_t1_drl
        }
        if {$LAYER == $nano_script(sbl_t1_map_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=sbl_t1_map
        }
        if {$LAYER == $nano_script(sbl_t1_win_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=sbl_t1_win
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_mirror,value=yes
        }
        if {$LAYER == $nano_script(sbl_b1_drl_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=sbl_b1_drl
        }
        if {$LAYER == $nano_script(sbl_b1_map_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=sbl_b1_map
        }
        if {$LAYER == $nano_script(sbl_b1_win_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=sbl_b1_win
        }
        if {$LAYER == $nano_script(sbl_t1_layer)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=etec_comment1,value=sbl_t1_lay
        }
        if {$LAYER == $nano_script(sbl_b1_layer)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=etec_comment1,value=sbl_b1_lay
        }
    }

}

if {$nano_script(panelize) == "1"} {

    nano_pnl hide
    vent_dot
    vent_brick
    in_dot_line
    trim_sbl
    vent_out
    if {$nano_script(core_no) > 1} {
        bonding_guide
    }
    tg_guide
    nano_m_tg

    outer_layers_trim
    nano_auto

    COM open_auto_panelize,job=$env(JOB),panel=,pcb=,scheme=
    COM autopan_place_objects,job=$env(JOB),panel=$env(STEP),pcb=$nano_script(pcs_step),scheme=nano_sbl
    COM close_auto_panelize  

    nano_g_tg
    laser_drl_break 
    resize_guide_drill
    cleanup_map

}

exit } ## Procedure: nano_mbl

proc ::nano_mbl {} { global widget env nano_script

set nano_script(mbl_t1_drl_name) 1-3drl set nano_script(mbl_t1_map_name) 1-3dd set nano_script(mbl_t1_win_name) 1-3win set nano_script(mbl_b1_drl_name) $nano_script(b2_no)\-$nano_script(num_layers)\drl set nano_script(mbl_b1_map_name) $nano_script(b2_no)\-$nano_script(num_layers)\dd set nano_script(mbl_b1_win_name) $nano_script(b2_no)\-$nano_script(num_layers)\win set nano_script(mbl_t1_layer) $nano_script(layer2) set nano_script(mbl_b1_layer) $nano_script(layer$nano_script(b1_no)) set nano_script(mbl_t2_layer) $nano_script(layer3) set nano_script(mbl_b2_layer) $nano_script(layer$nano_script(b2_no)) set I 0

DO_INFO -t matrix -e $env(JOB)/matrix

set LAY_NO 1 foreach LAYER $gROWname {

    if {$LAYER == $nano_script(mbl_t1_drl_name)} {
        COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=mbl_t1_drl
    }
    if {$LAYER == $nano_script(mbl_t1_map_name)} {
        COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=mbl_t1_map
    }
    if {$LAYER == $nano_script(mbl_t1_win_name)} {
        COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=mbl_t1_win
        COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_mirror,value=yes,units=mm
    }
    if {$LAYER == $nano_script(mbl_b1_drl_name)} {
        COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=mbl_b1_drl
    }
    if {$LAYER == $nano_script(mbl_b1_map_name)} {
        COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=mbl_b1_map
    }
    if {$LAYER == $nano_script(mbl_b1_win_name)} {
        COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=mbl_b1_win
    }
    if {$LAYER == $nano_script(mbl_t2_layer)} {
        COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=etec_comment1,value=mbl_t2_lay
    }
    if {$LAYER == $nano_script(mbl_b2_layer)} {
        COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=etec_comment1,value=mbl_b2_lay
    }
    if {$LAYER == $nano_script(mbl_t1_layer)} {
        COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=etec_comment1,value=mbl_t1_lay
    }
    if {$LAYER == $nano_script(mbl_b1_layer)} {
        COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=etec_comment1,value=mbl_b1_lay
    }

}

if {$nano_script(panelize) == "1"} {

    nano_pnl hide
    vent_dot
    vent_brick
    in_dot_line
    trim_sbl
    vent_out
    if {$nano_script(core_no) > 1} {
        bonding_guide
    }
    tg_guide
    nano_m_tg

    outer_layers_trim

    nano_auto

    COM open_auto_panelize,job=$env(JOB),panel=,pcb=,scheme=
    COM autopan_place_objects,job=$env(JOB),panel=$env(STEP),pcb=$nano_script(pcs_step),scheme=nano_mbl
    COM close_auto_panelize  

    nano_g_tg
    laser_drl_break
    resize_guide_drill
    cleanup_map

}

exit } ## Procedure: nano_stg

proc ::nano_stg {} { global widget env nano_script

set nano_script(stg_t1_drl_name) 1-2drl set nano_script(stg_t1_map_name) 1-2dd set nano_script(stg_t1_win_name) 1-2win set nano_script(stg_b1_drl_name) $nano_script(b1_no)\-$nano_script(num_layers)\drl set nano_script(stg_b1_map_name) $nano_script(b1_no)\-$nano_script(num_layers)\dd set nano_script(stg_b1_win_name) $nano_script(b1_no)\-$nano_script(num_layers)\win set nano_script(stg_t2_drl_name) 2-3drl set nano_script(stg_t2_map_name) 2-3dd set nano_script(stg_t2_win_name) 2-3win set nano_script(stg_b2_drl_name) $nano_script(b2_no)\-$nano_script(b1_no)\drl set nano_script(stg_b2_map_name) $nano_script(b2_no)\-$nano_script(b1_no)\dd set nano_script(stg_b2_win_name) $nano_script(b2_no)\-$nano_script(b1_no)\win set nano_script(stg_t1_layer) $nano_script(layer2) set nano_script(stg_b1_layer) $nano_script(layer$nano_script(b1_no)) set nano_script(stg_t2_layer) $nano_script(layer3) set nano_script(stg_b2_layer) $nano_script(layer$nano_script(b2_no))

set I 0

DO_INFO -t matrix -e $env(JOB)/matrix

set LAY_NO 1 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $nano_script(stg_t1_drl_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stg_t1_drl
        }
        if {$LAYER == $nano_script(stg_t1_map_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stg_t1_map
        }
        if {$LAYER == $nano_script(stg_t1_win_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stg_t1_win
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_mirror,value=yes,units=mm
        }
        if {$LAYER == $nano_script(stg_b1_drl_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stg_b1_drl
        }
        if {$LAYER == $nano_script(stg_b1_map_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stg_b1_map
        }
        if {$LAYER == $nano_script(stg_b1_win_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stg_b1_win
        }
        if {$LAYER == $nano_script(stg_t2_drl_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stg_t2_drl
        }
        if {$LAYER == $nano_script(stg_t2_map_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stg_t2_map
        }
        if {$LAYER == $nano_script(stg_t2_win_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stg_t2_win
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_mirror,value=yes,units=mm
        }
        if {$LAYER == $nano_script(stg_b2_drl_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stg_b2_drl
        }
        if {$LAYER == $nano_script(stg_b2_map_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stg_b2_map
        }
        if {$LAYER == $nano_script(stg_b2_win_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stg_b2_win
        }
        if {$LAYER == $nano_script(stg_t1_layer)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=etec_comment1,value=stg_t1_lay
        }
        if {$LAYER == $nano_script(stg_b1_layer)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=etec_comment1,value=stg_b1_lay
        }
        if {$LAYER == $nano_script(stg_t2_layer)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=etec_comment1,value=stg_t2_lay
        }
        if {$LAYER == $nano_script(stg_b2_layer)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=etec_comment1,value=stg_b2_lay
        }
    }

}

if {$nano_script(panelize) == "1"} {

    nano_pnl hide
    vent_dot
    vent_brick
    in_dot_line
    trim_stg
    vent_out
    if {$nano_script(core_no) > 1} {
        bonding_guide
    }
    tg_guide
    nano_m_tg
    outer_layers_trim
    nano_auto

    COM open_auto_panelize,job=$env(JOB),panel=,pcb=,scheme=
    COM autopan_place_objects,job=$env(JOB),panel=$env(STEP),pcb=$nano_script(pcs_step),scheme=nano_stg
    COM close_auto_panelize  

    nano_g_tg
    laser_drl_break 
    resize_guide_drill
    cleanup_map

}

exit } ## Procedure: vent_dot

proc ::vent_dot {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

COM fill_params,type=pattern,origin_type=limits,solid_type=surface,min_brush=254,use_arcs=yes,symbol=nano_dot_in_t,dx=4.0,dy=4.0,break_partial=yes,cut_prims=no,outline_draw=no,outline_width=0,outline_invert=no

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[regexp {l[0-9]*t$} $LAYER]} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    COM sr_fill,polarity=positive,step_margin_x=0,step_margin_y=0,step_max_dist_x=2540,step_max_dist_y=2540,sr_margin_x=3,sr_margin_y=3,sr_max_dist_x=0,sr_max_dist_y=0,nest_sr=no,consider_feat=no,consider_drill=no,consider_rout=no,dest=affected_layers,attributes=no
    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

} COM fill_params,type=pattern,origin_type=limits,solid_type=surface,min_brush=254,use_arcs=yes,symbol=nano_dot_in_b,dx=4.0,dy=4.0,break_partial=yes,cut_prims=no,outline_draw=no,outline_width=0,outline_invert=no COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[regexp {l[0-9]*b$} $LAYER]} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    COM sr_fill,polarity=positive,step_margin_x=0,step_margin_y=0,step_max_dist_x=2540,step_max_dist_y=2540,sr_margin_x=3,sr_margin_y=3,sr_max_dist_x=0,sr_max_dist_y=0,nest_sr=no,consider_feat=no,consider_drill=no,consider_rout=no,dest=affected_layers,attributes=no

} COM affected_layer,name=out,mode=all,affected=no COM clear_layers } ## Procedure: vent_brick

proc ::vent_brick {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[regexp {l[0-9]*t1$} $LAYER]} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
        if {[regexp {l[0-9]*b1$} $LAYER]} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    set t1_x [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(trim1_x)) / 2.0 + 1.0]]
    set t1_y [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(trim1_y)) / 2.0 + 1.0]]
    set t2_x [expr $nano_script(pcb_area_min_x) - 3.0]
    set t2_y [expr $nano_script(pcb_area_min_y) - 3.0]
    if {$nano_script(num_layers) == 4} {
        set t1_x "1.0"
        set t1_y "1.0"
    }
    COM fill_params,type=pattern,origin_type=limits,solid_type=surface,min_brush=254,use_arcs=yes,symbol=nano_brick_h,dx=5.5,dy=5,break_partial=yes,cut_prims=yes,outline_draw=no,outline_width=0,outline_invert=no
    COM sr_fill,polarity=positive,step_margin_x=$t1_x,step_margin_y=$t1_y,step_max_dist_x=$t2_x,step_max_dist_y=$t2_y,sr_margin_x=3,sr_margin_y=3,sr_max_dist_x=0,sr_max_dist_y=0,nest_sr=no,consider_feat=no,consider_drill=no,consider_rout=no,dest=affected_layers,attributes=no
    COM filter_set,filter_name=popup,update_popup=no,include_syms=s2000
    COM filter_set,filter_name=popup,update_popup=no,polarity=positive
    COM filter_set,filter_name=popup,update_popup=no,feat_types=line
    COM filter_area_strt

    set nano_script(tmp_x1) [expr $nano_script(pnl_min_x) - 10.0]
    set nano_script(tmp_y1) [expr $nano_script(pcb_area_min_y) - 0.00]
    set nano_script(tmp_x2) [expr $nano_script(pnl_max_x) + 10.0]
    set nano_script(tmp_y2) [expr $nano_script(pcb_area_max_y) + 0.00]

    COM filter_area_xy,x=$nano_script(tmp_x1),y=$nano_script(tmp_y2)
    COM filter_area_xy,x=$nano_script(tmp_x2),y=$nano_script(tmp_y1)
    COM filter_area_end,layer=,filter_name=popup,operation=select,area_type=rectangle,inside_area=yes,intersect_area=no,lines_only=no,ovals_only=no,min_len=0,max_len=0,min_angle=0,max_angle=0
    COM sel_delete
    COM filter_reset,filter_name=popup

    COM filter_set,filter_name=popup,update_popup=no,polarity=positive
    COM filter_set,filter_name=popup,update_popup=no,feat_types=surface
    COM filter_area_strt

    COM filter_area_xy,x=$nano_script(tmp_x1),y=$nano_script(tmp_y2)
    COM filter_area_xy,x=$nano_script(tmp_x2),y=$nano_script(tmp_y1)
    COM filter_area_end,layer=,filter_name=popup,operation=select,area_type=rectangle,inside_area=yes,intersect_area=no,lines_only=no,ovals_only=no,min_len=0,max_len=0,min_angle=0,max_angle=0
    COM sel_delete
    COM filter_reset,filter_name=popup

    COM sel_delete_atr,attributes=.pattern_fill

    set nano_script(tmp_y1) [expr $nano_script(pcb_area_min_y) - 0.00]
    COM fill_params,type=pattern,origin_type=limits,solid_type=surface,min_brush=254,use_arcs=yes,symbol=nano_brick_v,dx=5,dy=5.5,break_partial=yes,cut_prims=yes,outline_draw=no,outline_width=0,outline_invert=no
    COM zoom_home
    COM sr_fill,polarity=positive,step_margin_x=$t1_x,step_margin_y=$nano_script(tmp_y1),step_max_dist_x=$t2_x,step_max_dist_y=$t2_y,sr_margin_x=3,sr_margin_y=3,sr_max_dist_x=0,sr_max_dist_y=0,nest_sr=no,consider_feat=yes,feat_margin=0.5,consider_drill=no,consider_rout=no,dest=affected_layers,attributes=no

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[regexp {l[0-9]*t2$} $LAYER]} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
        if {[regexp {l[0-9]*b2$} $LAYER]} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    set t1_x [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(trim2_x)) / 2.0 + 1.0]]
    set t1_y [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(trim2_y)) / 2.0 + 1.0]]
    set t2_x [expr $nano_script(pcb_area_min_x) - 3.0]
    set t2_y [expr $nano_script(pcb_area_min_y) - 3.0]
    COM fill_params,type=pattern,origin_type=limits,solid_type=surface,min_brush=254,use_arcs=yes,symbol=nano_brick_h,dx=5.5,dy=5,break_partial=yes,cut_prims=yes,outline_draw=no,outline_width=0,outline_invert=no
    COM sr_fill,polarity=positive,step_margin_x=$t1_x,step_margin_y=$t1_y,step_max_dist_x=$t2_x,step_max_dist_y=$t2_y,sr_margin_x=3,sr_margin_y=3,sr_max_dist_x=0,sr_max_dist_y=0,nest_sr=no,consider_feat=no,consider_drill=no,consider_rout=no,dest=affected_layers,attributes=no
    COM filter_set,filter_name=popup,update_popup=no,include_syms=s2000
    COM filter_set,filter_name=popup,update_popup=no,polarity=positive
    COM filter_set,filter_name=popup,update_popup=no,feat_types=line
    COM filter_area_strt

    set nano_script(tmp_x1) [expr $nano_script(pnl_min_x) - 10.0]
    set nano_script(tmp_y1) [expr $nano_script(pcb_area_min_y) - 0.00]
    set nano_script(tmp_x2) [expr $nano_script(pnl_max_x) + 10.0]
    set nano_script(tmp_y2) [expr $nano_script(pcb_area_max_y) + 0.00]

    COM filter_area_xy,x=$nano_script(tmp_x1),y=$nano_script(tmp_y2)
    COM filter_area_xy,x=$nano_script(tmp_x2),y=$nano_script(tmp_y1)
    COM filter_area_end,layer=,filter_name=popup,operation=select,area_type=rectangle,inside_area=yes,intersect_area=no,lines_only=no,ovals_only=no,min_len=0,max_len=0,min_angle=0,max_angle=0
    COM sel_delete
    COM filter_reset,filter_name=popup

    COM filter_set,filter_name=popup,update_popup=no,polarity=positive
    COM filter_set,filter_name=popup,update_popup=no,feat_types=surface
    COM filter_area_strt

    COM filter_area_xy,x=$nano_script(tmp_x1),y=$nano_script(tmp_y2)
    COM filter_area_xy,x=$nano_script(tmp_x2),y=$nano_script(tmp_y1)
    COM filter_area_end,layer=,filter_name=popup,operation=select,area_type=rectangle,inside_area=yes,intersect_area=no,lines_only=no,ovals_only=no,min_len=0,max_len=0,min_angle=0,max_angle=0
    COM sel_delete
    COM filter_reset,filter_name=popup

    COM sel_delete_atr,attributes=.pattern_fill

    set nano_script(tmp_y1) [expr $nano_script(pcb_area_min_y) - 0.00]
    COM fill_params,type=pattern,origin_type=limits,solid_type=surface,min_brush=254,use_arcs=yes,symbol=nano_brick_v,dx=5,dy=5.5,break_partial=yes,cut_prims=yes,outline_draw=no,outline_width=0,outline_invert=no
    COM zoom_home
    COM sr_fill,polarity=positive,step_margin_x=$t1_x,step_margin_y=$nano_script(tmp_y1),step_max_dist_x=$t2_x,step_max_dist_y=$t2_y,sr_margin_x=3,sr_margin_y=3,sr_max_dist_x=0,sr_max_dist_y=0,nest_sr=no,consider_feat=yes,feat_margin=0.5,consider_drill=no,consider_rout=no,dest=affected_layers,attributes=no

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

} } ## Procedure: dot_line

proc ::dot_line {sym x1 y1 x2 y2 axis dist} { global widget env nano_script

set center_x [format %.4f [expr ($x1 + $x2) / 2.0] set center_y [format %.4f [expr ($y1 + $y2) / 2.0] set dist_x [format %.4f [expr $x2 - $x1] set dist_y [format %.4f [expr $y2 - $y1]

if {$axis == "c"} {

    if {$x1 == $x2} {
        COM add_pad,attributes=no,x=$x1,y=$center_y,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        set loc_y1 [expr $center_y + $dist]
        set loc_y2 [expr $center_y - $dist]
        set loc_y3 [expr $y2 - ($dist * 2.0)]
        set loc_y4 [expr $y1 + ($dist * 2.0)]
        while {$loc_y1 < $loc_y3} {
            COM add_pad,attributes=no,x=$x1,y=$loc_y1,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
            set loc_y1 [expr $loc_y1 + $dist]
        }
        while {$loc_y2 > $loc_y4} {
            COM add_pad,attributes=no,x=$x1,y=$loc_y2,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
            set loc_y2 [expr $loc_y2 - $dist]
        }
    }
    if {$y1 == $y2} {
        COM add_pad,attributes=no,x=$center_x,y=$y1,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        set loc_x1 [expr $center_x + $dist]
        set loc_x2 [expr $center_x - $dist]
        set loc_x3 [expr $x2 - ($dist * 2.0)]
        set loc_x4 [expr $x1 + ($dist * 2.0)]
        while {$loc_x1 < $loc_x3} {
            COM add_pad,attributes=no,x=$loc_x1,y=$y1,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
            set loc_x1 [expr $loc_x1 + $dist]
        }
        while {$loc_x2 > $loc_x4} {
            COM add_pad,attributes=no,x=$loc_x2,y=$y1,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
            set loc_x2 [expr $loc_x2 - $dist]    
        }
    }

}

if {$axis == "e"} {

    if {$x1 == $x2} {
        #COM add_pad,attributes=no,x=$x1,y=$center_y,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        set loc_y1 [expr $center_y + ($dist / 2.0)]
        set loc_y2 [expr $center_y - ($dist / 2.0)]
        set loc_y3 [expr $y2 - ($dist * 2.0)]
        set loc_y4 [expr $y1 + ($dist * 2.0)]
        while {$loc_y1 < $loc_y3} {
            COM add_pad,attributes=no,x=$x1,y=$loc_y1,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
            set loc_y1 [expr $loc_y1 + $dist]
        }
        while {$loc_y2 > $loc_y4} {
            COM add_pad,attributes=no,x=$x1,y=$loc_y2,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
            set loc_y2 [expr $loc_y2 - $dist]
        }
    }
    if {$y1 == $y2} {
        #COM add_pad,attributes=no,x=$center_x,y=$y1,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        set loc_x1 [expr $center_x + ($dist / 2.0)]
        set loc_x2 [expr $center_x - ($dist / 2.0)]
        set loc_x3 [expr $x2 - ($dist * 2.0)]
        set loc_x4 [expr $x1 + ($dist * 2.0)]
        while {$loc_x1 < $loc_x3} {
            COM add_pad,attributes=no,x=$loc_x1,y=$y1,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
            set loc_x1 [expr $loc_x1 + $dist]
        }
        while {$loc_x2 > $loc_x4} {
            COM add_pad,attributes=no,x=$loc_x2,y=$y1,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
            set loc_x2 [expr $loc_x2 - $dist]    
        }
    }

} } ## Procedure: in_dot_line

proc ::in_dot_line {} { global widget env nano_script COMANS PAUSE

DO_INFO -t step -e $env(JOB)/$env(STEP) -d REPEAT,units=mm

set nano_script(rpt_xmin) $gREPEATxmin set nano_script(rpt_xmax) $gREPEATxmax set nano_script(rpt_ymin) $gREPEATymin set nano_script(rpt_ymax) $gREPEATymax set nano_script(pcs_steps) $gREPEATstep

set I 0 foreach attr $gREPEATstep {

    incr I

}

set nano_script(steps_no) $I

DO_INFO -t matrix -e $env(JOB)/matrix

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[regexp {l[0-9]t$} $LAYER] || [regexp {l[0-9]b$} $LAYER] || [regexp {l[0-9]t1$} $LAYER] || [regexp {l[0-9]b1$} $LAYER] || [regexp {l[0-9]t2$} $LAYER] || [regexp {l[0-9]b2$} $LAYER]} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    set I 0
    foreach attr $gREPEATstep {
        set x1 [format %.6f [expr [lindex $nano_script(rpt_xmin) $I] - ($nano_script(step_margin_x) / 2.0)]]
        set x2 [format %.6f [expr [lindex $nano_script(rpt_xmax) $I] + ($nano_script(step_margin_x) / 2.0)]]
        set y1 [format %.6f [expr [lindex $nano_script(rpt_ymin) $I] - ($nano_script(step_margin_y) / 2.0)]]
        set y2 [format %.6f [expr [lindex $nano_script(rpt_ymax) $I] + ($nano_script(step_margin_y) / 2.0)]]
        set length "5.0"
        cornor_rectangle s0 s1000 $x1 $y1 $x2 $y2 $length
        incr I
    }

} set x1 expr $nano_script(pcb_area_min_x) - $nano_script(step_margin_x) set x2 expr $nano_script(pcb_area_max_x) + $nano_script(step_margin_x) set x3 expr $nano_script(pcb_area_min_x) + $nano_script(step_margin_x) set x4 expr $nano_script(pcb_area_max_x) - $nano_script(step_margin_x) set y1 expr $nano_script(pcb_area_min_y) - $nano_script(step_margin_y) set y2 expr $nano_script(pcb_area_max_y) + $nano_script(step_margin_y) set y3 expr $nano_script(pcb_area_min_y) + $nano_script(step_margin_y) set y4 expr $nano_script(pcb_area_max_y) - $nano_script(step_margin_y)

COM filter_set,filter_name=popup,update_popup=no,feat_types=line COM filter_set,filter_name=popup,update_popup=no,polarity=positive\;negative COM filter_set,filter_name=popup,update_popup=no,include_syms=s0\;s1000 COM filter_area_strt COM filter_area_xy,x=$x1,y=$y1 COM filter_area_xy,x=$x2,y=$y3 COM filter_area_end,layer=,filter_name=popup,operation=select,area_type=rectangle,inside_area=yes,intersect_area=yes,lines_only=no,ovals_only=no,min_len=0,max_len=0,min_angle=0,max_angle=0 COM filter_area_strt COM filter_area_xy,x=$x1,y=$y2 COM filter_area_xy,x=$x2,y=$y4 COM filter_area_end,layer=,filter_name=popup,operation=select,area_type=rectangle,inside_area=yes,intersect_area=yes,lines_only=no,ovals_only=no,min_len=0,max_len=0,min_angle=0,max_angle=0 COM sel_delete COM filter_reset,filter_name=popup

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set LCT 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $LCT] == "board"} {
        DO_INFO -t layer -e $env(JOB)/$nano_script(pnl_step)/$LAYER -d ATTR
        set CT 0
        foreach ATTR $gATTRname {
            if {$ATTR == "layer_name"} {
                if {[regexp {LAYER*} [lindex $gATTRval $CT]]} {
                    set layer_name [lindex $gATTRval $CT]
                    regsub -all { } $layer_name "" layer_name
                    set sig_layer_no [string trimleft $layer_name "LAYER"]
                    set lyr_even_odd [expr {fmod($sig_layer_no,2)}]
                    if {$lyr_even_odd > 0} {
                        COM affected_layer,name=$LAYER,mode=single,affected=yes
                    }
                }
            }
            incr CT
        }
    }
    incr LCT

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    set I 0
    foreach attr $gREPEATstep {
        set x1 [format %.6f [expr [lindex $nano_script(rpt_xmin) $I] - ($nano_script(step_margin_x) / 2.0)]]
        set x2 [format %.6f [expr [lindex $nano_script(rpt_xmax) $I] + ($nano_script(step_margin_x) / 2.0)]]
        set y1 [format %.6f [expr [lindex $nano_script(rpt_ymin) $I] - ($nano_script(step_margin_y) / 2.0)]]
        set y2 [format %.6f [expr [lindex $nano_script(rpt_ymax) $I] + ($nano_script(step_margin_y) / 2.0)]]
        set dist "3.0"
        dot_line r1500 $x1 $y1 $x2 $y1 "c" $dist
        dot_line r1500 $x1 $y1 $x1 $y2 "c" $dist
        dot_line r1500 $x1 $y2 $x2 $y2 "c" $dist
        dot_line r1500 $x2 $y1 $x2 $y2 "c" $dist
        incr I
    }

}

COM filter_set,filter_name=popup,update_popup=no,feat_types=pad COM filter_set,filter_name=popup,update_popup=no,polarity=positive COM filter_set,filter_name=popup,update_popup=no,include_syms=r1500 COM sel_options,clear_mode=clear_after,display_mode=all_layers,area_inout=outside,area_select=select,select_mode=standard,area_touching_mode=exclude COM filter_area_strt COM filter_area_xy,x=$nano_script(pcb_area_min_x),y=$nano_script(pcb_area_max_y) COM filter_area_xy,x=$nano_script(pcb_area_max_x),y=$nano_script(pcb_area_min_y) COM filter_area_end,layer=,filter_name=popup,operation=select,area_type=rectangle,inside_area=no,intersect_area=no,lines_only=no,ovals_only=no,min_len=0,max_len=0,min_angle=0,max_angle=0 COM sel_delete COM sel_options,clear_mode=clear_after,display_mode=all_layers,area_inout=inside,area_select=select,select_mode=standard,area_touching_mode=exclude COM filter_reset,filter_name=popup

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set LCT 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $LCT] == "board"} {
        DO_INFO -t layer -e $env(JOB)/$nano_script(pnl_step)/$LAYER -d ATTR
        set CT 0
        foreach SCALE $gATTRname {
            if {[lindex $gATTRname $CT] == "layer_name"} {
                if {[regexp {LAYER*} [lindex $gATTRval $CT]]} {
                    set layer_name [lindex $gATTRval $CT]
                    regsub -all { } $layer_name "" layer_name
                    set sig_layer_no [string trimleft $layer_name "LAYER"]
                    set lyr_even_odd [expr {fmod($sig_layer_no,2)}]
                    if {$lyr_even_odd == 0} {
                        COM affected_layer,name=$LAYER,mode=single,affected=yes
                    }
                }
            }
            incr CT
        }
    }
    incr LCT

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    set I 0
    foreach attr $gREPEATstep {
        set x1 [format %.6f [expr [lindex $nano_script(rpt_xmin) $I] - ($nano_script(step_margin_x) / 2.0)]]
        set x2 [format %.6f [expr [lindex $nano_script(rpt_xmax) $I] + ($nano_script(step_margin_x) / 2.0)]]
        set y1 [format %.6f [expr [lindex $nano_script(rpt_ymin) $I] - ($nano_script(step_margin_y) / 2.0)]]
        set y2 [format %.6f [expr [lindex $nano_script(rpt_ymax) $I] + ($nano_script(step_margin_y) / 2.0)]]
        set dist "3.0"
        dot_line r1500 $x1 $y1 $x2 $y1 "e" $dist
        dot_line r1500 $x1 $y1 $x1 $y2 "e" $dist
        dot_line r1500 $x1 $y2 $x2 $y2 "e" $dist
        dot_line r1500 $x2 $y1 $x2 $y2 "e" $dist
        incr I
    }

}

COM filter_set,filter_name=popup,update_popup=no,feat_types=pad COM filter_set,filter_name=popup,update_popup=no,polarity=positive COM filter_set,filter_name=popup,update_popup=no,include_syms=r1500 COM sel_options,clear_mode=clear_after,display_mode=all_layers,area_inout=outside,area_select=select,select_mode=standard,area_touching_mode=exclude COM filter_area_strt COM filter_area_xy,x=$nano_script(pcb_area_min_x),y=$nano_script(pcb_area_max_y) COM filter_area_xy,x=$nano_script(pcb_area_max_x),y=$nano_script(pcb_area_min_y) COM filter_area_end,layer=,filter_name=popup,operation=select,area_type=rectangle,inside_area=no,intersect_area=no,lines_only=no,ovals_only=no,min_len=0,max_len=0,min_angle=0,max_angle=0 COM sel_delete COM sel_options,clear_mode=clear_after,display_mode=all_layers,area_inout=inside,area_select=select,select_mode=standard,area_touching_mode=exclude COM filter_reset,filter_name=popup

COM affected_layer,name=out,mode=all,affected=no COM clear_layers } ## Procedure: cornor_rectangle

proc ::cornor_rectangle {sym1 sym2 x1 y1 x2 y2 length} { global widget env nano_script

if {$sym1 != "r0" && $sym1 != "s0"} {

    set line_x1  [format %.6f [expr $x1]]
    set line_y1  [format %.6f [expr $y1]]
    set line_x2  [format %.6f [expr $x1 + $length]]
    set line_y2  [format %.6f [expr $y1]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym1,polarity=negative

    set line_x1  [format %.6f [expr $x1]]
    set line_y1  [format %.6f [expr $y1]]
    set line_x2  [format %.6f [expr $x1]]
    set line_y2  [format %.6f [expr $y1 + $length]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym1,polarity=negative

    set line_x1  [format %.6f [expr $x2]]
    set line_y1  [format %.6f [expr $y1]]
    set line_x2  [format %.6f [expr $x2 - $length]]
    set line_y2  [format %.6f [expr $y1]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym1,polarity=negative

    set line_x1  [format %.6f [expr $x2]]
    set line_y1  [format %.6f [expr $y1]]
    set line_x2  [format %.6f [expr $x2]]
    set line_y2  [format %.6f [expr $y1 + $length]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym1,polarity=negative

    set line_x1  [format %.6f [expr $x1]]
    set line_y1  [format %.6f [expr $y2]]
    set line_x2  [format %.6f [expr $x1 + $length]]
    set line_y2  [format %.6f [expr $y2]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym1,polarity=negative

    set line_x1  [format %.6f [expr $x1]]
    set line_y1  [format %.6f [expr $y2]]
    set line_x2  [format %.6f [expr $x1]]
    set line_y2  [format %.6f [expr $y2 - $length]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym1,polarity=negative

    set line_x1  [format %.6f [expr $x2]]
    set line_y1  [format %.6f [expr $y2]]
    set line_x2  [format %.6f [expr $x2 - $length]]
    set line_y2  [format %.6f [expr $y2]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym1,polarity=negative

    set line_x1  [format %.6f [expr $x2]]
    set line_y1  [format %.6f [expr $y2]]
    set line_x2  [format %.6f [expr $x2]]
    set line_y2  [format %.6f [expr $y2 - $length]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym1,polarity=negative

}

if {$sym2 != "r0" && $sym2 != "s0"} {

    set line_x1  [format %.6f [expr $x1]]
    set line_y1  [format %.6f [expr $y1]]
    set line_x2  [format %.6f [expr $x1 + $length]]
    set line_y2  [format %.6f [expr $y1]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym2,polarity=positive

    set line_x1  [format %.6f [expr $x1]]
    set line_y1  [format %.6f [expr $y1]]
    set line_x2  [format %.6f [expr $x1]]
    set line_y2  [format %.6f [expr $y1 + $length]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym2,polarity=positive

    set line_x1  [format %.6f [expr $x2]]
    set line_y1  [format %.6f [expr $y1]]
    set line_x2  [format %.6f [expr $x2 - $length]]
    set line_y2  [format %.6f [expr $y1]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym2,polarity=positive    

    set line_x1  [format %.6f [expr $x2]]
    set line_y1  [format %.6f [expr $y1]]
    set line_x2  [format %.6f [expr $x2]]
    set line_y2  [format %.6f [expr $y1 + $length]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym2,polarity=positive

    set line_x1  [format %.6f [expr $x1]]
    set line_y1  [format %.6f [expr $y2]]
    set line_x2  [format %.6f [expr $x1 + $length]]
    set line_y2  [format %.6f [expr $y2]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym2,polarity=positive

    set line_x1  [format %.6f [expr $x1]]
    set line_y1  [format %.6f [expr $y2]]
    set line_x2  [format %.6f [expr $x1]]
    set line_y2  [format %.6f [expr $y2 - $length]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym2,polarity=positive

    set line_x1  [format %.6f [expr $x2]]
    set line_y1  [format %.6f [expr $y2]]
    set line_x2  [format %.6f [expr $x2 - $length]]
    set line_y2  [format %.6f [expr $y2]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym2,polarity=positive

    set line_x1  [format %.6f [expr $x2]]
    set line_y1  [format %.6f [expr $y2]]
    set line_x2  [format %.6f [expr $x2]]
    set line_y2  [format %.6f [expr $y2 - $length]]
    COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym2,polarity=positive

} } ## Procedure: trim_line

proc ::trim_line {} { global widget env nano_script

DO_INFO -t matrix -e $env(JOB)/matrix

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set trim_x1 [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(trim1_x)) / 2.000] set trim_y1 [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(trim1_y)) / 2.000] set trim_x2 [format %.6f [expr $nano_script(pnl_size_x) - $nano_script(trim_x1)] set trim_y2 [format %.6f [expr $nano_script(pnl_size_y) - $nano_script(trim_y1)]

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[regexp {l[0-9]*t1$} $LAYER] || [regexp {l[0-9]*t$} $LAYER]} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
        if {[regexp {l[0-9]*b1$} $LAYER] || [regexp {l[0-9]*b$} $LAYER]} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

set sym "r1000" set pol "negative" add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol set sym "r500" set pol "positive" add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol

COM affected_layer,name=out,mode=all,affected=no COM clear_layers } ## Procedure: trim_sbl

proc ::trim_sbl {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set trim_x1 "0.0000" set trim_y1 "0.0000" set trim_x2 format %.6f $nano_script(pnl_size_x) set trim_y2 format %.6f $nano_script(pnl_size_y)

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $nano_script(out_map_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }

    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    set sym "r500"
    set pol "negative"
    add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    set sym "r200"
    set pol "positive"
    add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set x_ref $nano_script(trim1_x) set y_ref $nano_script(trim1_y)

set trim_x1 [format %.6f [expr ($nano_script(pnl_size_x) - $x_ref) / 2.000] set trim_y1 [format %.6f [expr ($nano_script(pnl_size_y) - $y_ref) / 2.000] set trim_x2 [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1] set trim_y2 [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

if {$nano_script(buried_no) == 0} {

    set x_ref $nano_script(trim1_x)
    set y_ref $nano_script(trim1_y)

    set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $x_ref) / 2.000]]
    set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $y_ref) / 2.000]]
    set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
    set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == "cs" || $LAYER == "ss"} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }
        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set length "5.0"
        cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == $nano_script(out_map_name)} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }
        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "r500"
        set pol "negative"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        set sym "r200"
        set pol "positive"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {
        set nano_script(final_trim_x) $nano_script(rcc_trim1_x)
        set nano_script(final_trim_y) $nano_script(rcc_trim1_y)
        set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0]]
        set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0]]
        set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
        set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == "cs" || $LAYER == "ss"} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }

            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set length "5.0"
            cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == $nano_script(out_map_name)} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }
            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set sym "r500"
            set pol "negative"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
            set sym "r200"
            set pol "positive"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
    } else {
        set nano_script(final_trim_x) $nano_script(trim1_x)
        set nano_script(final_trim_y) $nano_script(trim1_y)
    }
    set nano_script(active_top) [format %.2f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0]]
    set nano_script(active_left) [format %.2f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0]]

}

if {$nano_script(buried_no) == 1 && $nano_script(num_layers) > 4} {

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == $nano_script(out_map_name)} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }
        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "r500"
        set pol "negative"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        set sym "r200"
        set pol "positive"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*t1$} $LAYER] || [regexp {l[0-9]*b1$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set length "5.0"
        cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(trim2_x)) / 2.00]]
    set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(trim2_y)) / 2.00]]
    set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
    set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]
    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == $nano_script(out_map_name)} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }
        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "r500"
        set pol "negative"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        set sym "r200"
        set pol "positive"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {
        set nano_script(final_trim_x) $nano_script(rcc_trim1_x)
        set nano_script(final_trim_y) $nano_script(rcc_trim1_y)
        set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0]]
        set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0]]
        set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
        set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == "cs" || $LAYER == "ss"} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }

            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set sym "r500"
            set pol "negative"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
            set sym "r200"
            set pol "positive"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == $nano_script(out_map_name)} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }
            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set length "5.0"
            cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
    } else {
        set nano_script(final_trim_x) $nano_script(trim2_x)
        set nano_script(final_trim_y) $nano_script(trim2_y)
    }
    set nano_script(active_top) [format %.2f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0]]
    set nano_script(active_left) [format %.2f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0]]

}

if {$nano_script(buried_no) == 1 && $nano_script(num_layers) == 4} {

    set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(trim1_x)) / 2.00]]
    set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(trim1_y)) / 2.00]]
    set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
    set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]
    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == $nano_script(out_map_name)} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }
        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "r500"
        set pol "negative"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        set sym "r200"
        set pol "positive"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == "cs" || $LAYER == "ss"} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }

            }
        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set length "5.0"
        cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {
        set nano_script(final_trim_x) $nano_script(rcc_trim1_x)
        set nano_script(final_trim_y) $nano_script(rcc_trim1_y)
        set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0]]
        set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0]]
        set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
        set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == "cs" || $LAYER == "ss"} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }

            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set sym "r500"
            set pol "negative"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
            set sym "r200"
            set pol "positive"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == $nano_script(out_map_name)} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }
            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set length "5.0"
            cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
    } else {
        set nano_script(final_trim_x) $nano_script(trim1_x)
        set nano_script(final_trim_y) $nano_script(trim1_y)
    }
    set nano_script(active_top) [format %.2f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0]]
    set nano_script(active_left) [format %.2f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0]]

}

if {$nano_script(buried_no) == 2} {

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*t$} $LAYER] || [regexp {l[0-9]*b$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set length "5.0"
        cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == $nano_script(out_map_name)} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }
        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set length "5.0"
        cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(trim2_x)) / 2.00]]
    set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(trim2_y)) / 2.00]]
    set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
    set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*t2$} $LAYER] || [regexp {l[0-9]*b2$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "r500"
        set pol "negative"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        set sym "r200"
        set pol "positive"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == $nano_script(out_map_name)} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }
        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "r500"
        set pol "negative"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        set sym "r200"
        set pol "positive"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(trim3_x)) / 2.00]]
    set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(trim3_y)) / 2.00]]
    set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
    set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == "cs" || $LAYER == "ss"} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set length "5.0"
        cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == $nano_script(out_map_name)} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }
        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "r500"
        set pol "negative"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        set sym "r200"
        set pol "positive"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {
        set nano_script(final_trim_x) $nano_script(rcc_trim1_x)
        set nano_script(final_trim_y) $nano_script(rcc_trim1_y)
        set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0]]
        set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0]]
        set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
        set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == "cs" || $LAYER == "ss" || $LAYER == "csm" || $LAYER == "ssm" || $LAYER == "cslk" || $LAYER == "sslk"} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }

            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set length "5.0"
            cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == $nano_script(out_map_name)} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }
            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set sym "r500"
            set pol "negative"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
            set sym "r200"
            set pol "positive"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers

    } else {
        set nano_script(final_trim_x) $nano_script(trim3_x)
        set nano_script(final_trim_y) $nano_script(trim3_y)
    }
    set nano_script(active_top) [format %.2f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0]]
    set nano_script(active_left) [format %.2f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0]]

} COM sr_active,top=$nano_script(active_top),bottom=$nano_script(active_top),left=$nano_script(active_left),right=$nano_script(active_left)

set nano_script(final_trim_text) $nano_script(final_trim_x) append nano_script(final_trim_text) " X " $nano_script(final_trim_y)

COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_size_x,value=$nano_script(final_trim_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_size_y,value=$nano_script(final_trim_y),units=mm

COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_text,value=$nano_script(final_trim_text),units=mm

trim_text } ## Procedure: tg_guide

proc ::tg_guide {} { global widget env nano_script COMANS PAUSE

DO_INFO -t matrix -e $env(JOB)/matrix

set b_y1 [format %.6f [expr $nano_script(active_top) + 3.5] set b_x1 [format %.6f [expr $nano_script(active_left) + 3.5] set b_y2 [format %.6f [expr $nano_script(pnl_size_y) - $nano_script(active_top) - 3.5] set b_x2 [format %.6f [expr $nano_script(pnl_size_x) - $nano_script(active_left) - 3.5]

set x1 [format %.6f [expr $nano_script(pnl_center_x)] set x2 [format %.6f [expr $nano_script(pnl_center_x) + $nano_script(in_tg_x)] set y1 [format %.6f [expr $nano_script(pnl_center_y) - ($nano_script(in_tg_y) / 2.0)] set y2 [format %.6f [expr $nano_script(pnl_center_y) + ($nano_script(in_tg_y) / 2.0)] set x3 [format %.6f [expr $nano_script(pnl_center_x) - 10.0]

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[regexp {l[0-9]*t$} $LAYER] || [regexp {l[0-9]*b$} $LAYER]} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

set target1_layer "" set target2_layer "" if {$nano_script(buried_no) == 0} {

    set target1_layer $nano_script(out_drl_name)
    set target2_layer $nano_script(out_map_name)

} if {$nano_script(buried_no) == 1} {

    if {$nano_script(num_layers) > 4} {
        set target1_layer $nano_script(b1_drl_name)
        set target2_layer $nano_script(b1_map_name)
    }

} if {$nano_script(buried_no) == 2} {

    set target1_layer $nano_script(b1_drl_name)
    set target2_layer $nano_script(b1_map_name)

} if {$nano_script(buried_no) == 3} {

    set target1_layer $nano_script(b1_drl_name)
    set target2_layer $nano_script(b1_map_name)

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    COM add_pad,attributes=no,x=$x1,y=$y1,symbol=nano_tg_p1,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$x2,y=$y1,symbol=nano_tg_p2,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$x1,y=$y2,symbol=nano_tg_p2,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    if {$nano_script(core_no) > 1} {
        COM add_pad,attributes=no,x=$x3,y=$b_y1,symbol=nano_bonding_p,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$x3,y=$b_y2,symbol=nano_bonding_p,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $target2_layer} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    COM add_pad,attributes=no,x=$x1,y=$y1,symbol=nano_tg_p1,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$x2,y=$y1,symbol=nano_tg_p2,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$x1,y=$y2,symbol=nano_tg_p2,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $target1_layer} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    COM add_pad,attributes=no,x=$x1,y=$y1,symbol=r3150,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$x2,y=$y1,symbol=r3150,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$x1,y=$y2,symbol=r3150,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[regexp {l[0-9]*t1$} $LAYER] || [regexp {l[0-9]*b1$} $LAYER] || [regexp {l[0-9]*t2$} $LAYER] || [regexp {l[0-9]*b2$} $LAYER] || $LAYER == "cs" || $LAYER == "ss"} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    COM add_pad,attributes=no,x=$x1,y=$y1,symbol=s7500,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$x2,y=$y1,symbol=s7500,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$x1,y=$y2,symbol=s7500,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    if {$nano_script(core_no) > 1} {
        COM add_pad,attributes=no,x=$x3,y=$b_y1,symbol=s7500,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$x3,y=$b_y2,symbol=s7500,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set x1 [format %.6f [expr $nano_script(pnl_center_x)] set x2 [format %.6f [expr $nano_script(pnl_center_x) + $nano_script(b1_tg_x)] set y1 [format %.6f [expr $nano_script(pnl_center_y) - ($nano_script(b1_tg_y) / 2.0)] set y2 [format %.6f [expr $nano_script(pnl_center_y) + ($nano_script(b1_tg_y) / 2.0)]

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[regexp {l[0-9]*t1$} $LAYER] || [regexp {l[0-9]*b1$} $LAYER]} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

set target1_layer "" set target2_layer "" if {$nano_script(buried_no) == 1} {

    set target1_layer $nano_script(out_drl_name)
    set target2_layer $nano_script(out_map_name)

} if {$nano_script(buried_no) == 2} {

    set target1_layer $nano_script(b2_drl_name)
    set target2_layer $nano_script(b2_map_name)

} if {$nano_script(buried_no) == 3} {

    set target1_layer $nano_script(b2_drl_name)
    set target2_layer $nano_script(b2_map_name)

}

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $target2_layer} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

if {$nano_script(buried_no) > 0} {

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        COM add_pad,attributes=no,x=$x1,y=$y1,symbol=nano_tg_p1,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$x2,y=$y1,symbol=nano_tg_p2,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$x1,y=$y2,symbol=nano_tg_p2,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $target1_layer} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    COM add_pad,attributes=no,x=$x1,y=$y1,symbol=r3150,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$x2,y=$y1,symbol=r3150,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$x1,y=$y2,symbol=r3150,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[regexp {l[0-9]*t$} $LAYER] || [regexp {l[0-9]*b$} $LAYER] || [regexp {l[0-9]*t2$} $LAYER] || [regexp {l[0-9]*b2$} $LAYER] || $LAYER == "cs" || $LAYER == "ss"} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

if {$nano_script(buried_no) > 0} {

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        COM add_pad,attributes=no,x=$x1,y=$y1,symbol=s7500,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$x2,y=$y1,symbol=s7500,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$x1,y=$y2,symbol=s7500,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set x1 [format %.6f [expr $nano_script(pnl_center_x)] set x2 [format %.6f [expr $nano_script(pnl_center_x) + $nano_script(b2_tg_x)] set y1 [format %.6f [expr $nano_script(pnl_center_y) - ($nano_script(b2_tg_y) / 2.0)] set y2 [format %.6f [expr $nano_script(pnl_center_y) + ($nano_script(b2_tg_y) / 2.0)]

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[regexp {l[0-9]*t2$} $LAYER] || [regexp {l[0-9]*b2$} $LAYER]} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

} set target1_layer "" set target2_layer "" if {$nano_script(buried_no) == 2} {

    set target1_layer $nano_script(out_drl_name)
    set target2_layer $nano_script(out_map_name)

} if {$nano_script(buried_no) == 3} {

    set target1_layer $nano_script(b3_drl_name)
    set target2_layer $nano_script(b3_map_name)

}

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $target2_layer} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    COM add_pad,attributes=no,x=$x1,y=$y1,symbol=nano_tg_p1,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$x2,y=$y1,symbol=nano_tg_p2,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$x1,y=$y2,symbol=nano_tg_p2,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $target1_layer} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

} COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    COM add_pad,attributes=no,x=$x1,y=$y1,symbol=r3150,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$x2,y=$y1,symbol=r3150,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$x1,y=$y2,symbol=r3150,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[regexp {l[0-9]*t$} $LAYER] || [regexp {l[0-9]*b$} $LAYER] || [regexp {l[0-9]*t1$} $LAYER] || [regexp {l[0-9]*b1$} $LAYER] || $LAYER == "cs" || $LAYER == "ss"} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

if {$nano_script(buried_no) > 1} {

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        COM add_pad,attributes=no,x=$x1,y=$y1,symbol=s7500,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$x2,y=$y1,symbol=s7500,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$x1,y=$y2,symbol=s7500,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers } ## Procedure: bonding_guide

proc ::bonding_guide {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

set b_y1 [format %.6f [expr $nano_script(active_top) + 3.5] set b_x1 [format %.6f [expr $nano_script(active_left) + 3.5] set b_y2 [format %.6f [expr $nano_script(pnl_size_y) - $nano_script(active_top) - 3.5] set b_x2 [format %.6f [expr $nano_script(pnl_size_x) - $nano_script(active_left) - 3.5]

set nano_script(bond_x1) [format %.3f [expr $nano_script(pcb_area_min_x) - 5.000] set nano_script(bond_x2) [format %.3f [expr $nano_script(pcb_area_max_x) + 5.000] set nano_script(bond_x3) [format %.3f [expr $nano_script(pnl_min_x) + 5.000] set nano_script(bond_x4) [format %.3f [expr $nano_script(pnl_max_x) - 5.000]

set nano_script(bond_y1) [format %.3f [expr $nano_script(pnl_center_y) + 4.775] set nano_script(bond_y2) [format %.3f [expr $nano_script(bond_y1) + 65.000] set nano_script(bond_y3) [format %.3f [expr $nano_script(bond_y2) + 70.000] set nano_script(bond_y4) [format %.3f [expr $nano_script(bond_y3) + 70.000] set nano_script(bond_y5) [format %.3f [expr $nano_script(bond_y4) + 70.000] set nano_script(bond_y6) [format %.3f [expr $nano_script(bond_y1) - 65.000] set nano_script(bond_y7) [format %.3f [expr $nano_script(bond_y6) - 70.000] set nano_script(bond_y8) [format %.3f [expr $nano_script(bond_y7) - 70.000] set nano_script(bond_y9) [format %.3f [expr $nano_script(bond_y8) - 70.000]

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[regexp {l[0-9]*t$} $LAYER] || [regexp {l[0-9]*b$} $LAYER]} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    set target_sym "rect11000x25000"
    COM add_pad,attributes=no,x=$b_x1,y=$nano_script(pnl_center_y),symbol=nano_bonding_p,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$b_x2,y=$nano_script(bond_y1),symbol=nano_bonding_p,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$nano_script(bond_x3),y=$nano_script(bond_y2),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$nano_script(bond_x4),y=$nano_script(bond_y2),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$nano_script(bond_x3),y=$nano_script(bond_y6),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    COM add_pad,attributes=no,x=$nano_script(bond_x4),y=$nano_script(bond_y6),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    if {$nano_script(pnl_size_y) > 300} {
        COM add_pad,attributes=no,x=$nano_script(bond_x3),y=$nano_script(bond_y3),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$nano_script(bond_x4),y=$nano_script(bond_y3),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$nano_script(bond_x3),y=$nano_script(bond_y7),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$nano_script(bond_x4),y=$nano_script(bond_y7),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }
    if {$nano_script(pnl_size_y) > 440} {
        COM add_pad,attributes=no,x=$nano_script(bond_x3),y=$nano_script(bond_y4),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$nano_script(bond_x4),y=$nano_script(bond_y4),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$nano_script(bond_x3),y=$nano_script(bond_y8),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$nano_script(bond_x4),y=$nano_script(bond_y8),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }
    if {$nano_script(pnl_size_y) > 580} {
        COM add_pad,attributes=no,x=$nano_script(bond_x3),y=$nano_script(bond_y5),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$nano_script(bond_x4),y=$nano_script(bond_y5),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$nano_script(bond_x3),y=$nano_script(bond_y9),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$nano_script(bond_x4),y=$nano_script(bond_y9),symbol=$target_sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers } ## Procedure: vent_out

proc ::vent_out {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == "cs" || $LAYER == "ss"} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    if {$nano_script(surface) == "1"} {
        set t1_x [format %.6f [expr $nano_script(active_left) + 3.0]]
        set t1_y [format %.6f [expr $nano_script(active_top) + 3.0]]
        set t2_x [expr $nano_script(pcb_area_min_x) - 3.0]
        set t2_y [expr $nano_script(pcb_area_min_y) - 3.0]
        COM fill_params,type=solid,origin_type=limits,solid_type=surface,min_brush=254,use_arcs=yes,symbol=nano_brick_h,dx=5.5,dy=5,break_partial=yes,cut_prims=yes,outline_draw=no,outline_width=0,outline_invert=no
        COM sr_fill,polarity=positive,step_margin_x=$t1_x,step_margin_y=$t1_y,step_max_dist_x=$t2_x,step_max_dist_y=$t2_y,sr_margin_x=3,sr_margin_y=3,sr_max_dist_x=0,sr_max_dist_y=0,nest_sr=no,consider_feat=no,consider_drill=no,consider_rout=no,dest=affected_layers,attributes=no
    }

    if {$nano_script(surface) == "2"} {
        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == "csm" || $LAYER == "ssm"} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }
            }
            incr I
        }
        set x1 [format %.6f [expr $nano_script(pcb_area_min_x) - 4.0]]
        set y1 [format %.6f [expr $nano_script(pcb_area_min_y) - 4.0]]
        set x2 [format %.6f [expr $nano_script(pcb_area_max_x) + 4.0]]
        set y2 [format %.6f [expr $nano_script(pcb_area_max_y) + 4.0]]
        add_rectangle "s2000" $x1 $y1 $x2 $y2 "positive"
    }

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers } ## Procedure: add_rectangle

proc ::add_rectangle {sym x1 y1 x2 y2 pol} { global widget env nano_script

set line_x1 [format %.6f [expr $x1] set line_y1 [format %.6f [expr $y1] set line_x2 [format %.6f [expr $x1] set line_y2 [format %.6f [expr $y2] COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym,polarity=$pol

set line_x1 [format %.6f [expr $x1] set line_y1 [format %.6f [expr $y2] set line_x2 [format %.6f [expr $x2] set line_y2 [format %.6f [expr $y2] COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym,polarity=$pol

set line_x1 [format %.6f [expr $x2] set line_y1 [format %.6f [expr $y2] set line_x2 [format %.6f [expr $x2] set line_y2 [format %.6f [expr $y1] COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym,polarity=$pol

set line_x1 [format %.6f [expr $x2] set line_y1 [format %.6f [expr $y1] set line_x2 [format %.6f [expr $x1] set line_y2 [format %.6f [expr $y1] COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y2,symbol=$sym,polarity=$pol } ## Procedure: laser_drl_break

proc ::laser_drl_break {} { global widget env nano_script

COM affected_filter,filter=(type=drill&context=board&side=top|bottom|inner|none) COM sel_break

COM affected_filter,filter=(type=&context=board&side=top|bottom|inner|none) } ## Procedure: trim_pth

proc ::trim_pth {} { global widget env nano_script COMANS PAUSE

DO_INFO -t matrix -e $env(JOB)/matrix

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set trim_x1 "0.0000" set trim_y1 "0.0000" set trim_x2 format %.6f $nano_script(pnl_size_x) set trim_y2 format %.6f $nano_script(pnl_size_y)

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $nano_script(out_map_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }

    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    set sym "r500"
    set pol "negative"
    add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    set sym "r200"
    set pol "positive"
    add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set trim_x1 "0.0000" set trim_y1 "0.0000" set trim_x2 format %.6f $nano_script(pnl_size_x) set trim_y2 format %.6f $nano_script(pnl_size_y)

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $nano_script(out_map_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }

    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    set sym "r500"
    set pol "negative"
    add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    set sym "r200"
    set pol "positive"
    add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set trim_x1 [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(trim1_x)) / 2.00] set trim_y1 [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(trim1_y)) / 2.00] set trim_x2 [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1] set trim_y2 [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1] set nano_script(final_trim_x) $nano_script(trim1_x) set nano_script(final_trim_y) $nano_script(trim1_y)

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == "cs" || $LAYER == "ss" || $LAYER == "csm" || $LAYER == "ssm" || $LAYER == "cslk" || $LAYER == "sslk"} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }


    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    set length "5.0"
    cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $nano_script(out_map_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }

    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    set sym "r500"
    set pol "negative"
    add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    set sym "r200"
    set pol "positive"
    add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set nano_script(active_top) [format %.2f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0] set nano_script(active_left) [format %.2f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0]

COM sr_active,top=$nano_script(active_top),bottom=$nano_script(active_top),left=$nano_script(active_left),right=$nano_script(active_left)

set nano_script(final_trim_text) $nano_script(final_trim_x) append nano_script(final_trim_text) " X " $nano_script(final_trim_y)

COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_size_x,value=$nano_script(final_trim_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_size_y,value=$nano_script(final_trim_y),units=mm

COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_text,value=$nano_script(final_trim_text),units=mm } ## Procedure: trim_stg

proc ::trim_stg {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set trim_x1 "0.0000" set trim_y1 "0.0000" set trim_x2 format %.6f $nano_script(pnl_size_x) set trim_y2 format %.6f $nano_script(pnl_size_y)

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $nano_script(out_map_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }

    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    set sym "r500"
    set pol "negative"
    add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    set sym "r200"
    set pol "positive"
    add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set trim_x1 "0.0000" set trim_y1 "0.0000" set trim_x2 format %.6f $nano_script(pnl_size_x) set trim_y2 format %.6f $nano_script(pnl_size_y)

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $nano_script(out_map_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }

    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    set sym "r500"
    set pol "negative"
    add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    set sym "r200"
    set pol "positive"
    add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set trim_x1 [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(trim1_x)) / 2.00] set trim_y1 [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(trim1_y)) / 2.00] set trim_x2 [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1] set trim_y2 [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1] set nano_script(final_trim_x) $nano_script(trim1_x) set nano_script(final_trim_y) $nano_script(trim1_y)

if {$nano_script(buried_no) == 1} {

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*t1$} $LAYER] || [regexp {l[0-9]*b1$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set length "5.0"
        cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == $nano_script(out_map_name)} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }
        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "r500"
        set pol "negative"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        set sym "r200"
        set pol "positive"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    if {$nano_script(rcc_trim2_x) > 0 || $nano_script(rcc_trim2_y) > 0} {
        set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(rcc_trim2_x)) / 2.0]]
        set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(rcc_trim2_y)) / 2.0]]
        set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
        set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {[regexp {l[0-9]*t1$} $LAYER] || [regexp {l[0-9]*b1$} $LAYER]} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }

            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set length "5.0"
            cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == $nano_script(out_map_name)} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }
            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set sym "r500"
            set pol "negative"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
            set sym "r200"
            set pol "positive"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
    }

    set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(trim2_x)) / 2.00]]
    set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(trim2_y)) / 2.00]]
    set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
    set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == "cs" || $LAYER == "ss"} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set length "5.0"
        cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == $nano_script(out_map_name)} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }
        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "r500"
        set pol "negative"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        set sym "r200"
        set pol "positive"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {
        set nano_script(final_trim_x) $nano_script(rcc_trim1_x)
        set nano_script(final_trim_y) $nano_script(rcc_trim1_y)
        set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0]]
        set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0]]
        set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
        set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == "cs" || $LAYER == "ss"} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }

            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set length "5.0"
            cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == $nano_script(out_map_name)} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }
            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set sym "r500"
            set pol "negative"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
            set sym "r200"
            set pol "positive"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        }
    } else {
        set nano_script(final_trim_x) $nano_script(trim2_x)
        set nano_script(final_trim_y) $nano_script(trim2_y)
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set nano_script(active_top) [format %.2f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0]]
    set nano_script(active_left) [format %.2f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0]]

}

if {$nano_script(buried_no) == 2} {

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*t1$} $LAYER] || [regexp {l[0-9]*b1$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set length "5.0"
        cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == $nano_script(out_map_name)} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }
        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "r500"
        set pol "negative"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        set sym "r200"
        set pol "positive"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(trim2_x)) / 2.00]]
    set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(trim2_y)) / 2.00]]
    set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
    set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*t2$} $LAYER] || [regexp {l[0-9]*b2$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set length "5.0"
        cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == $nano_script(out_map_name)} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }
        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "r500"
        set pol "negative"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        set sym "r200"
        set pol "positive"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    if {$nano_script(rcc_trim2_x) > 0 || $nano_script(rcc_trim2_y) > 0} {
        set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(rcc_trim2_x)) / 2.0]]
        set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(rcc_trim2_y)) / 2.0]]
        set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x2]]
        set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y2]]

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {[regexp {l[0-9]*t2$} $LAYER] || [regexp {l[0-9]*b2$} $LAYER]} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }

            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set length "5.0"
            cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == $nano_script(out_map_name)} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }
            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set sym "r500"
            set pol "negative"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
            set sym "r200"
            set pol "positive"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
    }

    set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(trim3_x)) / 2.00]]
    set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(trim3_y)) / 2.00]]
    set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
    set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == "cs" || $LAYER == "ss"} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set length "5.0"
        cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == $nano_script(out_map_name)} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }
        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "r500"
        set pol "negative"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        set sym "r200"
        set pol "positive"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {
        set nano_script(final_trim_x) $nano_script(rcc_trim1_x)
        set nano_script(final_trim_y) $nano_script(rcc_trim1_y)
        set trim_x1  [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0]]
        set trim_y1  [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0]]
        set trim_x2  [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1]]
        set trim_y2  [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]]

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == "cs" || $LAYER == "ss" || $LAYER == "csm" || $LAYER == "ssm" || $LAYER == "cslk" || $LAYER == "sslk"} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }
            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set length "5.0"
            cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length
        }

        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers

        set I 0
        foreach LAYER $gROWname {
            if {[lindex $gROWcontext $I] eq "board"} {
                if {$LAYER == $nano_script(out_map_name)} {
                    COM affected_layer,name=$LAYER,mode=single,affected=yes
                }
            }
            incr I
        }

        COM get_affect_layer
        set affect_layer $COMANS
        if {$affect_layer != ""} {
            set sym "r500"
            set pol "negative"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
            set sym "r200"
            set pol "positive"
            add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        }

    } else {
        set nano_script(final_trim_x) $nano_script(trim3_x)
        set nano_script(final_trim_y) $nano_script(trim3_y)
    }
    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set nano_script(active_top) [format %.2f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0]]
    set nano_script(active_left) [format %.2f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0]]

}

COM sr_active,top=$nano_script(active_top),bottom=$nano_script(active_top),left=$nano_script(active_left),right=$nano_script(active_left)

set nano_script(final_trim_text) $nano_script(final_trim_x) append nano_script(final_trim_text) " X " $nano_script(final_trim_y)

COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_size_x,value=$nano_script(final_trim_x),units=mm COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_size_y,value=$nano_script(final_trim_y),units=mm

COM set_attribute,type=step,job=$env(JOB),name1=$env(STEP),name2=,name3=,attribute=f_trim_text,value=$nano_script(final_trim_text),units=mm

trim_text } ## Procedure: nano_stk

proc ::nano_stk {} { global widget env nano_script

set nano_script(stk_t1_drl_name) 1-2-3drl set nano_script(stk_t1_map_name) 1-2-3dd set nano_script(stk_t1_win_name) 1-2-3win set nano_script(stk_b1_drl_name) $nano_script(b2_no)\-$nano_script(b1_no)\-$nano_script(num_layers)\drl set nano_script(stk_b1_map_name) $nano_script(b2_no)\-$nano_script(b1_no)\-$nano_script(num_layers)\dd set nano_script(stk_b1_win_name) $nano_script(b2_no)\-$nano_script(b1_no)\-$nano_script(num_layers)\win set nano_script(stk_t2_drl_name) 2-3drl set nano_script(stk_t2_map_name) 2-3dd set nano_script(stk_t2_win_name) 2-3win set nano_script(stk_b2_drl_name) $nano_script(b2_no)\-$nano_script(b1_no)\drl set nano_script(stk_b2_map_name) $nano_script(b2_no)\-$nano_script(b1_no)\dd set nano_script(stk_b2_win_name) $nano_script(b2_no)\-$nano_script(b1_no)\win set nano_script(stk_t1_layer) $nano_script(layer2) set nano_script(stk_b1_layer) $nano_script(layer$nano_script(b1_no)) set nano_script(stk_t2_layer) $nano_script(layer3) set nano_script(stk_b2_layer) $nano_script(layer$nano_script(b2_no))

set I 0

DO_INFO -t matrix -e $env(JOB)/matrix

set LAY_NO 1 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {$LAYER == $nano_script(stk_t1_drl_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stk_t1_drl
        }
        if {$LAYER == $nano_script(stk_t1_map_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stk_t1_map
        }
        if {$LAYER == $nano_script(stk_t1_win_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stk_t1_win
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_mirror,value=yes,units=mm
        }
        if {$LAYER == $nano_script(stk_b1_drl_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stk_b1_drl
        }
        if {$LAYER == $nano_script(stk_b1_map_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stk_b1_map
        }
        if {$LAYER == $nano_script(stk_b1_win_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stk_b1_win
        }
        if {$LAYER == $nano_script(stk_t2_drl_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stk_t2_drl
        }
        if {$LAYER == $nano_script(stk_t2_map_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stk_t2_map
        }
        if {$LAYER == $nano_script(stk_t2_win_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stk_t2_win
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.out_mirror,value=yes,units=mm
        }
        if {$LAYER == $nano_script(stk_b2_drl_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stk_b2_drl
        }
        if {$LAYER == $nano_script(stk_b2_map_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stk_b2_map
        }
        if {$LAYER == $nano_script(stk_b2_win_name)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=.comment,value=stk_b2_win
        }
        if {$LAYER == $nano_script(stk_t1_layer)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=etec_comment1,value=stk_t1_lay
        }
        if {$LAYER == $nano_script(stk_b1_layer)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=etec_comment1,value=stk_b1_lay
        }
        if {$LAYER == $nano_script(stk_t2_layer)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=etec_comment1,value=stk_t2_lay
        }
        if {$LAYER == $nano_script(stk_b2_layer)} {
            COM set_attribute,type=layer,job=$env(JOB),name1=$env(STEP),name2=$LAYER,name3=,attribute=etec_comment1,value=stk_b2_lay
        }
    }

}

if {$nano_script(panelize) == "1"} {

    nano_pnl hide
    vent_dot
    vent_brick
    in_dot_line
    trim_stg
    vent_out
    if {$nano_script(core_no) > 1} {
        bonding_guide
    }
    tg_guide
    nano_m_tg

    outer_layers_trim
    nano_auto

    COM open_auto_panelize,job=$env(JOB),panel=,pcb=,scheme=
    COM autopan_place_objects,job=$env(JOB),panel=$env(STEP),pcb=$nano_script(pcs_step),scheme=nano_stk
    COM close_auto_panelize  

    nano_g_tg
    laser_drl_break 
    resize_guide_drill
    cleanup_map

}

exit } ## Procedure: nano_auto

proc ::nano_auto {} { global widget env nano_script COMANS

set auto_top_lay pt_mask_area DO_INFO -t layer -e $env(JOB)/$env(STEP)/$auto_top_lay -d exists if {$gEXISTS == "no"} {

    COM create_layer,layer=$auto_top_lay,context=board,type=document,polarity=positive,ins_layer=

} COM truncate_layer,layer=$auto_top_lay

if {$nano_script(buried_no) == 0} {

    nano_auto_old_b0

} if {$nano_script(buried_no) == 1} {

    nano_auto_old_b1

} if {$nano_script(buried_no) == 2} {

    nano_auto_old_b2

} } ## Procedure: nano_auto_old_b0

proc ::nano_auto_old_b0 {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

if {$nano_script(buried_no) == 0} {

    if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {
        set x_ref $nano_script(rcc_trim1_x)
        set y_ref $nano_script(rcc_trim1_y)
    } else {
        set x_ref $nano_script(trim1_x)
        set y_ref $nano_script(trim1_y)
    }
    set auto_x0  [format %.6f [expr $nano_script(pnl_center_x) ]]
    set auto_y0  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00)]]
    set auto_x1  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + 4.5]]
    set auto_y1  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 38.0]]
    set auto_y1_1  [format %.6f [expr $nano_script(pnl_size_y) - (($nano_script(pnl_size_y) - $y_ref) / 2.00) - 50.0]]
    set auto_x2  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + $x_ref - 4.5]]
    set auto_y2  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 38.0]]
    set auto_y2_1  [format %.6f [expr $nano_script(pnl_size_y) - (($nano_script(pnl_size_y) - $y_ref) / 2.00) - 35.0]]
    set auto_y3  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 4.5]]
    set auto_y4  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 8.5]]
    set auto_y5  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 249.5]]
    set auto_y6  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 253.5]]

    foreach LAYER $gROWname {
        if {$LAYER == $nano_script(out_drl_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
        if {$LAYER == $nano_script(out_map_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set symbol "r3000"
        COM cur_atr_reset
        #COM cur_atr_set,attribute=.out_scale
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        set symbol "r2000"
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y3,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y4,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y5,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y6,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers


    DO_INFO -t layer -e $env(JOB)/$env(STEP)/cs -d exists
    if {$gEXISTS == "yes"} {
        COM affected_layer,name=cs,mode=single,affected=yes
        COM cur_atr_reset
        #COM cur_atr_set,attribute=.out_scale
            set symbol "old_auto_top_b1"
            COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1

              COM affected_layer,name=out,mode=all,affected=no
              COM clear_layers
    }    

    DO_INFO -t layer -e $env(JOB)/$env(STEP)/ss -d exists
    if {$gEXISTS == "yes"} {
                COM affected_layer,name=ss,mode=single,affected=yes
                COM cur_atr_reset
                #COM cur_atr_set,attribute=.out_scale
                set symbol "old_auto_bot_b1"
                COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
           COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
           COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
           COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
           COM affected_layer,name=out,mode=all,affected=no
               COM clear_layers
    }

} } ## Procedure: nano_auto_old_b1

proc ::nano_auto_old_b1 {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

if {$nano_script(buried_no) == 1} {

    if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {
        set x_ref $nano_script(rcc_trim1_x)
        set y_ref $nano_script(rcc_trim1_y)
        if {$nano_script(rcc_trim2_x) > 0 || $nano_script(rcc_trim2_y) > 0} {
            set x_ref $nano_script(rcc_trim2_x)
            set y_ref $nano_script(rcc_trim2_y)
        }
    } else {
        set x_ref $nano_script(trim2_x)
        set y_ref $nano_script(trim2_y)
        if {$nano_script(num_layers) == 4} {
            set x_ref $nano_script(trim1_x)
            set y_ref $nano_script(trim1_y)
        }
    }
    set auto_x0  [format %.6f [expr $nano_script(pnl_center_x) ]]
    set auto_y0  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00)]]
    set auto_x1  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + 4.5]]
    set auto_y1  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 38.0]]
    set auto_y1_1  [format %.6f [expr $nano_script(pnl_size_y) - (($nano_script(pnl_size_y) - $y_ref) / 2.00) - 50.0]]
    set auto_x2  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + $x_ref - 4.5]]
    set auto_y2  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 38.0]]
    set auto_y2_1  [format %.6f [expr $nano_script(pnl_size_y) - (($nano_script(pnl_size_y) - $y_ref) / 2.00) - 35.0]]
    set auto_y3  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 4.5]]
    set auto_y4  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 8.5]]
    set auto_y5  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 249.5]]
    set auto_y6  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 253.5]]

    foreach LAYER $gROWname {
        if {$LAYER == $nano_script(out_drl_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
        if {$LAYER == $nano_script(out_map_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set symbol "r3000"
        COM cur_atr_reset
        #COM cur_atr_set,attribute=.out_scale
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        set symbol "r2000"
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y3,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y4,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y5,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y6,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    DO_INFO -t layer -e $env(JOB)/$env(STEP)/cs -d exists
    if {$gEXISTS == "yes"} {
        COM affected_layer,name=cs,mode=single,affected=yes
        COM cur_atr_reset
        #COM cur_atr_set,attribute=.out_scale
              set symbol "old_auto_top_b1"
              COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1

              COM affected_layer,name=out,mode=all,affected=no
              COM clear_layers
    }    

    DO_INFO -t layer -e $env(JOB)/$env(STEP)/ss -d exists
    if {$gEXISTS == "yes"} {
                COM affected_layer,name=ss,mode=single,affected=yes
                COM cur_atr_reset
                #COM cur_atr_set,attribute=.out_scale
                set symbol "old_auto_bot_b1"
                COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM affected_layer,name=out,mode=all,affected=no
               COM clear_layers
    }

    ########### buried layer #####################

    if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {
        set x_ref $nano_script(rcc_trim1_x)
        set y_ref $nano_script(rcc_trim1_y)
    } else {
        set x_ref $nano_script(trim1_x)
        set y_ref $nano_script(trim1_y)
    }
    set auto_x0  [format %.6f [expr $nano_script(pnl_center_x) ]]
    set auto_y0  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00)]]
    set auto_x1  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + 4.5]]
    set auto_y1  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 38.0]]
    set auto_y1_1  [format %.6f [expr $nano_script(pnl_size_y) - (($nano_script(pnl_size_y) - $y_ref) / 2.00) - 50.0]]
    set auto_x2  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + $x_ref - 4.5]]
    set auto_y2  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 38.0]]
    set auto_y2_1  [format %.6f [expr $nano_script(pnl_size_y) - (($nano_script(pnl_size_y) - $y_ref) / 2.00) - 35.0]]
    set auto_y3  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 4.5]]
    set auto_y4  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 8.5]]
    set auto_y5  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 249.5]]
    set auto_y6  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 253.5]]

    foreach LAYER $gROWname {
        if {$LAYER == $nano_script(b1_drl_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
        if {$LAYER == $nano_script(b1_map_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set symbol "r3000"
        COM cur_atr_reset
        #COM cur_atr_set,attribute=.out_scale
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        set symbol "r2000"
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y3,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y4,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y5,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y6,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set auto_top_lay $nano_script(b1_top_lay)
    set auto_btm_lay $nano_script(b1_btm_lay)
    DO_INFO -t layer -e $env(JOB)/$env(STEP)/$auto_top_lay -d exists
    if {$gEXISTS == "yes"} {
         COM affected_layer,name=$auto_top_lay,mode=single,affected=yes
               COM cur_atr_reset
               #COM cur_atr_set,attribute=.out_scale
               set symbol "old_auto_top_b1"
               COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1

    }
    DO_INFO -t layer -e $env(JOB)/$env(STEP)/$auto_btm_lay -d exists
    if {$gEXISTS == "yes"} {
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
        COM affected_layer,name=$auto_btm_lay,mode=single,affected=yes
        COM cur_atr_reset
        #COM cur_atr_set,attribute=.out_scale
        set symbol "old_auto_bot_b1"
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers 
    }

} } ## Procedure: nano_auto_old_b2

proc ::nano_auto_old_b2 {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

if {$nano_script(buried_no) == 2} {

    if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {
        set x_ref $nano_script(rcc_trim1_x)
        set y_ref $nano_script(rcc_trim1_y)
        if {$nano_script(rcc_trim2_x) > 0 || $nano_script(rcc_trim2_y) > 0} {
            set x_ref $nano_script(rcc_trim2_x)
            set y_ref $nano_script(rcc_trim2_y)
        }
    } else {
        set x_ref $nano_script(trim3_x)
        set y_ref $nano_script(trim3_y)
    }
    set auto_x0  [format %.6f [expr $nano_script(pnl_center_x) ]]
    set auto_y0  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00)]]
    set auto_x1  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + 4.5]]
    set auto_y1  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 38.0]]
    set auto_y1_1  [format %.6f [expr $nano_script(pnl_size_y) - (($nano_script(pnl_size_y) - $y_ref) / 2.00) - 50.0]]
    set auto_x2  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + $x_ref - 4.5]]
    set auto_y2  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 38.0]]
    set auto_y2_1  [format %.6f [expr $nano_script(pnl_size_y) - (($nano_script(pnl_size_y) - $y_ref) / 2.00) - 35.0]]
    set auto_y3  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 4.5]]
    set auto_y4  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 8.5]]
    set auto_y5  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 249.5]]
    set auto_y6  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 253.5]]

    foreach LAYER $gROWname {
        if {$LAYER == $nano_script(out_drl_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
        if {$LAYER == $nano_script(out_map_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set symbol "r3000"
        COM cur_atr_reset
        #COM cur_atr_set,attribute=.out_scale
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        set symbol "r2000"
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y3,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y4,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y5,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y6,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set auto_top_lay "cs"
    set auto_btm_lay "ss"
    DO_INFO -t layer -e $env(JOB)/$env(STEP)/$auto_top_lay -d exists
    if {$gEXISTS == "yes"} {
         COM affected_layer,name=$auto_top_lay,mode=single,affected=yes
               COM cur_atr_reset
               #COM cur_atr_set,attribute=.out_scale
               set symbol "old_auto_top_b1"
               COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1

    }
    DO_INFO -t layer -e $env(JOB)/$env(STEP)/$auto_btm_lay -d exists
    if {$gEXISTS == "yes"} {
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
        COM affected_layer,name=$auto_btm_lay,mode=single,affected=yes
        COM cur_atr_reset
        #COM cur_atr_set,attribute=.out_scale
        set symbol "old_auto_bot_b1"
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers 
    }

    ########### buried2 layer #####################

    if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {
        set x_ref $nano_script(rcc_trim1_x)
        set y_ref $nano_script(rcc_trim1_y)
    } else {
        set x_ref $nano_script(trim2_x)
        set y_ref $nano_script(trim2_y)
    }
    set auto_x0  [format %.6f [expr $nano_script(pnl_center_x) ]]
    set auto_y0  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00)]]
    set auto_x1  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + 4.5]]
    set auto_y1  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 38.0]]
    set auto_y1_1  [format %.6f [expr $nano_script(pnl_size_y) - (($nano_script(pnl_size_y) - $y_ref) / 2.00) - 50.0]]
    set auto_x2  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + $x_ref - 4.5]]
    set auto_y2  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 38.0]]
    set auto_y2_1  [format %.6f [expr $nano_script(pnl_size_y) - (($nano_script(pnl_size_y) - $y_ref) / 2.00) - 35.0]]
    set auto_y3  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 4.5]]
    set auto_y4  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 8.5]]
    set auto_y5  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 249.5]]
    set auto_y6  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 253.5]]

    foreach LAYER $gROWname {
        if {$LAYER == $nano_script(b2_drl_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
        if {$LAYER == $nano_script(b2_map_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set symbol "r3000"
        COM cur_atr_reset
        #COM cur_atr_set,attribute=.out_scale
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        set symbol "r2000"
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y3,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y4,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y5,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y6,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set auto_top_lay $nano_script(b2_top_lay)
    set auto_btm_lay $nano_script(b2_btm_lay)
    DO_INFO -t layer -e $env(JOB)/$env(STEP)/$auto_top_lay -d exists
    if {$gEXISTS == "yes"} {
         COM affected_layer,name=$auto_top_lay,mode=single,affected=yes
               COM cur_atr_reset
               #COM cur_atr_set,attribute=.out_scale
               set symbol "old_auto_top_b1"
               COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1

    }
    DO_INFO -t layer -e $env(JOB)/$env(STEP)/$auto_btm_lay -d exists
    if {$gEXISTS == "yes"} {
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
        COM affected_layer,name=$auto_btm_lay,mode=single,affected=yes
        COM cur_atr_reset
        #COM cur_atr_set,attribute=.out_scale
        set symbol "old_auto_bot_b1"
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers 
    } 

    ########### buried1 layer #####################

    set x_ref $nano_script(trim1_x)
    set y_ref $nano_script(trim1_y)

    set auto_x0  [format %.6f [expr $nano_script(pnl_center_x) ]]
    set auto_y0  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00)]]
    set auto_x1  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + 4.5]]
    set auto_y1  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 38.0]]
    set auto_y1_1  [format %.6f [expr $nano_script(pnl_size_y) - (($nano_script(pnl_size_y) - $y_ref) / 2.00) - 50.0]]
    set auto_x2  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + $x_ref - 4.5]]
    set auto_y2  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 38.0]]
    set auto_y2_1  [format %.6f [expr $nano_script(pnl_size_y) - (($nano_script(pnl_size_y) - $y_ref) / 2.00) - 35.0]]
    set auto_y3  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 4.5]]
    set auto_y4  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 8.5]]
    set auto_y5  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 249.5]]
    set auto_y6  [format %.6f [expr (($nano_script(pnl_size_y) - $y_ref) / 2.00) + 253.5]]

    foreach LAYER $gROWname {
        if {$LAYER == $nano_script(b1_drl_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
        if {$LAYER == $nano_script(b1_map_name)} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }
    }
    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set symbol "r3000"
        COM cur_atr_reset
        #COM cur_atr_set,attribute=.out_scale
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        set symbol "r2000"
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y3,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y4,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y5,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y6,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set auto_top_lay $nano_script(b1_top_lay)
    set auto_btm_lay $nano_script(b1_btm_lay)
    DO_INFO -t layer -e $env(JOB)/$env(STEP)/$auto_top_lay -d exists
    if {$gEXISTS == "yes"} {
         COM affected_layer,name=$auto_top_lay,mode=single,affected=yes
               COM cur_atr_reset
               #COM cur_atr_set,attribute=.out_scale
               set symbol "old_auto_top_b1"
               COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1

    }
    DO_INFO -t layer -e $env(JOB)/$env(STEP)/$auto_btm_lay -d exists
    if {$gEXISTS == "yes"} {
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
        COM affected_layer,name=$auto_btm_lay,mode=single,affected=yes
        COM cur_atr_reset
        #COM cur_atr_set,attribute=.out_scale
        set symbol "old_auto_bot_b1"
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x1,y=$auto_y1_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$auto_x2,y=$auto_y2_1,symbol=$symbol,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers 
    }

} } ## Procedure: resize_guide_drill

proc ::resize_guide_drill {} { global widget nano_script env COMMANS

set symbols "r1000\;r2000\;r3000\;r3150\;r3200" COM affected_filter,filter=(type=drill&context=board&side=top|bottom|inner|none) COM filter_set,filter_name=popup,update_popup=no,feat_types=pad COM filter_set,filter_name=popup,update_popup=no,include_syms=$symbols COM filter_area_strt COM filter_area_end,layer=,filter_name=popup,operation=select,area_type=none,inside_area=no,intersect_area=no,lines_only=no,ovals_only=no,min_len=0,max_len=0,min_angle=0,max_angle=0 COM sel_resize,size=5,corner_ctl=no COM filter_reset,filter_name=popup COM sel_delete_atr,attributes=.pnl_place COM affected_filter,filter=(type=&context=board&side=top|bottom|inner|none) } ## Procedure: trim_text

proc ::trim_text {} { global widget env nano_script COMANS DO_INFO -t matrix -e $env(JOB)/matrix if {$nano_script(num_layers) < 3} {

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set trim_x1 "0.0000"
    set trim_y1 "0.0000"
    set trim_x2 [format %.6f $nano_script(pnl_size_x)]
    set trim_y2 [format %.6f $nano_script(pnl_size_y)]

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {$LAYER == $nano_script(out_map_name)} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }    

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "r500"
        set pol "negative"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
        set sym "r200"
        set pol "positive"
        add_rectangle $sym $trim_x1 $trim_y1 $trim_x2 $trim_y2 $pol
    }

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set target_layer $nano_script(out_map_name) set text_x format %.2f [expr $nano_script(pnl_center_x) + 5.0] set text_y [expr $nano_script(pnl_size_y) + 0.5 set text_contents "PANEL SIZE" append text_contents " " $nano_script(pnl_size_x) "X" $nano_script(pnl_size_y) COM affected_layer,name=$target_layer,mode=single,affected=yes COM add_text,attributes=no,type=string,x=$text_x,y=$text_y,text=$text_contents,x_size=1,y_size=1.2,w_factor=0.492125988,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

if {$nano_script(buried_no) == 0} {

    if {$nano_script(trim1_x) != $nano_script(pnl_size_x) || $nano_script(trim1_y) != $nano_script(pnl_size_y)} {
        set target_layer $nano_script(out_map_name)
        set text_x [expr $nano_script(pnl_center_x) + 5.0]
        set text_y [expr $nano_script(pnl_center_y) + ($nano_script(trim1_y) / 2.0) + 0.5]
        set text_contents 1-$nano_script(num_layers)\TRIM
        append text_contents " " $nano_script(trim1_x) "X" $nano_script(trim1_y)
        COM affected_layer,name=$target_layer,mode=single,affected=yes
        COM add_text,attributes=no,type=string,x=$text_x,y=$text_y,text=$text_contents,x_size=1,y_size=1.2,w_factor=0.492125988,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
        if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {
            set target_layer $nano_script(out_map_name)
            set text_x [expr $nano_script(pnl_center_x) + 5.0]
            set text_y [expr $nano_script(pnl_center_y) + ($nano_script(rcc_trim1_y) / 2.0) + 0.5]
            set text_contents "RCC TRIM"
            append text_contents " " $nano_script(rcc_trim1_x) "X" $nano_script(rcc_trim1_y)
            COM affected_layer,name=$target_layer,mode=single,affected=yes
            COM add_text,attributes=no,type=string,x=$text_x,y=$text_y,text=$text_contents,x_size=1,y_size=1.2,w_factor=0.492125988,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
            COM affected_layer,name=out,mode=all,affected=no
            COM clear_layers
        }
    }

}

if {$nano_script(buried_no) == 1} {

    if {$nano_script(trim2_x) > 0 || $nano_script(trim2_y) > 0} {
        if {$nano_script(num_layers) > 4} {
            set target_layer $nano_script(out_map_name)
            set text_x [expr $nano_script(pnl_center_x) + 5.0]
            set text_y [expr $nano_script(pnl_center_y) + ($nano_script(trim2_y) / 2.0) + 0.5]
            set text_contents 1-$nano_script(num_layers)\TRIM
            append text_contents " " $nano_script(trim2_x) "X" $nano_script(trim2_y)
            COM affected_layer,name=$target_layer,mode=single,affected=yes
            COM add_text,attributes=no,type=string,x=$text_x,y=$text_y,text=$text_contents,x_size=1,y_size=1.2,w_factor=0.492125988,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
            COM affected_layer,name=out,mode=all,affected=no
            COM clear_layers
        }

    }
    if {$nano_script(trim1_x) > 0 || $nano_script(trim1_y) > 0} {
        set target_layer $nano_script(out_map_name)
        set text_x [expr $nano_script(pnl_center_x) + 5.0]
        set text_y [expr $nano_script(pnl_center_y) + ($nano_script(trim1_y) / 2.0) + 0.5]
        set text_contents 2-$nano_script(b1_no)\TRIM
        #if {$nano_script(num_layers) > 4} {
        #    set text_contents 2-$nano_script(b1_no)\TRIM
        #}
        append text_contents " " $nano_script(trim1_x) "X" $nano_script(trim1_y)
        COM affected_layer,name=$target_layer,mode=single,affected=yes
        COM add_text,attributes=no,type=string,x=$text_x,y=$text_y,text=$text_contents,x_size=1,y_size=1.2,w_factor=0.492125988,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
    }    
    if {$nano_script(rcc_trim2_x) > 0 || $nano_script(rcc_trim2_y) > 0} {
        set target_layer $nano_script(out_map_name)
        set text_x [expr $nano_script(pnl_center_x) + 5.0]
        set text_y [expr $nano_script(pnl_center_y) + ($nano_script(rcc_trim2_y) / 2.0) + 0.5]
        set text_contents "RCC TRIM"
        append text_contents " " $nano_script(rcc_trim2_x) "X" $nano_script(rcc_trim2_y)
        COM affected_layer,name=$target_layer,mode=single,affected=yes
        COM add_text,attributes=no,type=string,x=$text_x,y=$text_y,text=$text_contents,x_size=1,y_size=1.2,w_factor=0.492125988,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
    }

    if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {
        set target_layer $nano_script(out_map_name)
        set text_x [expr $nano_script(pnl_center_x) + 5.0]
        set text_y [expr $nano_script(pnl_center_y) + ($nano_script(rcc_trim1_y) / 2.0) + 0.5]
        set text_contents "RCC TRIM"
        append text_contents " " $nano_script(rcc_trim1_x) "X" $nano_script(rcc_trim1_y)
        COM affected_layer,name=$target_layer,mode=single,affected=yes
        COM add_text,attributes=no,type=string,x=$text_x,y=$text_y,text=$text_contents,x_size=1,y_size=1.2,w_factor=0.492125988,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
    }

}

if {$nano_script(buried_no) == 2} {

    if {$nano_script(trim3_x) > 0 || $nano_script(trim3_y) > 0} {
        set target_layer $nano_script(out_map_name)
        set text_x [expr $nano_script(pnl_center_x) + 5.0]
        set text_y [expr $nano_script(pnl_center_y) + ($nano_script(trim3_y) / 2.0) + 0.5]
        set text_contents 1-$nano_script(num_layers)\TRIM
        append text_contents " " $nano_script(trim3_x) "X" $nano_script(trim3_y)
        COM affected_layer,name=$target_layer,mode=single,affected=yes
        COM add_text,attributes=no,type=string,x=$text_x,y=$text_y,text=$text_contents,x_size=1,y_size=1.2,w_factor=0.492125988,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
    }
    if {$nano_script(trim2_x) > 0 || $nano_script(trim2_y) > 0} {
        set target_layer $nano_script(out_map_name)
        set text_x [expr $nano_script(pnl_center_x) + 5.0]
        set text_y [expr $nano_script(pnl_center_y) + ($nano_script(trim2_y) / 2.0) + 0.5]
        set text_contents 2-$nano_script(b1_no)\TRIM
        append text_contents " " $nano_script(trim2_x) "X" $nano_script(trim2_y)
        COM affected_layer,name=$target_layer,mode=single,affected=yes
        COM add_text,attributes=no,type=string,x=$text_x,y=$text_y,text=$text_contents,x_size=1,y_size=1.2,w_factor=0.492125988,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
    }
    if {$nano_script(trim1_x) > 0 || $nano_script(trim1_y) > 0} {
        set target_layer $nano_script(out_map_name)
        set text_x [expr $nano_script(pnl_center_x) + 5.0]
        set text_y [expr $nano_script(pnl_center_y) + ($nano_script(trim1_y) / 2.0) + 0.5]
        set text_contents 3-$nano_script(b2_no)\TRIM
        append text_contents " " $nano_script(trim1_x) "X" $nano_script(trim1_y)
        COM affected_layer,name=$target_layer,mode=single,affected=yes
        COM add_text,attributes=no,type=string,x=$text_x,y=$text_y,text=$text_contents,x_size=1,y_size=1.2,w_factor=0.492125988,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
    }    
    if {$nano_script(rcc_trim2_x) > 0 || $nano_script(rcc_trim2_y) > 0} {
        set target_layer $nano_script(out_map_name)
        set text_x [expr $nano_script(pnl_center_x) + 5.0]
        set text_y [expr $nano_script(pnl_center_y) + ($nano_script(rcc_trim2_y) / 2.0) + 0.5]
        set text_contents "RCC TRIM"
        append text_contents " " $nano_script(rcc_trim2_x) "X" $nano_script(rcc_trim2_y)
        COM affected_layer,name=$target_layer,mode=single,affected=yes
        COM add_text,attributes=no,type=string,x=$text_x,y=$text_y,text=$text_contents,x_size=1,y_size=1.2,w_factor=0.492125988,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
    }

    if {$nano_script(rcc_trim1_x) > 0 || $nano_script(rcc_trim1_y) > 0} {
        set target_layer $nano_script(out_map_name)
        set text_x [expr $nano_script(pnl_center_x) + 5.0]
        set text_y [expr $nano_script(pnl_center_y) + ($nano_script(rcc_trim1_y) / 2.0) + 0.5]
        set text_contents "RCC TRIM"
        append text_contents " " $nano_script(rcc_trim1_x) "X" $nano_script(rcc_trim1_y)
        COM affected_layer,name=$target_layer,mode=single,affected=yes
        COM add_text,attributes=no,type=string,x=$text_x,y=$text_y,text=$text_contents,x_size=1,y_size=1.2,w_factor=0.492125988,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM affected_layer,name=out,mode=all,affected=no
        COM clear_layers
    }

} } ## Procedure: cleanup_map

proc ::cleanup_map {} { global widget env widget nano_script COMANS

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

COM affected_layer,name=$nano_script(out_map_name),mode=single,affected=yes

set types "line\;pad\;surface\;arc" COM filter_set,filter_name=popup,update_popup=no,feat_types=pad COM filter_area_strt COM filter_area_end,layer=,filter_name=popup,operation=select,area_type=none,inside_area=no,intersect_area=no,lines_only=no,ovals_only=no,min_len=0,max_len=0,min_angle=0,max_angle=0 COM sel_break COM filter_reset,filter_name=popup COM filter_set,filter_name=popup,update_popup=no,polarity=negative COM filter_area_strt COM filter_area_end,layer=,filter_name=popup,operation=select,area_type=none,inside_area=no,intersect_area=no,lines_only=no,ovals_only=no,min_len=0,max_len=0,min_angle=0,max_angle=0 COM sel_delete COM filter_reset,filter_name=popup

COM affected_layer,name=out,mode=all,affected=no COM clear_layers } ## Procedure: outer_layers_trim

proc ::outer_layers_trim {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

set trim_x1 [format %.6f [expr ($nano_script(pnl_size_x) - $nano_script(final_trim_x)) / 2.0] set trim_y1 [format %.6f [expr ($nano_script(pnl_size_y) - $nano_script(final_trim_y)) / 2.0] set trim_x2 [format %.6f [expr $nano_script(pnl_size_x) - $trim_x1] set trim_y2 [format %.6f [expr $nano_script(pnl_size_y) - $trim_y1]

set I 0 foreach LAYER $gROWname {

    if {[lindex $gROWcontext $I] eq "board"} {
        if {[regexp {cs*} $LAYER] || [regexp {ss*} $LAYER]} {
            COM affected_layer,name=$LAYER,mode=single,affected=yes
        }


    }
    incr I

}

COM get_affect_layer set affect_layer $COMANS if {$affect_layer != ""} {

    set length "5.0"
    cornor_rectangle r1000 r500 $trim_x1 $trim_y1 $trim_x2 $trim_y2 $length

}

COM affected_layer,name=out,mode=all,affected=no COM clear_layers } ## Procedure: nano_m_tg

proc ::nano_m_tg {} { global widget env nano_script COMANS

if {$nano_script(buried_no) == 0} {

    nano_m_tg_b0

} if {$nano_script(buried_no) == 1} {

    nano_m_tg_b0
    nano_m_tg_b1

} if {$nano_script(buried_no) == 2} {

    nano_m_tg_b0
    nano_m_tg_b1
    nano_m_tg_b2

} } ## Procedure: nano_m_tg_b0

proc ::nano_m_tg_b0 {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

#if {$nano_script(buried_no) == 0} {

    set x_ref $nano_script(trim1_x)
    set y_ref $nano_script(trim1_y)

    set m_tg_x1  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + 4.5]]
    set m_tg_x2  [format %.6f [expr $nano_script(pnl_size_x) - (($nano_script(pnl_size_x) - $x_ref) / 2.00) - 4.5]]
    set m_tg_y1  [format %.6f [expr $nano_script(pnl_center_y) - 25.0]]
    set m_tg_y2  [format %.6f [expr $nano_script(pnl_min_y) + 75.0]]
    set m_tg_y3  [format %.6f [expr $nano_script(pnl_max_y) - 75.0]]

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*t$} $LAYER] || [regexp {l[0-9]*b$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "nano_m_tg_p"
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y1,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y2,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y3,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y1,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y2,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y3,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

#} } ## Procedure: nano_m_tg_b1

proc ::nano_m_tg_b1 {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

#if {$nano_script(buried_no) == 1} {

    set x_ref $nano_script(trim2_x)
    set y_ref $nano_script(trim2_y)
    if {$nano_script(num_layers) == 4} {
        set x_ref $nano_script(trim1_x)
        set y_ref $nano_script(trim1_y)
    }

    set m_tg_x1  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + 4.5]]
    set m_tg_x2  [format %.6f [expr $nano_script(pnl_size_x) - (($nano_script(pnl_size_x) - $x_ref) / 2.00) - 4.5]]
    set m_tg_y1  [format %.6f [expr $nano_script(pnl_center_y) - 35.0]]
    set m_tg_y2  [format %.6f [expr $nano_script(pnl_min_y) + 85.0]]
    set m_tg_y3  [format %.6f [expr $nano_script(pnl_max_y) - 85.0]]

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*t$} $LAYER] || [regexp {l[0-9]*b$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "s7500"
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y1,symbol=$sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y2,symbol=$sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y3,symbol=$sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y1,symbol=$sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y2,symbol=$sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y3,symbol=$sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*t1$} $LAYER] || [regexp {l[0-9]*b1$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "nano_m_tg_p"
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y1,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y2,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y3,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y1,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y2,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y3,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

#} } ## Procedure: nano_m_tg_b2

proc ::nano_m_tg_b2 {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

COM affected_layer,name=out,mode=all,affected=no COM clear_layers

#if {$nano_script(buried_no) == 2} {

    set x_ref $nano_script(trim3_x)
    set y_ref $nano_script(trim3_y)

    set m_tg_x1  [format %.6f [expr (($nano_script(pnl_size_x) - $x_ref) / 2.00) + 4.5]]
    set m_tg_x2  [format %.6f [expr $nano_script(pnl_size_x) - (($nano_script(pnl_size_x) - $x_ref) / 2.00) - 4.5]]
    set m_tg_y1  [format %.6f [expr $nano_script(pnl_center_y) - 45.0]]
    set m_tg_y2  [format %.6f [expr $nano_script(pnl_min_y) + 95.0]]
    set m_tg_y3  [format %.6f [expr $nano_script(pnl_max_y) - 95.0]]

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*t$} $LAYER] || [regexp {l[0-9]*b$} $LAYER] || [regexp {l[0-9]*t1$} $LAYER] || [regexp {l[0-9]*b1$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "s7500"
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y1,symbol=$sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y2,symbol=$sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y3,symbol=$sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y1,symbol=$sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y2,symbol=$sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y3,symbol=$sym,polarity=negative,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*t2$} $LAYER] || [regexp {l[0-9]*b2$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        set sym "nano_m_tg_p"
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y1,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y2,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x1,y=$m_tg_y3,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y1,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y2,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
        COM add_pad,attributes=no,x=$m_tg_x2,y=$m_tg_y3,symbol=$sym,polarity=positive,angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

#} } ## Procedure: nano_g_tg

proc ::nano_g_tg {} { global widget env nano_script COMANS

if {$nano_script(buried_no) == 0} {

    nano_g_tg_b0

} if {$nano_script(buried_no) == 1} {

    nano_g_tg_b0
    nano_g_tg_b1

} if {$nano_script(buried_no) == 2} {

    nano_g_tg_b0
    nano_g_tg_b1
    nano_g_tg_b2

} } ## Procedure: nano_g_tg_b0

proc ::nano_g_tg_b0 {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*t$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        cal_distance
        set text1 "G1-G3 \: "
        append text1 $nano_script(dist1)
        set text2 "G2-G4 \: "
        append text2 $nano_script(dist2)
        set sym "s6000"
        set line_x1 [format %.6f [expr $nano_script(pnl_center_x) + 20.0]]
        set line_x2 [format %.6f [expr $nano_script(pnl_center_x) + 45.0]]
        set line_y1 [format %.6f [expr $nano_script(pcb_area_min_y) - 6.0]]
        set line_y2 [format %.6f [expr $nano_script(pcb_area_min_y) - 5.5]]
        set line_y3 [format %.6f [expr $nano_script(pcb_area_min_y) - 8.0]]
        COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y1,symbol=$sym,polarity=negative
        COM add_text,attributes=no,type=string,x=$line_x1,y=$line_y2,text=$text1,x_size=1.8,y_size=2,w_factor=0.656167984,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM add_text,attributes=no,type=string,x=$line_x1,y=$line_y3,text=$text2,x_size=1.8,y_size=2,w_factor=0.656167984,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*b$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        cal_distance
        set text1 "G1-G3 \: "
        append text1 $nano_script(dist1)
        set text2 "G2-G4 \: "
        append text2 $nano_script(dist2)
        set sym "s6000"
        set line_x1 [format %.6f [expr $nano_script(pnl_center_x) + 20.0]]
        set line_x2 [format %.6f [expr $nano_script(pnl_center_x) + 45.0]]
        set line_y1 [format %.6f [expr $nano_script(pcb_area_min_y) - 6.0]]
        set line_y2 [format %.6f [expr $nano_script(pcb_area_min_y) - 5.5]]
        set line_y3 [format %.6f [expr $nano_script(pcb_area_min_y) - 8.0]]
        COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y1,symbol=$sym,polarity=negative
        COM add_text,attributes=no,type=string,x=$line_x2,y=$line_y2,text=$text1,x_size=1.8,y_size=2,w_factor=0.656167984,polarity=positive,angle=0,mirror=yes,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM add_text,attributes=no,type=string,x=$line_x2,y=$line_y3,text=$text2,x_size=1.8,y_size=2,w_factor=0.656167984,polarity=positive,angle=0,mirror=yes,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

} ## Procedure: nano_g_tg_b1

proc ::nano_g_tg_b1 {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*t1$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        cal_distance
        set text1 "G1-G3 \: "
        append text1 $nano_script(dist1)
        set text2 "G2-G4 \: "
        append text2 $nano_script(dist2)
        set sym "s6000"
        set line_x1 [format %.6f [expr $nano_script(pnl_center_x) + 20.0]]
        set line_x2 [format %.6f [expr $nano_script(pnl_center_x) + 45.0]]
        set line_y1 [format %.6f [expr $nano_script(pcb_area_min_y) - 6.0]]
        set line_y2 [format %.6f [expr $nano_script(pcb_area_min_y) - 5.5]]
        set line_y3 [format %.6f [expr $nano_script(pcb_area_min_y) - 8.0]]
        COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y1,symbol=$sym,polarity=negative
        COM add_text,attributes=no,type=string,x=$line_x1,y=$line_y2,text=$text1,x_size=1.8,y_size=2,w_factor=0.656167984,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM add_text,attributes=no,type=string,x=$line_x1,y=$line_y3,text=$text2,x_size=1.8,y_size=2,w_factor=0.656167984,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*b1$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        cal_distance
        set text1 "G1-G3 \: "
        append text1 $nano_script(dist1)
        set text2 "G2-G4 \: "
        append text2 $nano_script(dist2)
        set sym "s6000"
        set line_x1 [format %.6f [expr $nano_script(pnl_center_x) + 20.0]]
        set line_x2 [format %.6f [expr $nano_script(pnl_center_x) + 45.0]]
        set line_y1 [format %.6f [expr $nano_script(pcb_area_min_y) - 6.0]]
        set line_y2 [format %.6f [expr $nano_script(pcb_area_min_y) - 5.5]]
        set line_y3 [format %.6f [expr $nano_script(pcb_area_min_y) - 8.0]]
        COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y1,symbol=$sym,polarity=negative
        COM add_text,attributes=no,type=string,x=$line_x2,y=$line_y2,text=$text1,x_size=1.8,y_size=2,w_factor=0.656167984,polarity=positive,angle=0,mirror=yes,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM add_text,attributes=no,type=string,x=$line_x2,y=$line_y3,text=$text2,x_size=1.8,y_size=2,w_factor=0.656167984,polarity=positive,angle=0,mirror=yes,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

} ## Procedure: nano_g_tg_b2

proc ::nano_g_tg_b2 {} { global widget env nano_script COMANS

DO_INFO -t matrix -e $env(JOB)/matrix

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*t2$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        cal_distance
        set text1 "G1-G3 \: "
        append text1 $nano_script(dist1)
        set text2 "G2-G4 \: "
        append text2 $nano_script(dist2)
        set sym "s6000"
        set line_x1 [format %.6f [expr $nano_script(pnl_center_x) + 20.0]]
        set line_x2 [format %.6f [expr $nano_script(pnl_center_x) + 45.0]]
        set line_y1 [format %.6f [expr $nano_script(pcb_area_min_y) - 6.0]]
        set line_y2 [format %.6f [expr $nano_script(pcb_area_min_y) - 5.5]]
        set line_y3 [format %.6f [expr $nano_script(pcb_area_min_y) - 8.0]]
        COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y1,symbol=$sym,polarity=negative
        COM add_text,attributes=no,type=string,x=$line_x1,y=$line_y2,text=$text1,x_size=1.8,y_size=2,w_factor=0.656167984,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM add_text,attributes=no,type=string,x=$line_x1,y=$line_y3,text=$text2,x_size=1.8,y_size=2,w_factor=0.656167984,polarity=positive,angle=0,mirror=no,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

    set I 0
    foreach LAYER $gROWname {
        if {[lindex $gROWcontext $I] eq "board"} {
            if {[regexp {l[0-9]*b2$} $LAYER]} {
                COM affected_layer,name=$LAYER,mode=single,affected=yes
            }

        }
        incr I
    }

    COM get_affect_layer
    set affect_layer $COMANS
    if {$affect_layer != ""} {
        cal_distance
        set text1 "G1-G3 \: "
        append text1 $nano_script(dist1)
        set text2 "G2-G4 \: "
        append text2 $nano_script(dist2)
        set sym "s6000"
        set line_x1 [format %.6f [expr $nano_script(pnl_center_x) + 20.0]]
        set line_x2 [format %.6f [expr $nano_script(pnl_center_x) + 45.0]]
        set line_y1 [format %.6f [expr $nano_script(pcb_area_min_y) - 6.0]]
        set line_y2 [format %.6f [expr $nano_script(pcb_area_min_y) - 5.5]]
        set line_y3 [format %.6f [expr $nano_script(pcb_area_min_y) - 8.0]]
        COM add_line,attributes=no,xs=$line_x1,ys=$line_y1,xe=$line_x2,ye=$line_y1,symbol=$sym,polarity=negative
        COM add_text,attributes=no,type=string,x=$line_x2,y=$line_y2,text=$text1,x_size=1.8,y_size=2,w_factor=0.656167984,polarity=positive,angle=0,mirror=yes,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
        COM add_text,attributes=no,type=string,x=$line_x2,y=$line_y3,text=$text2,x_size=1.8,y_size=2,w_factor=0.656167984,polarity=positive,angle=0,mirror=yes,fontname=standard,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes,bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=5.08,ver=1
    }

    COM affected_layer,name=out,mode=all,affected=no
    COM clear_layers

} ## Procedure: cal_distance

proc ::cal_distance {} { global widget nano_script env COMANS

COM get_affect_layer set affect_layer lindex $COMANS 0

COM filter_reset,filter_name=popup COM filter_set,filter_name=popup,update_popup=no,feat_types=pad COM filter_set,filter_name=popup,update_popup=no,include_syms=nano_g_tg_p COM filter_area_strt COM filter_area_end,layer=,filter_name=popup,operation=select,area_type=none,inside_area=no,intersect_area=no,lines_only=no,ovals_only=no,min_len=0,max_len=0,min_angle=0,max_angle=0 COM filter_atr_reset

COM filter_reset,filter_name=popup

COM get_select_count set sel_cnt $COMANS if {$sel_cnt > 0} {

    set coord_command "args=-t layer -e $env(JOB)/$env(STEP)/$affect_layer -d FEATURES -o select ,out_file=/genesis/tmp/coord_list ,write_mode=replace ,units=mm"
    COM info,$coord_command
    set file /genesis/tmp/coord_list
    set fileID [open $file r]
    set contents [read $fileID]
    close $fileID

}

set I 0 foreach line split $contents \n {

    regsub -all "#" $line "" line

    if {[string match -nocase p* $line] == 1} {
        incr I
        set line [string trimleft $line "P "]
        if {$I == 1} {
            set xloc1 [format %.6f [lindex $line 0]]
            set yloc1 [format %.6f [lindex $line 1]]
        }
        if {$I == 2} {
            set xloc2 [format %.6f [lindex $line 0]]
            set yloc2 [format %.6f [lindex $line 1]]
        }
        if {$I == 3} {
            set xloc3 [format %.6f [lindex $line 0]]
            set yloc3 [format %.6f [lindex $line 1]]
        }
        if {$I == 4} {
            set xloc4 [format %.6f [lindex $line 0]]
            set yloc4 [format %.6f [lindex $line 1]]
        }
    }

} set dist_x1 [format %.6f [expr $xloc1 - $xloc2] set dist_y1 [format %.6f [expr $yloc1 - $yloc2]

set dist_x2 [format %.6f [expr $xloc3 - $xloc4] set dist_y2 [format %.6f [expr $yloc3 - $yloc4]

if {$dist_x1 < 0} {

    set dist_x1 [format %.6f [expr {abs($dist_x1)}]]

} if {$dist_y1 < 0} {

    set dist_y1 [format %.6f [expr {abs($dist_y1)}]]

} if {$dist_x2 < 0} {

    set dist_x2 [format %.6f [expr {abs($dist_x2)}]]

} if {$dist_y2 < 0} {

    set dist_y2 [format %.6f [expr {abs($dist_y2)}]]

}

set nano_script(dist1) [format %.3f [expr hypot($dist_x1, $dist_y1)] set nano_script(dist2) [format %.3f [expr hypot($dist_x2, $dist_y2)] }

## Initialization Procedure: init

proc ::init {argc argv} { global widget env nano_script }

init $argc $argv

# VTCL GENERATED GUI PROCEDURES #

proc vTclWindow. {base} {

    if {$base == ""} {
        set base .
    }
    ###################
    # CREATING WIDGETS
    ###################
    wm focusmodel $top passive
    wm geometry $top 200x200+22+27; update
    wm maxsize $top 3364 1030
    wm minsize $top 109 1
    wm overrideredirect $top 0
    wm resizable $top 1 1
    wm withdraw $top
    wm title $top "main"
    bindtags $top "$top Main all"
    vTcl:FireEvent $top <<Create>>
    wm protocol $top WM_DELETE_WINDOW "vTcl:FireEvent $top <<DeleteWindow>>"

    ###################
    # SETTING GEOMETRY
    ###################

    vTcl:FireEvent $base <<Ready>>

}

proc vTclWindow.nano_pnl {base} {

    if {$base == ""} {
        set base .nano_pnl
    }
    if {[winfo exists $base]} {
        wm deiconify $base; return
    }
    set top $base
    ###################
    # CREATING WIDGETS
    ###################
    vTcl:toplevel $top -class Toplevel \
        -highlightcolor black 
    wm focusmodel $top passive
    wm geometry $top 405x450+157+77; update
    wm maxsize $top 1284 943
    wm minsize $top 121 2
    wm overrideredirect $top 0
    wm resizable $top 0 0
    wm deiconify $top
    wm title $top "Step & Repeat (Unit = mm)"
    vTcl:DefineAlias "$top" "nano_pnl" vTcl:Toplevel:WidgetProc "" 1
    bindtags $top "$top Toplevel all _TopLevel"
    bind $top <Key-Return> {
        # TODO: your event handler here

tk::TabToWindow tk_focusNext %W

    }
    vTcl:FireEvent $top <<Create>>
    wm protocol $top WM_DELETE_WINDOW "vTcl:FireEvent $top <<DeleteWindow>>"

    button $top.cpd75 \
        -anchor e -background {#9c28ffffa325} -font {courier 9 bold} -pady 0 \
        -relief ridge -text {JOB NAME:} 
    vTcl:DefineAlias "$top.cpd75" "Button5" vTcl:WidgetProc "nano_pnl" 1
    entry $top.cpd76 \
        -background white -font {courier 9 bold} -justify center \
        -relief groove -state readonly -textvariable env(JOB) -validate focus 
    vTcl:DefineAlias "$top.cpd76" "Entry2" vTcl:WidgetProc "nano_pnl" 1
    button $top.but73 \
        -anchor e -background {#9c28ffffa325} \
        -command {global env widget scr_array

wm attributes .odb_steps -topmost 1 step_window startmodal} \

        -font {courier 9 bold} -pady 0 -relief ridge -text {Pcs/Array STEP:} 
    vTcl:DefineAlias "$top.but73" "Button1" vTcl:WidgetProc "nano_pnl" 1
    entry $top.ent74 \
        -background white -font {courier 9 bold} -justify center \
        -relief groove -state readonly -textvariable nano_script(pcs_step) \
        -validate focus 
    vTcl:DefineAlias "$top.ent74" "Entry1" vTcl:WidgetProc "nano_pnl" 1
    button $top.cpd77 \
        -anchor e -background {#9c28ffffa325} -font {courier 9 bold} -pady 0 \
        -relief ridge -text {Panel STEP:} 
    vTcl:DefineAlias "$top.cpd77" "Button4" vTcl:WidgetProc "nano_pnl" 1
    entry $top.cpd88 \
        -background white -font {courier 9 bold} -justify center \
        -relief groove -state readonly -textvariable nano_script(pnl_step) \
        -validate focus 
    vTcl:DefineAlias "$top.cpd88" "Entry13" vTcl:WidgetProc "nano_pnl" 1
    label $top.cpd73 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {PCB Size X :} 
    vTcl:DefineAlias "$top.cpd73" "Label3" vTcl:WidgetProc "nano_pnl" 1
    entry $top.cpd74 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#ff0000} -insertbackground black \
        -justify center -relief groove -state readonly \
        -textvariable nano_script(pcs_size_x) 
    vTcl:DefineAlias "$top.cpd74" "Entry5" vTcl:WidgetProc "nano_pnl" 1
    label $top.cpd78 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {PCB Size Y :} 
    vTcl:DefineAlias "$top.cpd78" "Label5" vTcl:WidgetProc "nano_pnl" 1
    entry $top.cpd79 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#ff0000} -insertbackground black \
        -justify center -relief groove -state readonly \
        -textvariable nano_script(pcs_size_y) -width 60 
    vTcl:DefineAlias "$top.cpd79" "Entry6" vTcl:WidgetProc "nano_pnl" 1
    label $top.lab47 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {ÆdzÚ ũ±â X :} 
    vTcl:DefineAlias "$top.lab47" "Label1" vTcl:WidgetProc "nano_pnl" 1
    entry $top.ent48 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#ff0000} -insertbackground black \
        -justify center -relief groove -state readonly \
        -textvariable nano_script(pnl_size_x) 
    vTcl:DefineAlias "$top.ent48" "Entry3" vTcl:WidgetProc "nano_pnl" 1
    label $top.lab49 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {ÆdzÚ ũ±â Y :} 
    vTcl:DefineAlias "$top.lab49" "Label2" vTcl:WidgetProc "nano_pnl" 1
    entry $top.ent50 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#ff0000} -insertbackground black \
        -justify center -relief groove -state readonly \
        -textvariable nano_script(pnl_size_y) -width 60 
    vTcl:DefineAlias "$top.ent50" "Entry4" vTcl:WidgetProc "nano_pnl" 1
    label $top.cpd92 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {¹迭 °³¼ö X :} 
    vTcl:DefineAlias "$top.cpd92" "Label11" vTcl:WidgetProc "nano_pnl" 1
    entry $top.cpd93 \
        -background {#ffffff} -disabledbackground {#ffffff} \
        -disabledforeground {#ff0000} -font {courier 9 bold} \
        -foreground {#000099} -insertbackground black -justify center \
        -relief groove -textvariable nano_script(SRnx) 
    vTcl:DefineAlias "$top.cpd93" "Entry11" vTcl:WidgetProc "nano_pnl" 1
    label $top.cpd94 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {¹迭 °³¼ö Y :} 
    vTcl:DefineAlias "$top.cpd94" "Label12" vTcl:WidgetProc "nano_pnl" 1
    entry $top.cpd95 \
        -background {#ffffff} -disabledbackground {#ffffff} \
        -disabledforeground {#ff0000} -font {courier 9 bold} \
        -foreground {#000099} -insertbackground black -justify center \
        -relief groove -textvariable nano_script(SRny) 
    vTcl:DefineAlias "$top.cpd95" "Entry12" vTcl:WidgetProc "nano_pnl" 1
    label $top.cpd80 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {¹迭 °£°Ý X :} 
    vTcl:DefineAlias "$top.cpd80" "Label6" vTcl:WidgetProc "nano_pnl" 1
    entry $top.cpd81 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove \
        -textvariable nano_script(step_margin_x) 
    vTcl:DefineAlias "$top.cpd81" "Entry7" vTcl:WidgetProc "nano_pnl" 1
    label $top.cpd82 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {¹迭 °£°Ý Y :} 
    vTcl:DefineAlias "$top.cpd82" "Label7" vTcl:WidgetProc "nano_pnl" 1
    entry $top.cpd83 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove \
        -textvariable nano_script(step_margin_y) -width 60 
    vTcl:DefineAlias "$top.cpd83" "Entry8" vTcl:WidgetProc "nano_pnl" 1
    label $top.cpd84 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {³»Ãþ ½ºÄÉÀÏ X :} 
    vTcl:DefineAlias "$top.cpd84" "Label8" vTcl:WidgetProc "nano_pnl" 1
    entry $top.cpd85 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(in_scale_x) 
    vTcl:DefineAlias "$top.cpd85" "Entry9" vTcl:WidgetProc "nano_pnl" 1
    label $top.cpd86 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {³»Ãþ ½ºÄÉÀÏ Y :} 
    vTcl:DefineAlias "$top.cpd86" "Label9" vTcl:WidgetProc "nano_pnl" 1
    entry $top.cpd87 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(in_scale_y) \
        -width 60 
    vTcl:DefineAlias "$top.cpd87" "Entry10" vTcl:WidgetProc "nano_pnl" 1
    label $top.cpd89 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {ÆdzÚ ¿©ºÐ X :} 
    vTcl:DefineAlias "$top.cpd89" "Label13" vTcl:WidgetProc "nano_pnl" 1
    entry $top.cpd96 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#ff0000} -insertbackground black \
        -justify center -relief groove -state readonly \
        -textvariable nano_script(pcb_area_min_x) 
    vTcl:DefineAlias "$top.cpd96" "Entry14" vTcl:WidgetProc "nano_pnl" 1
    label $top.cpd97 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {ÆdzÚ ¿©ºÐ Y :} 
    vTcl:DefineAlias "$top.cpd97" "Label14" vTcl:WidgetProc "nano_pnl" 1
    entry $top.cpd98 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#ff0000} -insertbackground black \
        -justify center -relief groove -state readonly \
        -textvariable nano_script(pcb_area_min_y) -width 101 
    vTcl:DefineAlias "$top.cpd98" "Entry15" vTcl:WidgetProc "nano_pnl" 1
    label $top.cpd90 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {ÀÛ ¾÷ ÀÚ :} 
    vTcl:DefineAlias "$top.cpd90" "Label10" vTcl:WidgetProc "nano_pnl" 1
    label $top.cpd100 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {ÀÛ ¾÷ ³¯ ¥ :} 
    vTcl:DefineAlias "$top.cpd100" "Label39" vTcl:WidgetProc "nano_pnl" 1
    entry $top.cpd104 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(user) \
        -width 101 
    vTcl:DefineAlias "$top.cpd104" "Entry36" vTcl:WidgetProc "nano_pnl" 1
    entry $top.cpd105 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(work_date) \
        -width 101 
    vTcl:DefineAlias "$top.cpd105" "Entry37" vTcl:WidgetProc "nano_pnl" 1
    NoteBook $top.not74 \
        -background {#a28ffffff1fb} -font {courier 9 bold} -height 131 \
        -width 394 
    vTcl:DefineAlias "$top.not74" "NoteBook1" vTcl:WidgetProc "nano_pnl" 1
    $top.not74 insert end page3 \
        -activebackground {#00ff00} -background {#a28ffffff1fb} -text {fǰ dº¸} 
    $top.not74 insert end page1 \
        -activebackground {#00ff00} -background {#a28ffffff1fb} \
        -text {Trim Size} 
    $top.not74 insert end page4 \
        -activebackground {#00ff00} -background {#a28ffffff1fb} \
        -state disabled -text {RCC Trim} 
    $top.not74 insert end page2 \
        -activebackground {#00ff00} -background {#a28ffffff1fb} \
        -text {Target °Ÿ®} 
    set site_4_0 [$top.not74 getframe page3]
    label $site_4_0.cpd118 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {¸ð µ¨ ¸í :} 
    vTcl:DefineAlias "$site_4_0.cpd118" "Label31" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_0.cpd119 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(model_name) 
    vTcl:DefineAlias "$site_4_0.cpd119" "Entry32" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_0.cpd120 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {¾÷ ü ¸í :} 
    vTcl:DefineAlias "$site_4_0.cpd120" "Label32" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_0.cpd121 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(customer) 
    vTcl:DefineAlias "$site_4_0.cpd121" "Entry33" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_0.cpd122 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {°ü ¸® ¹ø ȣ :} 
    vTcl:DefineAlias "$site_4_0.cpd122" "Label33" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_0.cpd123 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(spec_no) 
    vTcl:DefineAlias "$site_4_0.cpd123" "Entry34" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_0.cpd124 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {ÇÊ ¸§ ¹ø ȣ :} 
    vTcl:DefineAlias "$site_4_0.cpd124" "Label34" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_0.cpd125 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(film_no) 
    vTcl:DefineAlias "$site_4_0.cpd125" "Entry35" vTcl:WidgetProc "nano_pnl" 1
    place $site_4_0.cpd118 \
        -in $site_4_0 -x 5 -y 10 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_0.cpd119 \
        -in $site_4_0 -x 128 -y 10 -width 256 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_0.cpd120 \
        -in $site_4_0 -x 5 -y 33 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_0.cpd121 \
        -in $site_4_0 -x 128 -y 33 -width 256 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_0.cpd122 \
        -in $site_4_0 -x 5 -y 56 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_0.cpd123 \
        -in $site_4_0 -x 128 -y 56 -width 256 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_0.cpd124 \
        -in $site_4_0 -x 5 -y 79 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_0.cpd125 \
        -in $site_4_0 -x 128 -y 79 -width 256 -height 22 -anchor nw \
        -bordermode ignore 
    set site_4_1 [$top.not74 getframe page1]
    label $site_4_1.cpd75 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {1st Trim X :} 
    vTcl:DefineAlias "$site_4_1.cpd75" "Label15" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_1.cpd100 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(trim1_x) 
    vTcl:DefineAlias "$site_4_1.cpd100" "Entry16" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_1.cpd101 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {1st Trim Y :} 
    vTcl:DefineAlias "$site_4_1.cpd101" "Label16" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_1.cpd102 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(trim1_y) 
    vTcl:DefineAlias "$site_4_1.cpd102" "Entry17" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_1.cpd103 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {2nd Trim X :} 
    vTcl:DefineAlias "$site_4_1.cpd103" "Label17" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_1.cpd105 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(trim2_x) 
    vTcl:DefineAlias "$site_4_1.cpd105" "Entry18" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_1.cpd106 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {2nd Trim Y :} 
    vTcl:DefineAlias "$site_4_1.cpd106" "Label18" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_1.cpd107 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(trim2_y) 
    vTcl:DefineAlias "$site_4_1.cpd107" "Entry19" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_1.cpd73 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {3rd Trim X :} 
    vTcl:DefineAlias "$site_4_1.cpd73" "Label23" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_1.cpd74 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(trim3_x) 
    vTcl:DefineAlias "$site_4_1.cpd74" "Entry24" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_1.cpd76 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {3rd Trim Y :} 
    vTcl:DefineAlias "$site_4_1.cpd76" "Label24" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_1.cpd77 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(trim3_y) 
    vTcl:DefineAlias "$site_4_1.cpd77" "Entry25" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_1.cpd78 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {4th Trim X :} 
    vTcl:DefineAlias "$site_4_1.cpd78" "Label25" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_1.cpd79 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(trim4_x) 
    vTcl:DefineAlias "$site_4_1.cpd79" "Entry26" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_1.cpd80 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {4th Trim Y :} 
    vTcl:DefineAlias "$site_4_1.cpd80" "Label26" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_1.cpd81 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(trim4_y) 
    vTcl:DefineAlias "$site_4_1.cpd81" "Entry27" vTcl:WidgetProc "nano_pnl" 1
    place $site_4_1.cpd75 \
        -in $site_4_1 -x 5 -y 10 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd100 \
        -in $site_4_1 -x 128 -y 10 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd101 \
        -in $site_4_1 -x 197 -y 10 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd102 \
        -in $site_4_1 -x 320 -y 10 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd103 \
        -in $site_4_1 -x 5 -y 33 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd105 \
        -in $site_4_1 -x 128 -y 33 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd106 \
        -in $site_4_1 -x 197 -y 33 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd107 \
        -in $site_4_1 -x 320 -y 33 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd73 \
        -in $site_4_1 -x 5 -y 56 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd74 \
        -in $site_4_1 -x 128 -y 56 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd76 \
        -in $site_4_1 -x 197 -y 56 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd77 \
        -in $site_4_1 -x 320 -y 56 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd78 \
        -in $site_4_1 -x 5 -y 79 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd79 \
        -in $site_4_1 -x 128 -y 79 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd80 \
        -in $site_4_1 -x 197 -y 79 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_1.cpd81 \
        -in $site_4_1 -x 320 -y 79 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    set site_4_2 [$top.not74 getframe page4]
    label $site_4_2.cpd73 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {1st RCC Trim X :} 
    vTcl:DefineAlias "$site_4_2.cpd73" "Label35" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_2.cpd74 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(rcc_trim1_x) 
    vTcl:DefineAlias "$site_4_2.cpd74" "Entry38" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_2.cpd75 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {1st RCC Trim Y :} 
    vTcl:DefineAlias "$site_4_2.cpd75" "Label36" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_2.cpd76 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(rcc_trim1_y) 
    vTcl:DefineAlias "$site_4_2.cpd76" "Entry39" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_2.cpd77 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {2nd RCC Trim X :} 
    vTcl:DefineAlias "$site_4_2.cpd77" "Label37" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_2.cpd78 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(rcc_trim2_x) 
    vTcl:DefineAlias "$site_4_2.cpd78" "Entry40" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_2.cpd79 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {2nd RCC Trim Y :} 
    vTcl:DefineAlias "$site_4_2.cpd79" "Label38" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_2.cpd80 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(rcc_trim2_y) 
    vTcl:DefineAlias "$site_4_2.cpd80" "Entry41" vTcl:WidgetProc "nano_pnl" 1
    place $site_4_2.cpd73 \
        -in $site_4_2 -x 5 -y 10 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_2.cpd74 \
        -in $site_4_2 -x 128 -y 10 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_2.cpd75 \
        -in $site_4_2 -x 197 -y 10 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_2.cpd76 \
        -in $site_4_2 -x 320 -y 10 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_2.cpd77 \
        -in $site_4_2 -x 5 -y 33 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_2.cpd78 \
        -in $site_4_2 -x 128 -y 33 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_2.cpd79 \
        -in $site_4_2 -x 197 -y 33 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_2.cpd80 \
        -in $site_4_2 -x 320 -y 33 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    set site_4_3 [$top.not74 getframe page2]
    label $site_4_3.cpd102 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {³»Ãþ Target X :} 
    vTcl:DefineAlias "$site_4_3.cpd102" "Label19" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_3.cpd103 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(in_tg_x) 
    vTcl:DefineAlias "$site_4_3.cpd103" "Entry20" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_3.cpd104 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {³»Ãþ Target Y :} 
    vTcl:DefineAlias "$site_4_3.cpd104" "Label20" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_3.cpd105 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(in_tg_y) 
    vTcl:DefineAlias "$site_4_3.cpd105" "Entry21" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_3.cpd106 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {B1 Target X :} 
    vTcl:DefineAlias "$site_4_3.cpd106" "Label21" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_3.cpd107 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(b1_tg_x) 
    vTcl:DefineAlias "$site_4_3.cpd107" "Entry22" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_3.cpd108 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {B1 Target Y :} 
    vTcl:DefineAlias "$site_4_3.cpd108" "Label22" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_3.cpd109 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(b1_tg_y) 
    vTcl:DefineAlias "$site_4_3.cpd109" "Entry23" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_3.cpd110 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {B2 Target X :} 
    vTcl:DefineAlias "$site_4_3.cpd110" "Label27" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_3.cpd111 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(b2_tg_x) 
    vTcl:DefineAlias "$site_4_3.cpd111" "Entry28" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_3.cpd112 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {B2 Target Y :} 
    vTcl:DefineAlias "$site_4_3.cpd112" "Label28" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_3.cpd113 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(b2_tg_y) 
    vTcl:DefineAlias "$site_4_3.cpd113" "Entry29" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_3.cpd114 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {B3 Target X :} 
    vTcl:DefineAlias "$site_4_3.cpd114" "Label29" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_3.cpd115 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(b3_tg_x) 
    vTcl:DefineAlias "$site_4_3.cpd115" "Entry30" vTcl:WidgetProc "nano_pnl" 1
    label $site_4_3.cpd116 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {B3 Target Y :} 
    vTcl:DefineAlias "$site_4_3.cpd116" "Label30" vTcl:WidgetProc "nano_pnl" 1
    entry $site_4_3.cpd117 \
        -background white -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -foreground {#000099} -insertbackground black \
        -justify center -relief groove -textvariable nano_script(b3_tg_y) 
    vTcl:DefineAlias "$site_4_3.cpd117" "Entry31" vTcl:WidgetProc "nano_pnl" 1
    place $site_4_3.cpd102 \
        -in $site_4_3 -x 5 -y 10 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_3.cpd103 \
        -in $site_4_3 -x 128 -y 10 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_3.cpd104 \
        -in $site_4_3 -x 197 -y 10 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_3.cpd105 \
        -in $site_4_3 -x 310 -y 0 -width 65 -height 22 -anchor nw \
        -bordermode inside 
    place $site_4_3.cpd106 \
        -in $site_4_3 -x 5 -y 33 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_3.cpd107 \
        -in $site_4_3 -x 128 -y 33 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_3.cpd108 \
        -in $site_4_3 -x 197 -y 33 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_3.cpd109 \
        -in $site_4_3 -x 320 -y 33 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_3.cpd110 \
        -in $site_4_3 -x 5 -y 56 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_3.cpd111 \
        -in $site_4_3 -x 128 -y 56 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_3.cpd112 \
        -in $site_4_3 -x 197 -y 56 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_3.cpd113 \
        -in $site_4_3 -x 320 -y 56 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_3.cpd114 \
        -in $site_4_3 -x 5 -y 79 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_3.cpd115 \
        -in $site_4_3 -x 128 -y 79 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_3.cpd116 \
        -in $site_4_3 -x 197 -y 79 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $site_4_3.cpd117 \
        -in $site_4_3 -x 320 -y 79 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    $top.not74 raise page3
    label $top.cpd106 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {f ǰ ~ ·ù :} 
    vTcl:DefineAlias "$top.cpd106" "Label40" vTcl:WidgetProc "nano_pnl" 1
    ::iwidgets::optionmenu $top.cpd91 \
        -background {#f7d4b5c2ffff} -borderwidth 1 \
        -command {global env widget nano_script

set nano_script(pnl_type) Optionmenu2 get} \

        -font {courier 9 bold} -labelpos e 
    vTcl:DefineAlias "$top.cpd91" "Optionmenu2" vTcl:WidgetProc "nano_pnl" 1
    $top.cpd91 insert 1 {Type}
    $top.cpd91 insert 2 {PTH}
    $top.cpd91 insert 3 {SBL}
    $top.cpd91 insert 4 {MBL}
    $top.cpd91 insert 5 {STG}
    $top.cpd91 insert 6 {STK}
    checkbutton $top.che104 \
        -background {#00ff00} -font {courier 9 bold} -justify left \
        -offrelief groove -relief ridge -text {°¡À̵å Çü¼º} \
        -variable nano_script(panelize) 
    vTcl:DefineAlias "$top.che104" "Checkbutton1" vTcl:WidgetProc "nano_pnl" 1
    button $top.but49 \
        -background {#00ff00} \
        -command {global widget env nano_script

apply_attr

if {$nano_script(pnl_type) == "PTH"} {

    nano_pth

}

if {$nano_script(pnl_type) == "SBL"} {

    nano_sbl

}

if {$nano_script(pnl_type) == "MBL"} {

    nano_mbl

}

if {$nano_script(pnl_type) == "STG"} {

    nano_stg

}

if {$nano_script(pnl_type) == "STK"} {

    nano_stk

}} \

        -disabledforeground {#a2a2a2} -font {courier 10 bold} -pady 0 \
        -relief groove -text {Ȯ   ÀÎ} -width 200 
    vTcl:DefineAlias "$top.but49" "Button6" vTcl:WidgetProc "nano_pnl" 1
    button $top.cpd99 \
        -background {#ffff8bfb7c28} -command exit \
        -disabledforeground {#a2a2a2} -font {courier 10 bold} -pady 0 \
        -relief groove -text {Ãë   ¼Ò} 
    vTcl:DefineAlias "$top.cpd99" "Button7" vTcl:WidgetProc "nano_pnl" 1
    label $top.cpd102 \
        -anchor e -background {#ffffd8518000} -disabledforeground {#a2a2a2} \
        -font {courier 9 bold} -relief groove -text {ǥ ¸é ó ¸® :} 
    vTcl:DefineAlias "$top.cpd102" "Label41" vTcl:WidgetProc "nano_pnl" 1
    radiobutton $top.rad103 \
        -background {#f7d4b5c2ffff} -font {courier 9 bold} -relief ridge \
        -text FLUX -value 1 -variable nano_script(surface) 
    vTcl:DefineAlias "$top.rad103" "Radiobutton1" vTcl:WidgetProc "nano_pnl" 1
    radiobutton $top.cpd107 \
        -background {#f7d4b5c2ffff} -font {courier 9 bold} -relief ridge \
        -text ¹«ÀüÇØ -value 2 -variable nano_script(surface) 
    vTcl:DefineAlias "$top.cpd107" "Radiobutton2" vTcl:WidgetProc "nano_pnl" 1
    radiobutton $top.cpd108 \
        -background {#f7d4b5c2ffff} -font {courier 9 bold} -relief ridge \
        -text {Àü ÇØ} -value 3 -variable nano_script(surface) 
    vTcl:DefineAlias "$top.cpd108" "Radiobutton3" vTcl:WidgetProc "nano_pnl" 1
    radiobutton $top.cpd109 \
        -background {#f7d4b5c2ffff} -font {courier 9 bold} -relief ridge \
        -text {´Ü ÀÚ} -value 4 -variable nano_script(surface) 
    vTcl:DefineAlias "$top.cpd109" "Radiobutton4" vTcl:WidgetProc "nano_pnl" 1
    ###################
    # SETTING GEOMETRY
    ###################
    place $top.cpd75 \
        -in $top -x 4 -y 6 -width 120 -height 25 -anchor nw \
        -bordermode ignore 
    place $top.cpd76 \
        -in $top -x 126 -y 7 -width 275 -height 25 -anchor nw \
        -bordermode ignore 
    place $top.but73 \
        -in $top -x 4 -y 32 -width 120 -height 25 -anchor nw \
        -bordermode ignore 
    place $top.ent74 \
        -in $top -x 126 -y 33 -width 75 -height 25 -anchor nw \
        -bordermode ignore 
    place $top.cpd77 \
        -in $top -x 204 -y 32 -width 120 -height 26 -anchor nw \
        -bordermode ignore 
    place $top.cpd88 \
        -in $top -x 326 -y 33 -width 75 -height 25 -anchor nw \
        -bordermode ignore 
    place $top.cpd73 \
        -in $top -x 5 -y 58 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd74 \
        -in $top -x 126 -y 58 -width 75 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd78 \
        -in $top -x 205 -y 59 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd79 \
        -in $top -x 326 -y 59 -width 75 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.lab47 \
        -in $top -x 5 -y 81 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.ent48 \
        -in $top -x 126 -y 81 -width 75 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.lab49 \
        -in $top -x 205 -y 82 -width 120 -height 23 -anchor nw \
        -bordermode ignore 
    place $top.ent50 \
        -in $top -x 326 -y 82 -width 75 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd92 \
        -in $top -x 5 -y 104 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd93 \
        -in $top -x 126 -y 104 -width 75 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd94 \
        -in $top -x 205 -y 106 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd95 \
        -in $top -x 326 -y 106 -width 75 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd80 \
        -in $top -x 5 -y 127 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd81 \
        -in $top -x 126 -y 127 -width 75 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd82 \
        -in $top -x 205 -y 129 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd83 \
        -in $top -x 326 -y 129 -width 75 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd84 \
        -in $top -x 5 -y 150 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd85 \
        -in $top -x 126 -y 150 -width 75 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd86 \
        -in $top -x 205 -y 152 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd87 \
        -in $top -x 326 -y 152 -width 75 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd89 \
        -in $top -x 5 -y 173 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd96 \
        -in $top -x 126 -y 173 -width 75 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd97 \
        -in $top -x 205 -y 175 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd98 \
        -in $top -x 326 -y 175 -width 75 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd90 \
        -in $top -x 5 -y 196 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd100 \
        -in $top -x 205 -y 198 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd104 \
        -in $top -x 126 -y 196 -width 75 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd105 \
        -in $top -x 326 -y 198 -width 75 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.not74 \
        -in $top -x 5 -y 225 -width 394 -height 127 -anchor nw \
        -bordermode ignore 
    place $top.cpd106 \
        -in $top -x 12 -y 355 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd91 \
        -in $top -x 130 -y 354 -width 75 -height 25 -anchor nw \
        -bordermode ignore 
    place $top.che104 \
        -in $top -x 209 -y 355 -width 190 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.but49 \
        -in $top -x 5 -y 415 -width 195 -height 30 -anchor nw \
        -bordermode ignore 
    place $top.cpd99 \
        -in $top -x 205 -y 415 -width 195 -height 30 -anchor nw \
        -bordermode ignore 
    place $top.cpd102 \
        -in $top -x 12 -y 380 -width 120 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.rad103 \
        -in $top -x 135 -y 380 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd107 \
        -in $top -x 201 -y 380 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd108 \
        -in $top -x 267 -y 380 -width 65 -height 22 -anchor nw \
        -bordermode ignore 
    place $top.cpd109 \
        -in $top -x 333 -y 380 -width 65 -height 22 -anchor nw \
        -bordermode ignore 

    vTcl:FireEvent $base <<Ready>>

}

proc vTclWindow.odb_steps {base} {

    if {$base == ""} {
        set base .odb_steps
    }
    if {[winfo exists $base]} {
        wm deiconify $base; return
    }
    set top $base
    ###################
    # CREATING WIDGETS
    ###################
    vTcl:toplevel $top -class Toplevel \
        -highlightcolor black 
    wm withdraw $top
    wm focusmodel $top passive
    wm geometry $top 155x170+205+134; update
    wm maxsize $top 1286 945
    wm minsize $top 121 2
    wm overrideredirect $top 0
    wm resizable $top 0 0
    wm title $top "STEP"
    vTcl:DefineAlias "$top" "step_window" vTcl:Toplevel:WidgetProc "" 1
    bindtags $top "$top Toplevel all _TopLevel"
    vTcl:FireEvent $top <<Create>>
    wm protocol $top WM_DELETE_WINDOW "vTcl:FireEvent $top <<DeleteWindow>>"

    listbox $top.lis72 \
        -background white -relief groove -selectmode single \
        -xscrollcommand "$top.scr47 set" -yscrollcommand "$top.scr73 set" \
        -listvariable nano_script(steps_list) 
    vTcl:DefineAlias "$top.lis72" "Listbox1" vTcl:WidgetProc "step_window" 1
    scrollbar $top.scr73 \
        -command "$top.lis72 yview" 
    vTcl:DefineAlias "$top.scr73" "Scrollbar1" vTcl:WidgetProc "step_window" 1
    button $top.but74 \
        \
        -command [list vTcl:DoCmdOption $top.but74 {global env widget nano_script

set nano_script(pcs_step) selection get -selection PRIMARY DO_INFO -t step -e $env(JOB)/$nano_script(pcs_step) -d PROF_LIMITS,units=mm set nano_script(pcs_min_x) $gPROF_LIMITSxmin set nano_script(pcs_max_x) $gPROF_LIMITSxmax set nano_script(pcs_min_y) $gPROF_LIMITSymin set nano_script(pcs_max_y) $gPROF_LIMITSymax set nano_script(pcs_size_x) [format %.2f [expr $nano_script(pcs_max_x) - $nano_script(pcs_min_x)] set nano_script(pcs_center_x) [format %.6f [expr $nano_script(pcs_max_x) - ($nano_script(pcs_size_x) / 2.0000)] set nano_script(pcs_size_y) [format %.2f [expr $nano_script(pcs_max_y) - $nano_script(pcs_min_y)] set nano_script(pcs_center_y) [format %.6f [expr $nano_script(pcs_max_y) - ($nano_script(pcs_size_y) / 2.0000)]

step_window endmodal}] \

        -font {courier 10 bold} -pady 0 -text {O    K} 
    vTcl:DefineAlias "$top.but74" "Button1" vTcl:WidgetProc "step_window" 1
    scrollbar $top.scr47 \
        -command "$top.lis72 xview" -orient horizontal 
    vTcl:DefineAlias "$top.scr47" "Scrollbar2" vTcl:WidgetProc "step_window" 1
    ###################
    # SETTING GEOMETRY
    ###################
    place $top.lis72 \
        -in $top -x 5 -y 5 -width 130 -height 110 -anchor nw \
        -bordermode ignore 
    place $top.scr73 \
        -in $top -x 135 -y 5 -width 15 -height 110 -anchor nw \
        -bordermode ignore 
    place $top.but74 \
        -in $top -x 5 -y 135 -width 145 -height 30 -anchor nw \
        -bordermode ignore 
    place $top.scr47 \
        -in $top -x 5 -y 120 -width 130 -height 15 -anchor nw \
        -bordermode ignore 

    vTcl:FireEvent $base <<Ready>>

}

## Binding tag: _TopLevel

bind "_TopLevel" <<Create>> {

    if {![info exists _topcount]} {set _topcount 0}; incr _topcount

} bind "_TopLevel" <<DeleteWindow>> {

    if {[set ::%W::_modal]} {
                vTcl:Toplevel:WidgetProc %W endmodal
            } else {
                destroy %W; if {$_topcount == 0} {exit}
            }

} bind "_TopLevel" <Destroy> {

    if {[winfo toplevel %W] == "%W"} {incr _topcount -1}

}

Window show . Window show .nano_pnl Window show .odb_steps

main $argc $argv