00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 import salome
00030 import geompy
00031 import smesh
00032
00033 geom = geompy.geom
00034
00035
00036
00037
00038 p1 = geompy.MakeVertex( 100.0, 0.0, 0.0 )
00039 p2 = geompy.MakeVertex( 50.0, 50.0, 0.0 )
00040 p3 = geompy.MakeVertex( 100.0, 100.0, 0.0 )
00041 arc1 = geompy.MakeArc( p1, p2, p3 )
00042
00043 p4 = geompy.MakeVertex( 170.0, 100.0, 0.0 )
00044 seg1 = geompy.MakeVector( p3, p4 )
00045
00046 p5 = geompy.MakeVertex( 200.0, 70.0, 0.0 )
00047 p6 = geompy.MakeVertex( 170.0, 40.0, 0.0 )
00048 arc2 = geompy.MakeArc( p4, p5, p6 )
00049
00050 p7 = geompy.MakeVertex( 120.0, 30.0, 0.0 )
00051 arc3 = geompy.MakeArc( p6, p7, p1 )
00052
00053
00054 List1 = []
00055 List1.append( arc1 )
00056 List1.append( seg1 )
00057 List1.append( arc2 )
00058 List1.append( arc3 )
00059
00060 wire1 = geompy.MakeWire( List1 )
00061 Id_wire1 = geompy.addToStudy( wire1, "wire1" )
00062
00063
00064 WantPlanarFace = 1
00065 face1 = geompy.MakeFace( wire1, WantPlanarFace )
00066 Id_face1 = geompy.addToStudy( face1, "face1" )
00067
00068
00069 pO = geompy.MakeVertex( 0.0, 0.0, 0.0 )
00070 pz = geompy.MakeVertex( 0.0, 0.0, 100.0 )
00071 vz = geompy.MakeVector( pO, pz )
00072
00073 prism1 = geompy.MakePrismVecH( face1, vz, 100.0 )
00074 Id_prism1 = geompy.addToStudy( prism1, "prism1")
00075
00076
00077
00078 pc1 = geompy.MakeVertex( 90.0, 50.0, -40.0 )
00079 pc2 = geompy.MakeVertex( 170.0, 70.0, -40.0 )
00080 radius = 20.0
00081 height = 180.0
00082 cyl1 = geompy.MakeCylinder( pc1, vz, radius, height )
00083 cyl2 = geompy.MakeCylinder( pc2, vz, radius, height )
00084
00085 Id_Cyl1 = geompy.addToStudy( cyl1, "cyl1" )
00086 Id_Cyl2 = geompy.addToStudy( cyl2, "cyl2" )
00087
00088
00089 shape = geompy.MakeBoolean( prism1, cyl1, 2 )
00090
00091
00092 mechanic = geompy.MakeBoolean( shape, cyl2, 3 )
00093 Id_mechanic = geompy.addToStudy( mechanic, "mechanic" )
00094
00095
00096
00097 print "Analysis of the geometry mechanic :"
00098
00099 subShellList = geompy.SubShapeAll(mechanic,geompy.ShapeType["SHELL"])
00100 subFaceList = geompy.SubShapeAll(mechanic,geompy.ShapeType["FACE"])
00101 subEdgeList = geompy.SubShapeAll(mechanic,geompy.ShapeType["EDGE"])
00102
00103 print "number of Shells in mechanic : ",len(subShellList)
00104 print "number of Faces in mechanic : ",len(subFaceList)
00105 print "number of Edges in mechanic : ",len(subEdgeList)
00106
00107
00108 smesh.SetCurrentStudy(salome.myStudy)
00109
00110 shape_mesh = salome.IDToObject( Id_mechanic )
00111
00112 mesh = smesh.Mesh(shape_mesh, "Mesh_mechanic_tetra")
00113
00114 print "-------------------------- add hypothesis to main mechanic"
00115
00116 numberOfSegment = 10
00117
00118 algo1 = mesh.Segment()
00119 hypNbSeg = algo1.NumberOfSegments(numberOfSegment)
00120 print hypNbSeg.GetName()
00121 print hypNbSeg.GetId()
00122 print hypNbSeg.GetNumberOfSegments()
00123 smesh.SetName(hypNbSeg, "NumberOfSegments_" + str(numberOfSegment))
00124
00125
00126 maxElementArea = 20
00127
00128 algo2 = mesh.Triangle(smesh.MEFISTO)
00129 hypArea = algo2.MaxElementArea(maxElementArea)
00130 print hypArea.GetName()
00131 print hypArea.GetId()
00132 print hypArea.GetMaxElementArea()
00133 smesh.SetName(hypArea, "MaxElementArea_" + str(maxElementArea))
00134
00135
00136 maxElementVolume = 20
00137
00138 algo3 = mesh.Tetrahedron(smesh.NETGEN)
00139 hypVolume = algo3.MaxElementVolume(maxElementVolume)
00140 print hypVolume.GetName()
00141 print hypVolume.GetId()
00142 print hypVolume.GetMaxElementVolume()
00143 smesh.SetName(hypVolume, "maxElementVolume_" + str(maxElementVolume))
00144
00145
00146 print "-------------------------- compute the mesh of the mechanic piece"
00147 mesh.Compute()
00148
00149 print "Information about the Mesh_mechanic_tetra:"
00150 print "Number of nodes : ", mesh.NbNodes()
00151 print "Number of edges : ", mesh.NbEdges()
00152 print "Number of faces : ", mesh.NbFaces()
00153 print "Number of triangles : ", mesh.NbTriangles()
00154 print "Number of quadrangles: ", mesh.NbQuadrangles()
00155 print "Number of volumes : ", mesh.NbVolumes()
00156 print "Number of tetrahedrons: ", mesh.NbTetras()
00157
00158 salome.sg.updateObjBrowser(1)