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