Code: Select all
import Fem
doc = App.ActiveDocument
path = '/home/hugo/Desktop/'
filetype = '.vtk' # possibilities are: *.unv *.med *.dat *.stl *.inp *.vtk *.vtu
#################################################
# Beams
# 2 node line --> seg2 ##########################
seg2 = Fem.FemMesh()
seg2.addNode( 0, 0, 0, 1)
seg2.addNode(10, 0, 0, 2)
seg2.addEdge(1, 2)
seg2
obj = doc.addObject("Fem::FemMeshObject","seg2")
obj.FemMesh = seg2
obj.Placement.Base = (0,110,0)
obj.ViewObject.DisplayMode = "Faces, Wireframe & Nodes"
seg2.write(path + 'seg2' + filetype)
# 3 node line --> seg3 ##########################
seg3 = Fem.FemMesh()
seg3.addNode( 0, 0, 0, 1)
seg3.addNode(10, 0, 0, 2)
seg3.addNode( 5, 0, 0, 3)
seg3.addEdge([1, 2, 3])
seg3
obj = doc.addObject("Fem::FemMeshObject","seg3")
obj.FemMesh = seg3
obj.Placement.Base = (30,110,0)
obj.ViewObject.DisplayMode = "Faces, Wireframe & Nodes"
seg3.write(path + 'seg3' + filetype)
#################################################
# Shells
# 3 node triangle --> tria3 #####################
tria3 = Fem.FemMesh()
tria3.addNode( 0, 0, 0, 1)
tria3.addNode( 6, 12, 0, 2)
tria3.addNode(12, 0, 0, 3)
tria3.addFace([1, 2, 3])
tria3
obj = doc.addObject("Fem::FemMeshObject","tria3")
obj.FemMesh = tria3
obj.Placement.Base = (0,80,0)
obj.ViewObject.DisplayMode = "Faces, Wireframe & Nodes"
obj.ViewObject.BackfaceCulling = False
tria3.write(path + 'tria3' + filetype)
# 6 node triangle --> tria 6 ####################
tria6 = Fem.FemMesh()
tria6.addNode( 0, 0, 0, 1)
tria6.addNode( 6, 12, 0, 2)
tria6.addNode(12, 0, 0, 3)
tria6.addNode( 3, 6, 0, 4)
tria6.addNode( 9, 6, 0, 5)
tria6.addNode( 6, 0, 0, 6)
tria6.addFace([1, 2, 3, 4, 5, 6])
tria6
obj = doc.addObject("Fem::FemMeshObject","tria6")
obj.FemMesh = tria6
obj.Placement.Base = (30,80,0)
obj.ViewObject.DisplayMode = "Faces, Wireframe & Nodes"
obj.ViewObject.BackfaceCulling = False
tria6.write(path + 'tria6' + filetype)
# 4 node quad --> quad4 #########################
quad4 = Fem.FemMesh()
quad4.addNode( 0, 10, 0, 1)
quad4.addNode(10, 10, 0, 2)
quad4.addNode(10, 0, 0, 3)
quad4.addNode( 0, 0, 0, 4)
quad4.addFace([1, 2, 3, 4])
quad4
obj = doc.addObject("Fem::FemMeshObject","quad4")
obj.FemMesh = quad4
obj.Placement.Base = (60,80,0)
obj.ViewObject.DisplayMode = "Faces, Wireframe & Nodes"
obj.ViewObject.BackfaceCulling = False
quad4.write(path + 'quad4' + filetype)
# 8 node quad --> quad8 #########################
quad8 = Fem.FemMesh()
quad8.addNode( 0, 10, 0, 1)
quad8.addNode(10, 10, 0, 2)
quad8.addNode(10, 0, 0, 3)
quad8.addNode( 0, 0, 0, 4)
quad8.addNode( 5, 10, 0, 5)
quad8.addNode(10, 5, 0, 6)
quad8.addNode( 5, 0, 0, 7)
quad8.addNode( 0, 5, 0, 8)
quad8.addFace([1, 2, 3, 4, 5, 6, 7, 8])
quad8
obj = doc.addObject("Fem::FemMeshObject","quad8")
obj.FemMesh = quad8
obj.ViewObject.BackfaceCulling = False
quad8.write(path + 'quad8' + filetype)
#################################################
# Volumes
# 4 node tetrahedron --> tetra4 #################
tetra4 = Fem.FemMesh()
tetra4.addNode( 6, 12, 18, 1)
tetra4.addNode( 0, 0, 18, 2)
tetra4.addNode(12, 0, 18, 3)
tetra4.addNode( 6, 6, 0, 4)
tetra4.addVolume([1, 2, 3, 4])
tetra4
obj = doc.addObject("Fem::FemMeshObject","tetra4")
obj.FemMesh = tetra4
obj.Placement.Base = (0,50,0)
obj.ViewObject.DisplayMode = "Faces, Wireframe & Nodes"
tetra4.write(path + 'tetra4' + filetype)
# 10 node tetrahedron --> tetra10 ###############
tetra10 = Fem.FemMesh()
tetra10.addNode( 6, 12, 18, 1)
tetra10.addNode( 0, 0, 18, 2)
tetra10.addNode(12, 0, 18, 3)
tetra10.addNode( 6, 6, 0, 4)
tetra10.addNode( 3, 6, 18, 5)
tetra10.addNode( 6, 0, 18, 6)
tetra10.addNode( 9, 6, 18, 7)
tetra10.addNode( 6, 9, 9, 8)
tetra10.addNode( 3, 3, 9, 9)
tetra10.addNode( 9, 3, 9,10)
tetra10.addVolume([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
tetra10
obj = doc.addObject("Fem::FemMeshObject","tetra10")
obj.FemMesh = tetra10
obj.Placement.Base = (30,50,0)
obj.ViewObject.DisplayMode = "Faces, Wireframe & Nodes"
tetra10.write(path + 'tetra10' + filetype)
# 8 node Hexahedron --> hexa8 ###################
hexa8 = Fem.FemMesh()
hexa8.addNode( 0, 10, 10, 1)
hexa8.addNode( 0, 0, 10, 2)
hexa8.addNode(10, 0, 10, 3)
hexa8.addNode(10, 10, 10, 4)
hexa8.addNode( 0, 10, 0, 5)
hexa8.addNode( 0, 0, 0, 6)
hexa8.addNode(10, 0, 0, 7)
hexa8.addNode(10, 10, 0, 8)
hexa8.addVolume([1, 2, 3, 4, 5, 6, 7, 8])
hexa8
obj = doc.addObject("Fem::FemMeshObject","hexa8")
obj.FemMesh = hexa8
obj.Placement.Base = (60,50,0)
obj.ViewObject.DisplayMode = "Faces, Wireframe & Nodes"
hexa8.write(path + 'hexa8' + filetype)
# 20 node Hexahedron --> hexa20 #################
hexa20 = Fem.FemMesh()
hexa20.addNode( 0, 10, 10, 1)
hexa20.addNode( 0, 0, 10, 2)
hexa20.addNode(10, 0, 10, 3)
hexa20.addNode(10, 10, 10, 4)
hexa20.addNode( 0, 10, 0, 5)
hexa20.addNode( 0, 0, 0, 6)
hexa20.addNode(10, 0, 0, 7)
hexa20.addNode(10, 10, 0, 8)
hexa20.addNode( 0, 5, 10, 9)
hexa20.addNode( 5, 0, 10, 10)
hexa20.addNode(10, 5, 10, 11)
hexa20.addNode( 5, 10, 10, 12)
hexa20.addNode( 0, 5, 0, 13)
hexa20.addNode( 5, 0, 0, 14)
hexa20.addNode(10, 5, 0, 15)
hexa20.addNode( 5, 10, 0, 16)
hexa20.addNode( 0, 10, 5, 17)
hexa20.addNode( 0, 0, 5, 18)
hexa20.addNode(10, 0, 5, 19)
hexa20.addNode(10, 10, 5, 20)
hexa20.addVolume([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
hexa20
obj = doc.addObject("Fem::FemMeshObject","hexa20")
obj.FemMesh = hexa20
obj.Placement.Base = (90,50,0)
obj.ViewObject.DisplayMode = "Faces, Wireframe & Nodes"
hexa20.write(path + 'hexa20' + filetype)
# 6 node pentahedron --> penta6 #################
penta6 = Fem.FemMesh()
penta6.addNode(10,10,10, 1)
penta6.addNode( 0, 0,10, 2)
penta6.addNode(20, 0,10, 3)
penta6.addNode(10,10, 0, 4)
penta6.addNode( 0, 0, 0, 5)
penta6.addNode(20, 0, 0, 6)
penta6.addVolume([1, 2, 3, 4, 5, 6])
penta6
obj = doc.addObject("Fem::FemMeshObject","penta6")
obj.FemMesh = penta6
obj.Placement.Base = (0,0,0)
obj.ViewObject.DisplayMode = "Faces, Wireframe & Nodes"
penta6.write(path + 'penta6' + filetype)
# 15 node pentahedron --> penta15 ###############
penta15 = Fem.FemMesh()
penta15.addNode(10,10,10, 1)
penta15.addNode( 0, 0,10, 2)
penta15.addNode(20, 0,10, 3)
penta15.addNode(10,10, 0, 4)
penta15.addNode( 0, 0, 0, 5)
penta15.addNode(20, 0, 0, 6)
penta15.addNode( 5, 5,10, 7)
penta15.addNode(10, 0,10, 8)
penta15.addNode(15, 5,10, 9)
penta15.addNode( 5, 5, 0,10)
penta15.addNode(10, 0, 0,11)
penta15.addNode(15, 5, 0,12)
penta15.addNode(10,10, 5,13)
penta15.addNode( 0, 0, 5,14)
penta15.addNode(20, 0, 5,15)
penta15.addVolume([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
penta15
obj = doc.addObject("Fem::FemMeshObject","penta15")
obj.FemMesh = penta15
obj.Placement.Base = (40,0,0)
obj.ViewObject.DisplayMode = "Faces, Wireframe & Nodes"
penta15.write(path + 'penta15' + filetype)
# 5 node pyramid --> pyra5 ######################
pyra5 = Fem.FemMesh()
pyra5.addNode( 0,20, 0, 1)
pyra5.addNode(20,20, 0, 2)
pyra5.addNode(20, 0, 0, 3)
pyra5.addNode( 0, 0, 0, 4)
pyra5.addNode(10,10,10, 5)
pyra5.addVolume([1, 2, 3, 4, 5])
pyra5
obj = doc.addObject("Fem::FemMeshObject","pyra5")
obj.FemMesh = pyra5
obj.Placement.Base = (80,0,0)
obj.ViewObject.DisplayMode = "Faces, Wireframe & Nodes"
pyra5.write(path + 'pyra5' + filetype)
# 13 node pyramid --> pyra13 ####################
pyra13 = Fem.FemMesh()
pyra13.addNode( 0,20, 0, 1)
pyra13.addNode(20,20, 0, 2)
pyra13.addNode(20, 0, 0, 3)
pyra13.addNode( 0, 0, 0, 4)
pyra13.addNode(10,10,10, 5)
pyra13.addNode(10,20, 0, 6)
pyra13.addNode(20,10, 0, 7)
pyra13.addNode(10, 0, 0, 8)
pyra13.addNode( 0,10, 0, 9)
pyra13.addNode( 5,15, 5,10)
pyra13.addNode(15,15, 5,11)
pyra13.addNode(15, 5, 5,12)
pyra5 = Fem.FemMesh()
pyra13.addNode( 5, 5, 5,13)
pyra13.addVolume([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13])
pyra13
obj = doc.addObject("Fem::FemMeshObject","pyra13")
obj.FemMesh = pyra13
obj.Placement.Base = (120,0,0)
obj.ViewObject.DisplayMode = "Faces, Wireframe & Nodes"
pyra13.write(path + 'pyra13' + filetype)