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