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