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