以下是引用szdg_99999在2005-3-2 12:35:34的发言:
多谢!我是想证实一下我装的perl是否安装好!不知高手能否提供一个用perl编的genesis脚本 试一试!多谢大家
試試這個吧.............請開啟任一個step後執行此程式即可............
#!/sw/bin/perl
# use lib qw(/genesis/e32/all/perl);
use Genesis;
$host = shift;
$f = new Genesis($host);
$JOB = $ENV{JOB};
$STEP = $ENV{STEP};
$f->AUSE("Hi there. This is a remote message from Genesis!");
unless ($JOB) {
$f->AUSE("Please run this script from within a Job !");
exit (1);
}
unless ($STEP) {
$f->AUSE("Please run this script from within a Step !");
exit (1);
}
$job_name = $JOB;
$step_name = $STEP;
$layer = "lyr.perl";
$f->AUSE("Perl Script Message: Job = $JOB, Step = $STEP.");
$f->INFO(entity_type => layer,
entity_path => "$job_name/$step_name/$layer",
data_type => "exists");
if ($f->{doinfo}{gEXISTS} eq 'yes') {
$f->COM(delete_layer, layer => $layer);
}
$f->COM(create_layer, layer => $layer, context => misc, type => signal,
polarity => positive, ins_layer => "");
$f->COM(display_layer, name => $layer, display => yes, number => 1);
$f->COM(work_layer, name => $layer);
# some math
#----------
$PI = 3.14;
$radius = 5;
$xcenter = 10;
$ycenter = 10;
$angle = 0;
$increment = 0.1;
$line_sym = "r20";
$f->COM(display_profile, display => "no");
$zoom_size = $radius * 2 + 1;
$xzoom1 = $xcenter - $zoom_size / 2;
$yzoom1 = $xcenter - $zoom_size / 2;
$xzoom2 = $xzoom1 + $zoom_size;
$yzoom2 = $yzoom1 + $zoom_size;
$f->COM(zoom_area, x1 => $xzoom1, y1 => $yzoom1, x2 => $xzoom2, y2=> $yzoom2);
$x = $xcenter;
$y = $ycenter + $radius;
while ($angle < 2 * $PI) {
$f->COM(add_line,
attributes => "no",
xs => $xcenter,
ys => $ycenter,
xe => $x,
ye => $y,
symbol => $line_sym,
polarity => positive);
$angle += $increment;
$x = sin($angle) * $radius + $xcenter;
$y = cos($angle) * $radius + $ycenter;
}
# add some text
#--------------
$xsize = 0.05;
$ysize = 0.05;
$wfactor = 0.5;
$string = "Perl";
$ytext = $ycenter - $ysize / 2;
$xtext = $xcenter - (length ($string) * $xsize) / 2;
$f->COM(add_text,
attributes => "no",
type => string,
x => $xtext,
y => $ytext,
text => $string,
x_size => $xsize,
y_size => $ysize,
w_factor => $wfactor,
polarity => negative,
angle => 0,
mirror => "no",
fontname => standard,
ver => 1);
# some info command
#------------------
$f->INFO(entity_type => layer,
entity_path => "$job_name/$step_name/$layer",
data_type => SYMS_HIST,
parameters => "symbol+line");
$i = 0;
for $sym (@{$f->{doinfo}{gSYMS_HISTsymbol}}) {
if ($sym eq $line_sym) {
$num_lines = $f->{doinfo}{gSYMS_HISTline}[$i];
last;
}
$i++;
}
$f->INFO(entity_type => layer,
entity_path => "$job_name/$step_name/$layer",
data_type => TYPE);
$f->AUSE ("Info output: layer type is - $f->{doinfo}{gTYPE}, " .
"$num_lines $line_sym lines were created !");
$zoom_limit = 0.4;
$zoomf = 2;
$zoom_size = 100;
while ($zoom_size > $zoom_limit) {
sleep (1);
$xzoom1 = $xcenter - $zoom_size / 2;
$yzoom1 = $xcenter - $zoom_size / 2;
$xzoom2 = $xzoom1 + $zoom_size;
$yzoom2 = $yzoom1 + $zoom_size;
$f->COM(zoom_area,
x1 => $xzoom1, y1 => $yzoom1, x2 => $xzoom2, y2 => $yzoom2);
$zoom_size /= $zoomf;
}
exit (0);
|