]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
PAL7768
authorsan <san@opencascade.com>
Mon, 24 Jan 2005 16:00:40 +0000 (16:00 +0000)
committersan <san@opencascade.com>
Mon, 24 Jan 2005 16:00:40 +0000 (16:00 +0000)
idl/GEOM_Gen.idl
src/GEOMGUI/GEOM_msg_en.po
src/GEOMImpl/GEOMImpl_IHealingOperations.cxx
src/GEOMImpl/GEOMImpl_IHealingOperations.hxx
src/GEOM_I/GEOM_IHealingOperations_i.cc
src/GEOM_I/GEOM_IHealingOperations_i.hh

index 35bcfaa4c703bf5ebbe69b830abaf8c89954a036..6ed1539805159c56eefda8a4db009a557d724130 100644 (file)
@@ -1599,6 +1599,18 @@ module GEOM
     void GetShapeProcessParameters (out string_array theOperators,
                                    out string_array theParameters,
                                    out string_array theValues);
+    /*!
+     *  Get parameters and parameters' values for the given Shape Process operation.
+     *  In the current implementation the defaults are
+     *  read from the file pointed by CSF_ShHealingDefaults environmental variable.
+     *  \param theOperator Input. The operator's name.
+     *  \param theParameters Output. Default list of names of parameters.
+     *  \param theValues Output. List of default values of parameters, in the same order
+     *                           as parameters are listed in \a theParameters list.
+     */
+    void GetOperatorParameters (in string theOperator,
+                               out string_array theParameters,
+                               out string_array theValues);
 
     /*!
      *  Remove faces from the given object (shape).
index 9beb4ce2d3fbc27b5de3b0a2c85da27c23b61a58..27b5ffcf9da592210dacfeb470c611741c7b7b13 100644 (file)
@@ -1672,6 +1672,9 @@ msgstr "Please, select at least one Shape Process operation to proceed."
 msgid "RepairGUI_ShapeProcessDlg::ERROR_NO_OBJECTS"
 msgstr "Please, select a geometrical object for Shape Processing."
 
+msgid "RepairGUI_ShapeProcessDlg::TIME_CONSUMING"
+msgstr "Enabling this option may result in a very time-consuming operation for some input shapes.\nWould you like to continue?"
+
 msgid "MeasureGUI_PointDlg::POINT"
 msgstr "Point"
 
index 15852e3130df4ce3d5f4f863d780a8570e646ba0..144455fce75de8e082ba01a2b310e22cf608d33b 100644 (file)
@@ -141,29 +141,14 @@ void GEOMImpl_IHealingOperations::GetShapeProcessParameters (list<string>& theOp
 {
   ShHealOper_ShapeProcess aHealer;
   TColStd_SequenceOfAsciiString anOperators;
-  int nbOperatorErrors( 0 ), nbParamValueErrors( 0 );
+  int nbOperatorErrors( 0 );
   if ( aHealer.GetOperators( anOperators ) )
   {
     for ( Standard_Integer i = 1; i <= anOperators.Length(); i++ )
     {
       string anOperation = anOperators.Value( i ).ToCString();
-      theOperations.push_back( anOperation );
-      list<string> aParams, aValues;
-      if ( GetParameters( anOperation, aParams ) )
-      {
-        for ( list<string>::iterator it = aParams.begin(); it != aParams.end(); ++it )
-        {
-          TCollection_AsciiString aParam( (Standard_CString)(*it).c_str() );
-          TCollection_AsciiString aValue;
-          if ( aHealer.GetParameter( aParam, aValue ) )
-          {
-            theParams.push_back( aParam.ToCString() );
-            theValues.push_back( aValue.ToCString() );
-          }
-         else
-            nbParamValueErrors++;
-        }
-      }
+      if ( GetOperatorParameters( anOperation, theParams, theValues ) )
+       theOperations.push_back( anOperation );
       else
         nbOperatorErrors++;
     }
@@ -173,11 +158,43 @@ void GEOMImpl_IHealingOperations::GetShapeProcessParameters (list<string>& theOp
     SetErrorCode("ERROR retrieving operators (GEOMImpl_IHealingOperations)");
   }
 
-  if (nbOperatorErrors || nbParamValueErrors) {
+  if ( nbOperatorErrors ) {
     TCollection_AsciiString aMsg ("ERRORS retrieving ShapeProcess parameters (GEOMImpl_IHealingOperations): nbOperatorErrors = ");
-    aMsg += TCollection_AsciiString(nbOperatorErrors);
-    aMsg += " ,nbParamValueErrors = ";
-    aMsg += TCollection_AsciiString(nbParamValueErrors);
+    aMsg += TCollection_AsciiString( nbOperatorErrors );
+    MESSAGE(aMsg.ToCString());
+  }
+}
+
+//=============================================================================
+/*!
+ *  GetOperatorParameters
+ */
+//=============================================================================
+bool GEOMImpl_IHealingOperations::GetOperatorParameters( const string theOperation, 
+                                                        list<string>& theParams,
+                                                        list<string>& theValues )
+{
+  ShHealOper_ShapeProcess aHealer;
+  int nbParamValueErrors( 0 );
+  list<string> aParams;
+  if ( GetParameters( theOperation, aParams ) ) {
+    for ( list<string>::iterator it = aParams.begin(); it != aParams.end(); ++it ) {
+      TCollection_AsciiString aParam( (Standard_CString)(*it).c_str() );
+      TCollection_AsciiString aValue;
+      if ( aHealer.GetParameter( aParam, aValue ) ) {
+       theParams.push_back( aParam.ToCString() );
+       theValues.push_back( aValue.ToCString() );
+      }
+      else
+       nbParamValueErrors++;
+    }
+  }
+  else
+    return false;
+
+  if ( nbParamValueErrors ) {
+    TCollection_AsciiString aMsg ("ERRORS retrieving ShapeProcess parameter values (GEOMImpl_IHealingOperations): nbParamValueErrors = ");
+    aMsg += TCollection_AsciiString( nbParamValueErrors );
     MESSAGE(aMsg.ToCString());
   }
 }
index b167bcd0d28f51ea196726e57a8bdec3a9d30eda..3203ea99ae926bcdc26aa9dc66006ee597c40a0a 100644 (file)
@@ -23,10 +23,15 @@ class GEOMImpl_IHealingOperations : public GEOM_IOperations {
                                     const Handle(TColStd_HArray1OfExtendedString)& theValues );
 
   // Retrieve default Shape Process parameters (from resource file)
-       void GetShapeProcessParameters( list<string>& theOperations,
-                                       list<string>& theParams,
+  void GetShapeProcessParameters( list<string>& theOperations,
+                                  list<string>& theParams,
                                   list<string>& theValues );
 
+  // Retrieve default Shape Process parameters for given operator
+  bool GetOperatorParameters( const string theOperation, 
+                              list<string>& theParams,
+                              list<string>& theValues );
+
   // returns all parameters that are valid for the given operation (Shape Process operator)
   static bool GetParameters( const string theOperation, list<string>& theParams );                                      
 
index ea8fe487fc2c7450999d2afe28e083a17e083ecf..2190a7eb205e89d47931bc412ddfdc8e1b66ff12 100644 (file)
@@ -123,6 +123,10 @@ void GEOM_IHealingOperations_i::GetShapeProcessParameters(GEOM::string_array_out
                                                           GEOM::string_array_out theParams,
                                                           GEOM::string_array_out theValues)
 {
+  GEOM::string_array_var anOpArray = new GEOM::string_array();
+  GEOM::string_array_var aParArray = new GEOM::string_array();
+  GEOM::string_array_var aValArray = new GEOM::string_array();
+
   // retrieve the values as stl-lists
   list<string> operationsList, paramsList, valuesList;
   GetOperations()->GetShapeProcessParameters( operationsList, paramsList, valuesList );
@@ -130,33 +134,64 @@ void GEOM_IHealingOperations_i::GetShapeProcessParameters(GEOM::string_array_out
   parSize = paramsList.size(),
   valSize = valuesList.size();
 
-  // returns in case of an error
-  if ( opSize < 0 || parSize < 0 || parSize != valSize )
-    return;
+  if ( opSize >= 0 && parSize >= 0 && parSize == valSize ) {
+    // allocate the CORBA arrays, sizes == returned lists' sizes
+    anOpArray->length(opSize);
+    aParArray->length(parSize);
+    aValArray->length(valSize);
+
+    // fill the local CORBA arrays with values from lists
+    list<string>::iterator opIt, parIt, valIt;
+    int i = 0;
+    for ( opIt = operationsList.begin(); opIt != operationsList.end(); i++,++opIt )
+      anOpArray[i] = CORBA::string_dup( (*opIt).c_str() );
+
+    for ( i = 0, parIt = paramsList.begin(), valIt = valuesList.begin();
+         parIt != paramsList.end(); i++, ++parIt,++valIt ) {
+      aParArray[i] = CORBA::string_dup( (*parIt).c_str() );
+      aValArray[i] = CORBA::string_dup( (*valIt).c_str() );
+    }
+  }
 
-  // allocate the CORBA arrays, sizes == returned lists' sizes
-  GEOM::string_array_var anOpArray = new GEOM::string_array();
+  // initialize out-parameters with local arrays
+  theOperations = anOpArray._retn();
+  theParams = aParArray._retn();
+  theValues = aValArray._retn();
+}
+
+//=============================================================================
+/*!
+ *  GetOperatorParameters
+ */
+//=============================================================================
+void GEOM_IHealingOperations_i::GetOperatorParameters (const char* theOperator,  
+                                                      GEOM::string_array_out theParams, 
+                                                      GEOM::string_array_out theValues)
+{
   GEOM::string_array_var aParArray = new GEOM::string_array();
   GEOM::string_array_var aValArray = new GEOM::string_array();
-  anOpArray->length(opSize);
-  aParArray->length(parSize);
-  aValArray->length(valSize);
-
-  // fill the local CORBA arrays with values from lists
-  list<string>::iterator opIt, parIt, valIt;
-  int i = 0;
-  for ( opIt = operationsList.begin(); opIt != operationsList.end(); i++,++opIt )
-    anOpArray[i] = CORBA::string_dup( (*opIt).c_str() );
-
-  for ( i = 0, parIt = paramsList.begin(), valIt = valuesList.begin();
-       parIt != paramsList.end(); i++, ++parIt,++valIt )
-  {
-    aParArray[i] = CORBA::string_dup( (*parIt).c_str() );
-    aValArray[i] = CORBA::string_dup( (*valIt).c_str() );
+
+  // retrieve the values as stl-lists
+  list<string> paramsList, valuesList;
+  if ( GetOperations()->GetOperatorParameters( theOperator, paramsList, valuesList ) ) {
+    const int parSize = paramsList.size(), valSize = valuesList.size();
+
+    if ( parSize == valSize ) {
+      aParArray->length(parSize);
+      aValArray->length(valSize);
+
+      // fill the local CORBA arrays with values from lists
+      list<string>::iterator parIt, valIt;
+      int i;
+      for ( i = 0, parIt = paramsList.begin(), valIt = valuesList.begin();
+            parIt != paramsList.end(); i++, ++parIt,++valIt ) {
+       aParArray[i] = CORBA::string_dup( (*parIt).c_str() );
+       aValArray[i] = CORBA::string_dup( (*valIt).c_str() );
+      }
+    }
   }
 
   // initialize out-parameters with local arrays
-  theOperations = anOpArray._retn();
   theParams = aParArray._retn();
   theValues = aValArray._retn();
 }
index f26f5dc997e125d5c841d1f1a9a05ad178baa9ce..bf5d8eb9823b00b6c258e37ae59f2cd9421693a4 100644 (file)
@@ -26,6 +26,8 @@ class GEOM_IHealingOperations_i :
 
    void GetShapeProcessParameters(GEOM::string_array_out theOperations, GEOM::string_array_out theParams, GEOM::string_array_out theValues);
 
+   void GetOperatorParameters (const char* theOperator,  GEOM::string_array_out theParams, GEOM::string_array_out theValues);
+
    GEOM::GEOM_Object_ptr SuppressFaces(GEOM::GEOM_Object_ptr theObject, const GEOM::short_array& theFaces);
 
    GEOM::GEOM_Object_ptr CloseContour (GEOM::GEOM_Object_ptr theObject, const GEOM::short_array& theWires, CORBA::Boolean isCommonVertex);