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