Salome HOME
[PY3] 2to3 results
[modules/smesh.git] / src / SMESH_SWIG / batchmode_smesh.py
index a76a796097b5cadc6fb96334cb0a2e608f0db8f5..28a25a251b46941cdcd2fc7e81742533f3bcf4ef 100644 (file)
-#  Copyright (C) 2003  CEA/DEN, EDF R&D
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
 #
+# Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
 #
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
 #  File   : batchmode_smesh.py
 #  Author : Oksana TCHEBANOVA
 #  Module : SMESH
 #  $Header$
-
+#
 from batchmode_salome import *
+from batchmode_geompy import ShapeType
 import SMESH
 
 #--------------------------------------------------------------------------
+modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
 
 smesh = lcc.FindOrLoadComponent("FactoryServer", "SMESH")
+smesh.SetCurrentStudy(myStudy)
 myStudyBuilder = myStudy.NewBuilder()
 
 if myStudyBuilder is None:
-       raise RuntimeError, " Null myStudyBuilder"
+    raise RuntimeError(" Null myStudyBuilder")
 
-father = myStudy.FindComponent("MESH")
+father = myStudy.FindComponent("SMESH")
 if father is None:
-        father = myStudyBuilder.NewComponent("MESH")
-        A1 = myStudyBuilder.FindOrCreateAttribute(father, "AttributeName");
-        FName = A1._narrow(SALOMEDS.AttributeName)
-        FName.SetValue("Mesh")
-       A2 = myStudyBuilder.FindOrCreateAttribute(father, "AttributePixMap");
-       aPixmap = A2._narrow(SALOMEDS.AttributePixMap);
-       aPixmap.SetPixMap( "ICON_OBJBROWSER_Mesh" );
+    father = myStudyBuilder.NewComponent("SMESH")
+    FName = myStudyBuilder.FindOrCreateAttribute(father, "AttributeName")
+    Comp = modulecatalog.GetComponent("SMESH")
+    FName.SetValue(Comp._get_componentusername())
+    aPixmap = myStudyBuilder.FindOrCreateAttribute(father, "AttributePixMap")
+    aPixmap.SetPixMap("ICON_OBJBROWSER_Mesh")
 
 myStudyBuilder.DefineComponentInstance(father,smesh)
 
 mySComponentMesh = father._narrow(SALOMEDS.SComponent)
 
-Tag_HypothesisRoot  = 1;
-Tag_AlgorithmsRoot  = 2;
-  
-Tag_RefOnShape      = 1;
-Tag_RefOnAppliedHypothesis = 2;
-Tag_RefOnAppliedAlgorithms = 3;
-  
-Tag_SubMeshOnVertex = 4;
-Tag_SubMeshOnEdge = 5;
-Tag_SubMeshOnFace = 6;
-Tag_SubMeshOnSolid = 7;
-Tag_SubMeshOnCompound = 8;
+Tag_HypothesisRoot  = 1
+Tag_AlgorithmsRoot  = 2
 
-Tag = {"HypothesisRoot":1,"AlgorithmsRoot":2,"RefOnShape":1,"RefOnAppliedHypothesis":2,"RefOnAppliedAlgorithms":3,"SubMeshOnVertex":4,"SubMeshOnEdge":5,"SubMeshOnFace":6,"SubMeshOnSolid":7,"SubMeshOnCompound":8}
+Tag_RefOnShape      = 1
+Tag_RefOnAppliedHypothesis = 2
+Tag_RefOnAppliedAlgorithms = 3
 
-# -- enumeration --
-ShapeTypeCompSolid = 1
-ShapeTypeSolid     = 2
-ShapeTypeShell     = 3
-ShapeTypeFace      = 4
-ShapeTypeWire      = 5
-ShapeTypeEdge      = 6
-ShapeTypeVertex    = 7
+Tag_SubMeshOnVertex = 4
+Tag_SubMeshOnEdge = 5
+Tag_SubMeshOnFace = 6
+Tag_SubMeshOnSolid = 7
+Tag_SubMeshOnCompound = 8
 
-# -- enumeration ShapeType as a dictionary --
-ShapeType = {"CompSolid":1, "Solid":2, "Shell":3, "Face":4, "Wire":5, "Edge":6, "Vertex":7}
+Tag = {"HypothesisRoot":1,"AlgorithmsRoot":2,"RefOnShape":1,"RefOnAppliedHypothesis":2,"RefOnAppliedAlgorithms":3,"SubMeshOnVertex":4,"SubMeshOnEdge":5,"SubMeshOnFace":6,"SubMeshOnSolid":7,"SubMeshOnCompound":8}
 
 #------------------------------------------------------------
 def Init():
-        pass
+    pass
 #------------------------------------------------------------
 def AddNewMesh(IOR):
-       res,HypothesisRoot = mySComponentMesh.FindSubObject ( Tag_HypothesisRoot )
-       if HypothesisRoot is None or res == 0:
-               HypothesisRoot = myStudyBuilder.NewObjectToTag(mySComponentMesh, Tag_HypothesisRoot)
-               anAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeName")
-               aName = anAttr._narrow(SALOMEDS.AttributeName)
-               aName.SetValue("Hypothesis Definition")
-               anAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributePixMap")
-               aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap)
-               aPixmap.SetPixMap( "mesh_tree_hypo.png" )
-               anAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable")
-               aSelAttr = anAttr._narrow(SALOMEDS.AttributeSelectable)
-               aSelAttr.SetSelectable(0);
-
-       res, AlgorithmsRoot = mySComponentMesh.FindSubObject (Tag_AlgorithmsRoot)
-       if AlgorithmsRoot is None  or res == 0:
-               AlgorithmsRoot = myStudyBuilder.NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot)
-               anAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeName")
-               aName = anAttr._narrow(SALOMEDS.AttributeName)
-               aName.SetValue("Algorithms Definition");
-               anAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
-               aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap);
-               aPixmap.SetPixMap( "mesh_tree_algo.png" );
-               anAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
-               aSelAttr = anAttr._narrow(SALOMEDS.AttributeSelectable);
-               aSelAttr.SetSelectable(0);
-
-       HypothesisRoot = HypothesisRoot._narrow(SALOMEDS.SObject)
-       newMesh = myStudyBuilder.NewObject(mySComponentMesh)
-       newMesh = newMesh._narrow(SALOMEDS.SObject)
-       anAttr = myStudyBuilder.FindOrCreateAttribute(newMesh, "AttributePixMap")
-       aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap)
-       aPixmap.SetPixMap( "mesh_tree_mesh.png" )
-       anAttr = myStudyBuilder.FindOrCreateAttribute(newMesh, "AttributeIOR")
-       anIOR = anAttr._narrow(SALOMEDS.AttributeIOR)
-       anIOR.SetValue(IOR)
-       return newMesh.GetID()
-
-#------------------------------------------------------------  
+    # VSR: added temporarily - objects are published automatically by the engine
+    aSO = myStudy.FindObjectIOR( IOR )
+    if aSO is not None:
+        return aSO.GetID()
+    # VSR ######################################################################
+
+    res,HypothesisRoot = mySComponentMesh.FindSubObject ( Tag_HypothesisRoot )
+    if HypothesisRoot is None or res == 0:
+        HypothesisRoot = myStudyBuilder.NewObjectToTag(mySComponentMesh, Tag_HypothesisRoot)
+        aName = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeName")
+        aName.SetValue("Hypotheses")
+        aPixmap = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributePixMap")
+        aPixmap.SetPixMap( "mesh_tree_hypo.png" )
+        aSelAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable")
+        aSelAttr.SetSelectable(0)
+
+    res, AlgorithmsRoot = mySComponentMesh.FindSubObject (Tag_AlgorithmsRoot)
+    if AlgorithmsRoot is None  or res == 0:
+        AlgorithmsRoot = myStudyBuilder.NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot)
+        aName = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeName")
+        aName.SetValue("Algorithms")
+        aPixmap = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap")
+        aPixmap.SetPixMap( "mesh_tree_algo.png" )
+        aSelAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable")
+        aSelAttr.SetSelectable(0)
+
+    HypothesisRoot = HypothesisRoot._narrow(SALOMEDS.SObject)
+    newMesh = myStudyBuilder.NewObject(mySComponentMesh)
+    aPixmap = myStudyBuilder.FindOrCreateAttribute(newMesh, "AttributePixMap")
+    aPixmap.SetPixMap( "mesh_tree_mesh.png" )
+    anIOR = myStudyBuilder.FindOrCreateAttribute(newMesh, "AttributeIOR")
+    anIOR.SetValue(IOR)
+    return newMesh.GetID()
+
+#------------------------------------------------------------
 def AddNewHypothesis(IOR):
-       res, HypothesisRoot = mySComponentMesh.FindSubObject (Tag_HypothesisRoot)
-       if HypothesisRoot is None or res == 0:
-               HypothesisRoot = myStudyBuilder.NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot)
-               anAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeName");
-               aName = anAttr._narrow(SALOMEDS.AttributeName);
-               aName.SetValue("Hypothesis Definition");
-               anAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
-               aSelAttr = anAttr._narrow(SALOMEDS.AttributeSelectable);
-               aSelAttr.SetSelectable(0);
-               anAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
-               aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap);
-               aPixmap.SetPixMap( "mesh_tree_hypo.png" );
-       # Add New Hypothesis
-       newHypo = myStudyBuilder.NewObject(HypothesisRoot)
-       newHypo = newHypo._narrow(SALOMEDS.SObject)
-       anAttr  = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributePixMap")
-       aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap)
-       H = orb.string_to_object(IOR)
-       H = H._narrow( SMESH.SMESH_Hypothesis );
-       aType = H.GetName();
-       aPixmap.SetPixMap( "mesh_tree_hypo.png_" + aType );
-       anAttr = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributeIOR");
-       anIOR = anAttr._narrow(SALOMEDS.AttributeIOR);
-       anIOR.SetValue(IOR);
-       return newHypo.GetID();
+    # VSR: added temporarily - objects are published automatically by the engine
+    aSO = myStudy.FindObjectIOR( IOR )
+    if aSO is not None:
+        return aSO.GetID()
+    # VSR ######################################################################
+
+    res, HypothesisRoot = mySComponentMesh.FindSubObject (Tag_HypothesisRoot)
+    if HypothesisRoot is None or res == 0:
+        HypothesisRoot = myStudyBuilder.NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot)
+        aName = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeName")
+        aName.SetValue("Hypotheses")
+        aSelAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable")
+        aSelAttr.SetSelectable(0)
+        aPixmap = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributePixMap")
+        aPixmap.SetPixMap( "mesh_tree_hypo.png" )
+
+    # Add New Hypothesis
+    newHypo = myStudyBuilder.NewObject(HypothesisRoot)
+    aPixmap = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributePixMap")
+    H = orb.string_to_object(IOR)
+    aType = H.GetName()
+    aPixmap.SetPixMap( "mesh_tree_hypo.png_" + aType )
+    anIOR = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributeIOR")
+    anIOR.SetValue(IOR)
+    return newHypo.GetID()
 
 #------------------------------------------------------------
 def AddNewAlgorithms(IOR):
-       res, AlgorithmsRoot = mySComponentMesh.FindSubObject (Tag_AlgorithmsRoot)
-       if  AlgorithmsRoot is None or res == 0:
-               AlgorithmsRoot = myStudyBuilde.NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot)
-               anAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeName")
-               aName = anAttr._narrow(SALOMEDS.AttributeName);
-               aName.SetValue("Algorithms Definition");
-               anAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable")
-               aSelAttr = anAttr._narrow(SALOMEDS.AttributeSelectable);
-               aSelAttr.SetSelectable(0);
-               anAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
-               aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap);
-               aPixmap.SetPixMap( "mesh_tree_algo.png" );
+    # VSR: added temporarily - objects are published automatically by the engine
+    aSO = myStudy.FindObjectIOR( IOR )
+    if aSO is not None:
+        return aSO.GetID()
+    # VSR ######################################################################
+
+    res, AlgorithmsRoot = mySComponentMesh.FindSubObject (Tag_AlgorithmsRoot)
+    if  AlgorithmsRoot is None or res == 0:
+        AlgorithmsRoot = myStudyBuilde.NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot)
+        aName = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeName")
+        aName.SetValue("Algorithms")
+        aSelAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable")
+        aSelAttr.SetSelectable(0)
+        aPixmap = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap")
+        aPixmap.SetPixMap( "mesh_tree_algo.png" )
 
   # Add New Algorithms
-       newHypo = myStudyBuilder.NewObject(AlgorithmsRoot)
-       newHypo = newHypo._narrow(SALOMEDS.SObject)
-       anAttr = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributePixMap");
-       aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap);
-       H = orb.string_to_object(IOR)
-       H = H._narrow( SMESH.SMESH_Hypothesis);
-       aType = H.GetName();    #QString in fact
-       aPixmap.SetPixMap( "mesh_tree_algo.png_" + aType );
-       anAttr = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributeIOR");
-       anIOR = anAttr._narrow(SALOMEDS.AttributeIOR);
-       anIOR.SetValue(IOR);
-       return newHypo.GetID();
+    newHypo = myStudyBuilder.NewObject(AlgorithmsRoot)
+    aPixmap = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributePixMap")
+    aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap)
+    H = orb.string_to_object(IOR)
+    aType = H.GetName();    #QString in fact
+    aPixmap.SetPixMap( "mesh_tree_algo.png_" + aType )
+    anIOR = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributeIOR")
+    anIOR.SetValue(IOR)
+    return newHypo.GetID()
 
 
 #------------------------------------------------------------
 def SetShape(ShapeEntry, MeshEntry):
+    SO_MorSM = myStudy.FindObjectID( MeshEntry )
+    SO_GeomShape = myStudy.FindObjectID( ShapeEntry )
+
+    if SO_MorSM is not None and SO_GeomShape is not None :
+        # VSR: added temporarily - shape reference is published automatically by the engine
+        res, Ref = SO_MorSM.FindSubObject( Tag_RefOnShape )
+        if res == 1 :
+            return
+        # VSR ######################################################################
 
-       SO_MorSM = myStudy.FindObjectID( MeshEntry )
-       SO_MorSM = SO_MorSM._narrow(SALOMEDS.SObject)
-       SO_GeomShape = myStudy.FindObjectID( ShapeEntry );
-       SO_GeomShape = SO_GeomShape._narrow(SALOMEDS.SObject)
+        SO = myStudyBuilder.NewObjectToTag (SO_MorSM, Tag_RefOnShape)
+        myStudyBuilder.Addreference (SO,SO_GeomShape)
 
-       if SO_MorSM is not None and SO_GeomShape is not None :
-               SO = myStudyBuilder.NewObjectToTag (SO_MorSM, Tag_RefOnShape);
-               SO = SO._narrow(SALOMEDS.SObject)
-               myStudyBuilder.Addreference (SO,SO_GeomShape);
-  
 
 #------------------------------------------------------------
 def SetHypothesis(Mesh_Or_SubMesh_Entry, Hypothesis_Entry):
-  SO_MorSM = myStudy.FindObjectID( Mesh_Or_SubMesh_Entry );
-  SO_Hypothesis =  myStudy.FindObjectID( Hypothesis_Entry );
-
-  if  SO_MorSM is not None and SO_Hypothesis is not None : 
-    
-        #Find or Create Applied Hypothesis root
-       res, AHR = SO_MorSM.FindSubObject (Tag_RefOnAppliedHypothesis)
-       if  AHR is None or res == 0: 
-               AHR = myStudyBuilder.NewObjectToTag (SO_MorSM, Tag_RefOnAppliedHypothesis);
-               anAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeName");
-               aName = anAttr._narrow(SALOMEDS.AttributeName);
-               aName.SetValue("Applied Hypothesis");
-               anAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeSelectable");
-               aSelAttr = anAttr._narrow(SALOMEDS.AttributeSelectable);
-               aSelAttr.SetSelectable(0);
-               anAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributePixMap");
-               aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap);
-               aPixmap.SetPixMap( "mesh_tree_hypo.png" );
-               
-               SO = myStudyBuilder.NewObject(AHR);
-               SO = SO._narrow(SALOMEDS.SObject)
-               myStudyBuilder.Addreference (SO,SO_Hypothesis);
+    SO_MorSM = myStudy.FindObjectID( Mesh_Or_SubMesh_Entry )
+    SO_Hypothesis =  myStudy.FindObjectID( Hypothesis_Entry )
+
+    if  SO_MorSM is not None and SO_Hypothesis is not None :
+
+    #Find or Create Applied Hypothesis root
+        res, AHR = SO_MorSM.FindSubObject (Tag_RefOnAppliedHypothesis)
+        if  AHR is None or res == 0:
+            AHR = myStudyBuilder.NewObjectToTag (SO_MorSM, Tag_RefOnAppliedHypothesis)
+            aName = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeName")
+
+            # The same name as in SMESH_Mesh_i::AddHypothesis() ##################
+            aName.SetValue("Applied hypotheses")
+
+            aSelAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeSelectable")
+            aSelAttr.SetSelectable(0)
+            aPixmap = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributePixMap")
+            aPixmap.SetPixMap( "mesh_tree_hypo.png" )
+
+        # VSR: added temporarily - reference to applied hypothesis is published automatically by the engine
+        else :
+            it = myStudy.NewChildIterator(AHR)
+            while it.More() :
+                res, Ref = it.Value().ReferencedObject()
+                if res and Ref is not None and Ref.GetID() == Hypothesis_Entry :
+                    return
+                it.Next()
+        # VSR ######################################################################
+
+        SO = myStudyBuilder.NewObject(AHR)
+        myStudyBuilder.Addreference (SO,SO_Hypothesis)
 
 #------------------------------------------------------------
 def SetAlgorithms(Mesh_Or_SubMesh_Entry, Algorithms_Entry):
     SO_MorSM = myStudy.FindObjectID( Mesh_Or_SubMesh_Entry )
     SO_Algorithms = myStudy.FindObjectID( Algorithms_Entry )
-    if  SO_MorSM != None and SO_Algorithms != None : 
-       #Find or Create Applied Algorithms root
-       res, AHR = SO_MorSM.FindSubObject (Tag_RefOnAppliedAlgorithms);
-       if AHR is None or res == 0: 
-               AHR = myStudyBuilder.NewObjectToTag (SO_MorSM, Tag_RefOnAppliedAlgorithms);
-               anAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeName");
-               aName = anAttr._narrow(SALOMEDS.AttributeName);
-               aName.SetValue("Applied Algorithm");
-               anAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeSelectable");
-               aSelAttr = anAttr._narrow(SALOMEDS.AttributeSelectable);
-               aSelAttr.SetSelectable(0);
-               anAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributePixMap");
-               aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap);
-               aPixmap.SetPixMap( "mesh_tree_algo.png" );
-    
-       SO = myStudyBuilder.NewObject(AHR);
-       myStudyBuilder.Addreference (SO,SO_Algorithms);
-  
+    if  SO_MorSM != None and SO_Algorithms != None :
+        #Find or Create Applied Algorithms root
+        res, AHR = SO_MorSM.FindSubObject (Tag_RefOnAppliedAlgorithms)
+        if AHR is None or res == 0:
+            AHR = myStudyBuilder.NewObjectToTag (SO_MorSM, Tag_RefOnAppliedAlgorithms)
+            aName = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeName")
+
+            # The same name as in SMESH_Mesh_i::AddHypothesis() ##################
+            aName.SetValue("Applied algorithms")
+
+            aSelAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeSelectable")
+            aSelAttr.SetSelectable(0)
+            aPixmap = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributePixMap")
+            aPixmap.SetPixMap( "mesh_tree_algo.png" )
+
+        # VSR: added temporarily - reference to applied hypothesis is published automatically by the engine
+        else :
+            it = myStudy.NewChildIterator(AHR)
+            while it.More() :
+                res, Ref = it.Value().ReferencedObject()
+                if res and Ref is not None and Ref.GetID() == Algorithms_Entry :
+                    return
+                it.Next()
+        # VSR ######################################################################
+
+        SO = myStudyBuilder.NewObject(AHR)
+        myStudyBuilder.Addreference (SO,SO_Algorithms)
+
 
 #------------------------------------------------------------
 def UnSetHypothesis( Applied_Hypothesis_Entry ):
-       SO_Applied_Hypothesis = myStudy.FindObjectID( Applied_Hypothesis_Entry );
-       if SO_Applied_Hypothesis : 
-               myStudyBuilder.RemoveObject(SO_Applied_Hypothesis);
-       
+    SO_Applied_Hypothesis = myStudy.FindObjectID( Applied_Hypothesis_Entry )
+    if SO_Applied_Hypothesis :
+        myStudyBuilder.RemoveObject(SO_Applied_Hypothesis)
+
 
 #------------------------------------------------------------
 def AddSubMesh ( SO_Mesh_Entry, SM_IOR, ST):
-       SO_Mesh = myStudy.FindObjectID( SO_Mesh_Entry )
-       if ( SO_Mesh ) : 
-    
-               if  ST == ShapeTypeCompSolid : 
-                       Tag_Shape = Tag_SubMeshOnSolid;    
-                       Name = "SubMeshes On Solid";
-               elif ST == ShapeTypeFace :
-                       Tag_Shape = Tag_SubMeshOnFace;     
-                       Name = "SubMeshes On Face";
-               elif ST == ShapeTypeEdge :
-                       Tag_Shape = Tag_SubMeshOnEdge;     
-                       Name = "SubMeshes On Edge";
-               elif ST == ShapeTypeVertex :
-                       Tag_Shape = Tag_SubMeshOnVertex;   
-                       Name = "SubMeshes On Vertex";
-               else :
-                       Tag_Shape = Tag_SubMeshOnCompound; 
-                       Name = "SubMeshes On Compound";
-               
-               res, SubmeshesRoot = SO_Mesh.FindSubObject (Tag_Shape)
-               if SubmeshesRoot is None or res == 0:
-                       SubmeshesRoot = myStudyBuilder.NewObjectToTag (SO_Mesh, Tag_Shape);
-                       anAttr = myStudyBuilder.FindOrCreateAttribute(SubmeshesRoot, "AttributeName");
-                       
-                       aName = anAttr._narrow(SALOMEDS.AttributeName);
-                       aName.SetValue(Name);
-                       anAttr = myStudyBuilder.FindOrCreateAttribute(SubmeshesRoot, "AttributeSelectable");
-                       aSelAttr = anAttr._narrow(SALOMEDS.AttributeSelectable);
-                       aSelAttr.SetSelectable(0);
-               
-               SO = myStudyBuilder.NewObject (SubmeshesRoot); 
-               SO = SO._narrow(SALOMEDS.SObject)
-               anAttr = myStudyBuilder.FindOrCreateAttribute(SO, "AttributeIOR");
-               anIOR = anAttr._narrow(SALOMEDS.AttributeIOR);
-               anIOR.SetValue(SM_IOR);
-               return  SO.GetID();
-        
-       return None;
+    # VSR: added temporarily - objects are published automatically by the engine
+    aSO = myStudy.FindObjectIOR( SM_IOR )
+    if aSO is not None:
+        return aSO.GetID()
+    # VSR ######################################################################
+
+    SO_Mesh = myStudy.FindObjectID( SO_Mesh_Entry )
+    if ( SO_Mesh ) :
+
+        if  ST == ShapeType["COMPSOLID"] :
+            Tag_Shape = Tag_SubMeshOnSolid
+            Name = "SubMeshes on Solid"
+        elif ST == ShapeType["FACE"] :
+            Tag_Shape = Tag_SubMeshOnFace
+            Name = "SubMeshes on Face"
+        elif ST == ShapeType["EDGE"] :
+            Tag_Shape = Tag_SubMeshOnEdge
+            Name = "SubMeshes on Edge"
+        elif ST == ShapeType["VERTEX"] :
+            Tag_Shape = Tag_SubMeshOnVertex
+            Name = "SubMeshes on Vertex"
+        else :
+            Tag_Shape = Tag_SubMeshOnCompound
+            Name = "SubMeshes on Compound"
+
+        res, SubmeshesRoot = SO_Mesh.FindSubObject (Tag_Shape)
+        if SubmeshesRoot is None or res == 0:
+            SubmeshesRoot = myStudyBuilder.NewObjectToTag (SO_Mesh, Tag_Shape)
+            aName = myStudyBuilder.FindOrCreateAttribute(SubmeshesRoot, "AttributeName")
+            aName.SetValue(Name)
+            aSelAttr = myStudyBuilder.FindOrCreateAttribute(SubmeshesRoot, "AttributeSelectable")
+            aSelAttr.SetSelectable(0)
+
+        SO = myStudyBuilder.NewObject (SubmeshesRoot)
+        anIOR = myStudyBuilder.FindOrCreateAttribute(SO, "AttributeIOR")
+        anIOR.SetValue(SM_IOR)
+        return  SO.GetID()
+
+    return None
 
 #------------------------------------------------------------
 def AddSubMeshOnShape (Mesh_Entry, GeomShape_Entry, SM_IOR, ST) :
-  SO_GeomShape = myStudy.FindObjectID( GeomShape_Entry );
-  if  SO_GeomShape != None : 
-       SM_Entry = AddSubMesh (Mesh_Entry,SM_IOR,ST);
-       SO_SM = myStudy.FindObjectID( SM_Entry );
+    # VSR: added temporarily - objects are published automatically by the engine
+    aSO = myStudy.FindObjectIOR( SM_IOR )
+    if aSO is not None:
+        return aSO.GetID()
+    # VSR ######################################################################
+    SO_GeomShape = myStudy.FindObjectID( GeomShape_Entry )
+    if  SO_GeomShape != None :
+        SM_Entry = AddSubMesh (Mesh_Entry,SM_IOR,ST)
+        SO_SM = myStudy.FindObjectID( SM_Entry )
 
-       if  SO_SM != None :
-               SetShape (GeomShape_Entry, SM_Entry);
-               return SO_SM.GetID();
-    
-  return None;
+        if  SO_SM != None :
+            SetShape (GeomShape_Entry, SM_Entry)
+            return SM_Entry
+
+    return None
 
 
 #------------------------------------------------------------
 def SetName(Entry, Name):
-       SO = myStudy.FindObjectID( Entry );
-       if SO != None : 
-               anAttr = myStudyBuilder.FindOrCreateAttribute(SO, "AttributeName");
-               aName = anAttr._narrow(SALOMEDS.AttributeName);
-               aName.SetValue(Name);
-  
-
+    SO = myStudy.FindObjectID( Entry )
+    if SO != None :
+        aName = myStudyBuilder.FindOrCreateAttribute(SO, "AttributeName")
+        aName.SetValue(Name)