把层排序 script
各位朋友大家好,我有个job里的层是,f,fc,fcc,fccc,但顺序是乱的,我要把他按照第1层f,第2层fc,....第4层fccc来排序,我写的程序如下:
DO_INFO -t step -e $JOB/$STEP
set i = 1
while ( $i <= $#gLAYERS_LIST )
set a = "$gLAYERS_LIST[$i]"
if ( $a == "f" ) then
COM open_entity,job=$JOB,type=matrix,name=matrix,iconic=no
COM matrix_move_row,job=$JOB,matrix=matrix,row=$i,ins_row=1
COM matrix_refresh,job=$JOB,matrix=matrix
COM matrix_page_close,job=$JOB,matrix=matrix
endif
if ( $a == "fc" ) then
COM open_entity,job=$JOB,type=matrix,name=matrix,iconic=no
COM matrix_move_row,job=$JOB,matrix=matrix,row=$i,ins_row=2
COM matrix_refresh,job=$JOB,matrix=matrix
COM matrix_page_close,job=$JOB,matrix=matrix
endif
if ( $a == "fcc" ) then
COM open_entity,job=$JOB,type=matrix,name=matrix,iconic=no
COM matrix_move_row,job=$JOB,matrix=matrix,row=$i,ins_row=3
COM matrix_refresh,job=$JOB,matrix=matrix
COM matrix_page_close,job=$JOB,matrix=matrix
endif
if ( $a == "fccc" ) then
COM open_entity,job=$JOB,type=matrix,name=matrix,iconic=no
COM matrix_move_row,job=$JOB,matrix=matrix,row=$i,ins_row=4
COM matrix_refresh,job=$JOB,matrix=matrix
COM matrix_page_close,job=$JOB,matrix=matrix
endif
@ i++
end
运行时,有时候是正确的,有时候是错误的,请问问题出在什么地方,哪位高手能指点一下啊,不胜感激!
没时间看你的程序了,我把我的排序和定义程序节选了一部分,你自己研究吧!
......
gui_out win 200 200
gui_out BG $black
gui_out FG $white
gui_out LABEL "Sort & Identify Script"
gui_out BG $blue
gui_out FG $black
gui_out "RADIO mod ' ' H 1 $red"
gui_out 02_Layer
gui_out 04_Layer
gui_out 06_Layer
gui_out 08_Layer
gui_out END
gui_out "RADIO quit_flag Quit: H 1 $red"
gui_out No
gui_out Yes
gui_out END
gui_out CLABEL "< GO ON >"
dogui
if ($quit_flag == 2) then
exit 0
endif
set j=`echo "1" | bc`
switch ($mod)
case 1
set slayername=("1d" "1p" "1s" "1m" "1a" "2a" "2m" "2s" "2p")
set slayertype=("drill" "solder_paste" "silk_screen" "solder_mask" "signal" "signal" "solder_mask" "silk_screen" "solder_paste")
set m=`echo "1" | bc`
foreach n($slayername)
DO_INFO -t matrix -e $JOB/matrix
set i=`echo "1" | bc`
while($i <= $gNUM_LAYERS)
if ( $gROWname[$i] == $slayername[$m] ) then
COM matrix_move_row,job=$JOB,matrix=matrix,row=$gROWrow[$i],ins_row=$j
COM matrix_refresh,job=$JOB,matrix=matrix
COM matrix_layer_context,job=$JOB,matrix=matrix,layer=$slayername[$m],context=board
COM matrix_layer_type,job=$JOB,matrix=matrix,layer=$slayername[$m],type=$slayertype[$m]
set j=`echo "$j + 1" | bc`
endif
set i=`echo "$i + 1" | bc`
end
set m=`echo "$m + 1" | bc`
end
breaksw
....
谢谢了啊
看不懂```
不用这么复杂.......
层的排序只要更改Genesis自带的程式就可以了,
它不但可以更改层的排序,且可以更改层的属性定性.
如有需要,可以来我的空间看看.
QQ:740834530
# Genesis internal format
genesis * * * * * drl
-> drl board drill positive bottom 0
genesis * * * * * cmp
-> cmp board signal positive top 0
genesis * * * * * l[1-9]n
-> l[1-9]n board power_ground negative none \2
genesis * * * * * l[1-9]p
-> l[1-9]p board signal positive none \2
genesis * * * * * sld
-> sld board signal positive bottom 0
genesis * * * * * cre
-> cre board solder_mask positive top 0
genesis * * * * * sre
-> sre board solder_mask positive bottom 0
genesis * * * * * csi
-> csi board silk_screen positive top 0
genesis * * * * * ssi
-> ssi board silk_screen positive bottom 0
这是因为你的层顺序已经变更,但是你“$”后的变量未做更新造成的,你应在每个if后DO_INFO一次
要换个思路才好啊
dd
