【发布时间】:2016-02-20 23:26:59
【问题描述】:
我正在尝试制作一个脚本,读取 .txt(其中存储 .obj 名称),然后在搅拌机中制作 costum - 按钮。如果单击其中一个按钮,它应该会根据 txt 中的名称打开文件。
它可以工作,但只会打开列表中的最后一个 obj。
我该如何解决?我想让这个工作!
到目前为止我的代码:
import bpy
class directoryPan(bpy.types.Panel):
bl_space_type = "VIEW_3D"
bl_region_type = "TOOLS"
bl_label = "Biblio"
bl_category = "Import" #
def draw(self, context):
self.layout.row().label("Import :")
self.layout.operator("import.stuff", icon ='FILE')
obj_list = []
biblio_one = open("C:\\Users\\Jasmin\\Desktop\\liste.txt")
for line in biblio_one:
obj_list.append(line.rstrip())
biblio_one.close()
print("start")
for i in obj_list:
newbutton = i
import_obj = "import." + i
self.layout.operator(import_obj, icon ='FILE')
######
class ScanFileOperator(bpy.types.Operator):
bl_idname = import_obj
bl_label = newbutton
def execute(self, context):
pfad = "C:\\Users\\Jasmin\\Desktop\\" + newbutton+ ".obj" ###
bpy.ops.import_scene.obj(filepath= pfad, filter_glob="*.obj;*.mtl", use_ngons=True, use_edges=True, use_smooth_groups=True, use_split_objects=True, use_split_groups=True, use_groups_as_vgroups=False, use_image_search=True, split_mode='ON', global_clamp_size=0, axis_forward='-Z', axis_up='Y')
bpy.ops.object.origin_set(type = 'GEOMETRY_ORIGIN')
return {'FINISH'}
def register():
bpy.utils.register_module(__name__)
def unregister():
bpy.utils.unregister_module(__name__)
if __name__ == "__main__":
register()
我知道问题出在 newbutton 上,因为在绘制按钮的循环之后,它具有列表中最后一项的值。但我不知道如何解决它。
【问题讨论】:
标签: python object for-loop import blender