=head NAME: generate_ref_netlist DESCRIPTION: 产生参考netlist文件 PARAMETER: {items => [ { name=>'step_filter', label=>'Step过滤', type=>'string', must_field=>0, value => '', remark=>'选择step时候的过滤器', }, ]} VERSION_HISTORY: V1.00 2013-03-02 Tomy by require HELP:

功能简介


参数配置

● step过滤

选择step时候的过滤器

注意事项


=cut #use strict; #my ($JOB,$GEN,$GUI,$DB,$JOB_ID,$PAR); use utf8; use Encode; use Data::Dump 'dump'; my ($Job,$Step); my $Return = 'Done'; ###处理step过滤 $Job = $JOB; $PAR->{step_filter} = $PAR->{step_filter} ? $PAR->{step_filter} : '.*'; try{ ###检查Genesis料号是否存在并打开 if (! $GEN->isJobExists(job=>$Job) ){ $GUI->msgbox(-type=>'error',-text=>"料号 $Job 在Genesis中不存在, 请检查!"); return 'Error'; } $GEN->openJob(job=>$Job) unless ($GEN->isJobOpen(job=>$Job)); ###check and get work Step name my @steps = $GEN->getStepList(job=>$Job); if ( @steps == 0 ) { $GUI->msgbox(-icon=>'error',-text=>'在料号中没有Step存在,你将退出!'); return 0; } elsif (@steps != 1){ my @tmp_steps = grep(/$PAR->{step_filter}/,@steps); if ( @tmp_steps == 1 ) { $Step = $tmp_steps[0]; } else { $Step = $GUI->select_step(-title=>'请选择工作Step', -steplist=>[@tmp_steps], -selectmode=>'single'); return 'Cancel' unless ($Step); } } else { $Step = $steps[0]; } ###Open step and clear layer $GEN->openStep(job=>$Job,name=>$Step); $GEN->clearLayers(); $GEN->affectedLayer(mode=>'all',affected=>'no'); $GEN->units(type=>'inch'); $GEN->COM('netlist_page_open',set=>'yes',job1=>$Job,step1=>$Step,type1=>'cur',job2=>$Job,step2=>$Step,type2=>'cur'); $GEN->COM('netlist_recalc',job=>$Job,step=>$Step,type=>'cur',display=>'top'); $GEN->COM('netlist_ref_update',job=>$Job,step=>$Step,source=>'cur',reduce=>'yes'); $GEN->COM('netlist_page_close'); $Return = 'Finish'; $GUI->msgbox(-text=>"参考网络产生成功"); ###output and return status, if genesis error, it will output genesis error command unless ($GEN->{STATUS}){ return $Return; } else{ $GUI->msgbox(-icon=>'error',-text=>join("\n",@{$GEN->{STATUS}})); addFlowNotes(-notes=>" Genesis Error:\n ".join("\n ",@{$GEN->{STATUS}})); return 'Error'; } } catch Error::Simple with { my $error = encode("utf8",shift); $GUI->msgbox(-icon=>'error',-text=>$error); return 'Error'; } finally{ #_deleteLayer(layer=>[$TmpLayer]); $GEN->units(type=>'mm'); }; __END__