{
// evaluates default radius for the first selected part
const QStringList& partsList = mModule->getSelectedParts();
+ const char* strFieldIt = comboBoxSelectFieldIteration->currentText().latin1();
+ int fieldIteration = atoi(strFieldIt);
char* strPartInfo0 = mModule->getMULTIPRObj()->getPartInfo(partsList[0].latin1());
char lMeshName[256];
float defaultRadius = 0.5f;
try
{
- multipr::Mesh* mesh = new multipr::Mesh();
- mesh->readSequentialMED(lMEDFileName, lMeshName);
- const int averageNumberOfNeighbours = 8;
- defaultRadius = mesh->evalDefaultRadius(averageNumberOfNeighbours);
- delete mesh;
+ char strParams[256];
+ sprintf(strParams, "2");
+
+ char* res = mModule->getMULTIPRObj()->evalDecimationParams(
+ lPartName,
+ comboBoxSelectFieldName->currentText().latin1(),
+ fieldIteration,
+ comboBoxSelectFilter->currentText().latin1(),
+ strParams);
+
+ sscanf(res, "%f", &defaultRadius);
}
catch (...)
{
{
// evaluates default radius for the first selected part
const QStringList& partsList = mModule->getSelectedParts();
+ const char* strFieldIt = comboBoxSelectFieldIteration->currentText().latin1();
+ int fieldIteration = atoi(strFieldIt);
char* strPartInfo0 = mModule->getMULTIPRObj()->getPartInfo(partsList[0].latin1());
char lMeshName[256];
lMEDFileName);
QApplication::setOverrideCursor(Qt::waitCursor);
- float defaultRadius = 0.5f;
+
try
{
- multipr::Mesh* mesh = new multipr::Mesh();
- mesh->readSequentialMED(lMEDFileName, lMeshName);
-
- multipr::DecimationFilter* filter =
- multipr::DecimationFilter::create(comboBoxSelectFilter->currentText().latin1());
-
- double gradMin = 0.1, gradAvg = 0.15, gradMax = 0.2;
-
- multipr::DecimationFilterGradAvg* filterGrad = dynamic_cast<multipr::DecimationFilterGradAvg*>(filter);
- if (filterGrad)
+ float radius;
+ ret = sscanf(lineEditRadius->text().latin1(), "%f", &radius);
+ if ((ret != 1) || (radius <= 0.0f))
{
- const char* strFieldIt = comboBoxSelectFieldIteration->currentText().latin1();
- int fieldIteration = atoi(strFieldIt);
-
- double radius;
- ret = sscanf(lineEditRadius->text().latin1(), "%lf", &radius);
- if ((ret != 1) || (radius <= 0.0f))
- {
- SUIT_MessageBox::error1(
- mModule->getAppli()->desktop(),
- "Decimation parameters error",
- "Invalid radius (should be > 0.0)",
- tr("OK") );
-
- return;
- }
-
- filterGrad->getGradientInfo(
- mesh,
- comboBoxSelectFieldName->currentText().latin1(),
- fieldIteration,
- radius,
- spinBoxBoxing->value(),
- &gradMin,
- &gradAvg,
- &gradMax);
+ SUIT_MessageBox::error1(
+ mModule->getAppli()->desktop(),
+ "Decimation parameters error",
+ "Invalid radius (should be > 0.0)",
+ tr("OK") );
+
+ return;
}
- delete filter;
- delete mesh;
+ char strParams[256];
+ sprintf(strParams, "1 %f %d", radius, spinBoxBoxing->value());
+
+ char* res = mModule->getMULTIPRObj()->evalDecimationParams(
+ lPartName,
+ comboBoxSelectFieldName->currentText().latin1(),
+ fieldIteration,
+ comboBoxSelectFilter->currentText().latin1(),
+ strParams);
+
+ float gradMin, gradAvg, gradMax;
+ sscanf(res, "%f %f %f", &gradMin, &gradAvg, &gradMax);
lineEditTMed->setText( QString::number(gradMin) );
lineEditTLow->setText( QString::number(gradMax) );
catch (...)
{
}
+
QApplication::restoreOverrideCursor();
}