Salome HOME
Merge from V6_main 13/12/2012
[modules/geom.git] / src / GEOM_SWIG / GEOM_TestAll.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
3 #
4 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
5 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 #
7 # This library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2.1 of the License.
11 #
12 # This library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 # Lesser General Public License for more details.
16 #
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with this library; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
20 #
21 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22
23 #  GEOM GEOM_SWIG : binding of C++ omplementaion with Python
24 #  File   : GEOM_usinggeom.py
25 #  Author : Damien COQUERET, Open CASCADE
26 #  Module : GEOM
27
28 # ! Please, if you edit this example file, update also
29 # ! GEOM_SRC/doc/salome/gui/GEOM/input/tui_test_all.doc
30 # ! as some sequences of symbols from this example are used during
31 # ! documentation generation to identify certain places of this file
32
33 def TestAll (geompy, math):
34   import GEOM
35   
36   #Create base Variables
37   nbtimes1  = 5      #Short
38   nbtimes2  = 5
39   mindeg = 2
40   maxdeg = 5
41   nbiter = 5
42   WantPlanarFace = 1 #True
43
44   radius  = 10.  #Double
45   radius1 = 100.
46   radius2 = 200.
47   height  = 200.
48   d1      = 10.
49   d2      = 10.
50   step1   = 250.
51   step2   = 250.
52   angle   = 45.
53   angle1  = angle * math.pi / 180
54   angle2  = 2 * angle1
55   factor  = 2.
56   tol3d   = 0.0001
57   tol2d   = 0.0001
58   weight  = 1000000.
59   waterdensity = 1.
60   meshingdeflection = 0.01
61   trimsize  = 1000.
62   precision = 0.00001
63
64   #Create base points
65   p0   = geompy.MakeVertex(0.  , 0.  , 0.  ) #(3 Doubles)->GEOM_Object
66   px   = geompy.MakeVertex(100., 0.  , 0.  )
67   py   = geompy.MakeVertex(0.  , 100., 0.  )
68   pz   = geompy.MakeVertex(0.  , 0.  , 100.)
69   pxyz = geompy.MakeVertex(100., 100., 100.)
70
71   p200 = geompy.MakeVertexWithRef(pxyz, 100., 100., 100.) #(GEOM_Object, 3 Doubles)->GEOM_Object
72
73   #Create base directions
74   vx   = geompy.MakeVector(p0, px) #(GEOM_Object, GEOM_Object)->GEOM_Object
75   vy   = geompy.MakeVector(p0, py)
76   vz   = geompy.MakeVector(p0, pz)
77   vxy  = geompy.MakeVector(px, py)
78
79   vxyz = geompy.MakeVectorDXDYDZ(100., 100., 100.) #(3 Doubles)->GEOM_Object
80
81   #Create local coordinate systems
82   cs1 = geompy.MakeMarker(50,50,50, 1,0,0, 0,1,0) #(9 Doubles)->GEOM_Object
83   cs2 = geompy.MakeMarker(70,80,10, 1,0,1, 1,1,0) #(9 Doubles)->GEOM_Object
84   cs3 = geompy.MakeMarkerPntTwoVec(pz, vxy, vz)   #(3 GEOM_Object)->GEOM_Object
85
86   #Create base geometry 2D
87   Line   = geompy.MakeLineTwoPnt(p0, pxyz)                  #(2 GEOM_Object)->GEOM_Object
88   Line1  = geompy.MakeLine(pz, vxy)                         #(2 GEOM_Object)->GEOM_Object
89   Line2  = geompy.MakeLineTwoPnt(pxyz, pz)                  #(2 GEOM_Object)->GEOM_Object
90   Plane  = geompy.MakePlane(pz, vxyz, trimsize)             #(2 GEOM_Object, Double)->GEOM_Object
91   Plane1 = geompy.MakePlaneThreePnt(px, pz, p200, trimsize) #(4 Doubles)->GEOM_Object
92   Plane2 = geompy.MakePlane2Vec(vx, vz, trimsize)           #(2 GEOM_Object, Double)->GEOM_Object
93   Plane3 = geompy.MakePlaneLCS(cs1, trimsize, 3)            #(1 GEOM_Object, 2 Double)->GEOM_Object
94
95   Arc      = geompy.MakeArc(py, pz, px)                   #(3 GEOM_Object)->GEOM_Object
96   Arc2     = geompy.MakeArcCenter(py, pz, px,0)           #(3 GEOM_Object,Boolean)->GEOM_Object
97   Arc3     = geompy.MakeArcOfEllipse(p0, px, pz)          #(3 GEOM_Object,Boolean)->GEOM_Object
98   Circle   = geompy.MakeCircle(p0, vz, radius1)           #(2 GEOM_Object, Double)->GEOM_Object
99   Circle1  = geompy.MakeCircleThreePnt(p0, pxyz, px)      #(3 GEOM_Object)->GEOM_Object
100   Circle2  = geompy.MakeCircleCenter2Pnt(p0, pxyz, py)    #(3 GEOM_Object)->GEOM_Object
101   Ellipse  = geompy.MakeEllipse(p0, vy, radius2, radius1) #(2 GEOM_Object, 2 Doubles)->GEOM_Object
102   Polyline = geompy.MakePolyline([p0, pz, py, p200])      #(List of GEOM_Object)->GEOM_Object
103   Bezier   = geompy.MakeBezier([p0, pz, p200, px])        #(List of GEOM_Object)->GEOM_Object
104   Interpol = geompy.MakeInterpol([px, py, p200, pxyz], True) #(List of GEOM_Object,Boolean)->GEOM_Object
105   Sketcher = geompy.MakeSketcher("Sketcher:F -100 -100:TT 250 -100:R 0:C 100 150:R 0:L 300:WW",
106                                  [100,0,0, 1,1,1, -1,1,0]) #(String, List of Doubles)->GEOM_Object
107
108   #Create 3D wires with 3D Sketcher
109   sk = geompy.Sketcher3D()
110   sk.addPointsAbsolute(0,0,0, 70,0,0)
111   sk.addPointsRelative(0, 0, 130)
112   sk.addPointRadiusAnglesRelative(100, 50, 0,"OXY")
113   sk.addPointRadiusAnglesRelative(130, 30, 80, "OXZ")
114   sk.addPointRadiusAnglesAbsolute(500, 60, 30,"OXY")
115   sk.addPointRadiusAngleHRelative(100, 50, 0,"OXY")
116   sk.addPointRadiusAngleHRelative(130, 30, 40, "OXZ")
117   sk.addPointRadiusAngleHAbsolute(800, 60, 30,"OXY")
118   sk.close()
119   Sketcher3d_1 = sk.wire()
120
121   Sketcher3d_2 = geompy.Make3DSketcher([0,0,0, 50,50,50, 0,50,50, 10,0,0])
122
123   #Create local coordinate system from shape
124   cs4 = geompy.MakeMarkerFromShape(Plane)
125
126   #Test point on curve creation
127   p_on_arc = geompy.MakeVertexOnCurve(Arc, 0.25) #(GEOM_Object, Double)->GEOM_Object
128   p_on_arc2 = geompy.MakeVertexOnCurveByCoord(Arc, 100, -10, 10 ) #(GEOM_Object, Double)->GEOM_Object
129   p_on_arc3 = geompy.MakeVertexOnCurveByLength(Arc, 50, py) #(GEOM_Object, Double, GEOM_Object)->GEOM_Object
130
131   #Test point on lines intersection
132   p_on_l1l2 = geompy.MakeVertexOnLinesIntersection(Line1, Line2) #(2 GEOM_Object)->GEOM_Object
133
134   #Test tangent on curve creation
135   tan_on_arc = geompy.MakeTangentOnCurve(Arc, 0.7) #(GEOM_Object, Double)->GEOM_Object
136   
137   #Test tangent on face creation
138   tan_vertex_1 = geompy.MakeVertex(0, 0, 0)
139   tan_vertex_2 = geompy.MakeVertex(0, 90, 30)
140   tan_vertex_3 = geompy.MakeVertex(100, 90, 0)
141   tan_vertex_4 = geompy.MakeVertex(-100, 90, 0)
142   tan_curve = geompy.MakeInterpol([tan_vertex_4, tan_vertex_2, tan_vertex_3, tan_vertex_1], False)
143   tan_extrusion = geompy.MakePrismDXDYDZ(tan_curve, 0, 30, -60)
144   tan_on_face = geompy.MakeTangentPlaneOnFace(tan_extrusion, 0.7, 0.5, 150)
145
146   #Create base geometry 3D
147   Box      = geompy.MakeBoxTwoPnt(p0, p200)                   #(2 GEOM_Object)->GEOM_Object
148   Box1     = geompy.MakeBoxDXDYDZ(10, 20, 30)                 #(3 Doubles)->GEOM_Object
149   Box2     = geompy.MakeBox(10,20,30, 15,25,35)               #(6 Doubles)->GEOM_Object
150   Cylinder = geompy.MakeCylinder(p0, vz, radius1, height)     #(2 GEOM_Object, 2 Doubles)->GEOM_Object
151   Cyl1     = geompy.MakeCylinderRH(radius2, height)           #(2 Doubles)->GEOM_Object
152   Sphere   = geompy.MakeSpherePntR(p0, radius1)               #(GEOM_Object, Double)->GEOM_Object
153   Sphere1  = geompy.MakeSphereR(radius)                       #(Double)->GEOM_Object
154   Sphere2  = geompy.MakeSphere(50, 70, 30, radius)            #(4 Doubles)->GEOM_Object
155   Cone     = geompy.MakeCone(p0, vz, radius2, radius, height) #(2 GEOM_Object, 3 Doubles)->GEOM_Object
156   Cone1    = geompy.MakeConeR1R2H(radius1, radius, height)    #(3 Doubles)->GEOM_Object
157   Torus    = geompy.MakeTorus(p0, vz, radius2, radius)        #(2 GEOM_Object, 2 Doubles)->GEOM_Object
158   Torus1   = geompy.MakeTorusRR(radius2, radius1)             #(2 Doubles)->GEOM_Object
159
160   #Boolean (Common, Cut, Fuse, Section)
161   Common  = geompy.MakeBoolean(Box, Sphere, 1) #(2 GEOM_Object, Short)->GEOM_Object
162   Cut     = geompy.MakeBoolean(Box, Sphere, 2)
163   Fuse    = geompy.MakeBoolean(Box, Sphere, 3)
164   Section = geompy.MakeBoolean(Box, Sphere, 4)
165
166   #Create base objects
167   Edge     = geompy.MakeEdge(p0, pxyz)               #(2 GEOM_Object)->GEOM_Object
168   Edge1    = geompy.MakeEdgeOnCurveByLength(Arc, 50, px) #(GEOM_Object, Double, GEOM_Object)->GEOM_Object
169   Wire     = geompy.MakeWire([vxy, Arc])             #(List Of GEOM_Object)->GEOM_Object
170   Face     = geompy.MakeFace(Wire, WantPlanarFace)   #(GEOM_Object, Boolean)->GEOM_Object
171   Face1    = geompy.MakeFaceWires([Wire, Sketcher],
172                                   WantPlanarFace)    #(List of GEOM_Object, Boolean)->GEOM_Object
173   Face2    = geompy.MakeFace(Sketcher, WantPlanarFace)
174   Face3    = geompy.MakeFaceHW (100., 200., 1)       #(2 Doubles, 1 Int)->GEOM_Object
175   Face4    = geompy.MakeFaceObjHW (vz, 200., 100.)   #(1 GEOM_Object, 2 Doubles)->GEOM_Object
176   Disk     = geompy.MakeDiskPntVecR (p0, vz, radius) #(2 GEOM_Object, 1 Double)->GEOM_Object
177   Disk2    = geompy.MakeDiskThreePnt(p0, p200, pz)   #(3 GEOM_Object)->GEOM_Object
178   Disk3    = geompy.MakeDiskR(100., 1)               #(1 Doubles, 1 Int)->GEOM_Object
179   Shell    = geompy.MakeShell([Face, Face1])         #(List of GEOM_Object)->GEOM_Object
180
181   Prism1   = geompy.MakePrism(Face2, p0, pxyz)       #(3 GEOM_Object)->GEOM_Object
182   prism1_faces = geompy.SubShapeAllSortedCentres(Prism1, geompy.ShapeType["FACE"])
183   Shell1   = geompy.MakeShell([prism1_faces[0], prism1_faces[1],
184                                prism1_faces[3], prism1_faces[4],
185                                prism1_faces[5], prism1_faces[2]])
186   Solid    = geompy.MakeSolid([Shell1])              #(List of GEOM_Object)->GEOM_Object
187
188   ShapeListCompound = []
189   i = 0
190   while i <= 3 :
191         S = geompy.MakeTranslation(Arc, i * 100., i * 100., i * 100.)
192         ShapeListCompound.append(S)
193         i = i + 1
194   Compound = geompy.MakeCompound(ShapeListCompound)  #(List of GEOM_Object)->GEOM_Object
195
196   #Test point on surface creation
197   p_on_face = geompy.MakeVertexOnSurface(Face, 0.1, 0.8) #(GEOM_Object, Double, Double)->GEOM_Object
198   p_on_face2 = geompy.MakeVertexOnSurfaceByCoord(Face, 0., 0., 0.) #(GEOM_Object, Double, Double, Double)->GEOM_Object
199   p_on_face3 = geompy.MakeVertexInsideFace(Face) #(GEOM_Object)->GEOM_Object
200
201   # Test plane from existing face creation
202   Plane2 = geompy.MakePlaneFace(Face, trimsize)      #(GEOM_Object, Double)->GEOM_Object
203
204   #ShapeList for Sewing
205   S = geompy.MakeRotation(Face, vxy, angle1)
206
207   #Test Line on Faces Intersection
208   Line3 = geompy.MakeLineTwoFaces(prism1_faces[0], prism1_faces[1]) #(2 GEOM_Object)->GEOM_Object
209
210   #Create advanced objects
211   Copy             = geompy.MakeCopy(Box)                      #(GEOM_Object)->GEOM_Object
212   Prism            = geompy.MakePrismVecH(Face, vz, 100.0)     #(2 GEOM_Object, Double)->GEOM_Object
213   Prism2Ways       = geompy.MakePrismVecH2Ways(Face, vz, 10.0) #(2 GEOM_Object, Double)->GEOM_Object
214   PrismTwoPnt      = geompy.MakePrism(Face2, p0, pxyz)         #(3 GEOM_Object)->GEOM_Object
215   PrismTwoPnt2Ways = geompy.MakePrism2Ways(Face2, p0, pxyz)    #(3 GEOM_Object)->GEOM_Object
216   PrismDXDYDZ      = geompy.MakePrismDXDYDZ(Face2, 10, 20, 100)#(2 GEOM_Object, Double)->GEOM_Object
217   PrismDXDYDZ2Ways = geompy.MakePrismDXDYDZ2Ways(Face, 30, -20, 200)#(2 GEOM_Object, Double)->GEOM_Object
218   Revolution       = geompy.MakeRevolution(Face, vz, angle2)   #
219   Revolution2Ways  = geompy.MakeRevolution(Face, vz, angle1)   #
220   Filling          = geompy.MakeFilling(Compound, mindeg, maxdeg,
221                                         tol2d, tol3d, nbiter)  #(GEOM_Object, 4 Doubles, Short)->GEOM_Object
222   Pipe             = geompy.MakePipe(Wire, Edge)               #(2 GEOM_Object)->GEOM_Object
223   Sewing           = geompy.MakeSewing([Face, S], precision)   #(List Of GEOM_Object, Double)->GEOM_Object
224
225   #Transform objects
226   Translation = geompy.MakeTranslationTwoPoints(Box, px, pz)    #(3 GEOM_Object)->GEOM_Object
227   TranslVect  = geompy.MakeTranslationVector(Box, vxyz)         #(2 GEOM_Object)->GEOM_Object
228   TranslVectD = geompy.MakeTranslationVectorDistance(Box, vxyz, 50.0)   #(2 GEOM_Object)->GEOM_Object  
229   Rotation    = geompy.MakeRotation(Box, vz, angle1)            #(2 GEOM_Object, Double)->GEOM_Object
230   RotatPnt    = geompy.MakeRotationThreePoints(Box, px, py, pz) #(4 GEOM_Object)->GEOM_Object
231
232   #Scale by factor relatively given point
233   Scale1 = geompy.MakeScaleTransform(Box, pxyz, factor)      #(2 GEOM_Object, Double)->GEOM_Object
234   #Scale by factor relatively the origin of global CS
235   Scale2 = geompy.MakeScaleTransform(Box, None, factor)      #
236   #Scale along axes of global CS by different factors. Scale relatively given point
237   Scale3 = geompy.MakeScaleAlongAxes(Box, pxyz, 1.5, 0.5, 3) #(2 GEOM_Object, 3 Doubles)->GEOM_Object
238   #Scale along axes of global CS by different factors. Scale relatively the origin of global CS
239   Scale4 = geompy.MakeScaleAlongAxes(Box, None, 1.5, 0.5, 3) #
240
241   Mirror      = geompy.MakeMirrorByPlane(Box, Plane) #(2 GEOM_Object)->GEOM_Object
242   MirrorAxis  = geompy.MakeMirrorByAxis(Box, Line1)  #
243   MirrorPnt   = geompy.MakeMirrorByPoint(Box, p200)  #
244   Position    = geompy.MakePosition(Box, cs1, cs2)   #(3 GEOM_Object)->GEOM_Object
245   Position2   = geompy.PositionAlongPath(Box, Arc, 0.5, 1, 0)  #(2 GEOM_Object, 1 Double, 2 Bool)->GEOM_Object
246   Offset      = geompy.MakeOffset(Box, 10.)          #(GEOM_Object, Double)->GEOM_Object
247   Orientation = geompy.ChangeOrientation(Box)
248
249   #IDList for Fillet/Chamfer
250   prism_edges = geompy.ExtractShapes(Prism, geompy.ShapeType["EDGE"], True)
251
252   for anEdge in prism_edges:
253     eid = geompy.GetSubShapeID(Prism, anEdge)
254     sse = geompy.GetSubShape(Prism, [eid])
255
256     sse_id = geompy.GetSubShapeID(Prism, sse)
257     if sse_id != eid:
258       print "Error: GetSubShape() or GetSubShapeID() has failed!"
259
260   IDlist_e = []
261   IDlist_e.append(geompy.GetSubShapeID(Prism, prism_edges[0]))
262   IDlist_e.append(geompy.GetSubShapeID(Prism, prism_edges[1]))
263   IDlist_e.append(geompy.GetSubShapeID(Prism, prism_edges[2]))
264
265   prism_faces = geompy.ExtractShapes(Prism, geompy.ShapeType["FACE"], True)
266
267   f_ind_1 = geompy.GetSubShapeID(Prism, prism_faces[0])
268   f_ind_2 = geompy.GetSubShapeID(Prism, prism_faces[1])
269
270   IDlist_f = [f_ind_1, f_ind_2]
271   
272   #Local operations
273   Fillet2d = geompy.MakeFillet2D(Face3, radius, [4, 7, 9]) #(GEOM_Object, Double, ListOfLong)->GEOM_Object
274   Fillet   = geompy.MakeFillet (Prism, radius, geompy.ShapeType["EDGE"],
275                                 IDlist_e) #(GEOM_Object, Double, Short, ListOfLong)->GEOM_Object
276   Fillet2  = geompy.MakeFilletR1R2 (Prism, 7., 13., geompy.ShapeType["EDGE"],
277                                     IDlist_e) #(GEOM_Object, Double, Double, Short, ListOfLong)->GEOM_Object
278   Chamfer  = geompy.MakeChamferEdge(Prism, d1, d2,
279                                     f_ind_1, f_ind_2) #(GEOM_Object, 2 Doubles, 2 Long)->GEOM_Object
280   Chamfer2 = geompy.MakeChamferFaces(Prism, d1, d2,
281                                      IDlist_f) #(GEOM_Object, 2 Doubles, ListOfLong)->GEOM_Object
282   Chamfer3 = geompy.MakeChamferEdges(Prism, d1, d2,
283                                      IDlist_e) #(GEOM_Object, 2 Doubles, ListOfLong)->GEOM_Object
284   Chamfer4 = geompy.MakeChamferFacesAD(Prism, d1, 20. * math.pi / 180.,
285                                        IDlist_f) #(GEOM_Object, 2 Doubles, ListOfLong)->GEOM_Object
286   #End of Local operations
287
288   #Create Patterns
289   MultiTrans1D = geompy.MakeMultiTranslation1D(Fillet, vz, step1, nbtimes1)
290   MultiTrans2D = geompy.MakeMultiTranslation2D(Fillet, vz, step1, nbtimes1, vy, step2, nbtimes2)
291   #!!!!Angle In Degree!!!!
292   MultiRot1D   = geompy.MultiRotate1D(Chamfer, vx, nbtimes1)
293   MultiRot2D   = geompy.MultiRotate2D(Chamfer, vx, angle, nbtimes1, step1, nbtimes2)
294
295   #Create Informations objects
296   CDG        = geompy.MakeCDG(Prism)               #(GEOM_Object)->GEOM_Object
297   Archimede  = geompy.Archimede(Box, weight, waterdensity,
298                                 meshingdeflection) #(GEOM_Object, 3 Doubles)->GEOM_Object
299   mindist = geompy.MinDistanceComponents(TranslVect, Mirror) #(2 GEOM_Object)->4 Doubles
300   print "Minumal distance between TranslVect and Mirror is", mindist[0],
301   print "by components:", mindist[1], ",", mindist[2], ",", mindist[3]
302   CheckShape = geompy.CheckShape(Prism)            #(GEOM_Object)->Boolean
303   print "CheckShape(Prism) = ", CheckShape
304
305   #Partition objects
306   Partition  = geompy.MakePartition([Box], [Plane]) #(2 Lists Of GEOM_Object)->GEOM_Object
307   Partition1 = geompy.MakeHalfPartition(Box, Plane) #(2 GEOM_Object)->GEOM_Object
308
309   #Add In Study
310   id_p0   = geompy.addToStudy(p0,   "Vertex 0")
311   id_px   = geompy.addToStudy(px,   "Vertex X")
312   id_py   = geompy.addToStudy(py,   "Vertex Y")
313   id_pz   = geompy.addToStudy(pz,   "Vertex Z")
314   id_pxyz = geompy.addToStudy(pxyz, "Vertex XYZ")
315   id_p200 = geompy.addToStudy(p200, "Vertex 200")
316
317   id_vx   = geompy.addToStudy(vx,   "Vector X")
318   id_vy   = geompy.addToStudy(vy,   "Vector Y")
319   id_vz   = geompy.addToStudy(vz,   "Vector Z")
320   id_vxy  = geompy.addToStudy(vxy,  "Vector XY")
321   id_vxyz = geompy.addToStudy(vxyz, "Vector XYZ")
322
323   id_cs1 = geompy.addToStudy(cs1, "CS 50,50,50, 1,0,0, 0,1,0")
324   id_cs2 = geompy.addToStudy(cs2, "CS 70,80,10, 1,0,1, 1,1,0")
325   id_cs3 = geompy.addToStudy(cs3, "CS: pz, vxy, vz")
326   id_cs4 = geompy.addToStudy(cs4, "CS: Plane")
327
328   id_Line   = geompy.addToStudy(Line,   "Line")
329   id_Line1  = geompy.addToStudy(Line1,  "Line by point and vector")
330   id_Line3  = geompy.addToStudy(Line3,  "Line on Two Faces Intersection")
331   id_Plane  = geompy.addToStudy(Plane,  "Plane")
332   id_Plane1 = geompy.addToStudy(Plane1,  "Plane by 3 points")
333   id_Plane2 = geompy.addToStudy(Plane2,  "Plane by 2 vectors")
334   id_Plane3 = geompy.addToStudy(Plane3,  "Plane by LCS")
335
336   id_Arc      = geompy.addToStudy(Arc,      "Arc")
337   id_Arc2     = geompy.addToStudy(Arc2,     "Arc2")
338   id_Arc3     = geompy.addToStudy(Arc3,     "Arc3")
339   id_Circle   = geompy.addToStudy(Circle,   "Circle")
340   id_Circle1  = geompy.addToStudy(Circle1,  "Circle by 3 points")
341   id_Circle2  = geompy.addToStudy(Circle2,  "Circle by center and 2 points")
342   id_Ellipse  = geompy.addToStudy(Ellipse,  "Ellipse")
343   id_Polyline = geompy.addToStudy(Polyline, "Polyline")
344   id_Bezier   = geompy.addToStudy(Bezier,   "Bezier")
345   id_Interpol = geompy.addToStudy(Interpol, "Interpol")
346   id_Sketcher = geompy.addToStudy(Sketcher, "Sketcher")
347
348   id_Sketcher3d_1 = geompy.addToStudy(Sketcher3d_1, "Sketcher 3D by interface")
349   id_Sketcher3d_2 = geompy.addToStudy(Sketcher3d_2, "Sketcher 3D by list")
350
351   id_p_on_arc  = geompy.addToStudy(p_on_arc,  "Vertex on Arc (0.25)")
352   id_p_on_arc2 = geompy.addToStudy(p_on_arc2, "Vertex on Arc at(100, -10, 10)" )
353   id_p_on_arc3 = geompy.addToStudy(p_on_arc3, "Vertex on Arc length 50 from Vertex X" )
354   
355   id_p_on_l1l2 = geompy.addToStudy(p_on_l1l2, "Vertex on Lines Intersection")
356
357   id_tan_on_arc  = geompy.addToStudy(tan_on_arc, "Tangent on Arc (0.7)")
358   id_tan_on_face = geompy.addToStudy(tan_on_face, "Tangent on Face")
359
360   id_Box      = geompy.addToStudy(Box,      "Box")
361   id_Box1     = geompy.addToStudy(Box1,     "Box 10x20x30")
362   id_Box2     = geompy.addToStudy(Box2,     "Box (10,20,30)-(15,25,35)")
363   id_Cylinder = geompy.addToStudy(Cylinder, "Cylinder")
364   id_Cyl1     = geompy.addToStudy(Cyl1,     "Cylinder RH")
365   id_Sphere   = geompy.addToStudy(Sphere,   "Sphere Pnt R")
366   id_Sphere1  = geompy.addToStudy(Sphere1,  "Sphere R")
367   id_Sphere2  = geompy.addToStudy(Sphere2,  "Sphere")
368   id_Cone     = geompy.addToStudy(Cone,     "Cone")
369   id_Cone1    = geompy.addToStudy(Cone1,    "Cone R1R2H")
370   id_Torus    = geompy.addToStudy(Torus,    "Torus")
371   id_Torus1   = geompy.addToStudy(Torus1,   "Torus RR")
372
373   id_Common  = geompy.addToStudy(Common,  "Common")
374   id_Cut     = geompy.addToStudy(Cut,     "Cut")
375   id_Fuse    = geompy.addToStudy(Fuse,    "Fuse")
376   id_Section = geompy.addToStudy(Section, "Section")
377
378   id_Edge     = geompy.addToStudy(Edge,     "Edge")
379   id_Edge1    = geompy.addToStudy(Edge1,    "Edge on Arc length 50 from Vertex Y")
380   id_Wire     = geompy.addToStudy(Wire,     "Wire")
381   id_Face     = geompy.addToStudy(Face,     "Face")
382   id_Face1    = geompy.addToStudy(Face1,    "Face from two wires")
383   id_Face2    = geompy.addToStudy(Face2,    "Face from Sketcher")
384   id_Face3    = geompy.addToStudy(Face3,    "Face Height Width")
385   id_Face4    = geompy.addToStudy(Face4,    "Face Plane_HW")
386   id_Disk     = geompy.addToStudy(Disk,     "Disk PntVecR")
387   id_Disk2    = geompy.addToStudy(Disk2,    "Disk Three Points")
388   id_Disk3    = geompy.addToStudy(Disk3,    "Disk OXY Radius")
389   id_Shell    = geompy.addToStudy(Shell,    "Shell")
390
391   id_p_on_face = geompy.addToStudy(p_on_face, "Vertex on Face (0.1, 0.8)")
392   id_p_on_face2 = geompy.addToStudy(p_on_face2, "Vertex on Face at(0., 0., 0.)")
393   id_p_on_face3 = geompy.addToStudy(p_on_face3, "Vertex inside Face")
394
395   id_Prism1   = geompy.addToStudy(Prism1,     "Prism by Two Pnt")
396   id_Shell1   = geompy.addToStudy(Shell1,   "Shell from Prism1 faces")
397   id_Solid    = geompy.addToStudy(Solid,    "Solid")
398   id_Compound = geompy.addToStudy(Compound, "Compound")
399
400   id_Plane2   = geompy.addToStudy(Plane2,   "Plane on Face")
401
402   id_Copy       = geompy.addToStudy(Copy,       "Copy")
403   id_Prism            = geompy.addToStudy(Prism,            "Prism")
404   id_Prism2Ways       = geompy.addToStudy(Prism2Ways,       "Prism2Ways")
405   id_PrismTwoPnt      = geompy.addToStudy(PrismTwoPnt,      "PrismTwoPnt")
406   id_PrismTwoPnt2Ways = geompy.addToStudy(PrismTwoPnt2Ways, "PrismTwoPnt2Ways")
407   id_PrismDXDYDZ      = geompy.addToStudy(PrismDXDYDZ,      "PrismDXDYDZ")
408   id_PrismDXDYDZ2Ways = geompy.addToStudy(PrismDXDYDZ2Ways, "PrismDXDYDZ2Ways")
409   id_Revolution       = geompy.addToStudy(Revolution,       "Revolution")
410   id_Revolution2Ways  = geompy.addToStudy(Revolution2Ways,  "Revolution2Ways")
411   id_Filling    = geompy.addToStudy(Filling,    "Filling")
412   id_Pipe       = geompy.addToStudy(Pipe,       "Pipe")
413   id_Sewing     = geompy.addToStudy(Sewing,     "Sewing")
414
415   import salome_version
416   if int(salome_version.getXVersion(), 16) >= int('0x060600', 16):
417     [Face5, Face6] = geompy.SubShapes(Box, [31, 33])
418     [b1_e1, b1_e2, b1_e3, b1_e4] = geompy.SubShapes(Box, [12, 22, 25, 29])
419     [b2_e1, b2_e2, b2_e3, b2_e4] = geompy.SubShapes(Box, [ 8, 18, 26, 30])
420     Path1 = geompy.RestorePath(Box, Face5, Face6)
421     Path2 = geompy.RestorePathEdges(Box, [b1_e1, b1_e2, b1_e3, b1_e4], [b2_e1, b2_e2, b2_e3, b2_e4])
422
423     id_Base1      = geompy.addToStudyInFather(Box, Face5, "Base1")
424     id_Base2      = geompy.addToStudyInFather(Box, Face6, "Base2")
425     id_Base1e1    = geompy.addToStudyInFather(Box, b1_e1, "Base1 Edge1")
426     id_Base1e2    = geompy.addToStudyInFather(Box, b1_e2, "Base1 Edge2")
427     id_Base1e3    = geompy.addToStudyInFather(Box, b1_e3, "Base1 Edge3")
428     id_Base1e4    = geompy.addToStudyInFather(Box, b1_e4, "Base1 Edge4")
429     id_Base2e1    = geompy.addToStudyInFather(Box, b2_e1, "Base2 Edge1")
430     id_Base2e2    = geompy.addToStudyInFather(Box, b2_e2, "Base2 Edge2")
431     id_Base2e3    = geompy.addToStudyInFather(Box, b2_e3, "Base2 Edge3")
432     id_Base2e4    = geompy.addToStudyInFather(Box, b2_e4, "Base2 Edge4")
433     id_Path1      = geompy.addToStudy(Path1,      "Path1")
434     id_Path2      = geompy.addToStudy(Path2,      "Path2")
435     pass
436
437   id_Translation = geompy.addToStudy(Translation, "Translation")
438   id_TranslVect  = geompy.addToStudy(TranslVect , "Translation along vector")
439   id_TranslVectD = geompy.addToStudy(TranslVectD, "Translation along vector with defined distance")
440   id_Rotation    = geompy.addToStudy(Rotation,    "Rotation")
441   id_RotatPnt    = geompy.addToStudy(RotatPnt,    "Rotation by three points")
442   id_Scale1      = geompy.addToStudy(Scale1,      "Scale1")
443   id_Scale2      = geompy.addToStudy(Scale2,      "Scale2")
444   id_Scale3      = geompy.addToStudy(Scale3,      "Scale3")
445   id_Scale4      = geompy.addToStudy(Scale4,      "Scale4")
446   id_Mirror      = geompy.addToStudy(Mirror,      "Mirror by Plane")
447   id_MirrorAxis  = geompy.addToStudy(MirrorAxis,  "Mirror by Axis")
448   id_MirrorPnt   = geompy.addToStudy(MirrorPnt,   "Mirror by Point")
449   id_Position    = geompy.addToStudy(Position,    "Positioned box")
450   id_Position2   = geompy.addToStudy(Position2,   "Positioned box along path")
451   id_Offset      = geompy.addToStudy(Offset,      "Offset")
452   id_Orientation = geompy.addToStudy(Orientation, "Orientation")
453
454   id_Fillet   = geompy.addToStudy(Fillet,   "Fillet")
455   id_Fillet2  = geompy.addToStudy(Fillet2,  "Fillet2")
456   id_Fillet2d = geompy.addToStudy(Fillet2d, "Fillet2D")
457
458   id_Chamfer  = geompy.addToStudy(Chamfer,  "Chamfer on Edge")
459   id_Chamfer2 = geompy.addToStudy(Chamfer2, "Chamfer on Faces")
460   id_Chamfer3 = geompy.addToStudy(Chamfer3, "Chamfer on Edges")
461   id_Chamfer4 = geompy.addToStudy(Chamfer4, "Chamfer on Faces with params D Angle")
462
463   id_MultiTrans1D = geompy.addToStudy(MultiTrans1D, "MultiTrans1D")
464   id_MultiTrans2D = geompy.addToStudy(MultiTrans2D, "MultiTrans2D")
465   id_MultiRot1D   = geompy.addToStudy(MultiRot1D,   "MultiRot1D")
466   id_MultiRot2D   = geompy.addToStudy(MultiRot2D,   "MultiRot2D")
467
468   id_CDG       = geompy.addToStudy(CDG,       "CDG")
469   id_Archimede = geompy.addToStudy(Archimede, "Archimede")
470
471   id_Partition  = geompy.addToStudy(Partition, "Partition")
472   id_Partition1 = geompy.addToStudy(Partition1, "Half Partition")
473
474   #Decompose objects
475
476   # SubShape
477   SubFace    = geompy.SubShape(Box, geompy.ShapeType["FACE"], [2])
478   name       = geompy.SubShapeName(SubFace, Box)
479   id_SubFace = geompy.addToStudyInFather(Box, SubFace, name)
480
481   # SubShapeSortedCentres
482   SubFaceS   = geompy.SubShapeSortedCentres(Box, geompy.ShapeType["FACE"], [5])
483   nameS      = geompy.SubShapeName(SubFaceS, Box)
484   id_SubFace = geompy.addToStudyInFather(Box, SubFaceS, nameS)
485
486   # GetExistingSubObjects
487   SubObjsAll = geompy.GetExistingSubObjects(Box, True)
488   print "For now, Box has the following created sub-objects:", SubObjsAll
489
490   # GetGroups
491   SubGrpsAll = geompy.GetGroups(Box)
492   print "For now, Box has the following created groups:", SubGrpsAll
493
494   # SubShapeAll
495   SubEdgeList = geompy.SubShapeAll(SubFace, geompy.ShapeType["EDGE"])
496   i=0
497   for SubEdge in SubEdgeList :
498     name = geompy.SubShapeName(SubEdge, SubFace)
499     id_SubEdge = geompy.addToStudyInFather(SubFace, SubEdge, name)
500
501   # SubShapeAllIDs
502   SubEdgeIDsList = geompy.SubShapeAllIDs(SubFace, geompy.ShapeType["EDGE"])
503   print "IDs of edges of SubFace:", SubEdgeIDsList, "(unsorted)"
504   group = geompy.CreateGroup(SubFace, geompy.ShapeType["EDGE"])
505   geompy.UnionIDs(group, SubEdgeIDsList)
506   geompy.addToStudyInFather(SubFace, group, "Group of all edges")
507
508   # SubShapeAllSortedCentresIDs
509   SubEdgeIDsList = geompy.SubShapeAllSortedCentresIDs(SubFace, geompy.ShapeType["EDGE"])
510   print "IDs of edges of SubFace:", SubEdgeIDsList, "(sorted)"
511
512   # GetSubShape and GetSubShapeID
513   for ind in SubEdgeIDsList:
514     edge = geompy.GetSubShape(SubFace, [ind])
515     ind_e = geompy.GetSubShapeID(SubFace, edge)
516     if ind_e != ind:
517       print "Error in GetSubShape or GetSubShapeID"
518
519   # RestoreSubShapes
520   geompy.RestoreSubShapes(Copy)
521   geompy.RestoreSubShapes(RotatPnt, [], GEOM.FSM_Transformed)
522   geompy.RestoreSubShapes(Partition, [Box])
523   geompy.RestoreSubShapes(Partition1)
524
525   print "DONE"