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