Salome HOME
041330f6a6c624f44cc208ace2450a4f7eb2289c
[modules/geom.git] / src / GEOM_SWIG / batchmode_geompy.py
1 #  GEOM GEOM_SWIG : binding of C++ omplementaion with Python
2 #
3 #  Copyright (C) 2003  CEA/DEN, EDF R&D
4 #
5 #
6 #
7 #  File   : geompy.py
8 #  Author : Paul RASCLE, EDF
9 #  Module : GEOM
10 #  $Header$
11
12 from batchmode_salome import *
13 import GEOM
14
15 #--------------------------------------------------------------------------
16 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
17
18 geom = lcc.FindOrLoadComponent("FactoryServer", "GEOM")
19 geom.GetCurrentStudy(myStudyId)
20 myBuilder = myStudy.NewBuilder()
21
22 father = myStudy.FindComponent("GEOM")
23 if father is None:
24         father = myBuilder.NewComponent("GEOM")
25         A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName");
26         FName = A1._narrow(SALOMEDS.AttributeName)
27 #        FName.SetValue("Geometry")
28
29         Comp = modulecatalog.GetComponent( "GEOM" )
30         FName.SetValue( Comp._get_componentusername() )
31
32         A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap");
33         aPixmap = A2._narrow(SALOMEDS.AttributePixMap);
34         aPixmap.SetPixMap( "ICON_OBJBROWSER_Geometry" );
35         myBuilder.DefineComponentInstance(father,geom)
36
37
38 # -----------------------------------------------------------------------------
39 # add To Study  
40 # -----------------------------------------------------------------------------
41
42 def SubShapeName(aSubId, aMainId):
43 #    index = gg.getIndexTopology(aSubId, aMainId)
44 #    print index
45 #    name = gg.getShapeTypeString(aSubId) + "_%d"%(index)
46     name = "Shape"
47     print name
48     return name
49
50 def addArguments(aShape):
51     ListIOR = []
52     ListIOR = geom.GetReferencedObjects(aShape)
53
54     if aShape._get_StudyShapeId()!="":
55         father = IDToSObject(aShape._get_StudyShapeId())
56
57         myBuilder.NewCommand()
58         if len(ListIOR) > 0:
59           Arg = myBuilder.NewObject(father)
60           A1 = myBuilder.FindOrCreateAttribute(Arg, "AttributeName");
61           ArgName = A1._narrow(SALOMEDS.AttributeName)
62           ArgName.SetValue("Arguments")
63           A2 = myBuilder.FindOrCreateAttribute(Arg, "AttributeSelectable");
64           SelAttr = A2._narrow(SALOMEDS.AttributeSelectable);
65           SelAttr.SetSelectable(0);
66         
67           OneObject = 0
68           for anIOR in ListIOR:
69              Shape = orb.string_to_object(anIOR)
70              if Shape is not None:
71                 if Shape._get_StudyShapeId()!="":
72                    Obj = IDToSObject(Shape._get_StudyShapeId())
73                    if Obj is not None:
74                            Obj1 = myBuilder.NewObject(Arg)
75                            myBuilder.Addreference(Obj1,Obj)
76                            OneObject = 1
77
78           if OneObject == 0:
79              myBuilder.RemoveObject(Arg)
80
81     myBuilder.CommitCommand()
82     return 1    
83
84 def addToStudy(aShape, aName):
85     try: 
86         myBuilder.NewCommand()
87         newObj = myBuilder.NewObject(father)
88         ior = orb.object_to_string(aShape)
89         A1 = myBuilder.FindOrCreateAttribute(newObj, "AttributeIOR");
90         ObjIOR = A1._narrow(SALOMEDS.AttributeIOR)
91         ObjIOR.SetValue(ior)
92         A2 = myBuilder.FindOrCreateAttribute(newObj, "AttributeName");
93         ObjName = A2._narrow(SALOMEDS.AttributeName)
94         ObjName.SetValue(aName)
95         id = newObj.GetID()
96         aShape._set_StudyShapeId(id)
97         myBuilder.CommitCommand()
98
99         addArguments( aShape )
100
101     except:
102           return None
103     return id
104
105 def addToStudyInFather(aFather, aShape, aName):
106     myBuilder.NewCommand()
107     newObj = myBuilder.NewObject( IDToSObject(aFather._get_StudyShapeId()) )
108     ior = orb.object_to_string(aShape)
109     A1 = myBuilder.FindOrCreateAttribute(newObj, "AttributeIOR");
110     ObjIOR = A1._narrow(SALOMEDS.AttributeIOR)
111     ObjIOR.SetValue(ior)
112     A2 = myBuilder.FindOrCreateAttribute(newObj, "AttributeName");
113     ObjName = A2._narrow(SALOMEDS.AttributeName)
114     ObjName.SetValue(aName)
115     id = newObj.GetID()
116     aShape._set_StudyShapeId(id)
117     myBuilder.CommitCommand()
118     addArguments( aShape )
119     return id
120
121 # -----------------------------------------------------------------------------
122 # Create Geometry 2D
123 # -----------------------------------------------------------------------------
124
125 def MakeVertex(x,y,z):
126     anObj = geom.MakeVertex(x,y,z)
127     ior = orb.object_to_string(anObj)
128     anObj._set_Name(ior)
129     return anObj
130
131 def MakeVector(p1,p2):
132     anObj = geom.MakeVector(p1,p2)
133     ior = orb.object_to_string(anObj)
134     anObj._set_Name(ior)
135     return anObj
136
137 def MakeLine(p1,d1):
138     anObj = geom.MakeLine(p1,d1)
139     ior = orb.object_to_string(anObj)
140     anObj._set_Name(ior)
141     return anObj
142
143 def MakeArc(p1,p2,p3):
144     anObj = geom.MakeArc(p1,p2,p3)
145     ior = orb.object_to_string(anObj)
146     anObj._set_Name(ior)
147     return anObj
148
149 def MakeCircle(p1,d1,radius):  
150     anObj = geom.MakeCircle(p1,d1,radius)
151     ior = orb.object_to_string(anObj)
152     anObj._set_Name(ior)
153     return anObj
154
155 def MakeEllipse(p1,d1,radiusMaj,radiusMin):  
156     anObj = geom.MakeEllipse(p1,d1,radiusMaj, radiusMin)
157     ior = orb.object_to_string(anObj)
158     anObj._set_Name(ior)
159     return anObj
160
161 def MakePlane(p1,d1,trimsize): 
162     anObj = geom.MakePlane(p1,d1,trimsize)
163     ior = orb.object_to_string(anObj)
164     anObj._set_Name(ior)
165     return anObj
166
167 def MakeSketcher(Cmd): 
168     anObj = geom.MakeSketcher(Cmd)
169     ior = orb.object_to_string(anObj)
170     anObj._set_Name(ior)
171     return anObj
172
173 # -----------------------------------------------------------------------------
174 # Create Geometry 3D
175 # -----------------------------------------------------------------------------
176
177 def MakeBox(x1,y1,z1,x2,y2,z2):
178     anObj = geom.MakeBox(x1,y1,z1,x2,y2,z2)
179     ior = orb.object_to_string(anObj)
180     anObj._set_Name(ior)
181     return anObj
182
183 def MakeCylinder(p1,d1,radius,height):
184     anObj = geom.MakeCylinder(p1,d1,radius,height)
185     ior = orb.object_to_string(anObj)
186     anObj._set_Name(ior)
187     return anObj
188
189 def MakeSphere(x,y,z,radius):
190     anObj = geom.MakeSphere(x,y,z,radius)       
191     ior = orb.object_to_string(anObj)
192     anObj._set_Name(ior)
193     return anObj
194
195 def MakeCone(p1,d1,radius1,radius2,height):
196     anObj = geom.MakeCone(p1,d1,radius1,radius2,height) 
197     ior = orb.object_to_string(anObj)
198     anObj._set_Name(ior)
199     return anObj
200
201 def MakeTorus(p1,d1,major_radius,minor_radius):
202     anObj = geom.MakeTorus(p1,d1,major_radius,minor_radius)
203     ior = orb.object_to_string(anObj)
204     anObj._set_Name(ior)
205     return anObj
206
207 # -----------------------------------------------------------------------------
208 # Create base objects
209 # -----------------------------------------------------------------------------
210
211 def MakeEdge(p1,p2):
212     anObj = geom.MakeEdge(p1,p2)
213     ior = orb.object_to_string(anObj)
214     anObj._set_Name(ior)
215     return anObj
216
217 def MakeWire(ListShape):
218     anObj = geom.MakeWire(ListShape)
219     ior = orb.object_to_string(anObj)
220     anObj._set_Name(ior)
221     return anObj
222
223 def MakeFace(aShapeWire,WantPlanarFace):
224     anObj = geom.MakeFace(aShapeWire,WantPlanarFace)
225     ior = orb.object_to_string(anObj)
226     anObj._set_Name(ior)
227     return anObj
228
229 def MakeFaces(ListShape,WantPlanarFace):
230     anObj = geom.MakeFaces(ListShape,WantPlanarFace)
231     ior = orb.object_to_string(anObj)
232     anObj._set_Name(ior)
233     return anObj
234
235 def MakeCompound(ListShape):
236     anObj = geom.MakeCompound(ListShape)
237     ior = orb.object_to_string(anObj)
238     anObj._set_Name(ior)
239     return anObj
240
241 # -----------------------------------------------------------------------------
242 # Create advanced objects
243 # -----------------------------------------------------------------------------
244
245 def MakeCopy(aShape):
246     anObj = geom.MakeCopy(aShape)       
247     ior = orb.object_to_string(anObj)
248     anObj._set_Name(ior)
249     return anObj
250
251 def MakePrism(baseShape,p1,p2):
252     anObj = geom.MakePrism(baseShape,p1,p2)
253     ior = orb.object_to_string(anObj)
254     anObj._set_Name(ior)
255     return anObj
256
257 def MakeRevolution(aShape,axis,angle):    
258     anObj = geom.MakeRevolution(aShape,axis,angle)
259     ior = orb.object_to_string(anObj)
260     anObj._set_Name(ior)
261     return anObj
262
263 def MakeFilling(aShape,mindeg,maxdeg,tol3d,tol2d,nbiter):
264     anObj = geom.MakeFilling(aShape,mindeg,maxdeg,tol3d,tol2d,nbiter)
265     ior = orb.object_to_string(anObj)
266     anObj._set_Name(ior)
267     return anObj
268
269 def MakePipe(pathShape,baseShape):
270     anObj = geom.MakePipe(pathShape,baseShape)
271     ior = orb.object_to_string(anObj)
272     anObj._set_Name(ior)
273     return anObj
274
275 def MakeSewing(ListShape,precision):
276     anObj = geom.MakeSewing(ListShape,precision)
277     ior = orb.object_to_string(anObj)
278     anObj._set_Name(ior)
279     return anObj
280
281 # -----------------------------------------------------------------------------
282 # Boolean (Common, Cut, Fuse, Section)
283 # -----------------------------------------------------------------------------
284
285 def MakeBoolean(shape1,shape2,operation):
286     anObj = geom.MakeBoolean(shape1,shape2,operation)
287     ior = orb.object_to_string(anObj)
288     anObj._set_Name(ior)
289     return anObj
290
291 # -----------------------------------------------------------------------------
292 # Transform objects
293 # -----------------------------------------------------------------------------
294
295 def MakeTranslation(aShape,x,y,z):
296     anObj = geom.MakeTranslation(aShape,x,y,z)  
297     ior = orb.object_to_string(anObj)
298     anObj._set_Name(ior)
299     return anObj
300
301 def MakeRotation(aShape,axis,angle):
302     anObj = geom.MakeRotation(aShape,axis,angle)
303     ior = orb.object_to_string(anObj)
304     anObj._set_Name(ior)
305     return anObj
306
307 def MakeScaleTransform(aShape,theCenterofScale,factor): 
308     anObj = geom.MakeScaleTransform(aShape,theCenterofScale,factor)
309     ior = orb.object_to_string(anObj)
310     anObj._set_Name(ior)
311     return anObj
312
313 def MakeMirrorByPlane(aShape,aPlane):
314     anObj = geom.MakeMirrorByPlane(aShape,aPlane)
315     ior = orb.object_to_string(anObj)
316     anObj._set_Name(ior)
317     return anObj
318
319 def OrientationChange(aShape):
320     anObj = geom.OrientationChange(aShape)
321     ior = orb.object_to_string(anObj)
322     anObj._set_Name(ior)
323     return anObj
324
325 def MakeFillet(aShape,radius,ShapeType,ListShape):
326     anObj = geom.MakeFillet(aShape,radius,ShapeType,ListShape)
327     ior = orb.object_to_string(anObj)
328     anObj._set_Name(ior)
329     return anObj
330
331 def MakeChamfer(aShape,d1,d2,ShapeType,ListShape):
332     anObj = geom.MakeChamfer(aShape,d1,d2,ShapeType,ListShape)
333     ior = orb.object_to_string(anObj)
334     anObj._set_Name(ior)
335     return anObj
336
337 # -----------------------------------------------------------------------------
338 # Decompose objects
339 # -----------------------------------------------------------------------------
340
341 def SubShape(aShape,type,ListOfId):
342     anObj = geom.SubShape(aShape,type, ListOfId)        
343     ior = orb.object_to_string(anObj)
344     anObj._set_Name(ior)
345     return anObj
346
347 def SubShapeAll(aShape,type):
348     ListObj = geom.SubShapeAll(aShape,type)
349     for anObj in ListObj :
350             ior = orb.object_to_string(anObj)
351             anObj._set_Name(ior)
352     return ListObj
353
354 def SubShapeSorted(aShape,type,ListOfId):
355     anObj = geom.SubShapeSorted(aShape,type, ListOfId)  
356     ior = orb.object_to_string(anObj)
357     anObj._set_Name(ior)
358     return anObj
359
360 def SubShapeAllSorted(aShape,type):
361     ListObj = geom.SubShapeAllSorted(aShape,type)
362     for anObj in ListObj :
363             ior = orb.object_to_string(anObj)
364             anObj._set_Name(ior)
365     return ListObj
366
367 # -- enumeration ShapeType as a dictionary --
368 ShapeType = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8}
369
370 def Partition(ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[], Limit=ShapeType["SHAPE"]):
371     anObj = geom.Partition(ListShapes, ListTools, ListKeepInside, ListRemoveInside, Limit);
372     ior = orb.object_to_string(anObj)
373     anObj._set_Name(ior)
374     return anObj
375
376 def SuppressFaces(aShape,ListOfId):
377     ListObj = geom.SuppressFaces(aShape,ListOfId)
378     for anObj in ListObj :
379             ior = orb.object_to_string(anObj)
380             anObj._set_Name(ior)
381     return ListObj
382
383 def SuppressHole(aShape,ListOfFace,ListOfWire,ListOfEndFace):
384     anObj = geom.SuppressHole(aShape,ListOfFace,ListOfWire,ListOfEndFace)
385     ior = orb.object_to_string(anObj)
386     anObj._set_Name(ior)
387     return anObj
388
389 # -----------------------------------------------------------------------------
390 # Patterns
391 # -----------------------------------------------------------------------------
392
393 def MakeMultiTranslation1D(aShape,aDir,aStep,aNbTimes):
394     anObj = geom.MakeMultiTranslation1D(aShape,aDir,aStep,aNbTimes)
395     ior = orb.object_to_string(anObj)
396     anObj._set_Name(ior)
397     return anObj
398
399 def MakeMultiTranslation2D(aShape,d1,step1,nbtimes1,d2,step2,nbtimes2):
400     anObj = geom.MakeMultiTranslation2D(aShape,d1,step1,nbtimes1,d2,step2,nbtimes2)
401     ior = orb.object_to_string(anObj)
402     anObj._set_Name(ior)
403     return anObj
404
405 def MakeMultiRotation1D(aShape,aDir,aPoint,aNbTimes):
406     anObj = geom.MakeMultiRotation1D(aShape,aDir,aPoint,aNbTimes)
407     ior = orb.object_to_string(anObj)
408     anObj._set_Name(ior)
409     return anObj
410
411 def MakeMultiRotation2D(aShape,aDir,aPoint,anAngle,nbtimes1,aStep,nbtimes2):
412     anObj = geom.MakeMultiRotation2D(aShape,aDir,aPoint,anAngle,nbtimes1,aStep,nbtimes2)
413     ior = orb.object_to_string(anObj)
414     anObj._set_Name(ior)
415     return anObj
416
417 # -----------------------------------------------------------------------------
418 # Import objects
419 # -----------------------------------------------------------------------------
420
421 def ImportBREP(filename):
422     anObj = geom.ImportBREP(filename)
423     ior = orb.object_to_string(anObj)
424     anObj._set_Name(ior)
425     return anObj
426
427 def ImportIGES(filename):
428     anObj = geom.ImportIGES(filename)
429     ior = orb.object_to_string(anObj)
430     anObj._set_Name(ior)
431     return anObj
432
433 def ImportSTEP(filename):
434     anObj = geom.ImportSTEP(filename)
435     ior = orb.object_to_string(anObj)
436     anObj._set_Name(ior)
437     return anObj
438
439 # -----------------------------------------------------------------------------
440 # Export objects
441 # -----------------------------------------------------------------------------
442 def ExportBREP(filename,aShape):
443     geom.ExportBREP(filename,aShape)
444
445 def ExportIGES(filename,aShape):
446     geom.ExportIGES(filename,aShape)
447
448 def ExportSTEP(filename,aShape):
449     geom.ExportSTEP(filename,aShape)
450
451 # -----------------------------------------------------------------------------
452 # Information objects
453 # -----------------------------------------------------------------------------
454
455 def MakeCDG(aShape):    
456     anObj = geom.MakeCDG(aShape)
457     ior = orb.object_to_string(anObj)
458     anObj._set_Name(ior)
459     return anObj
460
461 def Archimede(aShape,weight,WaterDensity,MeshingDeflection):    
462     anObj = geom.Archimede(aShape,weight,WaterDensity,MeshingDeflection)
463     ior = orb.object_to_string(anObj)
464     anObj._set_Name(ior)
465     return anObj
466
467 def CheckShape(aShape): 
468     Status = geom.CheckShape(aShape)
469     return Status