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