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