Salome HOME
e5caf3d32a9af108bef2cede5632bed3b97e86b6
[modules/geom.git] / src / GEOM_SWIG / GEOM_TestAll.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013  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
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   Sphere   = geompy.MakeSpherePntR(p0, radius1)               #(GEOM_Object, Double)->GEOM_Object
156   Sphere1  = geompy.MakeSphereR(radius)                       #(Double)->GEOM_Object
157   Sphere2  = geompy.MakeSphere(50, 70, 30, radius)            #(4 Doubles)->GEOM_Object
158   Cone     = geompy.MakeCone(p0, vz, radius2, radius, height) #(2 GEOM_Object, 3 Doubles)->GEOM_Object
159   Cone1    = geompy.MakeConeR1R2H(radius1, radius, height)    #(3 Doubles)->GEOM_Object
160   Torus    = geompy.MakeTorus(p0, vz, radius2, radius)        #(2 GEOM_Object, 2 Doubles)->GEOM_Object
161   Torus1   = geompy.MakeTorusRR(radius2, radius1)             #(2 Doubles)->GEOM_Object
162
163   #Boolean (Common, Cut, Fuse, Section)
164   Common  = geompy.MakeBoolean(Box, Sphere, 1) #(2 GEOM_Object, Short)->GEOM_Object
165   Cut     = geompy.MakeBoolean(Box, Sphere, 2)
166   Fuse    = geompy.MakeBoolean(Box, Sphere, 3)
167   Section = geompy.MakeBoolean(Box, Sphere, 4)
168
169   #Create base objects
170   Edge     = geompy.MakeEdge(p0, pxyz)               #(2 GEOM_Object)->GEOM_Object
171   Edge1    = geompy.MakeEdgeOnCurveByLength(Arc, 50, px) #(GEOM_Object, Double, GEOM_Object)->GEOM_Object
172   Wire     = geompy.MakeWire([vxy, Arc])             #(List Of GEOM_Object)->GEOM_Object
173   Face     = geompy.MakeFace(Wire, WantPlanarFace)   #(GEOM_Object, Boolean)->GEOM_Object
174   Face1    = geompy.MakeFaceWires([Wire, Sketcher],
175                                   WantPlanarFace)    #(List of GEOM_Object, Boolean)->GEOM_Object
176   Face2    = geompy.MakeFace(Sketcher, WantPlanarFace)
177   Face3    = geompy.MakeFaceHW (100., 200., 1)       #(2 Doubles, 1 Int)->GEOM_Object
178   Face4    = geompy.MakeFaceObjHW (vz, 200., 100.)   #(1 GEOM_Object, 2 Doubles)->GEOM_Object
179   Disk     = geompy.MakeDiskPntVecR (p0, vz, radius) #(2 GEOM_Object, 1 Double)->GEOM_Object
180   Disk2    = geompy.MakeDiskThreePnt(p0, p200, pz)   #(3 GEOM_Object)->GEOM_Object
181   Disk3    = geompy.MakeDiskR(100., 1)               #(1 Doubles, 1 Int)->GEOM_Object
182   Shell    = geompy.MakeShell([Face, Face1])         #(List of GEOM_Object)->GEOM_Object
183
184   Prism1   = geompy.MakePrism(Face2, p0, pxyz)       #(3 GEOM_Object)->GEOM_Object
185   prism1_faces = geompy.SubShapeAllSortedCentres(Prism1, geompy.ShapeType["FACE"])
186   Shell1   = geompy.MakeShell([prism1_faces[0], prism1_faces[1],
187                                prism1_faces[3], prism1_faces[4],
188                                prism1_faces[5], prism1_faces[2]])
189   Solid    = geompy.MakeSolid([Shell1])              #(List of GEOM_Object)->GEOM_Object
190
191   # Create Isoline
192   Isoline = geompy.MakeIsoline(Face1, True, 0.5)     #(1 GEOM_Object, Boolean, Double)->GEOM_Object
193
194   ShapeListCompound = []
195   i = 0
196   while i <= 3 :
197         S = geompy.MakeTranslation(Arc, i * 100., i * 100., i * 100.)
198         ShapeListCompound.append(S)
199         i = i + 1
200   Compound = geompy.MakeCompound(ShapeListCompound)  #(List of GEOM_Object)->GEOM_Object
201
202   #Test point on surface creation
203   p_on_face = geompy.MakeVertexOnSurface(Face, 0.1, 0.8) #(GEOM_Object, Double, Double)->GEOM_Object
204   p_on_face2 = geompy.MakeVertexOnSurfaceByCoord(Face, 0., 0., 0.) #(GEOM_Object, Double, Double, Double)->GEOM_Object
205   p_on_face3 = geompy.MakeVertexInsideFace(Face) #(GEOM_Object)->GEOM_Object
206
207   # Test plane from existing face creation
208   Plane2 = geompy.MakePlaneFace(Face, trimsize)      #(GEOM_Object, Double)->GEOM_Object
209
210   #ShapeList for Sewing
211   S = geompy.MakeRotation(Face, vxy, angle1)
212
213   #Test Line on Faces Intersection
214   Line3 = geompy.MakeLineTwoFaces(prism1_faces[0], prism1_faces[1]) #(2 GEOM_Object)->GEOM_Object
215
216   #Create advanced objects
217   Copy             = geompy.MakeCopy(Box)                      #(GEOM_Object)->GEOM_Object
218   Prism            = geompy.MakePrismVecH(Face, vz, 100.0)     #(2 GEOM_Object, Double)->GEOM_Object
219   Prism2Ways       = geompy.MakePrismVecH2Ways(Face, vz, 10.0) #(2 GEOM_Object, Double)->GEOM_Object
220   PrismTwoPnt      = geompy.MakePrism(Face2, p0, pxyz)         #(3 GEOM_Object)->GEOM_Object
221   PrismTwoPnt2Ways = geompy.MakePrism2Ways(Face2, p0, pxyz)    #(3 GEOM_Object)->GEOM_Object
222   PrismDXDYDZ      = geompy.MakePrismDXDYDZ(Face2, 10, 20, 100)#(2 GEOM_Object, Double)->GEOM_Object
223   PrismDXDYDZ2Ways = geompy.MakePrismDXDYDZ2Ways(Face, 30, -20, 200)#(2 GEOM_Object, Double)->GEOM_Object
224   Revolution       = geompy.MakeRevolution(Face, vz, angle2)   #
225   Revolution2Ways  = geompy.MakeRevolution(Face, vz, angle1)   #
226   Filling          = geompy.MakeFilling(Compound, mindeg, maxdeg,
227                                         tol2d, tol3d, nbiter)  #(GEOM_Object, 4 Doubles, Short)->GEOM_Object
228   Pipe             = geompy.MakePipe(Wire, Edge)               #(2 GEOM_Object)->GEOM_Object
229   Sewing           = geompy.MakeSewing([Face, S], precision)   #(List Of GEOM_Object, Double)->GEOM_Object
230
231   #Transform objects
232   Translation = geompy.MakeTranslationTwoPoints(Box, px, pz)    #(3 GEOM_Object)->GEOM_Object
233   TranslVect  = geompy.MakeTranslationVector(Box, vxyz)         #(2 GEOM_Object)->GEOM_Object
234   TranslVectD = geompy.MakeTranslationVectorDistance(Box, vxyz, 50.0)   #(2 GEOM_Object)->GEOM_Object  
235   Rotation    = geompy.MakeRotation(Box, vz, angle1)            #(2 GEOM_Object, Double)->GEOM_Object
236   RotatPnt    = geompy.MakeRotationThreePoints(Box, px, py, pz) #(4 GEOM_Object)->GEOM_Object
237
238   #Scale by factor relatively given point
239   Scale1 = geompy.MakeScaleTransform(Box, pxyz, factor)      #(2 GEOM_Object, Double)->GEOM_Object
240   #Scale by factor relatively the origin of global CS
241   Scale2 = geompy.MakeScaleTransform(Box, None, factor)      #
242   #Scale along axes of global CS by different factors. Scale relatively given point
243   Scale3 = geompy.MakeScaleAlongAxes(Box, pxyz, 1.5, 0.5, 3) #(2 GEOM_Object, 3 Doubles)->GEOM_Object
244   #Scale along axes of global CS by different factors. Scale relatively the origin of global CS
245   Scale4 = geompy.MakeScaleAlongAxes(Box, None, 1.5, 0.5, 3) #
246
247   Mirror      = geompy.MakeMirrorByPlane(Box, Plane) #(2 GEOM_Object)->GEOM_Object
248   MirrorAxis  = geompy.MakeMirrorByAxis(Box, Line1)  #
249   MirrorPnt   = geompy.MakeMirrorByPoint(Box, p200)  #
250   Position    = geompy.MakePosition(Box, cs1, cs2)   #(3 GEOM_Object)->GEOM_Object
251   Position2   = geompy.PositionAlongPath(Box, Arc, 0.5, 1, 0)  #(2 GEOM_Object, 1 Double, 2 Bool)->GEOM_Object
252   Offset      = geompy.MakeOffset(Box, 10.)          #(GEOM_Object, Double)->GEOM_Object
253   Orientation = geompy.ChangeOrientation(Box)
254   ProjOnWire  = geompy.MakeProjectionOnWire(p0, Wire)
255
256   #IDList for Fillet/Chamfer
257   prism_edges = geompy.ExtractShapes(Prism, geompy.ShapeType["EDGE"], True)
258
259   for anEdge in prism_edges:
260     eid = geompy.GetSubShapeID(Prism, anEdge)
261     sse = geompy.GetSubShape(Prism, [eid])
262
263     sse_id = geompy.GetSubShapeID(Prism, sse)
264     if sse_id != eid:
265       print "Error: GetSubShape() or GetSubShapeID() has failed!"
266
267   IDlist_e = []
268   IDlist_e.append(geompy.GetSubShapeID(Prism, prism_edges[0]))
269   IDlist_e.append(geompy.GetSubShapeID(Prism, prism_edges[1]))
270   IDlist_e.append(geompy.GetSubShapeID(Prism, prism_edges[2]))
271
272   prism_faces = geompy.ExtractShapes(Prism, geompy.ShapeType["FACE"], True)
273
274   f_ind_1 = geompy.GetSubShapeID(Prism, prism_faces[0])
275   f_ind_2 = geompy.GetSubShapeID(Prism, prism_faces[1])
276
277   IDlist_f = [f_ind_1, f_ind_2]
278   
279   #Local operations
280   Fillet2d = geompy.MakeFillet2D(Face3, radius, [4, 7, 9]) #(GEOM_Object, Double, ListOfLong)->GEOM_Object
281   Fillet   = geompy.MakeFillet (Prism, radius, geompy.ShapeType["EDGE"],
282                                 IDlist_e) #(GEOM_Object, Double, Short, ListOfLong)->GEOM_Object
283   Fillet2  = geompy.MakeFilletR1R2 (Prism, 7., 13., geompy.ShapeType["EDGE"],
284                                     IDlist_e) #(GEOM_Object, Double, Double, Short, ListOfLong)->GEOM_Object
285   Chamfer  = geompy.MakeChamferEdge(Prism, d1, d2,
286                                     f_ind_1, f_ind_2) #(GEOM_Object, 2 Doubles, 2 Long)->GEOM_Object
287   Chamfer2 = geompy.MakeChamferFaces(Prism, d1, d2,
288                                      IDlist_f) #(GEOM_Object, 2 Doubles, ListOfLong)->GEOM_Object
289   Chamfer3 = geompy.MakeChamferEdges(Prism, d1, d2,
290                                      IDlist_e) #(GEOM_Object, 2 Doubles, ListOfLong)->GEOM_Object
291   Chamfer4 = geompy.MakeChamferFacesAD(Prism, d1, 20. * math.pi / 180.,
292                                        IDlist_f) #(GEOM_Object, 2 Doubles, ListOfLong)->GEOM_Object
293   #End of Local operations
294
295   #Create Patterns
296   MultiTrans1D = geompy.MakeMultiTranslation1D(Fillet, vz, step1, nbtimes1)
297   MultiTrans2D = geompy.MakeMultiTranslation2D(Fillet, vz, step1, nbtimes1, vy, step2, nbtimes2)
298   MultiRot1Dt  = geompy.MultiRotate1DNbTimes(Chamfer, vx, nbtimes1)
299   MultiRot1Ds  = geompy.MultiRotate1DByStep(Chamfer, vx, math.pi/4., nbtimes1)
300   MultiRot2Dt  = geompy.MultiRotate2DNbTimes(Chamfer, vx, nbtimes1, step1, nbtimes2)
301   MultiRot2Ds  = geompy.MultiRotate2DByStep(Chamfer, vx, angle1, nbtimes1, step1, nbtimes2)
302
303   #Create Informations objects
304   CDG        = geompy.MakeCDG(Prism)               #(GEOM_Object)->GEOM_Object
305   Archimede  = geompy.Archimede(Box, weight, waterdensity,
306                                 meshingdeflection) #(GEOM_Object, 3 Doubles)->GEOM_Object
307   mindist = geompy.MinDistanceComponents(TranslVect, Mirror) #(2 GEOM_Object)->4 Doubles
308   print "Minumal distance between TranslVect and Mirror is", mindist[0],
309   print "by components:", mindist[1], ",", mindist[2], ",", mindist[3]
310   CheckShape = geompy.CheckShape(Prism)            #(GEOM_Object)->Boolean
311   print "CheckShape(Prism) = ", CheckShape
312
313   #Partition objects
314   Partition  = geompy.MakePartition([Box], [Plane]) #(2 Lists Of GEOM_Object)->GEOM_Object
315   Partition1 = geompy.MakeHalfPartition(Box, Plane) #(2 GEOM_Object)->GEOM_Object
316
317   #Add In Study
318   id_p0   = geompy.addToStudy(p0,   "Vertex 0")
319   id_px   = geompy.addToStudy(px,   "Vertex X")
320   id_py   = geompy.addToStudy(py,   "Vertex Y")
321   id_pz   = geompy.addToStudy(pz,   "Vertex Z")
322   id_pxyz = geompy.addToStudy(pxyz, "Vertex XYZ")
323   id_p200 = geompy.addToStudy(p200, "Vertex 200")
324
325   id_vx   = geompy.addToStudy(vx,   "Vector X")
326   id_vy   = geompy.addToStudy(vy,   "Vector Y")
327   id_vz   = geompy.addToStudy(vz,   "Vector Z")
328   id_vxy  = geompy.addToStudy(vxy,  "Vector XY")
329   id_vxyz = geompy.addToStudy(vxyz, "Vector XYZ")
330
331   id_cs1 = geompy.addToStudy(cs1, "CS 50,50,50, 1,0,0, 0,1,0")
332   id_cs2 = geompy.addToStudy(cs2, "CS 70,80,10, 1,0,1, 1,1,0")
333   id_cs3 = geompy.addToStudy(cs3, "CS: pz, vxy, vz")
334   id_cs4 = geompy.addToStudy(cs4, "CS: Plane")
335
336   id_Line   = geompy.addToStudy(Line,   "Line")
337   id_Line1  = geompy.addToStudy(Line1,  "Line by point and vector")
338   id_Line3  = geompy.addToStudy(Line3,  "Line on Two Faces Intersection")
339   id_Plane  = geompy.addToStudy(Plane,  "Plane")
340   id_Plane1 = geompy.addToStudy(Plane1,  "Plane by 3 points")
341   id_Plane2 = geompy.addToStudy(Plane2,  "Plane by 2 vectors")
342   id_Plane3 = geompy.addToStudy(Plane3,  "Plane by LCS")
343
344   id_Arc      = geompy.addToStudy(Arc,      "Arc")
345   id_Arc2     = geompy.addToStudy(Arc2,     "Arc2")
346   id_Arc3     = geompy.addToStudy(Arc3,     "Arc3")
347   id_Circle   = geompy.addToStudy(Circle,   "Circle")
348   id_Circle1  = geompy.addToStudy(Circle1,  "Circle by 3 points")
349   id_Circle2  = geompy.addToStudy(Circle2,  "Circle by center and 2 points")
350   id_Ellipse  = geompy.addToStudy(Ellipse,  "Ellipse")
351   id_Polyline = geompy.addToStudy(Polyline, "Polyline")
352   id_Bezier   = geompy.addToStudy(Bezier,   "Bezier")
353   id_Interpol = geompy.addToStudy(Interpol, "Interpol")
354   id_InterpT1 = geompy.addToStudy(InterpT1, "InterpT1")
355   id_InterpT2 = geompy.addToStudy(InterpT2, "InterpT2")
356   id_Sketcher = geompy.addToStudy(Sketcher, "Sketcher")
357
358   id_Sketcher3d_1 = geompy.addToStudy(Sketcher3d_1, "Sketcher 3D by interface")
359   id_Sketcher3d_2 = geompy.addToStudy(Sketcher3d_2, "Sketcher 3D by list")
360
361   id_p_on_arc  = geompy.addToStudy(p_on_arc,  "Vertex on Arc (0.25)")
362   id_p_on_arc2 = geompy.addToStudy(p_on_arc2, "Vertex on Arc at(100, -10, 10)" )
363   id_p_on_arc3 = geompy.addToStudy(p_on_arc3, "Vertex on Arc length 50 from Vertex X" )
364   
365   id_p_on_l1l2 = geompy.addToStudy(p_on_l1l2, "Vertex on Lines Intersection")
366
367   id_tan_on_arc  = geompy.addToStudy(tan_on_arc, "Tangent on Arc (0.7)")
368   id_tan_on_face = geompy.addToStudy(tan_on_face, "Tangent on Face")
369
370   id_Box      = geompy.addToStudy(Box,      "Box")
371   id_Box1     = geompy.addToStudy(Box1,     "Box 10x20x30")
372   id_Box2     = geompy.addToStudy(Box2,     "Box (10,20,30)-(15,25,35)")
373   id_Cylinder = geompy.addToStudy(Cylinder, "Cylinder")
374   id_Cyl1     = geompy.addToStudy(Cyl1,     "Cylinder RH")
375   id_Sphere   = geompy.addToStudy(Sphere,   "Sphere Pnt R")
376   id_Sphere1  = geompy.addToStudy(Sphere1,  "Sphere R")
377   id_Sphere2  = geompy.addToStudy(Sphere2,  "Sphere")
378   id_Cone     = geompy.addToStudy(Cone,     "Cone")
379   id_Cone1    = geompy.addToStudy(Cone1,    "Cone R1R2H")
380   id_Torus    = geompy.addToStudy(Torus,    "Torus")
381   id_Torus1   = geompy.addToStudy(Torus1,   "Torus RR")
382
383   id_Common  = geompy.addToStudy(Common,  "Common")
384   id_Cut     = geompy.addToStudy(Cut,     "Cut")
385   id_Fuse    = geompy.addToStudy(Fuse,    "Fuse")
386   id_Section = geompy.addToStudy(Section, "Section")
387
388   id_Edge     = geompy.addToStudy(Edge,     "Edge")
389   id_Edge1    = geompy.addToStudy(Edge1,    "Edge on Arc length 50 from Vertex Y")
390   id_Wire     = geompy.addToStudy(Wire,     "Wire")
391   id_Face     = geompy.addToStudy(Face,     "Face")
392   id_Face1    = geompy.addToStudy(Face1,    "Face from two wires")
393   id_Face2    = geompy.addToStudy(Face2,    "Face from Sketcher")
394   id_Face3    = geompy.addToStudy(Face3,    "Face Height Width")
395   id_Face4    = geompy.addToStudy(Face4,    "Face Plane_HW")
396   id_Disk     = geompy.addToStudy(Disk,     "Disk PntVecR")
397   id_Disk2    = geompy.addToStudy(Disk2,    "Disk Three Points")
398   id_Disk3    = geompy.addToStudy(Disk3,    "Disk OXY Radius")
399   id_Shell    = geompy.addToStudy(Shell,    "Shell")
400
401   id_Isoline  = geompy.addToStudy(Isoline,  "Isoline")
402
403   id_p_on_face = geompy.addToStudy(p_on_face, "Vertex on Face (0.1, 0.8)")
404   id_p_on_face2 = geompy.addToStudy(p_on_face2, "Vertex on Face at(0., 0., 0.)")
405   id_p_on_face3 = geompy.addToStudy(p_on_face3, "Vertex inside Face")
406
407   id_Prism1   = geompy.addToStudy(Prism1,     "Prism by Two Pnt")
408   id_Shell1   = geompy.addToStudy(Shell1,   "Shell from Prism1 faces")
409   id_Solid    = geompy.addToStudy(Solid,    "Solid")
410   id_Compound = geompy.addToStudy(Compound, "Compound")
411
412   id_Plane2   = geompy.addToStudy(Plane2,   "Plane on Face")
413
414   id_Copy       = geompy.addToStudy(Copy,       "Copy")
415   id_Prism            = geompy.addToStudy(Prism,            "Prism")
416   id_Prism2Ways       = geompy.addToStudy(Prism2Ways,       "Prism2Ways")
417   id_PrismTwoPnt      = geompy.addToStudy(PrismTwoPnt,      "PrismTwoPnt")
418   id_PrismTwoPnt2Ways = geompy.addToStudy(PrismTwoPnt2Ways, "PrismTwoPnt2Ways")
419   id_PrismDXDYDZ      = geompy.addToStudy(PrismDXDYDZ,      "PrismDXDYDZ")
420   id_PrismDXDYDZ2Ways = geompy.addToStudy(PrismDXDYDZ2Ways, "PrismDXDYDZ2Ways")
421   id_Revolution       = geompy.addToStudy(Revolution,       "Revolution")
422   id_Revolution2Ways  = geompy.addToStudy(Revolution2Ways,  "Revolution2Ways")
423   id_Filling    = geompy.addToStudy(Filling,    "Filling")
424   id_Pipe       = geompy.addToStudy(Pipe,       "Pipe")
425   id_Sewing     = geompy.addToStudy(Sewing,     "Sewing")
426
427   import salome_version
428   if int(salome_version.getXVersion(), 16) >= int('0x060600', 16):
429     [Face5, Face6] = geompy.SubShapes(Box, [31, 33])
430     [b1_e1, b1_e2, b1_e3, b1_e4] = geompy.SubShapes(Box, [12, 22, 25, 29])
431     [b2_e1, b2_e2, b2_e3, b2_e4] = geompy.SubShapes(Box, [ 8, 18, 26, 30])
432     Path1 = geompy.RestorePath(Box, Face5, Face6)
433     Path2 = geompy.RestorePathEdges(Box, [b1_e1, b1_e2, b1_e3, b1_e4], [b2_e1, b2_e2, b2_e3, b2_e4])
434
435     id_Base1      = geompy.addToStudyInFather(Box, Face5, "Base1")
436     id_Base2      = geompy.addToStudyInFather(Box, Face6, "Base2")
437     id_Base1e1    = geompy.addToStudyInFather(Box, b1_e1, "Base1 Edge1")
438     id_Base1e2    = geompy.addToStudyInFather(Box, b1_e2, "Base1 Edge2")
439     id_Base1e3    = geompy.addToStudyInFather(Box, b1_e3, "Base1 Edge3")
440     id_Base1e4    = geompy.addToStudyInFather(Box, b1_e4, "Base1 Edge4")
441     id_Base2e1    = geompy.addToStudyInFather(Box, b2_e1, "Base2 Edge1")
442     id_Base2e2    = geompy.addToStudyInFather(Box, b2_e2, "Base2 Edge2")
443     id_Base2e3    = geompy.addToStudyInFather(Box, b2_e3, "Base2 Edge3")
444     id_Base2e4    = geompy.addToStudyInFather(Box, b2_e4, "Base2 Edge4")
445     id_Path1      = geompy.addToStudy(Path1,      "Path1")
446     id_Path2      = geompy.addToStudy(Path2,      "Path2")
447     pass
448
449   id_Translation = geompy.addToStudy(Translation,   "Translation")
450   id_TranslVect  = geompy.addToStudy(TranslVect ,   "Translation along vector")
451   id_TranslVectD = geompy.addToStudy(TranslVectD,   "Translation along vector with defined distance")
452   id_Rotation    = geompy.addToStudy(Rotation,      "Rotation")
453   id_RotatPnt    = geompy.addToStudy(RotatPnt,      "Rotation by three points")
454   id_Scale1      = geompy.addToStudy(Scale1,        "Scale1")
455   id_Scale2      = geompy.addToStudy(Scale2,        "Scale2")
456   id_Scale3      = geompy.addToStudy(Scale3,        "Scale3")
457   id_Scale4      = geompy.addToStudy(Scale4,        "Scale4")
458   id_Mirror      = geompy.addToStudy(Mirror,        "Mirror by Plane")
459   id_MirrorAxis  = geompy.addToStudy(MirrorAxis,    "Mirror by Axis")
460   id_MirrorPnt   = geompy.addToStudy(MirrorPnt,     "Mirror by Point")
461   id_Position    = geompy.addToStudy(Position,      "Positioned box")
462   id_Position2   = geompy.addToStudy(Position2,     "Positioned box along path")
463   id_Offset      = geompy.addToStudy(Offset,        "Offset")
464   id_Orientation = geompy.addToStudy(Orientation,   "Orientation")
465   id_ProjOnWire  = geompy.addToStudy(ProjOnWire[1], "ProjOnWire")
466
467   id_Fillet   = geompy.addToStudy(Fillet,   "Fillet")
468   id_Fillet2  = geompy.addToStudy(Fillet2,  "Fillet2")
469   id_Fillet2d = geompy.addToStudy(Fillet2d, "Fillet2D")
470
471   id_Chamfer  = geompy.addToStudy(Chamfer,  "Chamfer on Edge")
472   id_Chamfer2 = geompy.addToStudy(Chamfer2, "Chamfer on Faces")
473   id_Chamfer3 = geompy.addToStudy(Chamfer3, "Chamfer on Edges")
474   id_Chamfer4 = geompy.addToStudy(Chamfer4, "Chamfer on Faces with params D Angle")
475
476   id_MultiTrans1D = geompy.addToStudy(MultiTrans1D, "MultiTrans1D")
477   id_MultiTrans2D = geompy.addToStudy(MultiTrans2D, "MultiTrans2D")
478   id_MultiRot1Dt  = geompy.addToStudy(MultiRot1Dt,  "MultiRot1D NbTimes")
479   id_MultiRot1Ds  = geompy.addToStudy(MultiRot1Ds,  "MultiRot1D ByStep")
480   id_MultiRot2Dt  = geompy.addToStudy(MultiRot2Dt,  "MultiRot2D NbTimes")
481   id_MultiRot2Ds  = geompy.addToStudy(MultiRot2Ds,  "MultiRot2D ByStep")
482
483   id_CDG       = geompy.addToStudy(CDG,       "CDG")
484   id_Archimede = geompy.addToStudy(Archimede, "Archimede")
485
486   id_Partition  = geompy.addToStudy(Partition, "Partition")
487   id_Partition1 = geompy.addToStudy(Partition1, "Half Partition")
488
489   #Decompose objects
490
491   # SubShape
492   SubFace    = geompy.SubShape(Box, geompy.ShapeType["FACE"], [2])
493   name       = geompy.SubShapeName(SubFace, Box)
494   id_SubFace = geompy.addToStudyInFather(Box, SubFace, name)
495
496   # SubShapeSortedCentres
497   SubFaceS   = geompy.SubShapeSortedCentres(Box, geompy.ShapeType["FACE"], [5])
498   nameS      = geompy.SubShapeName(SubFaceS, Box)
499   id_SubFace = geompy.addToStudyInFather(Box, SubFaceS, nameS)
500
501   # GetExistingSubObjects
502   SubObjsAll = geompy.GetExistingSubObjects(Box, True)
503   print "For now, Box has the following created sub-objects:", SubObjsAll
504
505   # GetGroups
506   SubGrpsAll = geompy.GetGroups(Box)
507   print "For now, Box has the following created groups:", SubGrpsAll
508
509   # SubShapeAll
510   SubEdgeList = geompy.SubShapeAll(SubFace, geompy.ShapeType["EDGE"])
511   i=0
512   for SubEdge in SubEdgeList :
513     name = geompy.SubShapeName(SubEdge, SubFace)
514     id_SubEdge = geompy.addToStudyInFather(SubFace, SubEdge, name)
515
516   # SubShapeAllIDs
517   SubEdgeIDsList = geompy.SubShapeAllIDs(SubFace, geompy.ShapeType["EDGE"])
518   print "IDs of edges of SubFace:", SubEdgeIDsList, "(unsorted)"
519   group = geompy.CreateGroup(SubFace, geompy.ShapeType["EDGE"])
520   geompy.UnionIDs(group, SubEdgeIDsList)
521   geompy.addToStudyInFather(SubFace, group, "Group of all edges")
522
523   # SubShapeAllSortedCentresIDs
524   SubEdgeIDsList = geompy.SubShapeAllSortedCentresIDs(SubFace, geompy.ShapeType["EDGE"])
525   print "IDs of edges of SubFace:", SubEdgeIDsList, "(sorted)"
526
527   # GetSubShape and GetSubShapeID
528   for ind in SubEdgeIDsList:
529     edge = geompy.GetSubShape(SubFace, [ind])
530     ind_e = geompy.GetSubShapeID(SubFace, edge)
531     if ind_e != ind:
532       print "Error in GetSubShape or GetSubShapeID"
533
534   # RestoreSubShapes
535   geompy.RestoreSubShapes(Copy)
536   geompy.RestoreSubShapes(RotatPnt, [], GEOM.FSM_Transformed)
537   geompy.RestoreSubShapes(Partition, [Box])
538   geompy.RestoreSubShapes(Partition1)
539
540   print "DONE"