Thread Pro/Engineer VB API und Perl-Script
(12 answers)
Opened by Zulu at 2011-10-29 13:09
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 |