1 # Copyright (C) 2003 CEA/DEN, EDF R&D
5 # File : batchmode_smesh.py
6 # Author : Oksana TCHEBANOVA
10 from batchmode_salome import *
13 #--------------------------------------------------------------------------
14 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
16 smesh = lcc.FindOrLoadComponent("FactoryServer", "SMESH")
17 myStudyBuilder = myStudy.NewBuilder()
19 if myStudyBuilder is None:
20 raise RuntimeError, " Null myStudyBuilder"
22 father = myStudy.FindComponent("MESH")
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" );
34 myStudyBuilder.DefineComponentInstance(father,smesh)
36 mySComponentMesh = father._narrow(SALOMEDS.SComponent)
38 Tag_HypothesisRoot = 1;
39 Tag_AlgorithmsRoot = 2;
42 Tag_RefOnAppliedHypothesis = 2;
43 Tag_RefOnAppliedAlgorithms = 3;
45 Tag_SubMeshOnVertex = 4;
46 Tag_SubMeshOnEdge = 5;
47 Tag_SubMeshOnFace = 6;
48 Tag_SubMeshOnSolid = 7;
49 Tag_SubMeshOnCompound = 8;
51 Tag = {"HypothesisRoot":1,"AlgorithmsRoot":2,"RefOnShape":1,"RefOnAppliedHypothesis":2,"RefOnAppliedAlgorithms":3,"SubMeshOnVertex":4,"SubMeshOnEdge":5,"SubMeshOnFace":6,"SubMeshOnSolid":7,"SubMeshOnCompound":8}
54 ShapeTypeCompSolid = 1
62 # -- enumeration ShapeType as a dictionary --
63 ShapeType = {"CompSolid":1, "Solid":2, "Shell":3, "Face":4, "Wire":5, "Edge":6, "Vertex":7}
65 #------------------------------------------------------------
68 #------------------------------------------------------------
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);
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);
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)
105 return newMesh.GetID()
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" );
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 );
130 aPixmap.SetPixMap( "mesh_tree_hypo.png_" + aType );
131 anAttr = myStudyBuilder.FindOrCreateAttribute(newHypo, "AttributeIOR");
132 anIOR = anAttr._narrow(SALOMEDS.AttributeIOR);
134 return newHypo.GetID();
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" );
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);
163 return newHypo.GetID();
166 #------------------------------------------------------------
167 def SetShape(ShapeEntry, MeshEntry):
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)
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);
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 );
185 if SO_MorSM is not None and SO_Hypothesis is not None :
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" );
201 SO = myStudyBuilder.NewObject(AHR);
202 SO = SO._narrow(SALOMEDS.SObject)
203 myStudyBuilder.Addreference (SO,SO_Hypothesis);
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" );
224 SO = myStudyBuilder.NewObject(AHR);
225 myStudyBuilder.Addreference (SO,SO_Algorithms);
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);
235 #------------------------------------------------------------
236 def AddSubMesh ( SO_Mesh_Entry, SM_IOR, ST):
237 SO_Mesh = myStudy.FindObjectID( SO_Mesh_Entry )
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";
253 Tag_Shape = Tag_SubMeshOnCompound;
254 Name = "SubMeshes On Compound";
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");
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);
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);
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 );
284 SetShape (GeomShape_Entry, SM_Entry);
285 return SO_SM.GetID();
290 #------------------------------------------------------------
291 def SetName(Entry, Name):
292 SO = myStudy.FindObjectID( Entry );
294 anAttr = myStudyBuilder.FindOrCreateAttribute(SO, "AttributeName");
295 aName = anAttr._narrow(SALOMEDS.AttributeName);
296 aName.SetValue(Name);