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);