Thread Pro/Engineer VB API und Perl-Script (12 answers)
Opened by Zulu at 2011-10-29 13:09

Zulu
 2011-11-03 18:39
#153842 #153842
User since
2011-10-29
8 Artikel
BenutzerIn
[default_avatar]
Zum Abschluss:

Das Problem war, dass man bei dem Aufruf Win32::OLE->new("pfcls.MpfcModelItem"); den ersten Buchstaben von der vollständigen Bezeichnung CMpfcModelItem weglassen musste (siehe Zeile 22). Darauf muss man aber erst mal kommen.

Hier ein Code, der ein Maß von einem Bauteil verändert und die Masse vor und nach der Änderung ausgibt:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use strict;
#use diagnostics;
use warnings;
use Win32::OLE;
use Win32::OLE::Const;
 
my $asynconn = Win32::OLE->new("pfcls.pfcAsyncConnection");
my $EpfcModelItemType = Win32::OLE::Const->Load($asynconn);
my $conn = $asynconn->Connect( "", "", ".", 5 );
my $session = $conn->Session;
my $model = $session->CurrentModel;
my $solid = $model; 
 
my $desired_parameter= $ARGV[0]; # zB 'd0'
my $desired_value = $ARGV[1]; # zB 100.0
my $empty;
 
my $old_mass = $solid->GetMassProperty('')->Mass;
 
my $item = $model->GetParam($desired_parameter);
my $old_value = $item->Value->Doublevalue;
my $my_CMpfcModelItem = Win32::OLE->new("pfcls.MpfcModelItem");
my $my_value = $my_CMpfcModelItem->CreateDoubleParamValue($desired_value);
$item->SetScaledValue($my_value,$empty);
my $new_value = $item->Value->Doublevalue;
 
$session->RunMacro("~ Command `ProCmdRegenPart`;");
 
my $new_mass = $solid->GetMassProperty('')->Mass;
 
print 'old_value: ', $old_value, "\n";
print 'old_mass: ', $old_mass, "\n";
print 'new_value: ', $new_value, "\n";
print 'new_mass: ', $new_mass, "\n";
 
$conn->Disconnect(2);


Danke nochmal für die Hilfe

Zulu

View full thread Pro/Engineer VB API und Perl-Script