From c8233ef40526e8d1ee1c0ee935ce4b2d4c148eb3 Mon Sep 17 00:00:00 2001 From: Folkert de Vries <folkert@folkertdev.nl> Date: Sat, 13 Aug 2016 20:16:36 +0200 Subject: [PATCH] Fix T46150: FreeStyle: SVG Export won't fill Contours The issue was a change in defaults introduced in https://developer.blender.org/rBA861519e44adc5674545fa18202dc43c4c20f2d1d The fix is to use the old default in older (<= 2.67) versions. --- render_freestyle_svg.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/render_freestyle_svg.py b/render_freestyle_svg.py index 41f22f181..2d6484b03 100644 --- a/render_freestyle_svg.py +++ b/render_freestyle_svg.py @@ -159,7 +159,7 @@ def create_path(scene): dirname = path # otherwise, use current file's location as a start for the relative path - elif file_dir_path: + elif bpy.data.is_saved and file_dir_path: dirname = os.path.normpath(os.path.join(file_dir_path, path)) # otherwise, use the folder from which blender was called as the start @@ -684,6 +684,21 @@ def register_namespaces(namespaces=namespaces): if name != 'svg': # creates invalid xml et.register_namespace(name, url) +@persistent +def handle_versions(self): + # We don't modify startup file because it assumes to + # have all the default values only. + if not bpy.data.is_saved: + return + + # Revision https://developer.blender.org/rBA861519e44adc5674545fa18202dc43c4c20f2d1d + # changed the default for fills. + # fix by Sergey https://developer.blender.org/T46150 + if bpy.data.version <= (2, 76, 0): + for linestyle in bpy.data.linestyles: + linestyle.use_export_fills = True + + classes = ( SVGExporterPanel, @@ -733,6 +748,9 @@ def register(): # register namespaces register_namespaces() + # handle regressions + bpy.app.handlers.version_update.append(handle_versions) + def unregister(): @@ -754,6 +772,8 @@ def unregister(): parameter_editor.callbacks_lineset_post.remove(SVGPathShaderCallback.lineset_post) parameter_editor.callbacks_lineset_post.remove(SVGFillShaderCallback.lineset_post) + bpy.app.handlers.version_update.remove(handle_versions) + if __name__ == "__main__": register() -- GitLab