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