Thread Pro/Engineer VB API und Perl-Script
(12 answers)
Opened by Zulu at 2011-10-29 13:09 2011-10-29T20:28:13 Zulu Zu Zeile 1: Aktiviere diese Zeile unbedingt wieder. Und setze noch "use strict;" in die Zeile davor. Und falls du die Fehlermeldungen von Perl nicht verstehst, auch noch "use diagnostics;". Je früher du auf Fehler hingewiesen wirst um so besser (inklusive Programmabbruch). Es hat keinen Sinn, mit falschen Werten weiter zu rechnen. Als Konsequenz dieser Änderungen musst du jeder Perl-Variablen vor dem ersten Gebrauch "my " voranstellen. Das entspricht dem "Dim " in VBA. Wenn du willst, kannst du diese Deklarationen ebenso wie in VBA en bloc am Anfang machen. Zu Zeile 8: Im VBA-Kode stehen da noch Fehlerprüfungen: Code: (dl
)
1 If model Is Nothing Then Versuche, möglichst viel davon in den Perlkode herüberzuretten, etwa so: Code (perl): (dl
)
1 2 3 4 5 6 7 8 [/c] if (!defined $model) { # vielleicht auch "if (! $model) {" die "Model not present"; } # Und dann versuchsweise: print 'model.Type ', $model->Type, "\n"; print 'EpfcModelType.EpfcMDL_PART ', EpfcModelType->EpfcMDL_PART, "\n"; print 'EpfcModelType.EpfcMDL_ASSEMBLY ', EpfcModelType->EpfcMDL_ASSEMBLY, "\n"; Zu Zeile 10-14: Wie suresh schon schrieb, benötigt man in Perl kein Type-Casting. Bei Objekten kennt Perl einen anderen Mechanismus: Vererbung. Wenn du Glück hast, kommst du damit weiter. Versuche es mit folgender Änderung: Code (perl): (dl
)
1 2 3 4 #VBA code: solid = CType(model, IpfcSolid) $solid = $model; # nur um weniger ändern zu müssen #VBA code: solidProperties = solid.GetMassProperty(Nothing) $solidProperties = $solid->GetMassProperty(); Beachte dass das $ vor GetMassProperty weg muss. Das ist einer der Fehler, die dir nach der Änderung von Zeile 1 nicht mehr durchrutschen. Gruß
GUIfreund |