CAE-Nastran-Nasmod
view release on metacpan or search on metacpan
lib/CAE/Nastran/Nasmod.pm view on Meta::CPAN
#---------------------
# split a string in chunks of 8 characters
#---------------------
sub split8
{
my $string = shift;
my @strings;
for (my $x=0; ($x*8) < length($string); $x++)
{
my $substring = substr $string, ($x*8), 8;
$substring =~ s/^\s+//;
$substring =~ s/\s+$//;
push @strings, $substring;
}
return @strings;
}
#---------------------
#---------------------
# adds an entity to show
# addEntity(@entities)
# return: -
#---------------------
sub addEntity
{
my $self = shift;
push @{$self->{bulk}}, @_;
}
#---------------------
#---------------------
# gets the entities that match the filter. if no filter is given, returns all entities
# getEntity(\@filter)
# return: @allEntitiesThatMatch
#---------------------
sub getEntity
{
my $self = shift;
# if a filter is given
if(@_)
{
my $refh_filter = shift;
my $newModel = $self->filter($refh_filter);
return $newModel->getEntity();
}
# if no filter is given
else
{
return @{$self->{bulk}};
}
}
#---------------------
#---------------------
# filter model
# return a model
# filter array:
# $[0]: pattern for matching the comment
# $[1]: pattern for matching the row1 of entity
# $[2]: pattern for matching the row2 of entity
# an entity matches when every pattern of the given filter is found in entity at the given place.
#---------------------
sub filter
{
my $self = shift;
my $refa_filter = shift;
my $refh_param;
if (@_)
{
$refh_param = shift;
}
# ein neues objekt erzeugen
my $filtered_model = CAE::Nastran::Nasmod->new();
# alle entities durchgehen
foreach my $entity (@{$self->{'bulk'}})
{
if ($entity->match($refa_filter))
{
$filtered_model->addEntity($entity);
if ($refh_param->{'firstonly'})
{
return $filtered_model;
}
}
}
return $filtered_model;
}
#---------------------
#---------------------
# getrow
sub getCol
{
my $self = shift;
my $row = shift;
my @return;
foreach my $entity (@{$self->{'bulk'}})
{
push @return, $entity->getrow($row);
}
return @return;
}
#---------------------
#---------------------
# merges models to this model
# merge(Nasmod, Nasmod, ...)
# return: -
#---------------------
sub merge
{
my $self = shift;
foreach my $model (@_)
{
push @{$self->{'bulk'}}, @{$model->{'bulk'}};
}
}
( run in 1.452 second using v1.01-cache-2.11-cpan-364913b4093 )