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

Zulu
 2011-10-31 19:52
#153697 #153697
User since
2011-10-29
8 Artikel
BenutzerIn
[default_avatar]
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
use strict;
use diagnostics;
use warnings;
use Win32::OLE;

my $asynconn = Win32::OLE->new("pfcls.pfcAsyncConnection");
my $conn = $asynconn->Connect( "", "", ".", 5 );
my $session = $conn->Session;
my $mdlName = $session->CurrentModel->FileName;
my $model = $session->CurrentModel;

##VBA code:   solid = CType(model, IpfcSolid)
my $solid = $model; 
##VBA code:   solidProperties = solid.GetMassProperty(Nothing)
my $solidProperties = $solid->GetMassProperty('');

use Data::Dumper;
print Dumper($solidProperties);
my $Mass = $solidProperties->Mass;

print 'model.Type ', $model->Type, "\n";
print "solidProperties: $solidProperties", "\n";
print "mdlName: $mdlName", "\n";
print "Mass: $Mass", "\n";x

$conn->Disconnect(2);


Nach der Aktivierung der Fehlerdiagnosen erhielt ich eine Fehlermeldung, und zwar dass die Anzahl der Parameter von GetMassProperty() unpassend wäre. Durch Ausprobieren hat sich der Aufruf mit GetMassProperty('') bewährt. Der Kode oben erzeugt diese Ausgabe:

Code: (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
37
38
39
40
Win32::OLE(0.1709) error 0x8002000e: "Unzulõssige Parameteranzahl"
in METHOD/PROPERTYGET "Item" at E:/Perl/lib/Data/Dumper.pm line 190
Win32::OLE(0.1709) error 0x8002000e: "Unzulõssige Parameteranzahl"
in METHOD/PROPERTYGET "Item" at E:/Perl/lib/Data/Dumper.pm line 190
Win32::OLE(0.1709) error 0x8002000e: "Unzulõssige Parameteranzahl"
in METHOD/PROPERTYGET "Item" at E:/Perl/lib/Data/Dumper.pm line 190
Win32::OLE(0.1709) error 0x8002000e: "Unzulõssige Parameteranzahl"
in METHOD/PROPERTYGET "Item" at E:/Perl/lib/Data/Dumper.pm line 190
Win32::OLE(0.1709) error 0x8002000e: "Unzulõssige Parameteranzahl"
in METHOD/PROPERTYGET "Item" at E:/Perl/lib/Data/Dumper.pm line 190
Win32::OLE(0.1709) error 0x8002000e: "Unzulõssige Parameteranzahl"
in METHOD/PROPERTYGET "Item" at E:/Perl/lib/Data/Dumper.pm line 190
$VAR1 = bless( {
'Volume' => '4840878.56642907',
'SurfaceArea' => '243951.813242451',
'Density' => '1',
'Mass' => '4840878.56642907',
'GravityCenter' => bless( {
'Item' => undef
}, 'Win32::OLE' ),
'CoordSysInertia' => bless( {
'Item' => undef
}, 'Win32::OLE' ),
'CoordSysInertiaTensor' => bless( {
'Item' => undef
}, 'Win32::OLE' ),
'CenterGravityInertiaTensor' => bless( {
'Item' => undef
}, 'Win32::OLE' ),
'PrincipalMoments' => bless( {
'Item' => undef
}, 'Win32::OLE' ),
'PrincipalAxes' => bless( {
'Item' => undef
}, 'Win32::OLE' )
}, 'Win32::OLE' );
model.Type 1
solidProperties: Win32::OLE=HASH(0x2020a74)
mdlName: prt0001.prt
Mass: 4840878.56642907


Die diversen Fehlerprüfungen in dem VBA Beispiel sind für mich nicht wichtig. Ich wollte mit diesem Kode nur testen, ob und wie die Schnittstelle mit perl funktioniert. Die eigentliche "Aufgabe" besteht in dem Ändern von Modellparametern und eine anschließende Kollisionsprüfung zwischen den Bauteilen.

Ich bin erst mal sehr froh, dass es mit perl so gut klappt und möchte mich bei Euch für eure Hilfe herzlich bedanken.

Grüße
Zulu

Last edited: 2011-10-31 19:54:27 +0100 (CET)

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