Salome HOME
Add support for tetra, pyramid and prism
[modules/smesh.git] / src / SMESH_SWIG / batchmode_smesh.py
1 #  Copyright (C) 2003  CEA/DEN, EDF R&D
2 #
3 #
4 #
5 #  File   : batchmode_smesh.py
6 #  Author : Oksana TCHEBANOVA
7 #  Module : SMESH
8 #  $Header$
9
10 from batchmode_salome import *
11 import SMESH
12
13 #--------------------------------------------------------------------------
14 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
15
16 smesh = lcc.FindOrLoadComponent("FactoryServer", "SMESH")
17 myStudyBuilder = myStudy.NewBuilder()
18
19 if myStudyBuilder is None:
20         raise RuntimeError, " Null myStudyBuilder"
21
22 father = myStudy.FindComponent("MESH")
23 if father is None:
24         father = myStudyBuilder.NewComponent("MESH")
25         A1 = myStudyBuilder.FindOrCreateAttribute(father, "AttributeName");
26         FName = A1._narrow(SALOMEDS.AttributeName)
27         #FName.SetValue("Mesh") 
28         Comp = modulecatalog.GetComponent( "SMESH" )
29         FName.SetValue( Comp._get_componentusername() )
30         A2 = myStudyBuilder.FindOrCreateAttribute(father, "AttributePixMap");
31         aPixmap = A2._narrow(SALOMEDS.AttributePixMap);
32         aPixmap.SetPixMap( "ICON_OBJBROWSER_Mesh" );
33
34 myStudyBuilder.DefineComponentInstance(father,smesh)
35
36 mySComponentMesh = father._narrow(SALOMEDS.SComponent)
37
38 Tag_HypothesisRoot  = 1;
39 Tag_AlgorithmsRoot  = 2;
40   
41 Tag_RefOnShape      = 1;
42 Tag_RefOnAppliedHypothesis = 2;
43 Tag_RefOnAppliedAlgorithms = 3;
44   
45 Tag_SubMeshOnVertex = 4;
46 Tag_SubMeshOnEdge = 5;
47 Tag_SubMeshOnFace = 6;
48 Tag_SubMeshOnSolid = 7;
49 Tag_SubMeshOnCompound = 8;
50
51 Tag = {"HypothesisRoot":1,"AlgorithmsRoot":2,"RefOnShape":1,"RefOnAppliedHypothesis":2,"RefOnAppliedAlgorithms":3,"SubMeshOnVertex":4,"SubMeshOnEdge":5,"SubMeshOnFace":6,"SubMeshOnSolid":7,"SubMeshOnCompound":8}
52
53 # -- enumeration --
54 ShapeTypeCompSolid = 1
55 ShapeTypeSolid     = 2
56 ShapeTypeShell     = 3
57 ShapeTypeFace      = 4
58 ShapeTypeWire      = 5
59 ShapeTypeEdge      = 6
60 ShapeTypeVertex    = 7
61
62 # -- enumeration ShapeType as a dictionary --
63 ShapeType = {"CompSolid":1, "Solid":2, "Shell":3, "Face":4, "Wire":5, "Edge":6, "Vertex":7}
64
65 #------------------------------------------------------------
66 def Init():
67          pass
68 #------------------------------------------------------------
69 def AddNewMesh(IOR):
70         res,HypothesisRoot = mySComponentMesh.FindSubObject ( Tag_HypothesisRoot )
71         if HypothesisRoot is None or res == 0:
72                 HypothesisRoot = myStudyBuilder.NewObjectToTag(mySComponentMesh, Tag_HypothesisRoot)
73                 anAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeName")
74                 aName = anAttr._narrow(SALOMEDS.AttributeName)
75                 aName.SetValue("Hypothesis Definition")
76                 anAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributePixMap")
77                 aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap)
78                 aPixmap.SetPixMap( "mesh_tree_hypo.png" )
79                 anAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable")
80                 aSelAttr = anAttr._narrow(SALOMEDS.AttributeSelectable)
81                 aSelAttr.SetSelectable(0);
82
83         res, AlgorithmsRoot = mySComponentMesh.FindSubObject (Tag_AlgorithmsRoot)
84         if AlgorithmsRoot is None  or res == 0:
85                 AlgorithmsRoot = myStudyBuilder.NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot)
86                 anAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeName")
87                 aName = anAttr._narrow(SALOMEDS.AttributeName)
88                 aName.SetValue("Algorithms Definition");
89                 anAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
90                 aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap);
91                 aPixmap.SetPixMap( "mesh_tree_algo.png" );
92                 anAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable");
93                 aSelAttr = anAttr._narrow(SALOMEDS.AttributeSelectable);
94                 aSelAttr.SetSelectable(0);
95
96         HypothesisRoot = HypothesisRoot._narrow(SALOMEDS.SObject)
97         newMesh = myStudyBuilder.NewObject(mySComponentMesh)
98         newMesh = newMesh._narrow(SALOMEDS.SObject)
99         anAttr = myStudyBuilder.FindOrCreateAttribute(newMesh, "AttributePixMap")
100         aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap)
101         aPixmap.SetPixMap( "mesh_tree_mesh.png" )
102         anAttr = myStudyBuilder.FindOrCreateAttribute(newMesh, "AttributeIOR")
103         anIOR = anAttr._narrow(SALOMEDS.AttributeIOR)
104         anIOR.SetValue(IOR)
105         return newMesh.GetID()
106
107 #------------------------------------------------------------   
108 def AddNewHypothesis(IOR):
109         res, HypothesisRoot = mySComponentMesh.FindSubObject (Tag_HypothesisRoot)
110         if HypothesisRoot is None or res == 0:
111                 HypothesisRoot = myStudyBuilder.NewObjectToTag (mySComponentMesh, Tag_HypothesisRoot)
112                 anAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeName");
113                 aName = anAttr._narrow(SALOMEDS.AttributeName);
114                 aName.SetValue("Hypothesis Definition");
115                 anAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributeSelectable");
116                 aSelAttr = anAttr._narrow(SALOMEDS.AttributeSelectable);
117                 aSelAttr.SetSelectable(0);
118                 anAttr = myStudyBuilder.FindOrCreateAttribute(HypothesisRoot, "AttributePixMap");
119                 aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap);
120                 aPixmap.SetPixMap( "mesh_tree_hypo.png" );
121  
122         # Add New Hypothesis
123         newHypo = myStudyBuilder.NewObject(HypothesisRoot)
124         newHypo = newHypo._narrow(SALOMEDS.SObject)
125         anAttr  = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributePixMap")
126         aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap)
127         H = orb.string_to_object(IOR)
128         H = H._narrow( SMESH.SMESH_Hypothesis );
129         aType = H.GetName();
130         aPixmap.SetPixMap( "mesh_tree_hypo.png_" + aType );
131         anAttr = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributeIOR");
132         anIOR = anAttr._narrow(SALOMEDS.AttributeIOR);
133         anIOR.SetValue(IOR);
134         return newHypo.GetID();
135
136 #------------------------------------------------------------
137 def AddNewAlgorithms(IOR):
138         res, AlgorithmsRoot = mySComponentMesh.FindSubObject (Tag_AlgorithmsRoot)
139         if  AlgorithmsRoot is None or res == 0:
140                 AlgorithmsRoot = myStudyBuilde.NewObjectToTag (mySComponentMesh, Tag_AlgorithmsRoot)
141                 anAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeName")
142                 aName = anAttr._narrow(SALOMEDS.AttributeName);
143                 aName.SetValue("Algorithms Definition");
144                 anAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributeSelectable")
145                 aSelAttr = anAttr._narrow(SALOMEDS.AttributeSelectable);
146                 aSelAttr.SetSelectable(0);
147                 anAttr = myStudyBuilder.FindOrCreateAttribute(AlgorithmsRoot, "AttributePixMap");
148                 aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap);
149                 aPixmap.SetPixMap( "mesh_tree_algo.png" );
150
151   # Add New Algorithms
152         newHypo = myStudyBuilder.NewObject(AlgorithmsRoot)
153         newHypo = newHypo._narrow(SALOMEDS.SObject)
154         anAttr = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributePixMap");
155         aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap);
156         H = orb.string_to_object(IOR)
157         H = H._narrow( SMESH.SMESH_Hypothesis);
158         aType = H.GetName();    #QString in fact
159         aPixmap.SetPixMap( "mesh_tree_algo.png_" + aType );
160         anAttr = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributeIOR");
161         anIOR = anAttr._narrow(SALOMEDS.AttributeIOR);
162         anIOR.SetValue(IOR);
163         return newHypo.GetID();
164
165
166 #------------------------------------------------------------
167 def SetShape(ShapeEntry, MeshEntry):
168
169         SO_MorSM = myStudy.FindObjectID( MeshEntry )
170         SO_MorSM = SO_MorSM._narrow(SALOMEDS.SObject)
171         SO_GeomShape = myStudy.FindObjectID( ShapeEntry );
172         SO_GeomShape = SO_GeomShape._narrow(SALOMEDS.SObject)
173
174         if SO_MorSM is not None and SO_GeomShape is not None :
175                 SO = myStudyBuilder.NewObjectToTag (SO_MorSM, Tag_RefOnShape);
176                 SO = SO._narrow(SALOMEDS.SObject)
177                 myStudyBuilder.Addreference (SO,SO_GeomShape);
178   
179
180 #------------------------------------------------------------
181 def SetHypothesis(Mesh_Or_SubMesh_Entry, Hypothesis_Entry):
182   SO_MorSM = myStudy.FindObjectID( Mesh_Or_SubMesh_Entry );
183   SO_Hypothesis =  myStudy.FindObjectID( Hypothesis_Entry );
184
185   if  SO_MorSM is not None and SO_Hypothesis is not None : 
186     
187         #Find or Create Applied Hypothesis root
188         res, AHR = SO_MorSM.FindSubObject (Tag_RefOnAppliedHypothesis)
189         if  AHR is None or res == 0: 
190                 AHR = myStudyBuilder.NewObjectToTag (SO_MorSM, Tag_RefOnAppliedHypothesis);
191                 anAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeName");
192                 aName = anAttr._narrow(SALOMEDS.AttributeName);
193                 aName.SetValue("Applied Hypothesis");
194                 anAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeSelectable");
195                 aSelAttr = anAttr._narrow(SALOMEDS.AttributeSelectable);
196                 aSelAttr.SetSelectable(0);
197                 anAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributePixMap");
198                 aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap);
199                 aPixmap.SetPixMap( "mesh_tree_hypo.png" );
200                 
201                 SO = myStudyBuilder.NewObject(AHR);
202                 SO = SO._narrow(SALOMEDS.SObject)
203                 myStudyBuilder.Addreference (SO,SO_Hypothesis);
204
205 #------------------------------------------------------------
206 def SetAlgorithms(Mesh_Or_SubMesh_Entry, Algorithms_Entry):
207     SO_MorSM = myStudy.FindObjectID( Mesh_Or_SubMesh_Entry )
208     SO_Algorithms = myStudy.FindObjectID( Algorithms_Entry )
209     if  SO_MorSM != None and SO_Algorithms != None : 
210         #Find or Create Applied Algorithms root
211         res, AHR = SO_MorSM.FindSubObject (Tag_RefOnAppliedAlgorithms);
212         if AHR is None or res == 0: 
213                 AHR = myStudyBuilder.NewObjectToTag (SO_MorSM, Tag_RefOnAppliedAlgorithms);
214                 anAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeName");
215                 aName = anAttr._narrow(SALOMEDS.AttributeName);
216                 aName.SetValue("Applied Algorithm");
217                 anAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributeSelectable");
218                 aSelAttr = anAttr._narrow(SALOMEDS.AttributeSelectable);
219                 aSelAttr.SetSelectable(0);
220                 anAttr = myStudyBuilder.FindOrCreateAttribute(AHR, "AttributePixMap");
221                 aPixmap = anAttr._narrow(SALOMEDS.AttributePixMap);
222                 aPixmap.SetPixMap( "mesh_tree_algo.png" );
223     
224         SO = myStudyBuilder.NewObject(AHR);
225         myStudyBuilder.Addreference (SO,SO_Algorithms);
226   
227
228 #------------------------------------------------------------
229 def UnSetHypothesis( Applied_Hypothesis_Entry ):
230         SO_Applied_Hypothesis = myStudy.FindObjectID( Applied_Hypothesis_Entry );
231         if SO_Applied_Hypothesis : 
232                 myStudyBuilder.RemoveObject(SO_Applied_Hypothesis);
233         
234
235 #------------------------------------------------------------
236 def AddSubMesh ( SO_Mesh_Entry, SM_IOR, ST):
237         SO_Mesh = myStudy.FindObjectID( SO_Mesh_Entry )
238         if ( SO_Mesh ) : 
239     
240                 if  ST == ShapeTypeCompSolid : 
241                         Tag_Shape = Tag_SubMeshOnSolid;    
242                         Name = "SubMeshes On Solid";
243                 elif ST == ShapeTypeFace :
244                         Tag_Shape = Tag_SubMeshOnFace;     
245                         Name = "SubMeshes On Face";
246                 elif ST == ShapeTypeEdge :
247                         Tag_Shape = Tag_SubMeshOnEdge;     
248                         Name = "SubMeshes On Edge";
249                 elif ST == ShapeTypeVertex :
250                         Tag_Shape = Tag_SubMeshOnVertex;   
251                         Name = "SubMeshes On Vertex";
252                 else :
253                         Tag_Shape = Tag_SubMeshOnCompound; 
254                         Name = "SubMeshes On Compound";
255                 
256                 res, SubmeshesRoot = SO_Mesh.FindSubObject (Tag_Shape)
257                 if SubmeshesRoot is None or res == 0:
258                         SubmeshesRoot = myStudyBuilder.NewObjectToTag (SO_Mesh, Tag_Shape);
259                         anAttr = myStudyBuilder.FindOrCreateAttribute(SubmeshesRoot, "AttributeName");
260                         
261                         aName = anAttr._narrow(SALOMEDS.AttributeName);
262                         aName.SetValue(Name);
263                         anAttr = myStudyBuilder.FindOrCreateAttribute(SubmeshesRoot, "AttributeSelectable");
264                         aSelAttr = anAttr._narrow(SALOMEDS.AttributeSelectable);
265                         aSelAttr.SetSelectable(0);
266                 
267                 SO = myStudyBuilder.NewObject (SubmeshesRoot); 
268                 SO = SO._narrow(SALOMEDS.SObject)
269                 anAttr = myStudyBuilder.FindOrCreateAttribute(SO, "AttributeIOR");
270                 anIOR = anAttr._narrow(SALOMEDS.AttributeIOR);
271                 anIOR.SetValue(SM_IOR);
272                 return  SO.GetID();
273          
274         return None;
275
276 #------------------------------------------------------------
277 def AddSubMeshOnShape (Mesh_Entry, GeomShape_Entry, SM_IOR, ST) :
278   SO_GeomShape = myStudy.FindObjectID( GeomShape_Entry );
279   if  SO_GeomShape != None : 
280         SM_Entry = AddSubMesh (Mesh_Entry,SM_IOR,ST);
281         SO_SM = myStudy.FindObjectID( SM_Entry );
282
283         if  SO_SM != None :
284                 SetShape (GeomShape_Entry, SM_Entry);
285                 return SO_SM.GetID();
286     
287   return None;
288
289
290 #------------------------------------------------------------
291 def SetName(Entry, Name):
292         SO = myStudy.FindObjectID( Entry );
293         if SO != None : 
294                 anAttr = myStudyBuilder.FindOrCreateAttribute(SO, "AttributeName");
295                 aName = anAttr._narrow(SALOMEDS.AttributeName);
296                 aName.SetValue(Name);
297   
298