本文整理汇总了Python中mesh.Mesh.from_data方法的典型用法代码示例。如果您正苦于以下问题:Python Mesh.from_data方法的具体用法?Python Mesh.from_data怎么用?Python Mesh.from_data使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mesh.Mesh
的用法示例。
在下文中一共展示了Mesh.from_data方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: gen_mesh_from_voxels_mc
# 需要导入模块: from mesh import Mesh [as 别名]
# 或者: from mesh.Mesh import from_data [as 别名]
def gen_mesh_from_voxels_mc(voxels, voxelsize):
import scipy.spatial as scsp
tri = marching_cubes(voxels, voxelsize)
nel, nnd, dim = tri.shape
coors = tri.reshape((nel * nnd, dim))
tree = scsp.ckdtree.cKDTree(coors)
eps = nm.max(coors.max(axis=0) - coors.min(axis=0)) *1e-6
dist, idx = tree.query(coors, k=24, distance_upper_bound=eps)
uniq = set([])
for ii in idx:
ukey = ii[ii < tree.n]
ukey.sort()
uniq.add(tuple(ukey))
ntri = nm.ones((nel * nnd,), dtype=nm.int32)
nnod = len(uniq)
ncoors = nm.zeros((nnod, 3), dtype=nm.float64)
for ii, idxs in enumerate(uniq):
ntri[nm.array(idxs)] = ii
ncoors[ii] = coors[idxs[0]]
mesh = Mesh.from_data('voxel_mc_data',
ncoors, nm.ones((nnod,), dtype=nm.int32),
{0: nm.ascontiguousarray(ntri.reshape((nel, nnd)))},
{0: nm.ones((nel,), dtype=nm.int32)},
{0: '%d_%d' % (2, 3)})
return mesh
示例2: gen_mesh_from_voxels_mc
# 需要导入模块: from mesh import Mesh [as 别名]
# 或者: from mesh.Mesh import from_data [as 别名]
def gen_mesh_from_voxels_mc(voxels, voxelsize,
gmsh3d=False, scale_factor=0.25):
import scipy.spatial as scsp
tri = marching_cubes(voxels, voxelsize)
nel, nnd, dim = tri.shape
coors = tri.reshape((nel * nnd, dim))
tree = scsp.ckdtree.cKDTree(coors)
eps = nm.max(coors.max(axis=0) - coors.min(axis=0)) *1e-6
dist, idx = tree.query(coors, k=24, distance_upper_bound=eps)
uniq = set([])
for ii in idx:
ukey = ii[ii < tree.n]
ukey.sort()
uniq.add(tuple(ukey))
ntri = nm.ones((nel * nnd,), dtype=nm.int32)
nnod = len(uniq)
ncoors = nm.zeros((nnod, 3), dtype=nm.float64)
for ii, idxs in enumerate(uniq):
ntri[nm.array(idxs)] = ii
ncoors[ii] = coors[idxs[0]]
mesh = Mesh.from_data('voxel_mc_data',
ncoors, nm.ones((nnod,), dtype=nm.int32),
{0: nm.ascontiguousarray(ntri.reshape((nel, nnd)))},
{0: nm.ones((nel,), dtype=nm.int32)},
{0: '%d_%d' % (2, 3)})
if gmsh3d:
from vtk2stl import vtk2stl
import tempfile
import os
auxfile = os.path.join(tempfile.gettempdir(), 'dicom2fem_aux')
vtk_fn = auxfile + '_surfmc.vtk'
stl_fn = auxfile + '_surfmc.stl'
geo_fn = auxfile + '_surf2vol.geo'
mesh_fn = auxfile + '_volmv.mesh'
mesh.write(vtk_fn)
vtk2stl(vtk_fn, stl_fn)
geofile = open(geo_fn, 'wt')
geofile.write(gmsh3d_geo.replace('__INFILE__',
stl_fn).replace('__SCFACTOR__',
str(scale_factor)))
geofile.close()
os.system('gmsh -3 -format mesh -o %s %s' % (mesh_fn, geo_fn))
mesh = Mesh.from_file(mesh_fn)
return mesh
示例3: gen_mesh_from_voxels
# 需要导入模块: from mesh import Mesh [as 别名]
# 或者: from mesh.Mesh import from_data [as 别名]
#.........这里部分代码省略.........
ix, iy, iz = vxidxs
if mtype == 'v':
elems = nm.array([nodeid[ix,iy,iz],
nodeid[ix + 1,iy,iz],
nodeid[ix + 1,iy + 1,iz],
nodeid[ix,iy + 1,iz],
nodeid[ix,iy,iz + 1],
nodeid[ix + 1,iy,iz + 1],
nodeid[ix + 1,iy + 1,iz + 1],
nodeid[ix,iy + 1,iz + 1]]).transpose()
edim = 3
else:
fc = nm.zeros(tuple(nddims) + (4,), dtype=nm.int32)
# x
fc[ix,iy,iz,:] = nm.array([nodeid[ix,iy,iz],
nodeid[ix,iy,iz + 1],
nodeid[ix,iy + 1,iz + 1],
nodeid[ix,iy + 1,iz]]).transpose()
fc[ix + 1,iy,iz,:] = nm.array([nodeid[ix + 1,iy,iz],
nodeid[ix + 1,iy + 1,iz],
nodeid[ix + 1,iy + 1,iz + 1],
nodeid[ix + 1,iy,iz + 1]]).transpose()
nn[ix,iy,iz] = 1
nn[ix + 1,iy,iz] += 1
idx = nm.where(nn == 1)
felems.append(fc[idx])
# y
fc.fill(0)
nn.fill(0)
fc[ix,iy,iz,:] = nm.array([nodeid[ix,iy,iz],
nodeid[ix + 1,iy,iz],
nodeid[ix + 1,iy,iz + 1],
nodeid[ix,iy,iz + 1]]).transpose()
fc[ix,iy + 1,iz,:] = nm.array([nodeid[ix,iy + 1,iz],
nodeid[ix,iy + 1,iz + 1],
nodeid[ix + 1,iy + 1,iz + 1],
nodeid[ix + 1,iy + 1,iz]]).transpose()
nn[ix,iy,iz] = 1
nn[ix,iy + 1,iz] += 1
idx = nm.where(nn == 1)
felems.append(fc[idx])
# z
fc.fill(0)
nn.fill(0)
fc[ix,iy,iz,:] = nm.array([nodeid[ix,iy,iz],
nodeid[ix,iy + 1,iz],
nodeid[ix + 1,iy + 1,iz],
nodeid[ix + 1,iy,iz]]).transpose()
fc[ix,iy,iz + 1,:] = nm.array([nodeid[ix,iy,iz + 1],
nodeid[ix + 1,iy,iz + 1],\
nodeid[ix + 1,iy + 1,iz + 1],
nodeid[ix,iy + 1,iz + 1]]).transpose()
nn[ix,iy,iz] = 1
nn[ix,iy,iz + 1] += 1
idx = nm.where(nn == 1)
felems.append(fc[idx])
elems = nm.concatenate(felems)
edim = 2
# reduce inner nodes
if mtype == 's':
aux = nm.zeros((nnod,), dtype=nm.int32)
for ii in elems.T:
aux[ii] = 1
idx = nm.where(aux)
aux.fill(0)
nnod = idx[0].shape[0]
aux[idx] = range(nnod)
coors = coors[idx]
for ii in range(elems.shape[1]):
elems[:,ii] = aux[elems[:,ii]]
if etype == 't':
elems = elems_q2t(elems)
nel = elems.shape[0]
nelnd = elems.shape[1]
mesh = Mesh.from_data('voxel_data',
coors, nm.ones((nnod,), dtype=nm.int32),
{0: nm.ascontiguousarray(elems)},
{0: nm.ones((nel,), dtype=nm.int32)},
{0: '%d_%d' % (edim, nelnd)})
return mesh