#File name : Copy layers #Purpose: Copy layers from cad or net to cam,in order to compare cam to cad or net. #Written by: wjw #Date: 6/10/2005 source $GENESIS_DIR/sys/scripts/common.csh DO_INFO -t matrix -e $JOB/matrix -d ROW DO_INFO -t step -e $JOB/$STEP -d SR_LIMITS DO_INFO -t step -e $JOB/$STEP -d PROF_LIMITS DO_INFO -t step -e $JOB/$STEP -d SR # Define correct temp. dir. depending on env. vars. if ($?GENESIS_TMP) then set TMP = $GENESIS_TMP else if ($?GENESIS_DIR) then set TMP = $GENESIS_DIR/tmp else set TMP = /genesis/tmp endif
# Set up gui data and response files set GUI_DATA = $TMP/gui_data.$$ set GUI_RESP = $TMP/gui_resp.$$ # Set varible to use to point to drill size selection program and table (typically $GENESIS_DIR/sys/hooks). set DTM_PATH = `echo "$GENESIS_DIR/sys/hooks"` # Set control variable to select use of external drill table. set NO_DRILL_TABLE = `echo "no"` # Set control variable to select use of correct metric return. set PROPER_METRIC = `echo "no"` # Detect current operating system. set CURR_OS = `uname -s` # If current operating system is NT, set alias to call awk95 as "awk". if ($CURR_OS == "WINDOWS_NT") then alias awk '$GENESIS_DIR/e${GENESIS_VER}/nt/bin/awk95' endif again: set aquamarine = 409980 set pink = 997580 set tan = 827155 set gold = 998400 set light_blue = 688590 set grey = 757575 set yellow = 999900 set black = 000000 set white = 999999 #Define GUI window again: echo WIN 300 200 >> $GUI_DATA echo FONT cbi18 >> $GUI_DATA echo FG $black >> $GUI_DATA echo BG $white >> $GUI_DATA echo FORM >> $GUI_DATA echo LABEL "Copy or compare">> $GUI_DATA echo ENDFORM >> $GUI_DATA echo BG 008800 >> $GUI_DATA
echo FORM >> $GUI_DATA echo RADIO radio Copy H 1 890000 >> $GUI_DATA echo Compare cad >> $GUI_DATA echo cad to cam >> $GUI_DATA echo net to cam >> $GUI_DATA echo Delete >> $GUI_DATA echo Exit >> $GUI_DATA echo END >> $GUI_DATA echo ENDFORM >> $GUI_DATA echo BG 964650 >> $GUI_DATA echo CLABEL Softbridge Continue! >> $GUI_DATA gui $GUI_DATA > $GUI_RESP source $GUI_RESP; \rm $GUI_RESP; \rm $GUI_DATA if ( $radio == 1 ) then ###限定在cad中运行 if ($step == cad) then else PAUSE Error The current step is not CAD ,please run the scrip in CAD step! exit endif
COM open_entity,job=$job,type=step,name=cad,iconic=no AUX set_group,group=$COMANS set first_board_layer = 0 set second_layer = 0 set rout_layer = 0 set matrix_counter = 1 set current_layer = 0 set max_layer = 0 set max_layer = $#gROWcontext ###判断最高层 while ( $matrix_counter <= $#gROWcontext ) if ( $gROWname[$matrix_counter] == "rout" ) then set rout_layer = $matrix_counter @ rout_layer-- endif if ( $gROWname[$matrix_counter] == "" ) then set max_layer = $matrix_counter @ max_layer-- goto next endif @ matrix_counter++ end next: ##判断第一层 set matrix_counter = 0 while ( $matrix_counter <= $#gROWcontext ) if ($gROWcontext[$matrix_counter] == "board") then set first_board_layer = $matrix_counter if ($first_board_layer > 2 ) then goto continue else PAUSE Error Please reading the origin file in cad step! exit endif endif @ matrix_counter++ end continue: #将非board属性的层排到最后 set matrix_counter = $first_board_layer while ( $matrix_counter <= $rout_layer ) if ($gROWcontext[$matrix_counter] == "misc") then COM display_layer,name=$gROWname[$matrix_counter],display=yes,number=1 COM work_layer,name=$gROWname[$matrix_counter] COM sel_move_other,target_layer=$gROWname[$matrix_counter]_tmp,invert=no,dx=0,dy=0,size=0 COM delete_layer,layer=$gROWname[$matrix_counter] COM rename_layer,name=$gROWname[$matrix_counter]_tmp,new_name=$gROWname[$matrix_counter] endif @ matrix_counter++ end next2: set matrix_counter = 1 while ( $matrix_counter <= $first_board_layer ) set second_layer = `echo "scale=0;$matrix_counter + $first_board_layer - 1 "|bc` if ($second_layer > $max_layer ) then PAUSE Error Please delete the additional layer ,then compare again! exit endif @ matrix_counter++ end ###层比较 set matrix_counter = 1 while ( $matrix_counter < $first_board_layer ) set second_layer = `echo "scale=0;$matrix_counter + $first_board_layer - 1 "|bc` COM display_layer,name=$gROWname[$second_layer],display=yes,number=1 COM work_layer,name=$gROWname[$second_layer] 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_reset,filter_name=popup COM get_select_count if ($COMANS == 0) then goto next1 else COM clear_highlight COM sel_clear_feat COM compare_layers,layer1=$gROWname[$matrix_counter],job2=$job,step2=cad,layer2=$gROWname[$second_layer],layer2_ext=,tol=0.5,area=global,ignore_attr=,map_layer=$gROWname[$second_layer]_diff,map_layer_res=200 COM display_layer,name=$gROWname[$second_layer]_diff,display=yes,number=1 COM work_layer,name=$gROWname[$second_layer]_diff COM filter_set,filter_name=popup,update_popup=no,include_syms=r0 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_reset,filter_name=popup COM get_select_count if ($COMANS == 0) then COM delete_layer,layer=$gROWname[$second_layer]_diff endif COM clear_highlight COM sel_clear_feat endif next1: @ matrix_counter++ end endif if ( $radio == 2 ) then if ($step == cam) then else PAUSE Error The current step is not CAM ,please run the scrip in CAM step! exit endif set matrix_counter = 0 while ( $matrix_counter <= $#gROWcontext ) if ( ( $gROWlayer_type[$matrix_counter] == "signal" || $gROWlayer_type[$matrix_counter] == "silk_screen" || $gROWlayer_type[$matrix_counter] == "solder_mask" || $gROWlayer_type[$matrix_counter] == "drill" || $gROWlayer_type[$matrix_counter] == "power_ground" ) && $gROWcontext[$matrix_counter] == "board" && $gROWname[$matrix_counter] != cs1 && $gROWname[$matrix_counter] != ss1 ) then COM copy_layer,source_job=$JOB,source_step=cad,source_layer=$gROWname[$matrix_counter],dest=layer_name,dest_layer=$gROWname[$matrix_counter]_cad,mode=replace,invert=no endif @ matrix_counter++ end endif if ( $radio == 3 ) then if ($step == cam) then else PAUSE Error The current step is not CAM ,please run the scrip in CAM step! exit endif
set matrix_counter = 0 while ( $matrix_counter <= $#gROWcontext ) if ( ( $gROWlayer_type[$matrix_counter] == "signal" || $gROWlayer_type[$matrix_counter] == "silk_screen" || $gROWlayer_type[$matrix_counter] == "solder_mask" || $gROWlayer_type[$matrix_counter] == "drill" || $gROWlayer_type[$matrix_counter] == "power_ground" ) && $gROWcontext[$matrix_counter] == "board" && $gROWname[$matrix_counter] != cs1 && $gROWname[$matrix_counter] != ss1 ) then COM copy_layer,source_job=$JOB,source_step=net,source_layer=$gROWname[$matrix_counter],dest=layer_name,dest_layer=$gROWname[$matrix_counter]_net,mode=replace,invert=no endif @ matrix_counter++ end endif if ( $radio == 4 ) then DO_INFO -t matrix -e $JOB/matrix foreach LAYER ($gROWname) set TST = `echo "$LAYER" | grep -c _cad` if ($TST != 0) then COM delete_layer,layer=$LAYER endif end DO_INFO -t matrix -e $JOB/matrix foreach LAYER ($gROWname) set TST = `echo "$LAYER" | grep -c _net` if ($TST != 0) then COM delete_layer,layer=$LAYER endif end DO_INFO -t matrix -e $JOB/matrix foreach LAYER ($gROWname) set TST = `echo "$LAYER" | grep -c _diff` if ($TST != 0) then COM delete_layer,layer=$LAYER endif end endif if ( $radio == 5 ) then exit endif
|