微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > PCB设计问答 > Genesis学习交流 > 娄底老乡

娄底老乡

时间:10-02 整理:3721RD 点击:

娄底的请加QQ732429064

自己顶一下,并上传一个自动加尾孔的脚本.一钻命名为1st 二钻命名为2nd就行,在 panel里运行

#!/bin/csh
#File name :weikong
#Purpose: To_Auto_add_drill_weikong_scripts
#Written by: salem
#E_mail : salemso@163.com
#Date: 2007-09-20
############################################
set tDir = "/genesis/tmp"
if (!( -d $tDir )) mkdir $tDir
set drill_in = /genesis/tmp/drill_in.$$
set drill_out = /genesis/tmp/drill_out.$$
#################################################################
DO_INFO -t layer -e $JOB/$STEP/1st -d exists
if ( $gEXISTS == yes ) then
set drl_layer = 1st
else
DO_INFO -t layer -e $JOB/$STEP/2nd -d exists
if ( $gEXISTS == no ) then
PAUSE Error - Script should be run in (DRILL_LAYER) STEP , EXIT ...
endif
endif
##################################################################
COM open_entity,job=$JOB,type=step,name=$STEP
set group = `echo "$COMANS"`
AUX set_group,group=$group
if ( $STEP != panel ) then
  PAUSE Error - Script should be run in (PANEL) STEP , EXIT ...
  exit 0
endif
######################################################
DO_INFO -t step -e $JOB/$STEP -d SR_LIMITS,units = mm
##################################################
DO_INFO -t layer -e $JOB/$STEP/bak -d exists
if ( $gEXISTS == yes ) then
COM display_layer,name=bak,display=yes,number=1
COM work_layer,name=bak
COM sel_delete
endif
COM affected_layer,mode=all,affected=no
COM display_layer,name=$drl_layer,display=yes,number=1
COM work_layer,name=$drl_layer
COM sel_move_other,target_layer=bak,invert=no,dx=0,dy=0,size=0
DO_INFO -t layer -e $JOB/$STEP/so -d exists
if ( $gEXISTS == yes ) then
COM display_layer,name=so,display=yes,number=1
COM work_layer,name=so
COM sel_delete
endif
COM flatten_layer,source_layer=$drl_layer,target_layer=so
################################################################
COM display_layer,name=bak,display=yes,number=1
COM work_layer,name=bak
COM sel_move_other,target_layer=$drl_layer,invert=no,dx=0,dy=0,size=0 && COM delete_layer,layer=bak
#######################################################################
COM display_layer,name=so,display=yes,number=1
COM work_layer,name=so
COM tools_merge_ex,layer=so,mode=merge
#################################################################
DO_INFO -t layer -e $JOB/$STEP/so,units = mm
COM delete_layer,layer=so
#######################################################
COM display_layer,name=$drl_layer,display=yes,number=1
COM work_layer,name=$drl_layer
COM affected_layer,name=map,mode=single,affected=yes
COM units,type=mm
##########################################################################
@ wf = 1
         foreach drill_size($gSYMS_HISTsymbol)
          echo `echo $gSYMS_HISTsymbol[$wf] | cut -c 2- ` >> $drill_in
         @ wf++
          end
         echo set f = '(' `sort -n $drill_in`')' > $drill_out; source $drill_out
rm $drill_in
rm $drill_out
##########################################################################
set wkx = `echo "scale=6;($gSR_LIMITSxmax+4)"|bc`
############################################################################
@ wh = 1
foreach drl_size($f)
if ($wh == 1 ) then
set wky = `echo "scale=6;($gSR_LIMITSymin+15)"|bc`
else
set wj = `echo "$wh -1" | bc -l`
set wky = `echo "($wky + ($f[$wj]+$f[$wh]) / 2000 + 1)" | bc -l`
endif

set slot_drltype = `echo "$f[$wh]" | cut -c 3- `
if (($slot_drltype == 1)||($slot_drltype == 51)||($slot_drltype == 01)) then
COM add_line,attributes=no,xs=$wkx,ys=$wky,xe=$wkx,ye=$wky,symbol=r$f[$wh],polarity=positive
else
if ( $f[$wh] != 101.6 ) then
if ( $f[$wh] > 6250 ) then
COM add_pad,attributes=no,x=$wkx,y=$wky,symbol=r3175,polarity=positive
else
COM add_pad,attributes=no,x=$wkx,y=$wky,symbol=r$f[$wh],polarity=positive
endif
endif
endif
@ wh++
end
set wky_1st_max = `echo "$wky" | bc -l`
##########################################################################
COM affected_layer,mode=all,affected=no
###########################################################################

#########################################################################################################################
#######################    2nd_weikong ################################################################################
#######################################################################################################################
DO_INFO -t layer -e $JOB/$STEP/2nd -d exists
if ( $gEXISTS == no ) then
exit exist_1st_nexist_2nd
else
set drl_layer2 = 2nd
####################################################
############################################
set drill_in2 = /genesis/tmp/drill_in2.$$
set drill_out2 = /genesis/tmp/drill_out2.$$
######################################################
DO_INFO -t step -e $JOB/$STEP -d SR_LIMITS,units = mm
####################################################
DO_INFO -t layer -e $JOB/$STEP/bak -d exists
if ( $gEXISTS == yes ) then
COM display_layer,name=bak,display=yes,number=1
COM work_layer,name=bak
COM sel_delete
endif
COM affected_layer,mode=all,affected=no
COM display_layer,name=   $drl_layer2   ,display=yes,number=1
COM work_layer,name=$drl_layer2
COM sel_move_other,target_layer=bak,invert=no,dx=0,dy=0,size=0
DO_INFO -t layer -e $JOB/$STEP/so -d exists
if ( $gEXISTS == yes ) then
COM display_layer,name=so,display=yes,number=1
COM work_layer,name=so
COM sel_delete
endif
COM flatten_layer,source_layer=$drl_layer2,target_layer=so
##########################################################
COM display_layer,name=bak,display=yes,number=1
COM work_layer,name=bak
COM sel_move_other,target_layer=$drl_layer2,invert=no,dx=0,dy=0,size=0 && COM delete_layer,layer=bak
#####################################################################
COM display_layer,name=so,display=yes,number=1
COM work_layer,name=so
COM tools_merge_ex,layer=so,mode=merge
#################################################################
DO_INFO -t layer -e $JOB/$STEP/so,units = mm
COM delete_layer,layer=so
#######################################################
COM display_layer,name=$drl_layer2,display=yes,number=1
COM work_layer,name=$drl_layer2
COM affected_layer,name=map,mode=single,affected=yes
COM units,type=mm
##########################################################################
@ wo = 1
         foreach drill_size2($gSYMS_HISTsymbol)
          echo `echo $gSYMS_HISTsymbol[$wo] | cut -c 2- ` >> $drill_in2
         @ wo++
          end
         echo set g = '(' `sort -n $drill_in2`')' > $drill_out2; source $drill_out2
rm $drill_in2
rm $drill_out2
############################################################################
@ wp = 1
foreach drl_size2($g)
if ($wp == 1 ) then
set wk2y = `echo "scale=6;($wky_1st_max+10)"|bc`
else
set ws = `echo "$wp -1" | bc -l`
set wk2y = `echo "($wk2y + ($g[$ws]+$g[$wp]) / 2000 + 1)" | bc -l`
endif

set slot_drltype2 = `echo "$g[$wp]" | cut -c 3- `
if (($slot_drltype2 == 1)||($slot_drltype2 == 51)||($slot_drltype2 == 01)) then
COM add_line,attributes=no,xs=$wkx,ys=$wk2y,xe=$wkx,ye=$wk2y,symbol=r$g[$wp],polarity=positive
else
if ( $g[$wp] != 101.6 ) then
if ( $g[$wp] > 6250 ) then
COM add_pad,attributes=no,x=$wkx,y=$wk2y,symbol=r3175,polarity=positive
else
COM add_pad,attributes=no,x=$wkx,y=$wk2y,symbol=r$g[$wp],polarity=positive
endif
endif
endif
@ wp++
end
##########################################################################
COM affected_layer,mode=all,affected=no
###################################################
endif
##########
exit exist_2nd

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top