]> SALOME platform Git repositories - modules/geom.git/blob - src/GEOM_SWIG/batchmode_geompy.py
Salome HOME
4bb742a89b03e65578fd8d0ee18313e3508cd679
[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 MakePlane(p1,d1,trimsize): 
156     anObj = geom.MakePlane(p1,d1,trimsize)
157     ior = orb.object_to_string(anObj)
158     anObj._set_Name(ior)
159     return anObj
160
161 # -----------------------------------------------------------------------------
162 # Create Geometry 3D
163 # -----------------------------------------------------------------------------
164
165 def MakeBox(x1,y1,z1,x2,y2,z2):
166     anObj = geom.MakeBox(x1,y1,z1,x2,y2,z2)
167     ior = orb.object_to_string(anObj)
168     anObj._set_Name(ior)
169     return anObj
170
171 def MakeCylinder(p1,d1,radius,height):
172     anObj = geom.MakeCylinder(p1,d1,radius,height)
173     ior = orb.object_to_string(anObj)
174     anObj._set_Name(ior)
175     return anObj
176
177 def MakeSphere(x,y,z,radius):
178     anObj = geom.MakeSphere(x,y,z,radius)       
179     ior = orb.object_to_string(anObj)
180     anObj._set_Name(ior)
181     return anObj
182
183 def MakeCone(p1,d1,radius1,radius2,height):
184     anObj = geom.MakeCone(p1,d1,radius1,radius2,height) 
185     ior = orb.object_to_string(anObj)
186     anObj._set_Name(ior)
187     return anObj
188
189 def MakeTorus(p1,d1,major_radius,minor_radius):
190     anObj = geom.MakeTorus(p1,d1,major_radius,minor_radius)
191     ior = orb.object_to_string(anObj)
192     anObj._set_Name(ior)
193     return anObj
194
195 # -----------------------------------------------------------------------------
196 # Create base objects
197 # -----------------------------------------------------------------------------
198
199 def MakeEdge(p1,p2):
200     anObj = geom.MakeEdge(p1,p2)
201     ior = orb.object_to_string(anObj)
202     anObj._set_Name(ior)
203     return anObj
204
205 def MakeWire(ListShape):
206     anObj = geom.MakeWire(ListShape)
207     ior = orb.object_to_string(anObj)
208     anObj._set_Name(ior)
209     return anObj
210
211 def MakeFace(aShapeWire,WantPlanarFace):
212     anObj = geom.MakeFace(aShapeWire,WantPlanarFace)
213     ior = orb.object_to_string(anObj)
214     anObj._set_Name(ior)
215     return anObj
216
217 def MakeCompound(ListShape):
218     anObj = geom.MakeCompound(ListShape)
219     ior = orb.object_to_string(anObj)
220     anObj._set_Name(ior)
221     return anObj
222
223 # -----------------------------------------------------------------------------
224 # Create advanced objects
225 # -----------------------------------------------------------------------------
226
227 def MakeCopy(aShape):
228     anObj = geom.MakeCopy(aShape)       
229     ior = orb.object_to_string(anObj)
230     anObj._set_Name(ior)
231     return anObj
232
233 def MakePrism(baseShape,p1,p2):
234     anObj = geom.MakePrism(baseShape,p1,p2)
235     ior = orb.object_to_string(anObj)
236     anObj._set_Name(ior)
237     return anObj
238
239 def MakeRevolution(aShape,axis,angle):    
240     anObj = geom.MakeRevolution(aShape,axis,angle)
241     ior = orb.object_to_string(anObj)
242     anObj._set_Name(ior)
243     return anObj
244
245 def MakeFilling(aShape,mindeg,maxdeg,tol3d,tol2d,nbiter):
246     anObj = geom.MakeFilling(aShape,mindeg,maxdeg,tol3d,tol2d,nbiter)
247     ior = orb.object_to_string(anObj)
248     anObj._set_Name(ior)
249     return anObj
250
251 def MakePipe(pathShape,baseShape):
252     anObj = geom.MakePipe(pathShape,baseShape)
253     ior = orb.object_to_string(anObj)
254     anObj._set_Name(ior)
255     return anObj
256
257 def MakeSewing(ListShape,precision):
258     anObj = geom.MakeSewing(ListShape,precision)
259     ior = orb.object_to_string(anObj)
260     anObj._set_Name(ior)
261     return anObj
262
263 # -----------------------------------------------------------------------------
264 # Boolean (Common, Cut, Fuse, Section)
265 # -----------------------------------------------------------------------------
266
267 def MakeBoolean(shape1,shape2,operation):
268     anObj = geom.MakeBoolean(shape1,shape2,operation)
269     ior = orb.object_to_string(anObj)
270     anObj._set_Name(ior)
271     return anObj
272
273 # -----------------------------------------------------------------------------
274 # Transform objects
275 # -----------------------------------------------------------------------------
276
277 def MakeTranslation(aShape,x,y,z):
278     anObj = geom.MakeTranslation(aShape,x,y,z)  
279     ior = orb.object_to_string(anObj)
280     anObj._set_Name(ior)
281     return anObj
282
283 def MakeRotation(aShape,axis,angle):
284     anObj = geom.MakeRotation(aShape,axis,angle)
285     ior = orb.object_to_string(anObj)
286     anObj._set_Name(ior)
287     return anObj
288
289 def MakeScaleTransform(aShape,theCenterofScale,factor): 
290     anObj = geom.MakeScaleTransform(aShape,theCenterofScale,factor)
291     ior = orb.object_to_string(anObj)
292     anObj._set_Name(ior)
293     return anObj
294
295 def MakeMirrorByPlane(aShape,aPlane):
296     anObj = geom.MakeMirrorByPlane(aShape,aPlane)
297     ior = orb.object_to_string(anObj)
298     anObj._set_Name(ior)
299     return anObj
300
301 def OrientationChange(aShape):
302     anObj = geom.OrientationChange(aShape)
303     ior = orb.object_to_string(anObj)
304     anObj._set_Name(ior)
305     return anObj
306
307 def MakeFillet(aShape,radius,ShapeType,ListShape):
308     anObj = geom.MakeFillet(aShape,radius,ShapeType,ListShape)
309     ior = orb.object_to_string(anObj)
310     anObj._set_Name(ior)
311     return anObj
312
313 def MakeChamfer(aShape,d1,d2,ShapeType,ListShape):
314     anObj = geom.MakeChamfer(aShape,d1,d2,ShapeType,ListShape)
315     ior = orb.object_to_string(anObj)
316     anObj._set_Name(ior)
317     return anObj
318
319 # -----------------------------------------------------------------------------
320 # Decompose objects
321 # -----------------------------------------------------------------------------
322
323 def SubShape(aShape,type,ListOfId):
324     anObj = geom.SubShape(aShape,type, ListOfId)        
325     ior = orb.object_to_string(anObj)
326     anObj._set_Name(ior)
327     return anObj
328
329 def SubShapeAll(aShape,type):
330     ListObj = geom.SubShapeAll(aShape,type)
331     for anObj in ListObj :
332             ior = orb.object_to_string(anObj)
333             anObj._set_Name(ior)
334     return ListObj
335
336 def SubShapeSorted(aShape,type,ListOfId):
337     anObj = geom.SubShapeSorted(aShape,type, ListOfId)  
338     ior = orb.object_to_string(anObj)
339     anObj._set_Name(ior)
340     return anObj
341
342 def SubShapeAllSorted(aShape,type):
343     ListObj = geom.SubShapeAllSorted(aShape,type)
344     for anObj in ListObj :
345             ior = orb.object_to_string(anObj)
346             anObj._set_Name(ior)
347     return ListObj
348
349 # -- enumeration ShapeType as a dictionary --
350 ShapeType = {"COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8}
351
352 def Partition(ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[], Limit=ShapeType["SHAPE"]):
353     anObj = geom.Partition(ListShapes, ListTools, ListKeepInside, ListRemoveInside, Limit);
354     ior = orb.object_to_string(anObj)
355     anObj._set_Name(ior)
356     return anObj
357
358 def SuppressFaces(aShape,ListOfId):
359     anObj = geom.SuppressFaces(aShape,ListOfId)
360     ior = orb.object_to_string(anObj)
361     anObj._set_Name(ior)
362     return anObj
363
364 def SuppressHole(aShape,ListOfFace,ListOfWire,ListOfEndFace):
365     anObj = geom.SuppressHole(aShape,ListOfFace,ListOfWire,ListOfEndFace)
366     ior = orb.object_to_string(anObj)
367     anObj._set_Name(ior)
368     return anObj
369
370 # -----------------------------------------------------------------------------
371 # Patterns
372 # -----------------------------------------------------------------------------
373
374 def MakeMultiTranslation1D(aShape,aDir,aStep,aNbTimes):
375     anObj = geom.MakeMultiTranslation1D(aShape,aDir,aStep,aNbTimes)
376     ior = orb.object_to_string(anObj)
377     anObj._set_Name(ior)
378     return anObj
379
380 def MakeMultiTranslation2D(aShape,d1,step1,nbtimes1,d2,step2,nbtimes2):
381     anObj = geom.MakeMultiTranslation2D(aShape,d1,step1,nbtimes1,d2,step2,nbtimes2)
382     ior = orb.object_to_string(anObj)
383     anObj._set_Name(ior)
384     return anObj
385
386 def MakeMultiRotation1D(aShape,aDir,aPoint,aNbTimes):
387     anObj = geom.MakeMultiRotation1D(aShape,aDir,aPoint,aNbTimes)
388     ior = orb.object_to_string(anObj)
389     anObj._set_Name(ior)
390     return anObj
391
392 def MakeMultiRotation2D(aShape,aDir,aPoint,anAngle,nbtimes1,aStep,nbtimes2):
393     anObj = geom.MakeMultiRotation2D(aShape,aDir,aPoint,anAngle,nbtimes1,aStep,nbtimes2)
394     ior = orb.object_to_string(anObj)
395     anObj._set_Name(ior)
396     return anObj
397
398 # -----------------------------------------------------------------------------
399 # Import objects
400 # -----------------------------------------------------------------------------
401
402 def ImportBREP(filename):
403     anObj = geom.ImportBREP(filename)
404     ior = orb.object_to_string(anObj)
405     anObj._set_Name(ior)
406     return anObj
407
408 def ImportIGES(filename):
409     anObj = geom.ImportIGES(filename)
410     ior = orb.object_to_string(anObj)
411     anObj._set_Name(ior)
412     return anObj
413
414 def ImportSTEP(filename):
415     anObj = geom.ImportSTEP(filename)
416     ior = orb.object_to_string(anObj)
417     anObj._set_Name(ior)
418     return anObj
419
420 # -----------------------------------------------------------------------------
421 # Export objects
422 # -----------------------------------------------------------------------------
423 def ExportBREP(filename,aShape):
424     geom.ExportBREP(filename,aShape)
425
426 def ExportIGES(filename,aShape):
427     geom.ExportIGES(filename,aShape)
428
429 def ExportSTEP(filename,aShape):
430     geom.ExportSTEP(filename,aShape)
431
432 # -----------------------------------------------------------------------------
433 # Information objects
434 # -----------------------------------------------------------------------------
435
436 def MakeCDG(aShape):    
437     anObj = geom.MakeCDG(aShape)
438     ior = orb.object_to_string(anObj)
439     anObj._set_Name(ior)
440     return anObj
441
442 def Archimede(aShape,weight,WaterDensity,MeshingDeflection):    
443     anObj = geom.Archimede(aShape,weight,WaterDensity,MeshingDeflection)
444     ior = orb.object_to_string(anObj)
445     anObj._set_Name(ior)
446     return anObj
447
448 def CheckShape(aShape): 
449     Status = geom.CheckShape(aShape)
450     return Status