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