通过线程调用blender的函数bpy.ops.import_mesh.stl(filepath = output_file)
Posted
技术标签:
【中文标题】通过线程调用blender的函数bpy.ops.import_mesh.stl(filepath = output_file)【英文标题】:Call blender's function bpy.ops.import_mesh.stl(filepath = output_file) through a thread 【发布时间】:2017-09-28 08:20:46 【问题描述】:我尝试使用 bpy.ops.import_mesh.stl(filepath = output_file) 通过线程导入 stl 网格,但搅拌机随机崩溃。我想不支持通过线程导入网格(线程安全),所以你能建议一个更好的方法来实现这个任务吗?
这里是代码
def processData(Data, objcounter):
SaveDataIntoSpecificFormat("File.data", Data)
os.system("/externalexe FileData -o File%d.stl" %d objcounter)
bpy.ops.import_mesh.stl(filepath = "File%d.stl" %d objcounter)
for objcounter in range(len(current_list_objs)):
t = threading.Thread(target=processData, args=(current_list_objs[objcounter], objcounter,))
t.start()
【问题讨论】:
您需要在 %File%d.stl" %d objcounter
应该是 File%d.stl" % objcounter
之后删除 d 不确定这是一个解决方案,但在线程中抛出异常没有帮助。
【参考方案1】:
您似乎对所有线程都使用相同的filename FileData
。
使用objcounter
使其独一无二。
【讨论】:
以上是关于通过线程调用blender的函数bpy.ops.import_mesh.stl(filepath = output_file)的主要内容,如果未能解决你的问题,请参考以下文章
Blender源码分析之创建区域对象UI_block_begin函数
是否有任何 linux 函数调用通过传递线程 ID 来获取特定线程的 CPU 使用率?