Version: 9.16.0
GEOM_TestAll.py


GEOM_TestAll.py

0def TestAll (geompy, math):
34 import GEOM
35
36 #Create base Variables
37 nbtimes1 = 5 #Short
38 nbtimes2 = 5
39 mindeg = 2
40 maxdeg = 5
41 nbiter = 5
42 WantPlanarFace = 1 #True
43
44 radius = 10. #Double
45 radius1 = 100.
46 radius2 = 200.
47 height = 200.
48 d1 = 10.
49 d2 = 10.
50 step1 = 250.
51 step2 = 250.
52 angle = 45.
53 angle1 = angle * math.pi / 180
54 angle2 = 2 * angle1
55 factor = 2.
56 tol3d = 0.0001
57 tol2d = 0.0001
58 weight = 1000000.
59 waterdensity = 1.
60 meshingdeflection = 0.01
61 trimsize = 1000.
62 precision = 0.00001
63
64 #Create base points
65 p0 = geompy.MakeVertex(0. , 0. , 0. ) #(3 Doubles)->GEOM_Object
66 px = geompy.MakeVertex(100., 0. , 0. )
67 py = geompy.MakeVertex(0. , 100., 0. )
68 pz = geompy.MakeVertex(0. , 0. , 100.)
69 pxyz = geompy.MakeVertex(100., 100., 100.)
70
71 p200 = geompy.MakeVertexWithRef(pxyz, 100., 100., 100.) #(GEOM_Object, 3 Doubles)->GEOM_Object
72
73 #Create base directions
74 vx = geompy.MakeVector(p0, px) #(GEOM_Object, GEOM_Object)->GEOM_Object
75 vy = geompy.MakeVector(p0, py)
76 vz = geompy.MakeVector(p0, pz)
77 vxy = geompy.MakeVector(px, py)
78
79 vxyz = geompy.MakeVectorDXDYDZ(100., 100., 100.) #(3 Doubles)->GEOM_Object

80
81 #Create local coordinate systems
82 cs1 = geompy.MakeMarker(50,50,50, 1,0,0, 0,1,0) #(9 Doubles)->GEOM_Object
83 cs2 = geompy.MakeMarker(70,80,10, 1,0,1, 1,1,0) #(9 Doubles)->GEOM_Object
84 cs3 = geompy.MakeMarkerPntTwoVec(pz, vxy, vz) #(3 GEOM_Object)->GEOM_Object
85
86 #Create base geometry 2D
87 Line = geompy.MakeLineTwoPnt(p0, pxyz) #(2 GEOM_Object)->GEOM_Object
88 Line1 = geompy.MakeLine(pz, vxy) #(2 GEOM_Object)->GEOM_Object
89 Line2 = geompy.MakeLineTwoPnt(pxyz, pz) #(2 GEOM_Object)->GEOM_Object
90 Plane = geompy.MakePlane(pz, vxyz, trimsize) #(2 GEOM_Object, Double)->GEOM_Object
91 Plane1 = geompy.MakePlaneThreePnt(px, pz, p200, trimsize) #(4 Doubles)->GEOM_Object
92 Plane2 = geompy.MakePlane2Vec(vx, vz, trimsize) #(2 GEOM_Object, Double)->GEOM_Object
93 Plane3 = geompy.MakePlaneLCS(cs1, trimsize, 3) #(1 GEOM_Object, 2 Double)->GEOM_Object

94
95 Arc = geompy.MakeArc(py, pz, px) #(3 GEOM_Object)->GEOM_Object
96 Arc2 = geompy.MakeArcCenter(py, pz, px,0) #(3 GEOM_Object,Boolean)->GEOM_Object
97 Arc3 = geompy.MakeArcOfEllipse(p0, px, pz) #(3 GEOM_Object,Boolean)->GEOM_Object

98 Circle = geompy.MakeCircle(p0, vz, radius1) #(2 GEOM_Object, Double)->GEOM_Object
99 Circle1 = geompy.MakeCircleThreePnt(p0, pxyz, px) #(3 GEOM_Object)->GEOM_Object
100 Circle2 = geompy.MakeCircleCenter2Pnt(p0, pxyz, py) #(3 GEOM_Object)->GEOM_Object
101 Ellipse = geompy.MakeEllipse(p0, vy, radius2, radius1) #(2 GEOM_Object, 2 Doubles)->GEOM_Object
102 Polyline = geompy.MakePolyline([p0, pz, py, p200]) #(List of GEOM_Object)->GEOM_Object
103 Bezier = geompy.MakeBezier([p0, pz, p200, px]) #(List of GEOM_Object)->GEOM_Object
104 Interpol = geompy.MakeInterpol([px, py, p200, pxyz], True) #(List of GEOM_Object,Boolean)->GEOM_Object
105 InterpT1 = geompy.MakeInterpolWithTangents([px, py, pxyz], vx, vz) #(List of GO, GO, GO)->GEOM_Object
106 InterpT2 = geompy.MakeInterpolWithTangents([px, py, pxyz], vxy, vxyz) #(List of GO, GO, GO)->GEOM_Object
107 Sketcher = geompy.MakeSketcher("Sketcher:F -100 -100:TT 250 -100:R 0:C 100 150:R 0:L 300:WW",
108 [100,0,0, 1,1,1, -1,1,0]) #(String, List of Doubles)->GEOM_Object
109
110 #Create 3D wires with 3D Sketcher
111 sk = geompy.Sketcher3D()
112 sk.addPointsAbsolute(0,0,0, 70,0,0)
113 sk.addPointsRelative(0, 0, 130)
114 sk.addPointRadiusAnglesRelative(100, 50, 0,"OXY")
115 sk.addPointRadiusAnglesRelative(130, 30, 80, "OXZ")
116 sk.addPointRadiusAnglesAbsolute(500, 60, 30,"OXY")
117 sk.addPointRadiusAngleHRelative(100, 50, 0,"OXY")
118 sk.addPointRadiusAngleHRelative(130, 30, 40, "OXZ")
119 sk.addPointRadiusAngleHAbsolute(800, 60, 30,"OXY")
120 sk.close()
121 Sketcher3d_1 = sk.wire()
122
123 Sketcher3d_2 = geompy.Make3DSketcher([0,0,0, 50,50,50, 0,50,50, 10,0,0])
124
125 #Create local coordinate system from shape
126 cs4 = geompy.MakeMarkerFromShape(Plane)
127
128 #Test point on curve creation
129 p_on_arc = geompy.MakeVertexOnCurve(Arc, 0.25) #(GEOM_Object, Double)->GEOM_Object
130 p_on_arc2 = geompy.MakeVertexOnCurveByCoord(Arc, 100, -10, 10 ) #(GEOM_Object, Double)->GEOM_Object
131 p_on_arc3 = geompy.MakeVertexOnCurveByLength(Arc, 50, py) #(GEOM_Object, Double, GEOM_Object)->GEOM_Object

132
133 #Test point on lines intersection
134 p_on_l1l2 = geompy.MakeVertexOnLinesIntersection(Line1, Line2) #(2 GEOM_Object)->GEOM_Object

135
136 #Test tangent on curve creation
137 tan_on_arc = geompy.MakeTangentOnCurve(Arc, 0.7) #(GEOM_Object, Double)->GEOM_Object

138
139 #Test tangent on face creation
140 tan_vertex_1 = geompy.MakeVertex(0, 0, 0)
141 tan_vertex_2 = geompy.MakeVertex(0, 90, 30)
142 tan_vertex_3 = geompy.MakeVertex(100, 90, 0)
143 tan_vertex_4 = geompy.MakeVertex(-100, 90, 0)
144 tan_curve = geompy.MakeInterpol([tan_vertex_4, tan_vertex_2, tan_vertex_3, tan_vertex_1], False)
145 tan_extrusion = geompy.MakePrismDXDYDZ(tan_curve, 0, 30, -60)
146 tan_on_face = geompy.MakeTangentPlaneOnFace(tan_extrusion, 0.7, 0.5, 150)
147
148 #Create base geometry 3D
149 Box = geompy.MakeBoxTwoPnt(p0, p200) #(2 GEOM_Object)->GEOM_Object
150 Box1 = geompy.MakeBoxDXDYDZ(10, 20, 30) #(3 Doubles)->GEOM_Object
151 Box2 = geompy.MakeBox(10,20,30, 15,25,35) #(6 Doubles)->GEOM_Object
152 Cylinder = geompy.MakeCylinder(p0, vz, radius1, height) #(2 GEOM_Object, 2 Doubles)->GEOM_Object
153 Cyl1 = geompy.MakeCylinderRH(radius2, height) #(2 Doubles)->GEOM_Object
154 Cylinder1= geompy.MakeCylinderA(p0, vz, radius1, height, angle1) #(2 GEOM_Object, 3 Doubles)->GEOM_Object
155 Cyl2 = geompy.MakeCylinderRHA(radius2, height, angle2) #(3 Doubles)->GEOM_Object
156 Sphere = geompy.MakeSpherePntR(p0, radius1) #(GEOM_Object, Double)->GEOM_Object
157 Sphere1 = geompy.MakeSphereR(radius) #(Double)->GEOM_Object
158 Sphere2 = geompy.MakeSphere(50, 70, 30, radius) #(4 Doubles)->GEOM_Object
159 Cone = geompy.MakeCone(p0, vz, radius2, radius, height) #(2 GEOM_Object, 3 Doubles)->GEOM_Object
160 Cone1 = geompy.MakeConeR1R2H(radius1, radius, height) #(3 Doubles)->GEOM_Object
161 Torus = geompy.MakeTorus(p0, vz, radius2, radius) #(2 GEOM_Object, 2 Doubles)->GEOM_Object
162 Torus1 = geompy.MakeTorusRR(radius2, radius1) #(2 Doubles)->GEOM_Object
163
164 #Boolean (Common, Cut, Fuse, Section)
165 Common = geompy.MakeBoolean(Box, Sphere, 1) #(2 GEOM_Object, Short)->GEOM_Object
166 Cut = geompy.MakeBoolean(Box, Sphere, 2)
167 Fuse = geompy.MakeBoolean(Box, Sphere, 3)
168 Section = geompy.MakeBoolean(Box, Sphere, 4)
169
170 #Create base objects
171 Edge = geompy.MakeEdge(p0, pxyz) #(2 GEOM_Object)->GEOM_Object
172 Edge1 = geompy.MakeEdgeOnCurveByLength(Arc, 50, px) #(GEOM_Object, Double, GEOM_Object)->GEOM_Object
173 Wire = geompy.MakeWire([vxy, Arc]) #(List Of GEOM_Object)->GEOM_Object
174 Face = geompy.MakeFace(Wire, WantPlanarFace) #(GEOM_Object, Boolean)->GEOM_Object
175 Face1 = geompy.MakeFaceWires([Wire, Sketcher],
176 WantPlanarFace) #(List of GEOM_Object, Boolean)->GEOM_Object
177 Face2 = geompy.MakeFace(Sketcher, WantPlanarFace)
178 Face3 = geompy.MakeFaceHW (100., 200., 1) #(2 Doubles, 1 Int)->GEOM_Object
179 Face4 = geompy.MakeFaceObjHW (vz, 200., 100.) #(1 GEOM_Object, 2 Doubles)->GEOM_Object
180 Face5 = geompy.MakeFaceFromSurface(Face, Sketcher) #(2 GEOM_Objects)->GEOM_Object
181
182 Cut2 = geompy.MakeCutList(Sphere1, [Box1], True)
183 #(List of GEOM_Object)->GEOM_Object
184 Face6 = geompy.MakeFaceWithConstraints([geompy.GetSubShape(Cut2, [5]), geompy.GetSubShape(Cut2, [3]),
185 geompy.GetSubShape(Cut2, [11]), geompy.GetSubShape(Cut2, [3]),
186 geompy.GetSubShape(Cut2, [13]), geompy.GetSubShape(Cut2, [3])])
187 Disk = geompy.MakeDiskPntVecR (p0, vz, radius) #(2 GEOM_Object, 1 Double)->GEOM_Object
188 Disk2 = geompy.MakeDiskThreePnt(p0, p200, pz) #(3 GEOM_Object)->GEOM_Object
189 Disk3 = geompy.MakeDiskR(100., 1) #(1 Doubles, 1 Int)->GEOM_Object
190 Shell = geompy.MakeShell([Face, Face1]) #(List of GEOM_Object)->GEOM_Object
191
192 Prism1 = geompy.MakePrism(Face2, p0, pxyz) #(3 GEOM_Object)->GEOM_Object
193 prism1_faces = geompy.SubShapeAllSortedCentres(Prism1, geompy.ShapeType["FACE"])
194 Shell1 = geompy.MakeShell([prism1_faces[0], prism1_faces[1],
195 prism1_faces[3], prism1_faces[4],
196 prism1_faces[5], prism1_faces[2]])
197 Solid = geompy.MakeSolid([Shell1]) #(List of GEOM_Object)->GEOM_Object
198
199 Box1_translation = geompy.MakeTranslation(Box1, 10, 0, 0)
200 Box1_shell = geompy.SubShapeAllSorted(Box1, geompy.ShapeType["SHELL"])[0]
201 Box1_translation_shell = geompy.SubShapeAllSorted(Box1_translation, geompy.ShapeType["SHELL"])[0]
202
203 Solid_from_shells = geompy.MakeSolidFromConnectedFaces([Box1_shell, Box1_translation_shell], 1) #(List of GEOM_Object, Boolean)->GEOM_Object
204
205 # Create Isoline
206 Isoline = geompy.MakeIsoline(Face1, True, 0.5) #(1 GEOM_Object, Boolean, Double)->GEOM_Object
207
208 ShapeListCompound = []
209 i = 0
210 while i <= 3 :
211 S = geompy.MakeTranslation(Arc, i * 100., i * 100., i * 100.)
212 ShapeListCompound.append(S)
213 i = i + 1
214 Compound = geompy.MakeCompound(ShapeListCompound) #(List of GEOM_Object)->GEOM_Object

215
216 #Test point on surface creation
217 p_on_face = geompy.MakeVertexOnSurface(Face, 0.1, 0.8) #(GEOM_Object, Double, Double)->GEOM_Object

218 p_on_face2 = geompy.MakeVertexOnSurfaceByCoord(Face, 0., 0., 0.) #(GEOM_Object, Double, Double, Double)->GEOM_Object

219 p_on_face3 = geompy.MakeVertexInsideFace(Face) #(GEOM_Object)->GEOM_Object
220
221 # Test plane from existing face creation
222 Plane2 = geompy.MakePlaneFace(Face, trimsize) #(GEOM_Object, Double)->GEOM_Object
223
224 #ShapeList for Sewing
225 S = geompy.MakeRotation(Face, vxy, angle1)

226
227 #Test Line on Faces Intersection
228 Line3 = geompy.MakeLineTwoFaces(prism1_faces[0], prism1_faces[1]) #(2 GEOM_Object)->GEOM_Object

229
230 #Create advanced objects
231 Prism = geompy.MakePrismVecH(Face, vz, 100.0) #(2 GEOM_Object, Double)->GEOM_Object
232 Prism2Ways = geompy.MakePrismVecH2Ways(Face, vz, 10.0) #(2 GEOM_Object, Double)->GEOM_Object
233 PrismTwoPnt = geompy.MakePrism(Face2, p0, pxyz) #(3 GEOM_Object)->GEOM_Object
234 PrismTwoPnt2Ways = geompy.MakePrism2Ways(Face2, p0, pxyz) #(3 GEOM_Object)->GEOM_Object
235 PrismDXDYDZ = geompy.MakePrismDXDYDZ(Face2, 10, 20, 100)#(2 GEOM_Object, Double)->GEOM_Object
236 PrismDXDYDZ2Ways = geompy.MakePrismDXDYDZ2Ways(Face, 30, -20, 200)#(2 GEOM_Object, Double)->GEOM_Object
237 Revolution = geompy.MakeRevolution(Face, vxy, angle2) #(2 GEOM_Object, Double)->GEOM_Object
238 Revolution2Ways = geompy.MakeRevolution2Ways(Face, vxy, angle1) #(2 GEOM_Object, Double)->GEOM_Object
239 Filling = geompy.MakeFilling(Compound, mindeg, maxdeg,
240 tol2d, tol3d, nbiter) #(GEOM_Object, 4 Doubles, Short)->GEOM_Object
241 Pipe = geompy.MakePipe(Wire, Edge) #(2 GEOM_Object)->GEOM_Object
242 Sewing = geompy.MakeSewing([Face, S], precision) #(List Of GEOM_Object, Double)->GEOM_Object
243 ThickSolid = geompy.MakeCopy(Box)
244 faces = geompy.SubShapeAllSortedCentres(Box, geompy.ShapeType["FACE"])
245 shell = geompy.MakeShell([faces[0], faces[1], faces[2]])
246 faceIDs = geompy.SubShapeAllSortedCentresIDs(ThickSolid, geompy.ShapeType["FACE"])
247 ThickShell = geompy.MakeThickSolid(shell, 50) #(GEOM_Object, Double)->GEOM_Object
248 geompy.Thicken(ThickSolid, 50, [faceIDs[0], faceIDs[1]]) #(GEOM_Object) modification

249 Copy = geompy.MakeCopy(Box) #(GEOM_Object)->GEOM_Object

250
251 #Transform objects
252 Translation = geompy.MakeTranslationTwoPoints(Box, px, pz) #(3 GEOM_Object)->GEOM_Object
253 TranslVect = geompy.MakeTranslationVector(Box, vxyz) #(2 GEOM_Object)->GEOM_Object
254 TranslVectD = geompy.MakeTranslationVectorDistance(Box, vxyz, 50.0) #(2 GEOM_Object)->GEOM_Object
255 Rotation = geompy.MakeRotation(Box, vz, angle1) #(2 GEOM_Object, Double)->GEOM_Object
256 RotatPnt = geompy.MakeRotationThreePoints(Box, px, py, pz) #(4 GEOM_Object)->GEOM_Object

257
258 #Scale by factor relatively given point
259 Scale1 = geompy.MakeScaleTransform(Box, pxyz, factor) #(2 GEOM_Object, Double)->GEOM_Object
260 #Scale by factor relatively the origin of global CS
261 Scale2 = geompy.MakeScaleTransform(Box, None, factor) #
262 #Scale along axes of global CS by different factors. Scale relatively given point
263 Scale3 = geompy.MakeScaleAlongAxes(Box, pxyz, 1.5, 0.5, 3) #(2 GEOM_Object, 3 Doubles)->GEOM_Object
264 #Scale along axes of global CS by different factors. Scale relatively the origin of global CS
265 Scale4 = geompy.MakeScaleAlongAxes(Box, None, 1.5, 0.5, 3) #

266
267 Mirror = geompy.MakeMirrorByPlane(Box, Plane) #(2 GEOM_Object)->GEOM_Object
268 MirrorAxis = geompy.MakeMirrorByAxis(Box, Line1) #
269 MirrorPnt = geompy.MakeMirrorByPoint(Box, p200) #
270 Position = geompy.MakePosition(Box, cs1, cs2) #(3 GEOM_Object)->GEOM_Object
271 Position2 = geompy.PositionAlongPath(Box, Arc, 0.5, 1, 0) #(2 GEOM_Object, 1 Double, 2 Bool)->GEOM_Object
272 Offset = geompy.MakeOffset(Box, 10.) #(GEOM_Object, Double)->GEOM_Object
273 ProjOnWire = geompy.MakeProjectionOnWire(p0, Wire)
274 ProjOnCyl = geompy.MakeProjectionOnCylinder(Wire, 100)

275 Orientation = geompy.ChangeOrientation(Box)

276 ExtEdge = geompy.ExtendEdge(Edge1, -0.3, 1.3)
277 ExtFace = geompy.ExtendFace(Face5, -0.3, 1.3, -0.1, 1.1)

278 Surface = geompy.MakeSurfaceFromFace(Face5)

279
280 #IDList for Fillet/Chamfer
281 prism_edges = geompy.ExtractShapes(Prism, geompy.ShapeType["EDGE"], True)
282
283 for anEdge in prism_edges:
284 eid = geompy.GetSubShapeID(Prism, anEdge)
285 sse = geompy.GetSubShape(Prism, [eid])
286
287 sse_id = geompy.GetSubShapeID(Prism, sse)
288 if sse_id != eid:
289 print("Error: GetSubShape() or GetSubShapeID() has failed!")
290
291 IDlist_e = []
292 IDlist_e.append(geompy.GetSubShapeID(Prism, prism_edges[0]))
293 IDlist_e.append(geompy.GetSubShapeID(Prism, prism_edges[1]))
294 IDlist_e.append(geompy.GetSubShapeID(Prism, prism_edges[2]))
295
296 prism_faces = geompy.ExtractShapes(Prism, geompy.ShapeType["FACE"], True)
297
298 f_ind_1 = geompy.GetSubShapeID(Prism, prism_faces[0])
299 f_ind_2 = geompy.GetSubShapeID(Prism, prism_faces[1])
300
301 IDlist_f = [f_ind_1, f_ind_2]

302
303 #Local operations
304 Fillet2d = geompy.MakeFillet2D(Face3, radius, [4, 7, 9]) #(GEOM_Object, Double, ListOfLong)->GEOM_Object
305 Fillet = geompy.MakeFillet (Prism, radius, geompy.ShapeType["EDGE"],
306 IDlist_e) #(GEOM_Object, Double, Short, ListOfLong)->GEOM_Object
307 Fillet2 = geompy.MakeFilletR1R2 (Prism, 7., 13., geompy.ShapeType["EDGE"],
308 IDlist_e) #(GEOM_Object, Double, Double, Short, ListOfLong)->GEOM_Object
309 Chamfer = geompy.MakeChamferEdge(Prism, d1, d2,
310 f_ind_1, f_ind_2) #(GEOM_Object, 2 Doubles, 2 Long)->GEOM_Object
311 Chamfer2 = geompy.MakeChamferFaces(Prism, d1, d2,
312 IDlist_f) #(GEOM_Object, 2 Doubles, ListOfLong)->GEOM_Object
313 Chamfer3 = geompy.MakeChamferEdges(Prism, d1, d2,
314 IDlist_e) #(GEOM_Object, 2 Doubles, ListOfLong)->GEOM_Object
315 Chamfer4 = geompy.MakeChamferFacesAD(Prism, d1, 20. * math.pi / 180.,
316 IDlist_f) #(GEOM_Object, 2 Doubles, ListOfLong)->GEOM_Object
317 #End of Local operations

318
319 #Create Patterns
320 MultiTrans1D = geompy.MakeMultiTranslation1D(Fillet, vz, step1, nbtimes1)
321 MultiTrans2D = geompy.MakeMultiTranslation2D(Fillet, vz, step1, nbtimes1, vy, step2, nbtimes2)
322 MultiRot1Dt = geompy.MultiRotate1DNbTimes(Chamfer, vx, nbtimes1)
323 MultiRot1Ds = geompy.MultiRotate1DByStep(Chamfer, vx, math.pi/4., nbtimes1)
324 MultiRot2Dt = geompy.MultiRotate2DNbTimes(Chamfer, vx, nbtimes1, step1, nbtimes2)
325 MultiRot2Ds = geompy.MultiRotate2DByStep(Chamfer, vx, angle1, nbtimes1, step1, nbtimes2)

326
327 #Create Information objects
328 CDG = geompy.MakeCDG(Prism) #(GEOM_Object)->GEOM_Object
329 Archimede = geompy.Archimede(Box, weight, waterdensity,
330 meshingdeflection) #(GEOM_Object, 3 Doubles)->GEOM_Object
331 mindist = geompy.MinDistanceComponents(TranslVect, Mirror) #(2 GEOM_Object)->4 Doubles
332 print("Minumal distance between TranslVect and Mirror is", mindist[0], end=' ')
333 print("by components:", mindist[1], ",", mindist[2], ",", mindist[3])
334 CheckShape = geompy.CheckShape(Prism) #(GEOM_Object)->Boolean
335 print("CheckShape(Prism) = ", CheckShape)

336
337 #Partition objects
338 Partition = geompy.MakePartition([Box], [Plane]) #(2 Lists Of GEOM_Object)->GEOM_Object
339 Partition1 = geompy.MakeHalfPartition(Box, Plane) #(2 GEOM_Object)->GEOM_Object

340
341 #Add In Study
342 id_p0 = geompy.addToStudy(p0, "Vertex 0")
343 id_px = geompy.addToStudy(px, "Vertex X")
344 id_py = geompy.addToStudy(py, "Vertex Y")
345 id_pz = geompy.addToStudy(pz, "Vertex Z")
346 id_pxyz = geompy.addToStudy(pxyz, "Vertex XYZ")
347 id_p200 = geompy.addToStudy(p200, "Vertex 200")
348
349 id_vx = geompy.addToStudy(vx, "Vector X")
350 id_vy = geompy.addToStudy(vy, "Vector Y")
351 id_vz = geompy.addToStudy(vz, "Vector Z")
352 id_vxy = geompy.addToStudy(vxy, "Vector XY")
353 id_vxyz = geompy.addToStudy(vxyz, "Vector XYZ")
354
355 id_cs1 = geompy.addToStudy(cs1, "CS 50,50,50, 1,0,0, 0,1,0")
356 id_cs2 = geompy.addToStudy(cs2, "CS 70,80,10, 1,0,1, 1,1,0")
357 id_cs3 = geompy.addToStudy(cs3, "CS: pz, vxy, vz")
358 id_cs4 = geompy.addToStudy(cs4, "CS: Plane")
359
360 id_Line = geompy.addToStudy(Line, "Line")
361 id_Line1 = geompy.addToStudy(Line1, "Line by point and vector")
362 id_Line3 = geompy.addToStudy(Line3, "Line on Two Faces Intersection")
363 id_Plane = geompy.addToStudy(Plane, "Plane")
364 id_Plane1 = geompy.addToStudy(Plane1, "Plane by 3 points")
365 id_Plane2 = geompy.addToStudy(Plane2, "Plane by 2 vectors")
366 id_Plane3 = geompy.addToStudy(Plane3, "Plane by LCS")
367
368 id_Arc = geompy.addToStudy(Arc, "Arc")
369 id_Arc2 = geompy.addToStudy(Arc2, "Arc2")
370 id_Arc3 = geompy.addToStudy(Arc3, "Arc3")
371 id_Circle = geompy.addToStudy(Circle, "Circle")
372 id_Circle1 = geompy.addToStudy(Circle1, "Circle by 3 points")
373 id_Circle2 = geompy.addToStudy(Circle2, "Circle by center and 2 points")
374 id_Ellipse = geompy.addToStudy(Ellipse, "Ellipse")
375 id_Polyline = geompy.addToStudy(Polyline, "Polyline")
376 id_Bezier = geompy.addToStudy(Bezier, "Bezier")
377 id_Interpol = geompy.addToStudy(Interpol, "Interpol")
378 id_InterpT1 = geompy.addToStudy(InterpT1, "InterpT1")
379 id_InterpT2 = geompy.addToStudy(InterpT2, "InterpT2")
380 id_Sketcher = geompy.addToStudy(Sketcher, "Sketcher")
381
382 id_Sketcher3d_1 = geompy.addToStudy(Sketcher3d_1, "Sketcher 3D by interface")
383 id_Sketcher3d_2 = geompy.addToStudy(Sketcher3d_2, "Sketcher 3D by list")
384
385 id_p_on_arc = geompy.addToStudy(p_on_arc, "Vertex on Arc (0.25)")
386 id_p_on_arc2 = geompy.addToStudy(p_on_arc2, "Vertex on Arc at(100, -10, 10)" )
387 id_p_on_arc3 = geompy.addToStudy(p_on_arc3, "Vertex on Arc length 50 from Vertex X" )
388
389 id_p_on_l1l2 = geompy.addToStudy(p_on_l1l2, "Vertex on Lines Intersection")
390
391 id_tan_on_arc = geompy.addToStudy(tan_on_arc, "Tangent on Arc (0.7)")
392 id_tan_on_face = geompy.addToStudy(tan_on_face, "Tangent on Face")
393
394 id_Box = geompy.addToStudy(Box, "Box")
395 id_Box1 = geompy.addToStudy(Box1, "Box 10x20x30")
396 id_Box2 = geompy.addToStudy(Box2, "Box (10,20,30)-(15,25,35)")
397 id_Cylinder = geompy.addToStudy(Cylinder, "Cylinder")
398 id_Cyl1 = geompy.addToStudy(Cyl1, "Cylinder RH")
399 id_Cylinder1= geompy.addToStudy(Cylinder1,"CylinderA")
400 id_Cyl2 = geompy.addToStudy(Cyl2, "Cylinder RHA")
401 id_Sphere = geompy.addToStudy(Sphere, "Sphere Pnt R")
402 id_Sphere1 = geompy.addToStudy(Sphere1, "Sphere R")
403 id_Sphere2 = geompy.addToStudy(Sphere2, "Sphere")
404 id_Cone = geompy.addToStudy(Cone, "Cone")
405 id_Cone1 = geompy.addToStudy(Cone1, "Cone R1R2H")
406 id_Torus = geompy.addToStudy(Torus, "Torus")
407 id_Torus1 = geompy.addToStudy(Torus1, "Torus RR")
408
409 id_Common = geompy.addToStudy(Common, "Common")
410 id_Cut = geompy.addToStudy(Cut, "Cut")
411 id_Cut2 = geompy.addToStudy(Cut2, "Cut2")
412 id_Fuse = geompy.addToStudy(Fuse, "Fuse")
413 id_Section = geompy.addToStudy(Section, "Section")
414
415 id_Edge = geompy.addToStudy(Edge, "Edge")
416 id_Edge1 = geompy.addToStudy(Edge1, "Edge on Arc length 50 from Vertex Y")
417 id_Wire = geompy.addToStudy(Wire, "Wire")
418 id_Face = geompy.addToStudy(Face, "Face")
419 id_Face1 = geompy.addToStudy(Face1, "Face from two wires")
420 id_Face2 = geompy.addToStudy(Face2, "Face from Sketcher")
421 id_Face3 = geompy.addToStudy(Face3, "Face Height Width")
422 id_Face4 = geompy.addToStudy(Face4, "Face Plane_HW")
423 id_Face5 = geompy.addToStudy(Face5, "Face from surface and wire")
424 id_Face6 = geompy.addToStudy(Face6, "Face from edges with constraints")
425 id_Disk = geompy.addToStudy(Disk, "Disk PntVecR")
426 id_Disk2 = geompy.addToStudy(Disk2, "Disk Three Points")
427 id_Disk3 = geompy.addToStudy(Disk3, "Disk OXY Radius")
428 id_Shell = geompy.addToStudy(Shell, "Shell")
429
430 id_Isoline = geompy.addToStudy(Isoline, "Isoline")
431
432 id_p_on_face = geompy.addToStudy(p_on_face, "Vertex on Face (0.1, 0.8)")
433 id_p_on_face2 = geompy.addToStudy(p_on_face2, "Vertex on Face at(0., 0., 0.)")
434 id_p_on_face3 = geompy.addToStudy(p_on_face3, "Vertex inside Face")
435
436 id_Prism1 = geompy.addToStudy(Prism1, "Prism by Two Pnt")
437 id_Shell1 = geompy.addToStudy(Shell1, "Shell from Prism1 faces")
438 id_Solid = geompy.addToStudy(Solid, "Solid")
439 id_Solid1 = geompy.addToStudy(Solid_from_shells, "Solid1")
440
441 id_Compound = geompy.addToStudy(Compound, "Compound")
442
443 id_Plane2 = geompy.addToStudy(Plane2, "Plane on Face")
444
445 id_Copy = geompy.addToStudy(Copy, "Copy")
446 id_ThickShell = geompy.addToStudy(ThickShell, "ThickShell")
447 id_ThickSolid = geompy.addToStudy(ThickSolid, "ThickSolid")
448
449 id_Prism = geompy.addToStudy(Prism, "Prism")
450 id_Prism2Ways = geompy.addToStudy(Prism2Ways, "Prism2Ways")
451 id_PrismTwoPnt = geompy.addToStudy(PrismTwoPnt, "PrismTwoPnt")
452 id_PrismTwoPnt2Ways = geompy.addToStudy(PrismTwoPnt2Ways, "PrismTwoPnt2Ways")
453 id_PrismDXDYDZ = geompy.addToStudy(PrismDXDYDZ, "PrismDXDYDZ")
454 id_PrismDXDYDZ2Ways = geompy.addToStudy(PrismDXDYDZ2Ways, "PrismDXDYDZ2Ways")
455 id_Revolution = geompy.addToStudy(Revolution, "Revolution")
456 id_Revolution2Ways = geompy.addToStudy(Revolution2Ways, "Revolution2Ways")
457 id_Filling = geompy.addToStudy(Filling, "Filling")
458 id_Pipe = geompy.addToStudy(Pipe, "Pipe")
459 id_Sewing = geompy.addToStudy(Sewing, "Sewing")
460
461 import salome_version
462 if int(salome_version.getXVersion(), 16) >= int('0x060600', 16):
463 [Face5, Face6] = geompy.SubShapes(Box, [31, 33])
464 [b1_e1, b1_e2, b1_e3, b1_e4] = geompy.SubShapes(Box, [12, 22, 25, 29])
465 [b2_e1, b2_e2, b2_e3, b2_e4] = geompy.SubShapes(Box, [ 8, 18, 26, 30])
466 Path1 = geompy.RestorePath(Box, Face5, Face6)
467 Path2 = geompy.RestorePathEdges(Box, [b1_e1, b1_e2, b1_e3, b1_e4], [b2_e1, b2_e2, b2_e3, b2_e4])
468
469 id_Base1 = geompy.addToStudyInFather(Box, Face5, "Base1")
470 id_Base2 = geompy.addToStudyInFather(Box, Face6, "Base2")
471 id_Base1e1 = geompy.addToStudyInFather(Box, b1_e1, "Base1 Edge1")
472 id_Base1e2 = geompy.addToStudyInFather(Box, b1_e2, "Base1 Edge2")
473 id_Base1e3 = geompy.addToStudyInFather(Box, b1_e3, "Base1 Edge3")
474 id_Base1e4 = geompy.addToStudyInFather(Box, b1_e4, "Base1 Edge4")
475 id_Base2e1 = geompy.addToStudyInFather(Box, b2_e1, "Base2 Edge1")
476 id_Base2e2 = geompy.addToStudyInFather(Box, b2_e2, "Base2 Edge2")
477 id_Base2e3 = geompy.addToStudyInFather(Box, b2_e3, "Base2 Edge3")
478 id_Base2e4 = geompy.addToStudyInFather(Box, b2_e4, "Base2 Edge4")
479 id_Path1 = geompy.addToStudy(Path1, "Path1")
480 id_Path2 = geompy.addToStudy(Path2, "Path2")
481 pass
482
483 id_Translation = geompy.addToStudy(Translation, "Translation")
484 id_TranslVect = geompy.addToStudy(TranslVect , "Translation along vector")
485 id_TranslVectD = geompy.addToStudy(TranslVectD, "Translation along vector with defined distance")
486 id_Rotation = geompy.addToStudy(Rotation, "Rotation")
487 id_RotatPnt = geompy.addToStudy(RotatPnt, "Rotation by three points")
488 id_Scale1 = geompy.addToStudy(Scale1, "Scale1")
489 id_Scale2 = geompy.addToStudy(Scale2, "Scale2")
490 id_Scale3 = geompy.addToStudy(Scale3, "Scale3")
491 id_Scale4 = geompy.addToStudy(Scale4, "Scale4")
492 id_Mirror = geompy.addToStudy(Mirror, "Mirror by Plane")
493 id_MirrorAxis = geompy.addToStudy(MirrorAxis, "Mirror by Axis")
494 id_MirrorPnt = geompy.addToStudy(MirrorPnt, "Mirror by Point")
495 id_Position = geompy.addToStudy(Position, "Positioned box")
496 id_Position2 = geompy.addToStudy(Position2, "Positioned box along path")
497 id_Offset = geompy.addToStudy(Offset, "Offset")
498 id_Orientation = geompy.addToStudy(Orientation, "Orientation")
499 id_ProjOnWire = geompy.addToStudy(ProjOnWire[1], "ProjOnWire")
500 id_ProjOnCyl = geompy.addToStudy(ProjOnCyl, "ProjOnCyl")
501 id_ExtEdge = geompy.addToStudy(ExtEdge, "ExtendedEdge")
502 id_ExtFace = geompy.addToStudy(ExtFace, "ExtendedFace")
503 id_Surface = geompy.addToStudy(Surface, "Surface From Face")
504
505 id_Fillet = geompy.addToStudy(Fillet, "Fillet")
506 id_Fillet2 = geompy.addToStudy(Fillet2, "Fillet2")
507 id_Fillet2d = geompy.addToStudy(Fillet2d, "Fillet2D")
508
509 id_Chamfer = geompy.addToStudy(Chamfer, "Chamfer on Edge")
510 id_Chamfer2 = geompy.addToStudy(Chamfer2, "Chamfer on Faces")
511 id_Chamfer3 = geompy.addToStudy(Chamfer3, "Chamfer on Edges")
512 id_Chamfer4 = geompy.addToStudy(Chamfer4, "Chamfer on Faces with params D Angle")
513
514 id_MultiTrans1D = geompy.addToStudy(MultiTrans1D, "MultiTrans1D")
515 id_MultiTrans2D = geompy.addToStudy(MultiTrans2D, "MultiTrans2D")
516 id_MultiRot1Dt = geompy.addToStudy(MultiRot1Dt, "MultiRot1D NbTimes")
517 id_MultiRot1Ds = geompy.addToStudy(MultiRot1Ds, "MultiRot1D ByStep")
518 id_MultiRot2Dt = geompy.addToStudy(MultiRot2Dt, "MultiRot2D NbTimes")
519 id_MultiRot2Ds = geompy.addToStudy(MultiRot2Ds, "MultiRot2D ByStep")
520
521 id_CDG = geompy.addToStudy(CDG, "CDG")
522 id_Archimede = geompy.addToStudy(Archimede, "Archimede")
523
524 id_Partition = geompy.addToStudy(Partition, "Partition")
525 id_Partition1 = geompy.addToStudy(Partition1, "Half Partition")

526
527 #Decompose objects
528
529 # SubShape
530 SubFace = geompy.SubShape(Box, geompy.ShapeType["FACE"], [2])
531 name = geompy.SubShapeName(SubFace, Box)
532 id_SubFace = geompy.addToStudyInFather(Box, SubFace, name)

533
534 # SubShapeSortedCentres
535 SubFaceS = geompy.SubShapeSortedCentres(Box, geompy.ShapeType["FACE"], [5])
536 nameS = geompy.SubShapeName(SubFaceS, Box)

537 id_SubFace = geompy.addToStudyInFather(Box, SubFaceS, nameS)
538
539 # GetExistingSubObjects
540 SubObjsAll = geompy.GetExistingSubObjects(Box, True)
541 print("For now, Box has the following created sub-objects:", SubObjsAll)
542
543 # GetGroups
544 SubGrpsAll = geompy.GetGroups(Box)
545 print("For now, Box has the following created groups:", SubGrpsAll)
546
547 # SubShapeAll
548 SubEdgeList = geompy.SubShapeAll(SubFace, geompy.ShapeType["EDGE"])
549 i=0
550 for SubEdge in SubEdgeList :
551 name = geompy.SubShapeName(SubEdge, SubFace)
552 id_SubEdge = geompy.addToStudyInFather(SubFace, SubEdge, name)
553
554 # SubShapeAllIDs
555 SubEdgeIDsList = geompy.SubShapeAllIDs(SubFace, geompy.ShapeType["EDGE"])
556 print("IDs of edges of SubFace:", SubEdgeIDsList, "(unsorted)")
557 group = geompy.CreateGroup(SubFace, geompy.ShapeType["EDGE"])
558 geompy.UnionIDs(group, SubEdgeIDsList)
559 geompy.addToStudyInFather(SubFace, group, "Group of all edges")
560
561 # SubShapeAllSortedCentresIDs
562 SubEdgeIDsList = geompy.SubShapeAllSortedCentresIDs(SubFace, geompy.ShapeType["EDGE"])
563 print("IDs of edges of SubFace:", SubEdgeIDsList, "(sorted)")
564
565 # GetSubShape and GetSubShapeID
566 for ind in SubEdgeIDsList:
567 edge = geompy.GetSubShape(SubFace, [ind])
568 ind_e = geompy.GetSubShapeID(SubFace, edge)
569 if ind_e != ind:
570 print("Error in GetSubShape or GetSubShapeID")
571
572 # RestoreSubShapes
573 geompy.RestoreSubShapes(Copy)
574 geompy.RestoreSubShapes(RotatPnt, [], GEOM.FSM_Transformed)
575 geompy.RestoreSubShapes(Partition, [Box])
576 geompy.RestoreSubShapes(Partition1)

577
578 # GetSubShapeEdgeSorted
579 p1 = geompy.GetFirstVertex(Sketcher)
580 p2 = geompy.GetFirstVertex(Sketcher3d_1)
581 p3 = geompy.GetFirstVertex(Sketcher3d_2)
582 geompy.GetSubShapeEdgeSorted(Sketcher, p1, "OrderedEdges")
583 geompy.GetSubShapeEdgeSorted(Sketcher3d_1, p2, "OrderedEdges")
584 geompy.GetSubShapeEdgeSorted(Sketcher3d_2, p3, "OrderedEdges")

585
586 # GetSubShapesWithTolerance
587 geompy.GetSubShapesWithTolerance(Box, GEOM.FACE, GEOM.CC_GT, 1.e-8, "gt")
588 geompy.GetSubShapesWithTolerance(Box, GEOM.FACE, GEOM.CC_GE, 1.e-7, "ge")
589 geompy.GetSubShapesWithTolerance(Box, GEOM.FACE, GEOM.CC_LT, 2.e-7, "lt")
590 geompy.GetSubShapesWithTolerance(Box, GEOM.FACE, GEOM.CC_LE, 1.e-7, "le")

591
592 # MakeExtraction
593 geompy.MakeExtraction(Box, [13], "Ext_no_face")
594 geompy.MakeExtraction(Box, [18], "Ext_no_edge")
595 geompy.MakeExtraction(Box, [16], "Ext_no_vertex")

596
597 # CurvatureOnFace
598 Cylinder_1 = geompy.MakeCylinderRH(100, 50, 'Cylinder_r100_h150')
599 [Face_1,Face_2,Face_3] = geompy.ExtractShapes(Cylinder_1, geompy.ShapeType["FACE"], True, "Face")
600 curvature_1 = geompy.CurvatureOnFace(Face_2, px, vy, 'curvature_cyl_px_vy')
601 assert(abs(geompy.BasicProperties(curvature_1)[0] - 100) < 1e-07)
602 curvature_zero = geompy.CurvatureOnFace(Face_2, px, vz)
603 assert(geompy.MeasuOp.GetErrorCode() == "ZERO_CURVATURE")
604 assert(not curvature_zero)
605 isExcept = False
606 try:
607 # p0 is on cylinder axis, projection should fail
608 geompy.CurvatureOnFace(Face_2, p0, vy)
609 except:
610 isExcept = True
611 assert(isExcept)
612
613 print("DONE")