通过线程调用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函数

通过 Unity 中的后台线程调用主线程中的函数

是否有任何 linux 函数调用通过传递线程 ID 来获取特定线程的 CPU 使用率?

Blender源码分析之创建区域对象

(20)Blender源码分析之闪屏窗口的菜单python代码draw的属性和函数对应

(20)Blender源码分析之闪屏窗口的菜单python代码draw的属性和函数对应