Thread Pro/Engineer VB API und Perl-Script
(12 answers)
Opened by Zulu at 2011-10-29 13:09 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 Win32::OLE(0.1709) error 0x8002000e: "Unzulõssige Parameteranzahl" 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) |