From fd31436897f49ddf6e51a059add2e74361fbfdd8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 17 Jul 2010 18:08:14 +0000 Subject: spelling correction: alredy --> already --- release/scripts/io/export_3ds.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts/io/export_3ds.py') diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 4fd889c75c6..6b776c77a7a 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1006,7 +1006,7 @@ def save_3ds(filename, context): mat = mat_ls[mat_index] if mat: mat_name = mat.name else: mat_name = None - # else there alredy set to none + # else there already set to none img = uf.image # img = f.image -- cgit v1.2.3 From 10b124ae39c4cdbff6d6191177c3f77b2bc3d802 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 26 Jul 2010 18:32:22 +0000 Subject: [#23035] Obj export crash check for an active object before switching modes. --- release/scripts/io/export_3ds.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'release/scripts/io/export_3ds.py') diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 6b776c77a7a..910d462a9f9 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -941,7 +941,8 @@ def save_3ds(filename, context): sce = context.scene # sce= bpy.data.scenes.active - bpy.ops.object.mode_set(mode='OBJECT') + if context.object: + bpy.ops.object.mode_set(mode='OBJECT') # Initialize the main chunk (primary): primary = _3ds_chunk(PRIMARY) -- cgit v1.2.3 From 5b345524ea4aed30aa2fc9ef735ccae82bdffeae Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Mon, 2 Aug 2010 02:55:12 +0000 Subject: RNA Types metaclass registration See mailing list posts for details [1][2][3] Addons still need to be fixed; Campbell said he'd do it today. See any of the py files (outside netrender) in this commit for how to do it (it's rather simple). [1] http://lists.blender.org/pipermail/bf-committers/2010-February/026328.html [2] http://lists.blender.org/pipermail/bf-committers/2010-August/028311.html [3] http://lists.blender.org/pipermail/bf-committers/2010-August/028321.html --- release/scripts/io/export_3ds.py | 3 --- 1 file changed, 3 deletions(-) (limited to 'release/scripts/io/export_3ds.py') diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 910d462a9f9..22b842b2905 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1138,7 +1138,6 @@ class Export3DS(bpy.types.Operator): def poll(self, context): # Poll isnt working yet return context.active_object != None - # Add to a menu def menu_func(self, context): default_path = os.path.splitext(bpy.data.filepath)[0] + ".3ds" @@ -1146,11 +1145,9 @@ def menu_func(self, context): def register(): - bpy.types.register(Export3DS) bpy.types.INFO_MT_file_export.append(menu_func) def unregister(): - bpy.types.unregister(Export3DS) bpy.types.INFO_MT_file_export.remove(menu_func) if __name__ == "__main__": -- cgit v1.2.3 From 163f6055d26383b7fa11df00da09ef63efb8cb6c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 5 Aug 2010 16:05:30 +0000 Subject: bugfix [#23182] Using self.report() inside poll() gives crash poll() function is now a static method in python, this is more correct, matching C where the operator is not created to run poll. def poll(self, context): ... is now... @staticmethod def poll(context): ... Pythons way of doing static methods is a bit odd but cant be helped :| This does make subclassing poll functions with COMPAT_ENGINES break, so had to modify quite a few scripts for this. --- release/scripts/io/export_3ds.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'release/scripts/io/export_3ds.py') diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 22b842b2905..0b71ec93a99 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1135,7 +1135,8 @@ class Export3DS(bpy.types.Operator): wm.add_fileselect(self) return {'RUNNING_MODAL'} - def poll(self, context): # Poll isnt working yet + @staticmethod + def poll(context): # Poll isnt working yet return context.active_object != None # Add to a menu -- cgit v1.2.3 From 30d180ff0d18217ed860afb3f63a38d536b41790 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 6 Aug 2010 01:40:54 +0000 Subject: bugfix [#23194] export UVs miss the extension file also made all other exporters do this. Made some internal changes. - moved path functions from bpy.utils to bpy.path (similar to os.path) - added functions... bpy.path.ensure_ext(path, ".ext", case_sensitive=False) # simple function to ensure the extension is set. bpy.path.resolve_ncase(path) # useful for importing scenes made on windows where the path case doesnt match the files. --- release/scripts/io/export_3ds.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'release/scripts/io/export_3ds.py') diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 0b71ec93a99..702edc6ae70 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -922,7 +922,7 @@ def make_kf_obj_node(obj, name_to_id): """ # import BPyMessages -def save_3ds(filename, context): +def write(filename, context): '''Save the Blender scene to a 3ds file.''' # Time the export @@ -1107,12 +1107,7 @@ def save_3ds(filename, context): #primary.dump() -# if __name__=='__main__': -# if struct: -# Blender.Window.FileSelector(save_3ds, "Export 3DS", Blender.sys.makename(ext='.3ds')) -# else: -# Blender.Draw.PupMenu("Error%t|This script requires a full python installation") -# # save_3ds('/test_b.3ds') +# # write('/test_b.3ds') from bpy.props import * class Export3DS(bpy.types.Operator): '''Export to 3DS file format (.3ds)''' @@ -1127,7 +1122,10 @@ class Export3DS(bpy.types.Operator): check_existing = BoolProperty(name="Check Existing", description="Check and warn on overwriting existing files", default=True, options={'HIDDEN'}) def execute(self, context): - save_3ds(self.properties.filepath, context) + filepath = self.properties.filepath + filepath = bpy.path.ensure_ext(filepath, ".3ds") + + write(filepath, context) return {'FINISHED'} def invoke(self, context, event): -- cgit v1.2.3 From a6f13f9d7bfef7020d43cb0a8058753e6d7a128d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 9 Aug 2010 01:37:09 +0000 Subject: poll() as a python '@staticmethod' was too limiting and didnt allow useful base class poll functions in many cases. now rna functions that dont have a 'self' are automatically assumed '@classmethods'. de-duplicated poll functions and made some minor tweaks too. --- release/scripts/io/export_3ds.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'release/scripts/io/export_3ds.py') diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 702edc6ae70..2a8b43c4e84 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1133,8 +1133,8 @@ class Export3DS(bpy.types.Operator): wm.add_fileselect(self) return {'RUNNING_MODAL'} - @staticmethod - def poll(context): # Poll isnt working yet + @classmethod + def poll(cls, context): # Poll isnt working yet return context.active_object != None # Add to a menu -- cgit v1.2.3 From f662c0de0521d01ff546d46d5e9fb8a0f64c1c95 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 13 Aug 2010 06:45:33 +0000 Subject: exporters now set the filepath in the invoke() method rather then the menu drawing function. --- release/scripts/io/export_3ds.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'release/scripts/io/export_3ds.py') diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 2a8b43c4e84..83c9defd6ab 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1114,13 +1114,13 @@ class Export3DS(bpy.types.Operator): bl_idname = "export.autodesk_3ds" bl_label = 'Export 3DS' - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - filepath = StringProperty(name="File Path", description="Filepath used for exporting the 3DS file", maxlen= 1024, default= "") check_existing = BoolProperty(name="Check Existing", description="Check and warn on overwriting existing files", default=True, options={'HIDDEN'}) + @classmethod + def poll(cls, context): # Poll isnt working yet + return context.active_object != None + def execute(self, context): filepath = self.properties.filepath filepath = bpy.path.ensure_ext(filepath, ".3ds") @@ -1129,23 +1129,23 @@ class Export3DS(bpy.types.Operator): return {'FINISHED'} def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self) + import os + if not self.properties.is_property_set("filepath"): + self.properties.filepath = os.path.splitext(bpy.data.filepath)[0] + ".3ds" + + context.manager.add_fileselect(self) return {'RUNNING_MODAL'} - @classmethod - def poll(cls, context): # Poll isnt working yet - return context.active_object != None # Add to a menu def menu_func(self, context): - default_path = os.path.splitext(bpy.data.filepath)[0] + ".3ds" - self.layout.operator(Export3DS.bl_idname, text="3D Studio (.3ds)").filepath = default_path + self.layout.operator(Export3DS.bl_idname, text="3D Studio (.3ds)") def register(): bpy.types.INFO_MT_file_export.append(menu_func) + def unregister(): bpy.types.INFO_MT_file_export.remove(menu_func) -- cgit v1.2.3 From 9784a1169d4d3c13b8d0b6747cea661ad1df1748 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 18 Aug 2010 03:42:26 +0000 Subject: rna naming: verts -> vertices --- release/scripts/io/export_3ds.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'release/scripts/io/export_3ds.py') diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 83c9defd6ab..4a5521bd9e9 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -564,14 +564,14 @@ def extract_triangles(mesh): img = None for i, face in enumerate(mesh.faces): - f_v = face.verts + f_v = face.vertices # f_v = face.v uf = mesh.active_uv_texture.data[i] if do_uv else None if do_uv: f_uv = uf.uv - # f_uv = (uf.uv1, uf.uv2, uf.uv3, uf.uv4) if face.verts[3] else (uf.uv1, uf.uv2, uf.uv3) + # f_uv = (uf.uv1, uf.uv2, uf.uv3, uf.uv4) if face.vertices[3] else (uf.uv1, uf.uv2, uf.uv3) # f_uv = face.uv img = uf.image if uf else None # img = face.image @@ -761,18 +761,18 @@ def make_mesh_chunk(mesh, materialDict): if len(mesh.uv_textures): # if mesh.faceUV: # Remove the face UVs and convert it to vertex UV: - vert_array, uv_array, tri_list = remove_face_uv(mesh.verts, tri_list) + vert_array, uv_array, tri_list = remove_face_uv(mesh.vertices, tri_list) else: # Add the vertices to the vertex array: vert_array = _3ds_array() - for vert in mesh.verts: + for vert in mesh.vertices: vert_array.add(_3ds_point_3d(vert.co)) # If the mesh has vertex UVs, create an array of UVs: if len(mesh.sticky): # if mesh.vertexUV: uv_array = _3ds_array() for uv in mesh.sticky: -# for vert in mesh.verts: +# for vert in mesh.vertices: uv_array.add(_3ds_point_uv(uv.co)) # uv_array.add(_3ds_point_uv(vert.uvco)) else: @@ -1065,7 +1065,7 @@ def write(filename, context): ''' if not blender_mesh.users: bpy.data.meshes.remove(blender_mesh) -# blender_mesh.verts = None +# blender_mesh.vertices = None i+=i -- cgit v1.2.3