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