1 # Copyright (C) 2003 CEA/DEN, EDF R&D
5 # File : batchmode_smesh.py
6 # Author : Oksana TCHEBANOVA
10 from batchmode_salome import *
13 #--------------------------------------------------------------------------
15 smesh = lcc.FindOrLoadComponent("FactoryServer", "SMESH")
16 myStudyBuilder = myStudy.NewBuilder()
18 if myStudyBuilder is None:
19 raise RuntimeError, " Null myStudyBuilder"
21 father = myStudy.FindComponent("MESH")
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" );
31 myStudyBuilder.DefineComponentInstance(father,smesh)
33 mySComponentMesh = father._narrow(SALOMEDS.SComponent)
35 Tag_HypothesisRoot = 1;
36 Tag_AlgorithmsRoot = 2;
39 Tag_RefOnAppliedHypothesis = 2;
40 Tag_RefOnAppliedAlgorithms = 3;
42 Tag_SubMeshOnVertex = 4;
43 Tag_SubMeshOnEdge = 5;
44 Tag_SubMeshOnFace = 6;
45 Tag_SubMeshOnSolid = 7;
46 Tag_SubMeshOnCompound = 8;
48 Tag = {"HypothesisRoot":1,"AlgorithmsRoot":2,"RefOnShape":1,"RefOnAppliedHypothesis":2,"RefOnAppliedAlgorithms":3,"SubMeshOnVertex":4,"SubMeshOnEdge":5,"SubMeshOnFace":6,"SubMeshOnSolid":7,"SubMeshOnCompound":8}
51 ShapeTypeCompSolid = 1
59 # -- enumeration ShapeType as a dictionary --
60 ShapeType = {"CompSolid":1, "Solid":2, "Shell":3, "Face":4, "Wire":5, "Edge":6, "Vertex":7}
62 #------------------------------------------------------------
65 #------------------------------------------------------------
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);
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);
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)
102 return newMesh.GetID()
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" );
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 );
127 aPixmap.SetPixMap( "mesh_tree_hypo.png_" + aType );
128 anAttr = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributeIOR");
129 anIOR = anAttr._narrow(SALOMEDS.AttributeIOR);
131 return newHypo.GetID();
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" );
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);
160 return newHypo.GetID();
163 #------------------------------------------------------------
164 def SetShape(ShapeEntry, MeshEntry):
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)
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);
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 );
182 if SO_MorSM is not None and SO_Hypothesis is not None :
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" );
198 SO = myStudyBuilder.NewObject(AHR);
199 SO = SO._narrow(SALOMEDS.SObject)
200 myStudyBuilder.Addreference (SO,SO_Hypothesis);
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" );
221 SO = myStudyBuilder.NewObject(AHR);
222 myStudyBuilder.Addreference (SO,SO_Algorithms);
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);
232 #------------------------------------------------------------
233 def AddSubMesh ( SO_Mesh_Entry, SM_IOR, ST):
234 SO_Mesh = myStudy.FindObjectID( SO_Mesh_Entry )
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";
250 Tag_Shape = Tag_SubMeshOnCompound;
251 Name = "SubMeshes On Compound";
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");
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);
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);
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 );
281 SetShape (GeomShape_Entry, SM_Entry);
282 return SO_SM.GetID();
287 #------------------------------------------------------------
288 def SetName(Entry, Name):
289 SO = myStudy.FindObjectID( Entry );
291 anAttr = myStudyBuilder.FindOrCreateAttribute(SO, "AttributeName");
292 aName = anAttr._narrow(SALOMEDS.AttributeName);
293 aName.SetValue(Name);