Salome HOME
Fix for Bug IPAL11843:
authorenk <enk@opencascade.com>
Tue, 21 Mar 2006 08:08:05 +0000 (08:08 +0000)
committerenk <enk@opencascade.com>
Tue, 21 Mar 2006 08:08:05 +0000 (08:08 +0000)
Error in the python code if use Nb. Segments hypothesis with analitic density

src/SMESH_I/SMESH_2smeshpy.cxx

index 609abbe43e25ff729586e2271ebe2555e918c0dc..326015f2679947164e50a508ead35604821091b5 100644 (file)
@@ -909,12 +909,21 @@ bool _pyNumberOfSegmentsHyp::Addition2Creation( const Handle(_pyCommand)& theCmd
                                                 const _pyID&              theMesh)
 {
   if ( IsWrappable( theMesh ) && myArgs.Length() > 0 ) {
-    list<Handle(_pyCommand)>::iterator cmd = myUnknownCommands.begin();
-    for ( ; cmd != myUnknownCommands.end(); ++cmd ) {
-      // clear SetDistrType()
-      if ( (*cmd)->GetString().Location( "SetDistrType", 1, (*cmd)->Length() ))
-        (*cmd)->Clear();
+    list<Handle(_pyCommand)> aNewCommandsList;
+    list<TCollection_AsciiString> aNewList;
+    list<TCollection_AsciiString>::iterator aNewListIter;
+    
+    list<Handle(_pyCommand)>::reverse_iterator cmd = myUnknownCommands.rbegin();
+    for ( ; cmd != myUnknownCommands.rend(); ++cmd ) {
+      aNewListIter = find(aNewList.begin(),aNewList.end(),(*cmd)->GetMethod());
+      if(aNewListIter == aNewList.end()){
+       aNewList.push_front((*cmd)->GetMethod());
+       aNewCommandsList.push_front((*cmd));
+      } else {
+       (*cmd)->Clear();
+      }
     }
+    myUnknownCommands = aNewCommandsList;
   }
   return _pyHypothesis::Addition2Creation( theCmd, theMesh );
 }
@@ -1280,8 +1289,8 @@ void _pyCommand::RemoveArgs()
 bool _pyCommand::SetDependentCmdsAfter() const
 {
   bool orderChanged = false;
-  list< Handle(_pyCommand)>::const_iterator cmd = myDependentCmds.begin();
-  for ( ; cmd != myDependentCmds.end(); ++cmd ) {
+  list< Handle(_pyCommand)>::const_reverse_iterator cmd = myDependentCmds.rbegin();
+  for ( ; cmd != myDependentCmds.rend(); ++cmd ) {
     if ( (*cmd)->GetOrderNb() < GetOrderNb() ) {
       orderChanged = true;
       theGen->SetCommandAfter( *cmd, this );