Genesis常用指令
Genesis内部指令大致分如下六大指令:
一、VOF 和 VON
关闭和开启错误处理机制
二、SU_OFF 和 SU_ON
释放和取得最高权限(genesis)
三、MOUSE
取得鼠标所点的坐标值,会把坐标值放到变量$MOUSEANS内,供使用
坐标值是以 (x y) 或 (x1 y1 x2 y2) 方式返回
用法:MOUSE p|r 提示信息
范例:
MOUSE p “Click on feature to be deleted”
set feature_coordinates = $MOUSEANS
set feature_x = $feature_coordinates[1]
set feature_y = $feature_coordinates[2]
四、AUX
设定当前窗口用,防止脚本执行到其他窗口里
用法:AUX set_group,group=$n
$n为窗口号码
范例:
COM open_entity,job=$JOB,type=step,name=$STEP
set group = `echo “$COMANS”`
AUX set_group,group=$group
五、PAUSE
暂停脚本执行,并显示提示。(不能显示中文)
用法:PAUSE 要显示的信息
范例:PAUSE Please check it!
六、COM
用来执行LMC(line mode command)命令
用法:
COM 子指令,参数1,参数2,…
返回值有:
$COMANS 存放COM指令的执行结果
$STATUS 如COM指令执行成功则为0,非0则表示执行失败。
注:line mode command指令具体可参考genesis自带帮助文档的0206.pdf,
另外大部分该类指令可通过录制得到
第六类指令最为重要,也最为庞大,其后可接各类子指令,下面列举一些最常用的:
1、info子指令
用来提取Genesis的ODB++资料库的信息,供写脚本使用
注:info子指令具体可参考genesis自带帮助文档的0204.pdf的第六章
其最原始的用法如下:
if ($?GENESIS_TMP) then
    set TMP = $GENESIS_TMP
else if ($?GENESIS_DIR) then
    set TMP = $GENESIS_DIR/tmp
else
    set TMP = D:/genesis/tmp
endif
set IFILE = $TMP/do_info.$$
COM info,out_file=$IFILE,write_mode=replace,args= \!:* ; source $IFILE; rm $IFILE
上面太繁琐,一般都会在$ GENESIS_DIR/sys/hooks/ script_start.cs件内,用别名命令使其简化为:
alias DO_INFO 'COM info,out_file=$IFILE,write_mode=replace,args= \!:* ; source $IFILE; rm $IFILE'
这样一来,就可用DO_INFO指令后接相关参数即可。下面举些常用例子:
DO_INFO -t job -e $JOB -d STEPS_LIST
提取当前料号的所有STEP,放到变量$gSTEPS_LIST
DO_INFO -t step -e $JOB/panel -d LAYERS_LIST
提取当前料号的panel内的所有层,放到变量$gLAYERS_LIST
DO_INFO -t step -e $JOB/panel -d PROF_LIMITS
提取当前料号panel的板外profile的四边的坐标值
DO_INFO -t step -e $JOB/$panel_name -d SR_LIMITS
提取当前料号panel的板内profile的四边的坐标值
DO_INFO -t layer -e $JOB/panel/$tk_layer.$$ -d SYMS_HIST
提取当前料号panel内,层名为$tk_layer.$$的层上的所有物件的列表
DO_INFO -t step -e $JOB/set -d existsoffset命令
提取当前料号内set这个step是否存在,如果存在则执行……
if ( $gEXISTS == yes ) then
……
endif
@ layer_num = 2
DO_INFO -t matrix -e $JOB/matrix -d ROW
提取当前料号内工作矩阵的所有行的信息,结果存放在$gROWrow$gROWside等变量中
下面的循环用来统计内层有多少层
foreach row ($gROWrow)
if ( $gROWside[$row] == inner ) then
@ layer_num++
endif
end
2、常用的恢复初始化窗口状态的相关子指令
COM affected_layer,name=,mode=all,affected=no
COM clear_layers
COM zoom_home
COM display_width,mode=on
COM negative_data,mode=clear
COM display_sr,display=no
COM filter_reset,filter_name=popup
COM clear_highlight
COM sel_clear_feat
COM sel_options,clear_mode=clear_after,display_mode=all_layers,area_inout=inside,area_select=select
COM cur_atr_reset
COM display_grid,mode=off
COM display_grid,mode=off,xgrid=0.1,ygrid=0.1
COM snap_mode,mode=off
COM units,type=inch
3、常用的添加pad的子指令
COM add_pad,attributes=no,x=$pnldrl_x1,y=$pnldrl_y1,symbol=r126.378,polarity=positive,
\angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
4、常用的添加线的子指令
COM add_line,attributes=no,xs=$tk_x11,ys=$tk_y11,xe=$tk_x11,ye=$tk_y11,
\symbol=r$ltsymbol,polarity=positive
5、常用的添加字符的子指令
COM add_text,attributes=no,type=canned_text,x=$jobdrill_x,y=$jobdrill_y,text=$job_1,
x_size=0.234,y_size=0.328,w_factor=3.2480313778,polarity=positive,angle=0,mirror=no,fontname=canned_57,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=0.2,ver=1
6、填充对应的子指令
>加阻流PAD>>###
COM fill_params,type=pattern,origin_type=datum,solid_type=surface,min_brush=0.001,
use_arcs=yes,symbol=bm-dumypad2,dx=0.11811,dy=0.11811,break_partial=yes,cut_prims=no,outline_draw=no,outline_width=0,outline_invert=no
COM sr_fill,polarity=$polar,step_margin_x=0.07874,step_margin_y=0.07874,
step_max_dist_x=100,step_max_dist_y=100,sr_margin_x=0.11811,sr_margin_y=0.11811,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
7、取得当前工作层,提取该层的相关信息,根据其正负属性来填充
COM get_work_layer
set w_layer = `echo $COMANS `
DO_INFO -t layer -e $JOB/$STEP/$w_layer
if ($gPOLARITY == negative ) then
  set polar = negative
COM fill_params,type=solid,origin_type=datum,solid_type=surface,min_brush=0.001,
use_arcs=yes,symbol=,dx=0.1,dy=0.1,break_partial=yes,cut_prims=no,outline_draw=no,outline_width=0,outline_invert=no
COM sr_fill,polarity=positive,step_margin_x=-0.1,step_margin_y=-0.1,step_max_dist_x=100,
step_max_dist_y=100,sr_margin_x=0,sr_margin_y=0,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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论