def fs_callback(filename): global EXPORT_DIR, OBJS, CONFIRM_OVERWRITE, VERBOSE if not filename.endswith('.ac'): filename = '%s.ac' % filename if bsys.exists(filename) and CONFIRM_OVERWRITE: if Blender.Draw.PupMenu('OVERWRITE?%t|File exists') != 1: return Blender.Window.WaitCursor(1) starttime = bsys.time() export_dir = bsys.dirname(filename) if export_dir != EXPORT_DIR: EXPORT_DIR = export_dir update_RegistryInfo() try: file = open(filename, 'w') except IOError, (errno, strerror): error = "IOError #%s: %s" % (errno, strerror) REPORT_DATA['errors'].append("Saving failed - %s." % error) error_msg = "Couldn't save file!%%t|%s" % error Blender.Draw.PupMenu(error_msg) return
def __init__(self, filename): global errmsg self.scene = Scene.GetCurrent() self.i = 0 errmsg = '' self.importdir = bsys.dirname(filename) try: file = open(filename, 'r') except IOError, (errno, strerror): errmsg = "IOError #%s: %s" % (errno, strerror) Blender.Draw.PupMenu('ERROR: %s' % errmsg) inform(errmsg) return None
def export_xsi(filename): global OBJ, MAT, FD, EXPORT_DIR # safety check if filename.find('.xsi', -4) <= 0: print "XSI not found" filename += '.xsi' export_dir = bsys.dirname(filename) if export_dir != EXPORT_DIR: EXPORT_DIR = export_dir # open our output FD = open(filename, 'w') # get the selected objects, otherwise get them all #OBJ = Blender.Object.GetSelected() #if not OBJ: OBJ = list(Blender.Scene.GetCurrent().objects) #Blender.Object.Get() # we need some objects, if none specified stop if not OBJ: return # if any exist, grab the materials MAT = Blender.Material.Get() # output the header data do_header() # output the materials used by the selected objects. do_materiallibrary() # we punch out the models, that is, the meshes themselves do_models() # finally close our file FD.close()
def fs_callback(filename): global IMPORT_DIR, EXPORT_DIR, import_dir, tipo tipo = '' if not filename.endswith('.fef'): filename = '%s.fef' % filename Blender.Window.WaitCursor(1) starttime = bsys.time() import_dir = bsys.dirname(filename) if import_dir != IMPORT_DIR: IMPORT_DIR = import_dir update_RegistryInfo() file = open(filename, "r") header = file.readline() if header != '//Face and Hair Exchange File (c)2010 by Skunk\n': print "Wrong file!" Blender.Draw.PupMenu('Wrong File!') file.close() return if not load_data(file): Blender.Draw.PupMenu('Error in input file!') file.close() return if not import2blender(): Blender.Draw.PupMenu('Error in input file!') file.close() return file.close() endtime = bsys.time() - starttime print "Data imported in %.3f seconds." % endtime Blender.Window.WaitCursor(0) return
def fs_dir_callback(pathname): global CFGKEY, INDEX pathname = bsys.dirname(pathname) datatypes = CFGKEY.sorteddata datatypes[str][INDEX][1] = pathname
def fs_callback(filename): global EXPORT_DIR if not filename.endswith('.fef'): filename = '%s.fef' % filename if bsys.exists(filename): if Blender.Draw.PupMenu('OVERWRITE?%t|File exists') != 1: return editmode = Blender.Window.EditMode() # are we in edit mode? If so ... if editmode: Blender.Window.EditMode(0) # leave edit mode before getting the mesh starttime = bsys.time() export_dir = bsys.dirname(filename) if export_dir != EXPORT_DIR: EXPORT_DIR = export_dir update_RegistryInfo() objs_count = 0 for o in objs: objs_count += 1 #Order parts to assing textures starting from LEFT_EYE grp_mat = ["F00", "F01", "F02", "F03", "F04", "F05", "F06"] #Ordered Parts to meet order in faces grp_names = ["F00", "F01", "F02", "F03", "F04", "F05", "F06"] name = "F00 %x0|F01 %x1|F02 %x2|F03 %x3|F04 %x4|F05 %x5|F06 %x6" new_names = ["F00", "F01", "F02", "F03", "F04", "F05", "F06"] #asign array names tmp_name = '' #check for correct names for o in objs: if o.getType() == "Empty": if o.getName() not in (grp_names): tmp_name = "Part Name %s is wrong, Please Select the one that matches. " % o.getName( ) tmp_name += "%t|" tmp_name += name result = Blender.Draw.PupMenu(tmp_name, 10) if result != -1: o.setName(new_names[result]) else: return del new_names del name del tmp_name Blender.Window.WaitCursor(1) for o in objs: g = grp() g.name = o.getName() if load_objs(o, g) == -1: return groups.append(g) if len(mat_list) > 51: Blender.Draw.PupMenu( 'ERROR:%t| Cant use more than 51 Textures,|%l|Please, fix it before export. ' ) return groups_ordered_mat = [] for order in range(len(grp_mat)): for gr in groups: if gr.name == grp_mat[order]: groups_ordered_mat.append(gr) break tipo = tp.getName() tipo = tipo.split('-')[1] if tipo[0] == "F": tex_id = 0x2752 else: tex_id = 0x2753 for gr in groups_ordered_mat: gr.obj_list.sort(key=lambda obj: obj.name) for o in gr.obj_list: for m in mat_list: if o.tex == m.texture: if m.newname == '': m.newname = "%04x" % tex_id tex_id += 1 o.tex = m.newname break mat_list.sort(key=lambda obj: obj.newname) groups_ordered = [] for order in range(len(grp_names)): for gr in groups_ordered_mat: if gr.name == grp_names[order]: groups_ordered.append(gr) break del groups_ordered_mat file = open(filename, "w") file.write("//Face and Hair Exchange File (c)2010 by Skunk\n\n") tipo = tp.getName() tipo = tipo.split('-')[1] file.write("Type = \"%s\"\n\n" % tipo.replace("\n", "")) file.write("Materials = %d\n\n" % len(mat_list)) for m in mat_list: file.write("%s \"%s\"\n" % (m.newname, m.texture)) o_count = 0 for gr_o in groups_ordered: if gr_o.obj_count > 0: o_count += 1 file.write("\nMeshes = %d\n\n" % o_count) for gr_o in groups_ordered: save_file(file, gr_o) file.close() endtime = bsys.time() - starttime print "Data exported in %.3f seconds." % endtime Blender.Window.WaitCursor(0) return
# # This script renders scene from all cameras and stores # result to <path-of-blend-file>/render # # Copyright (C) 2009 Sergey I. Sharybin <*****@*****.**> # # This script is covered by GNU General Public License v2 and higher # import Blender, os from Blender import sys, Scene from Blender.Scene import Render from stat import * path = sys.dirname(Blender.Get("filename")) + sys.dirsep + "render" # Check existment of destination directory if not sys.exists(path): os.mkdir(path) mode = os.stat(path)[ST_MODE] if S_ISDIR(mode): scene = Scene.GetCurrent() context = scene.getRenderingContext() savedDisplayMode = context.displayMode context.displayMode = 2 context.setRenderPath(path)