本文整理汇总了Python中mesh.Mesh.nelems方法的典型用法代码示例。如果您正苦于以下问题:Python Mesh.nelems方法的具体用法?Python Mesh.nelems怎么用?Python Mesh.nelems使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mesh.Mesh
的用法示例。
在下文中一共展示了Mesh.nelems方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: convert2VPD
# 需要导入模块: from mesh import Mesh [as 别名]
# 或者: from mesh.Mesh import nelems [as 别名]
def convert2VPD(M,clean=False):
"""Convert pyFormex data to vtkPolyData.
Convert a pyFormex Mesh or Coords object into vtkPolyData.
This is limited to vertices, lines, and polygons.
Lines should already be ordered (with connectedLineElems for instance).
Parameters:
- `M`: a Mesh or Coords type. If M is a Coords type it will be saved as
VERTS. Else...
- `clean`: if True, the resulting vtkdata will be cleaned by calling
cleanVPD.
Returns a vtkPolyData.
"""
from vtk import vtkPolyData,vtkPoints,vtkIdTypeArray,vtkCellArray
print('STARTING CONVERSION FOR DATA OF TYPE %s '%type(M))
if type(M) == Coords:
M = Mesh(M,arange(M.ncoords()))
Nelems = M.nelems() # Number of elements
Ncxel = M.nplex() # # Number of nodes per element
# create a vtkPolyData variable
vpd=vtkPolyData()
# creating vtk coords
pts = vtkPoints()
ntype=gnat(pts.GetDataType())
coordsv = n2v(asarray(M.coords,order='C',dtype=ntype),deep=1) #.copy() # deepcopy array conversion for C like array of vtk, it is necessary to avoid memry data loss
pts.SetNumberOfPoints(M.ncoords())
pts.SetData(coordsv)
vpd.SetPoints(pts)
# create vtk connectivity
elms = vtkIdTypeArray()
ntype=gnat(vtkIdTypeArray().GetDataType())
elmsv = concatenate([Ncxel*ones(Nelems).reshape(-1,1),M.elems],axis=1)
elmsv = n2v(asarray(elmsv,order='C',dtype=ntype),deep=1) #.copy() # deepcopy array conversion for C like array of vtk, it is necessary to avoid memry data loss
elms.DeepCopy(elmsv)
# set vtk Cell data
datav = vtkCellArray()
datav.SetCells(Nelems,elms)
if Ncxel == 1:
try:
print("setting VERTS for data with %s maximum number of point for cell "%Ncxel)
vpd.SetVerts(datav)
except:
raise ValueError,"Error in saving VERTS"
elif Ncxel == 2:
try:
print ("setting LINES for data with %s maximum number of point for cell "%Ncxel)
vpd.SetLines(datav)
except:
raise ValueError,"Error in saving LINES"
else:
try:
print ("setting POLYS for data with %s maximum number of point for cell "%Ncxel)
vpd.SetPolys(datav)
except:
raise ValueError,"Error in saving POLYS"
vpd.Update()
if clean:
vpd=cleanVPD(vpd)
return vpd