python vtk scaler_使用python和VTK进行内存管理

我写了一个相当笨拙的python程序,它创建了一个特定几何体的单元单元,并对其进行了复制,这样我就得到了一个3x3x3的单元单元单元数组。结果保存为.stl。目标是直接创建这些结构,而不是使用CAD。在

我的问题是计算时间很烦人(8x8x8x8需要大约2分钟,这比我通常需要的要小)。最大的问题是,10x10x10甚至不可能。VTK立即抛出一个错误“无法分配[large number]个大小为8字节的元素”。这使我认为我的内存管理不足(不存在)。在

我读到了关于{{CD1>},但似乎只能找到C++的解释。如何在python中正确使用vtkSmartPointer?我应该补充说,我对C++没有任何经验。在

由于程序的大小,MWE是不可能的。以下是我的算法管道的一个简短示例:import vtk

appendFilter = vtk.vtkAppendPolyData()

# create all 12 struts and combine them into one object

for i in range(1, 13, 1):

tf = create_strut(i, node_dist, amp, d, sides, mode, render=False) # method that creates my unit cell out of 12 struts, parameters are irrelevant

appendFilter.AddInputData(tf.GetOutput())

appendFilter.Update()

# clean up poly data

cleanFilter = vtk.vtkCleanPolyData()

cleanFilter.SetInputConnection(appendFilter.GetOutputPort())

cleanFilter.Update()

# cut the cell to its right size

planes = plane_collection(node_dist) # method that generates 6 planes

clip = vtk.vtkClipClosedSurface()

clip.SetInputData(cleanFilter.GetOutput())

clip.SetClippingPlanes(planes)

clip.Update()

# assemble an array from the unit cell

array = duplicate_cells(clip, xyz[0], xyz[1], xyz[2], node_dist)

# save as .stl

data = array.GetOutputPort()

stlwriter = vtk.vtkSTLWriter()

stlwriter.SetInputConnection(data)

stlwriter.SetFileName("Z:/example.stl")

stlwriter.Update()

stlwriter.Write()

这应该说明我使用了很多过滤器,从不关心删除它们或任何东西。清理记忆的正确/首选方法是什么?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值