115 Face41 = geompy.GetOppositeFace(Block3, Face31)
116 id_face41 = geompy.addToStudy(Face41,
"1 Face for Block 4")
118 p_25_5 = geompy.MakeVertex(25., 5., 0.)
119 p_25_20 = geompy.MakeVertex(25., 20., 0.)
121 Edge41 = geompy.MakeEdge(p_25_5, p_25_20)
122 id_edge41 = geompy.addToStudy(Edge41,
"1 Edge for Block 4")
124 p_25_5_2 = geompy.MakeVertex(25., 5., th)
125 p_25_20_2 = geompy.MakeVertex(25., 20., th)
127 Edge42 = geompy.MakeEdge(p_25_5_2, p_25_20_2)
128 id_edge42 = geompy.addToStudy(Edge42,
"2 Edge for Block 4")
130 Edge43 = geompy.MakeEdge(p_25_5, p_25_5_2)
131 id_edge43 = geompy.addToStudy(Edge43,
"3 Edge for Block 4")
133 Edge44 = geompy.MakeEdge(p_25_20, p_25_20_2)
134 id_edge44 = geompy.addToStudy(Edge44,
"4 Edge for Block 4")
136 Face42 = geompy.MakeQuad(Edge41, Edge42, Edge43, Edge44)
137 id_face42 = geompy.addToStudy(Face42,
"2 Face for Block 4")
139 Block4 = geompy.MakeHexa2Faces(Face41, Face42)
140 id_block4 = geompy.addToStudy(Block4,
"Block 4")
144 p_25_30 = geompy.MakeVertex(25., 30., 0.)
145 p_25_30_1 = geompy.MakeVertex(25., 30., 1)
146 axis_rot = geompy.MakeVector(p_25_30, p_25_30_1)
149 Face52 = geompy.MakeRotation(Face51, axis_rot, math.pi/2.)
150 id_face52 = geompy.addToStudy(Face52,
"2 Face for Block 5")
152 Block5 = geompy.MakeHexa2Faces(Face51, Face52)
153 id_block5 = geompy.addToStudy(Block5,
"Block 5")
157 Comp1234 = geompy.MakeCompound([Block1, Block2, Block3, Block4])
158 Glue1234 = geompy.MakeGlueFaces(Comp1234, 1e-5)
159 id_glue1234 = geompy.addToStudy(Glue1234,
"Glue 1234")
161 plane_mirror = geompy.MakePlane(p_25_30, vxy, 100.)
164 Mirror1 = geompy.MakeMirrorByPlane(Glue1234, plane_mirror)
165 id_mirror1 = geompy.addToStudy(Mirror1,
"Mirror 1")
169 p_18_0 = geompy.MakeVertex(18., 0., 0.)
170 p_20_0 = geompy.MakeVertex(20., 0., 0.)
171 p_40_0 = geompy.MakeVertex(40., 0., 0.)
173 Edge1s = geompy.MakeEdge(p_20_0, p_40_0)
174 id_edge1s = geompy.addToStudy(Edge1s,
"1 Edge for Block 1s")
176 Edge2s = geompy.MakeRotation(Edge1s, vz, math.pi/12.)
177 id_edge2s = geompy.addToStudy(Edge2s,
"2 Edge for Block 1s")
179 p_18_0_r = geompy.MakeRotation(p_18_0, vz, math.pi/24.)
180 p_20_0_r = geompy.MakeRotation(p_20_0, vz, math.pi/12.)
181 p_40_0_r = geompy.MakeRotation(p_40_0, vz, math.pi/12.)
183 Edge3s = geompy.MakeEdge(p_40_0, p_40_0_r)
184 id_edge3s = geompy.addToStudy(Edge3s,
"3 Edge for Block 1s")
186 Edge4s = geompy.MakeArc(p_20_0, p_18_0_r, p_20_0_r)
187 id_edge4s = geompy.addToStudy(Edge4s,
"4 Edge for Block 1s")
189 Face1s = geompy.MakeQuad(Edge1s, Edge2s, Edge3s, Edge4s)
190 id_face1s = geompy.addToStudy(Face1s,
"1 Face for Block 1s")
192 Block1s = geompy.MakePrismVecH(Face1s, vz, th);
193 id_block1s = geompy.addToStudy(Block1s,
"Block 1s")
195 p_30_0_1 = geompy.MakeVertex(30., 0., 1.)
197 Face2s = geompy.GetFaceNearPoint(Block1s, p_30_0_1)
198 id_face2s = geompy.addToStudy(Face2s,
"2 Face of Block 1s")
200 f2s_ind = geompy.LocalOp.GetSubShapeIndex(Block1s, Face2s)
202 Block1s_tr1 = geompy.MakeMultiTransformation1D(Block1s, f2s_ind, 0, 24)
203 id_block1s_tr1 = geompy.addToStudy(Block1s_tr1,
"Multi-transformed Block 1s")
205 p_60_150_0 = geompy.MakeVertex(60., -150., 0.)
206 Gear = geompy.MakeTranslationTwoPoints(Block1s_tr1, p0, p_60_150_0)
207 id_gear = geompy.addToStudy(Gear,
"Gear")
213 p_55_0_1 = geompy.MakeVertex(55., 0., 1.)
214 p_55_110_1 = geompy.MakeVertex(55., -110., 1.)
216 Face11l = geompy.GetFaceNearPoint(Block5, p_55_0_1)
217 id_face11l = geompy.addToStudy(Face11l,
"1 Face for Linking Block 1")
219 Face12l = geompy.GetFaceNearPoint(Gear, p_55_110_1)
220 id_face12l = geompy.addToStudy(Face12l,
"2 Face for Linking Block 1")
222 Block1l = geompy.MakeHexa2Faces(Face11l, Face12l)
223 id_block1l = geompy.addToStudy(Block1l,
"Linking Block 1")
227 p_25_0_1 = geompy.MakeVertex(25., 0., 1.)
228 p_45_110_1 = geompy.MakeVertex(45., -110., 1.)
230 Face21l = geompy.GetFaceNearPoint(Block4, p_25_0_1)
231 id_face21l = geompy.addToStudy(Face21l,
"1 Face for Linking Block 2")
233 Face22l = geompy.GetFaceNearPoint(Gear, p_45_110_1)
234 id_face22l = geompy.addToStudy(Face22l,
"2 Face for Linking Block 2")
236 Block2l = geompy.MakeHexa2Faces(Face21l, Face22l)
237 id_block2l = geompy.addToStudy(Block2l,
"Linking Block 2")
241 p_55_30_1 = geompy.MakeVertex(55., 30., 1.)
242 p_65_110_1 = geompy.MakeVertex(65., -110., 1.)
244 Face31l = geompy.GetFaceNearPoint(Mirror1, p_55_30_1)
245 id_face31l = geompy.addToStudy(Face31l,
"1 Face for Linking Block 3")
247 Face32l = geompy.GetFaceNearPoint(Gear, p_65_110_1)
248 id_face32l = geompy.addToStudy(Face32l,
"2 Face for Linking Block 3")
250 Block3l = geompy.MakeHexa2Faces(Face31l, Face32l)
251 id_block3l = geompy.addToStudy(Block3l,
"Linking Block 3")
255 CompLB = geompy.MakeCompound([Block1l, Block2l, Block3l])
256 Handle = geompy.MakeGlueFaces(CompLB, 1e-5)
257 id_handle = geompy.addToStudy(Handle,
"Handle")
259 Block1h = geompy.GetBlockNearPoint(Handle, p_45_110_1)
260 id_block1h = geompy.addToStudyInFather(Handle, Block1h,
"Block 1 of Handle")
262 Block2h = geompy.GetBlockNearPoint(Handle, p_65_110_1)
263 id_block2h = geompy.addToStudyInFather(Handle, Block2h,
"Block 2 of Handle")
265 Face11h = geompy.GetFaceByNormale(Block1h, vx)
266 id_face11h = geompy.addToStudyInFather(Block1h, Face11h,
"Face 1")
268 Face12h = geompy.GetOppositeFace(Block1h, Face11h)
269 id_face12h = geompy.addToStudyInFather(Block1h, Face12h,
"Face 2")
271 Face21h = geompy.GetFaceByNormale(Block2h, vx)
272 id_face21h = geompy.addToStudyInFather(Block2h, Face21h,
"Face 1")
274 Face22h = geompy.GetOppositeFace(Block2h, Face21h)
275 id_face22h = geompy.addToStudyInFather(Block2h, Face22h,
"Face 2")
278 Block3h = geompy.GetBlockByParts(Handle, [Face11h, Face21h])
281 Block3h = geompy.GetBlockByParts(Handle, [Face11h, Face22h])
284 Block3h = geompy.GetBlockByParts(Handle, [Face12h, Face21h])
287 Block3h = geompy.GetBlockByParts(Handle, [Face12h, Face22h])
289 print(
"ERROR: BlocksOp.GetBlockByParts() failed : ", geompy.BlocksOp.GetErrorCode())
291 id_block3h = geompy.addToStudyInFather(Handle, Block3h,
"Block 3 of Handle")
295 CompALL = geompy.MakeCompound([Glue1234, Block5, Mirror1, Handle, Gear])
296 Spanner = geompy.MakeGlueFaces(CompALL, 1e-5)
297 id_glueALL = geompy.addToStudy(Spanner,
"The Spanner")
312 if isBlocksTest == 1:
314 print(
"##################### Test More #####################")
318 Face42_sp = geompy.GetFaceByEdges(Spanner, Edge41, Edge42)
319 id_face42_sp = geompy.addToStudyInFather(Spanner, Face42_sp,
"Face 4_2")
321 Blocks_f4_sp = geompy.GetBlocksByParts(Spanner, [Face42_sp])
325 for aBlock
in Blocks_f4_sp:
326 name = geompy.SubShapeName(aBlock, Spanner)
327 Id_block = geompy.addToStudyInFather(Spanner, aBlock, name)
329 f42_sp_ind = geompy.LocalOp.GetSubShapeIndex(aBlock, Face42_sp)
331 Face_5_horiz = geompy.GetFaceByNormale(aBlock, vz)
332 f_5_horiz_ind = geompy.LocalOp.GetSubShapeIndex(aBlock, Face_5_horiz)
337 MRot = geompy.MakeMultiTransformation2D(aBlock, f42_sp_ind, 0, 3, f_5_horiz_ind, 0, 5)
340 if is2Dok
and MRot
is not None:
342 p_z100 = geompy.MakeVertex(0., 0., 100.)
343 MRot_tr = geompy.MakeTranslationTwoPoints(MRot, p0, p_z100)
344 id_MRot_tr = geompy.addToStudy(MRot_tr,
"Multi-rotated block 5")
347 print(
"2D Multi Transformation failed")
351 p_20_0_tr = geompy.MakeTranslationTwoPoints(p_20_0 , p0, p_60_150_0)
352 p_20_0_r_tr = geompy.MakeTranslationTwoPoints(p_20_0_r, p0, p_60_150_0)
353 p_40_0_tr = geompy.MakeTranslationTwoPoints(p_40_0 , p0, p_60_150_0)
354 p_40_0_r_tr = geompy.MakeTranslationTwoPoints(p_40_0_r, p0, p_60_150_0)
356 Face_g_1 = geompy.GetFaceByPoints(Gear, p_20_0_tr, p_20_0_r_tr, p_40_0_tr, p_40_0_r_tr)
357 id_face_g_1 = geompy.addToStudyInFather(Gear, Face_g_1,
"Face of Gear by four points")
359 edgesNb = geompy.ShapesOp.NumberOfEdges(Face_g_1)
360 print(
"Face of Gear has ", edgesNb,
" edges")
362 Face_g_1_tr = geompy.MakeTranslationTwoPoints(Face_g_1, p0, pth)
363 id_face_g_1_tr = geompy.addToStudyInFather(Gear, Face_g_1_tr,
"Face of Gear by four points, translated")
367 Block_new = geompy.MakeHexa2Faces(Face_g_1, Face_g_1_tr)
368 id_block_new = geompy.addToStudy(Block_new,
"Block New")
370 if isMeshTest == 1
and smesh
is not None:
372 print(
"##################### Build Mesh #####################")
377 p_45_0_1 = geompy.MakeVertex(45., 0., 1.)
378 BlockMh = geompy.GetBlockNearPoint(Spanner, p_45_0_1)
379 id_blockMh = geompy.addToStudyInFather(Spanner, BlockMh,
"Middle Block of Spanner Handle")
383 FaceTop = geompy.GetFaceByNormale(BlockMh, vz)
384 id_facetop = geompy.addToStudyInFather(BlockMh, FaceTop,
"Top Face")
388 FaceTop_edges = geompy.SubShapeAllSortedCentres(FaceTop, geompy.ShapeType[
"EDGE"])
389 Edge1 = FaceTop_edges[0]
390 Edge2 = FaceTop_edges[3]
391 Id_Edge1 = geompy.addToStudyInFather(FaceTop, Edge1,
"Edge 1")
392 Id_Edge2 = geompy.addToStudyInFather(FaceTop, Edge2,
"Edge 2")
394 print(
"-------------------------- Algorithm and Hypothesis")
396 print(
"---- Init a Mesh with the Spanner")
398 mesh = smesh.Mesh(Spanner,
"Meshed Spanner")
400 print(
"-------------------------- add hypothesis to Spanner")
402 print(
"-------------------------- NumberOfSegments")
403 algoReg = mesh.Segment()
404 listHyp = algoReg.GetCompatibleHypothesis()
407 print(algoReg.GetName())
408 print(algoReg.GetId())
409 algoReg.SetName(
"Regular_1D")
412 hypNbSeg3 = algoReg.NumberOfSegments(3)
413 print(hypNbSeg3.GetName())
414 print(hypNbSeg3.GetId())
415 print(hypNbSeg3.GetNumberOfSegments())
416 smesh.SetName(hypNbSeg3,
"NumberOfSegments_3")
418 print(
"-------------------------- Quadrangle_2D")
420 algoQuad = mesh.Quadrangle()
421 listHyp = algoQuad.GetCompatibleHypothesis()
424 print(algoQuad.GetName())
425 print(algoQuad.GetId())
426 algoQuad.SetName(
"Quadrangle_2D")
428 print(
"-------------------------- add hypothesis to the Middle Block")
430 print(
"-------------------------- LocalLength")
431 algoRegMb = mesh.Segment(BlockMh)
432 hypLen1 = algoRegMb.LocalLength(10)
433 print(hypLen1.GetName())
434 print(hypLen1.GetId())
435 print(hypLen1.GetLength())
436 smesh.SetName(hypLen1,
"Local_Length_10")
438 print(
"-------------------------- add hypothesis to the long edges of the Top Face of the Middle Block")
440 algoRegE1 = mesh.Segment(Edge1)
441 hypPropE1 = algoRegE1.Propagation()
442 print(hypPropE1.GetName())
443 print(hypPropE1.GetId())
444 smesh.SetName(hypPropE1,
"Propagation hypothesis")
445 smesh.SetName(algoRegE1.GetSubMesh(),
"SubMesh Edge 1 of Top Face")
447 algoRegE2 = mesh.Segment(Edge2)
448 hypPropE2 = algoRegE2.Propagation()
449 print(hypPropE2.GetName())
450 print(hypPropE2.GetId())
451 smesh.SetName(hypPropE2,
"Propagation hypothesis")
452 smesh.SetName(algoRegE2.GetSubMesh(),
"SubMesh Edge 2 of Top Face")
454 print(
"-------------------------- compute the mesh")
457 print(
"Information about the Mesh:")
458 print(
"Number of nodes : ", mesh.NbNodes())
459 print(
"Number of edges : ", mesh.NbEdges())
460 print(
"Number of faces : ", mesh.NbFaces())
461 print(
"Number of triangles : ", mesh.NbTriangles())
462 print(
"Number of quadrangles : ", mesh.NbQuadrangles())
463 print(
"Number of volumes : ", mesh.NbVolumes())
464 print(
"Number of tetrahedrons: ", mesh.NbTetras())