Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-06-26 23:56:39 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-06-26 23:56:39 +0300
commita61480c27103fbf449fd14ea8061b65c29f19eae (patch)
tree8d626b465ebe17936b7551aa91cc5b9d3b192607 /release/scripts
parenta3cd57ea8c57c10d4c65ddd51faa6cce14c98e10 (diff)
parent532c8ac58384309e77791e32ab78f448ad2a76a6 (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'release/scripts')
-rw-r--r--release/scripts/startup/bl_operators/__init__.py2
-rw-r--r--release/scripts/startup/bl_operators/add_mesh_torus.py100
-rw-r--r--release/scripts/startup/bl_operators/anim.py141
-rw-r--r--release/scripts/startup/bl_operators/clip.py21
-rw-r--r--release/scripts/startup/bl_operators/console.py12
-rw-r--r--release/scripts/startup/bl_operators/file.py149
-rw-r--r--release/scripts/startup/bl_operators/freestyle.py16
-rw-r--r--release/scripts/startup/bl_operators/image.py4
-rw-r--r--release/scripts/startup/bl_operators/mesh.py22
-rw-r--r--release/scripts/startup/bl_operators/node.py66
-rw-r--r--release/scripts/startup/bl_operators/object.py185
-rw-r--r--release/scripts/startup/bl_operators/object_align.py67
-rw-r--r--release/scripts/startup/bl_operators/object_quick_effects.py171
-rw-r--r--release/scripts/startup/bl_operators/object_randomize_transform.py98
-rw-r--r--release/scripts/startup/bl_operators/presets.py97
-rw-r--r--release/scripts/startup/bl_operators/rigidbody.py78
-rw-r--r--release/scripts/startup/bl_operators/screen_play_rendered_anim.py4
-rw-r--r--release/scripts/startup/bl_operators/sequencer.py10
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_follow_active.py18
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_lightmap.py86
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_smart_project.py459
-rw-r--r--release/scripts/startup/bl_operators/vertexpaint_dirt.py52
-rw-r--r--release/scripts/startup/bl_operators/view3d.py94
-rw-r--r--release/scripts/startup/bl_operators/wm.py566
-rw-r--r--release/scripts/startup/bl_ui/space_dopesheet.py14
-rw-r--r--release/scripts/startup/bl_ui/space_graph.py14
-rw-r--r--release/scripts/startup/bl_ui/space_nla.py14
-rw-r--r--release/scripts/startup/bl_ui/space_time.py20
-rw-r--r--release/scripts/templates_py/addon_add_object.py25
-rw-r--r--release/scripts/templates_py/background_job.py26
-rw-r--r--release/scripts/templates_py/batch_export.py2
-rw-r--r--release/scripts/templates_py/custom_nodes.py3
-rw-r--r--release/scripts/templates_py/manipulator_operator.py3
-rw-r--r--release/scripts/templates_py/manipulator_operator_target.py2
-rw-r--r--release/scripts/templates_py/manipulator_simple.py2
-rw-r--r--release/scripts/templates_py/operator_file_export.py30
-rw-r--r--release/scripts/templates_py/operator_file_import.py30
-rw-r--r--release/scripts/templates_py/operator_mesh_add.py104
-rw-r--r--release/scripts/templates_py/operator_modal_draw.py1
-rw-r--r--release/scripts/templates_py/operator_modal_view3d.py6
-rw-r--r--release/scripts/templates_py/ui_menu.py1
-rw-r--r--release/scripts/templates_py/ui_menu_simple.py1
-rw-r--r--release/scripts/templates_py/ui_previews_dynamic_enum.py18
43 files changed, 1453 insertions, 1381 deletions
diff --git a/release/scripts/startup/bl_operators/__init__.py b/release/scripts/startup/bl_operators/__init__.py
index 1e0dbe6925e..de538634595 100644
--- a/release/scripts/startup/bl_operators/__init__.py
+++ b/release/scripts/startup/bl_operators/__init__.py
@@ -48,7 +48,7 @@ _modules = [
"vertexpaint_dirt",
"view3d",
"wm",
- ]
+]
import bpy
diff --git a/release/scripts/startup/bl_operators/add_mesh_torus.py b/release/scripts/startup/bl_operators/add_mesh_torus.py
index 53f51af430f..cc7f69ca7ca 100644
--- a/release/scripts/startup/bl_operators/add_mesh_torus.py
+++ b/release/scripts/startup/bl_operators/add_mesh_torus.py
@@ -135,63 +135,63 @@ class AddTorus(Operator, object_utils.AddObjectHelper):
self.abso_minor_rad = self.major_radius - self.minor_radius
major_segments = IntProperty(
- name="Major Segments",
- description="Number of segments for the main ring of the torus",
- min=3, max=256,
- default=48,
- )
+ name="Major Segments",
+ description="Number of segments for the main ring of the torus",
+ min=3, max=256,
+ default=48,
+ )
minor_segments = IntProperty(
- name="Minor Segments",
- description="Number of segments for the minor ring of the torus",
- min=3, max=256,
- default=12,
- )
+ name="Minor Segments",
+ description="Number of segments for the minor ring of the torus",
+ min=3, max=256,
+ default=12,
+ )
mode = bpy.props.EnumProperty(
- name="Torus Dimensions",
- items=(("MAJOR_MINOR", "Major/Minor",
- "Use the major/minor radii for torus dimensions"),
- ("EXT_INT", "Exterior/Interior",
- "Use the exterior/interior radii for torus dimensions")),
- update=mode_update_callback,
- )
+ name="Torus Dimensions",
+ items=(("MAJOR_MINOR", "Major/Minor",
+ "Use the major/minor radii for torus dimensions"),
+ ("EXT_INT", "Exterior/Interior",
+ "Use the exterior/interior radii for torus dimensions")),
+ update=mode_update_callback,
+ )
major_radius = FloatProperty(
- name="Major Radius",
- description=("Radius from the origin to the "
- "center of the cross sections"),
- min=0.01, max=100.0,
- default=1.0,
- subtype='DISTANCE',
- unit='LENGTH',
- )
+ name="Major Radius",
+ description=("Radius from the origin to the "
+ "center of the cross sections"),
+ min=0.01, max=100.0,
+ default=1.0,
+ subtype='DISTANCE',
+ unit='LENGTH',
+ )
minor_radius = FloatProperty(
- name="Minor Radius",
- description="Radius of the torus' cross section",
- min=0.01, max=100.0,
- default=0.25,
- subtype='DISTANCE',
- unit='LENGTH',
- )
+ name="Minor Radius",
+ description="Radius of the torus' cross section",
+ min=0.01, max=100.0,
+ default=0.25,
+ subtype='DISTANCE',
+ unit='LENGTH',
+ )
abso_major_rad = FloatProperty(
- name="Exterior Radius",
- description="Total Exterior Radius of the torus",
- min=0.01, max=100.0,
- default=1.25,
- subtype='DISTANCE',
- unit='LENGTH',
- )
+ name="Exterior Radius",
+ description="Total Exterior Radius of the torus",
+ min=0.01, max=100.0,
+ default=1.25,
+ subtype='DISTANCE',
+ unit='LENGTH',
+ )
abso_minor_rad = FloatProperty(
- name="Interior Radius",
- description="Total Interior Radius of the torus",
- min=0.01, max=100.0,
- default=0.75,
- subtype='DISTANCE',
- unit='LENGTH',
- )
+ name="Interior Radius",
+ description="Total Interior Radius of the torus",
+ min=0.01, max=100.0,
+ default=0.75,
+ subtype='DISTANCE',
+ unit='LENGTH',
+ )
generate_uvs = BoolProperty(
- name="Generate UVs",
- description="Generate a default UV map",
- default=False,
- )
+ name="Generate UVs",
+ description="Generate a default UV map",
+ default=False,
+ )
def draw(self, context):
layout = self.layout
diff --git a/release/scripts/startup/bl_operators/anim.py b/release/scripts/startup/bl_operators/anim.py
index 0632f9bc3ca..250c88b9009 100644
--- a/release/scripts/startup/bl_operators/anim.py
+++ b/release/scripts/startup/bl_operators/anim.py
@@ -41,23 +41,23 @@ class ANIM_OT_keying_set_export(Operator):
bl_label = "Export Keying Set..."
filepath = StringProperty(
- subtype='FILE_PATH',
- )
+ subtype='FILE_PATH',
+ )
filter_folder = BoolProperty(
- name="Filter folders",
- default=True,
- options={'HIDDEN'},
- )
+ name="Filter folders",
+ default=True,
+ options={'HIDDEN'},
+ )
filter_text = BoolProperty(
- name="Filter text",
- default=True,
- options={'HIDDEN'},
- )
+ name="Filter text",
+ default=True,
+ options={'HIDDEN'},
+ )
filter_python = BoolProperty(
- name="Filter python",
- default=True,
- options={'HIDDEN'},
- )
+ name="Filter python",
+ default=True,
+ options={'HIDDEN'},
+ )
def execute(self, context):
if not self.filepath:
@@ -204,58 +204,59 @@ class BakeAction(Operator):
bl_options = {'REGISTER', 'UNDO'}
frame_start = IntProperty(
- name="Start Frame",
- description="Start frame for baking",
- min=0, max=300000,
- default=1,
- )
+ name="Start Frame",
+ description="Start frame for baking",
+ min=0, max=300000,
+ default=1,
+ )
frame_end = IntProperty(
- name="End Frame",
- description="End frame for baking",
- min=1, max=300000,
- default=250,
- )
+ name="End Frame",
+ description="End frame for baking",
+ min=1, max=300000,
+ default=250,
+ )
step = IntProperty(
- name="Frame Step",
- description="Frame Step",
- min=1, max=120,
- default=1,
- )
+ name="Frame Step",
+ description="Frame Step",
+ min=1, max=120,
+ default=1,
+ )
only_selected = BoolProperty(
- name="Only Selected Bones",
- description="Only key selected bones (Pose baking only)",
- default=True,
- )
+ name="Only Selected Bones",
+ description="Only key selected bones (Pose baking only)",
+ default=True,
+ )
visual_keying = BoolProperty(
- name="Visual Keying",
- description="Keyframe from the final transformations (with constraints applied)",
- default=False,
- )
+ name="Visual Keying",
+ description="Keyframe from the final transformations (with constraints applied)",
+ default=False,
+ )
clear_constraints = BoolProperty(
- name="Clear Constraints",
- description="Remove all constraints from keyed object/bones, and do 'visual' keying",
- default=False,
- )
+ name="Clear Constraints",
+ description="Remove all constraints from keyed object/bones, and do 'visual' keying",
+ default=False,
+ )
clear_parents = BoolProperty(
- name="Clear Parents",
- description="Bake animation onto the object then clear parents (objects only)",
- default=False,
- )
+ name="Clear Parents",
+ description="Bake animation onto the object then clear parents (objects only)",
+ default=False,
+ )
use_current_action = BoolProperty(
- name="Overwrite Current Action",
- description="Bake animation into current action, instead of creating a new one "
- "(useful for baking only part of bones in an armature)",
- default=False,
- )
+ name="Overwrite Current Action",
+ description="Bake animation into current action, instead of creating a new one "
+ "(useful for baking only part of bones in an armature)",
+ default=False,
+ )
bake_types = EnumProperty(
- name="Bake Data",
- description="Which data's transformations to bake",
- options={'ENUM_FLAG'},
- items=(('POSE', "Pose", "Bake bones transformations"),
- ('OBJECT', "Object", "Bake object transformations"),
- ),
- default={'POSE'},
- )
+ name="Bake Data",
+ description="Which data's transformations to bake",
+ options={'ENUM_FLAG'},
+ items=(
+ ('POSE', "Pose", "Bake bones transformations"),
+ ('OBJECT', "Object", "Bake object transformations"),
+ ),
+ default={'POSE'},
+ )
def execute(self, context):
from bpy_extras import anim_utils
@@ -296,16 +297,16 @@ class BakeAction(Operator):
class ClearUselessActions(Operator):
"""Mark actions with no F-Curves for deletion after save & reload of """ \
- """file preserving \"action libraries\""""
+ """file preserving \"action libraries\""""
bl_idname = "anim.clear_useless_actions"
bl_label = "Clear Useless Actions"
bl_options = {'REGISTER', 'UNDO'}
only_unused = BoolProperty(
- name="Only Unused",
- description="Only unused (Fake User only) actions get considered",
- default=True,
- )
+ name="Only Unused",
+ description="Only unused (Fake User only) actions get considered",
+ default=True,
+ )
@classmethod
def poll(cls, context):
@@ -316,8 +317,10 @@ class ClearUselessActions(Operator):
for action in bpy.data.actions:
# if only user is "fake" user...
- if ((self.only_unused is False) or
- (action.use_fake_user and action.users == 1)):
+ if (
+ (self.only_unused is False) or
+ (action.use_fake_user and action.users == 1)
+ ):
# if it has F-Curves, then it's a "action library"
# (i.e. walk, wave, jump, etc.)
@@ -339,10 +342,10 @@ class UpdateAnimatedTransformConstraint(Operator):
bl_options = {'REGISTER', 'UNDO'}
use_convert_to_radians = BoolProperty(
- name="Convert To Radians",
- description="Convert fcurves/drivers affecting rotations to radians (Warning: use this only once!)",
- default=True,
- )
+ name="Convert To Radians",
+ description="Convert fcurves/drivers affecting rotations to radians (Warning: use this only once!)",
+ default=True,
+ )
def execute(self, context):
import animsys_refactor
diff --git a/release/scripts/startup/bl_operators/clip.py b/release/scripts/startup/bl_operators/clip.py
index e67b275a3ee..5f3075b403f 100644
--- a/release/scripts/startup/bl_operators/clip.py
+++ b/release/scripts/startup/bl_operators/clip.py
@@ -134,10 +134,10 @@ class CLIP_OT_filter_tracks(bpy.types.Operator):
bl_options = {'UNDO', 'REGISTER'}
track_threshold = FloatProperty(
- name="Track Threshold",
- description="Filter Threshold to select problematic tracks",
- default=5.0,
- )
+ name="Track Threshold",
+ description="Filter Threshold to select problematic tracks",
+ default=5.0,
+ )
@staticmethod
def _filter_values(context, threshold):
@@ -165,9 +165,10 @@ class CLIP_OT_filter_tracks(bpy.types.Operator):
# Find tracks with markers in both this frame and the previous one.
relevant_tracks = [
- track for track in clip.tracking.tracks
- if (track.markers.find_frame(frame) and
- track.markers.find_frame(frame - 1))]
+ track for track in clip.tracking.tracks
+ if (track.markers.find_frame(frame) and
+ track.markers.find_frame(frame - 1))
+ ]
if not relevant_tracks:
continue
@@ -399,7 +400,7 @@ class CLIP_OT_delete_proxy(Operator):
class CLIP_OT_set_viewport_background(Operator):
"""Set current movie clip as a camera background in 3D view-port """ \
- """(works only when a 3D view-port is visible)"""
+ """(works only when a 3D view-port is visible)"""
bl_idname = "clip.set_viewport_background"
bl_label = "Set as Background"
@@ -1047,13 +1048,13 @@ class CLIP_OT_track_settings_to_track(bpy.types.Operator):
"use_green_channel",
"use_blue_channel",
"weight"
- )
+ )
_attrs_marker = (
"pattern_corners",
"search_min",
"search_max",
- )
+ )
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_operators/console.py b/release/scripts/startup/bl_operators/console.py
index 0025967c97c..2d32f84805e 100644
--- a/release/scripts/startup/bl_operators/console.py
+++ b/release/scripts/startup/bl_operators/console.py
@@ -38,8 +38,8 @@ class ConsoleExec(Operator):
bl_label = "Console Execute"
interactive = BoolProperty(
- options={'SKIP_SAVE'},
- )
+ options={'SKIP_SAVE'},
+ )
@classmethod
def poll(cls, context):
@@ -61,7 +61,7 @@ class ConsoleExec(Operator):
class ConsoleAutocomplete(Operator):
"""Evaluate the namespace up until the cursor and give a list of """ \
- """options or complete the name if there is only one"""
+ """options or complete the name if there is only one"""
bl_idname = "console.autocomplete"
bl_label = "Console Autocomplete"
@@ -138,9 +138,9 @@ class ConsoleLanguage(Operator):
bl_label = "Console Language"
language = StringProperty(
- name="Language",
- maxlen=32,
- )
+ name="Language",
+ maxlen=32,
+ )
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_operators/file.py b/release/scripts/startup/bl_operators/file.py
index 8d947d19a82..cf03b4fccdb 100644
--- a/release/scripts/startup/bl_operators/file.py
+++ b/release/scripts/startup/bl_operators/file.py
@@ -38,59 +38,59 @@ class WM_OT_previews_batch_generate(Operator):
# -----------
# File props.
files = CollectionProperty(
- type=bpy.types.OperatorFileListElement,
- options={'HIDDEN', 'SKIP_SAVE'},
- )
+ type=bpy.types.OperatorFileListElement,
+ options={'HIDDEN', 'SKIP_SAVE'},
+ )
directory = StringProperty(
- maxlen=1024,
- subtype='FILE_PATH',
- options={'HIDDEN', 'SKIP_SAVE'},
- )
+ maxlen=1024,
+ subtype='FILE_PATH',
+ options={'HIDDEN', 'SKIP_SAVE'},
+ )
# Show only images/videos, and directories!
filter_blender = BoolProperty(
- default=True,
- options={'HIDDEN', 'SKIP_SAVE'},
- )
+ default=True,
+ options={'HIDDEN', 'SKIP_SAVE'},
+ )
filter_folder = BoolProperty(
- default=True,
- options={'HIDDEN', 'SKIP_SAVE'},
- )
+ default=True,
+ options={'HIDDEN', 'SKIP_SAVE'},
+ )
# -----------
# Own props.
use_scenes = BoolProperty(
- default=True,
- name="Scenes",
- description="Generate scenes' previews",
- )
+ default=True,
+ name="Scenes",
+ description="Generate scenes' previews",
+ )
use_collections = BoolProperty(
- default=True,
- name="Collections",
- description="Generate collections' previews",
- )
+ default=True,
+ name="Collections",
+ description="Generate collections' previews",
+ )
use_objects = BoolProperty(
- default=True,
- name="Objects",
- description="Generate objects' previews",
- )
+ default=True,
+ name="Objects",
+ description="Generate objects' previews",
+ )
use_intern_data = BoolProperty(
- default=True,
- name="Mat/Tex/...",
- description="Generate 'internal' previews (materials, textures, images, etc.)",
- )
+ default=True,
+ name="Mat/Tex/...",
+ description="Generate 'internal' previews (materials, textures, images, etc.)",
+ )
use_trusted = BoolProperty(
- default=False,
- name="Trusted Blend Files",
- description="Enable python evaluation for selected files",
- )
+ default=False,
+ name="Trusted Blend Files",
+ description="Enable python evaluation for selected files",
+ )
use_backups = BoolProperty(
- default=True,
- name="Save Backups",
- description="Keep a backup (.blend1) version of the files when saving with generated previews",
- )
+ default=True,
+ name="Save Backups",
+ description="Keep a backup (.blend1) version of the files when saving with generated previews",
+ )
def invoke(self, context, event):
context.window_manager.fileselect_add(self)
@@ -148,58 +148,59 @@ class WM_OT_previews_batch_clear(Operator):
# -----------
# File props.
files = CollectionProperty(
- type=bpy.types.OperatorFileListElement,
- options={'HIDDEN', 'SKIP_SAVE'},
- )
+ type=bpy.types.OperatorFileListElement,
+ options={'HIDDEN', 'SKIP_SAVE'},
+ )
directory = StringProperty(
- maxlen=1024,
- subtype='FILE_PATH',
- options={'HIDDEN', 'SKIP_SAVE'},
- )
+ maxlen=1024,
+ subtype='FILE_PATH',
+ options={'HIDDEN', 'SKIP_SAVE'},
+ )
# Show only images/videos, and directories!
filter_blender = BoolProperty(
- default=True,
- options={'HIDDEN', 'SKIP_SAVE'},
- )
+ default=True,
+ options={'HIDDEN', 'SKIP_SAVE'},
+ )
filter_folder = BoolProperty(
- default=True,
- options={'HIDDEN', 'SKIP_SAVE'},
- )
+ default=True,
+ options={'HIDDEN', 'SKIP_SAVE'},
+ )
# -----------
# Own props.
use_scenes = BoolProperty(
- default=True,
- name="Scenes",
- description="Clear scenes' previews",
- )
- use_collections = BoolProperty(default=True,
- name="Collections",
- description="Clear collections' previews",
- )
+ default=True,
+ name="Scenes",
+ description="Clear scenes' previews",
+ )
+ use_collections = BoolProperty(
+ default=True,
+ name="Collections",
+ description="Clear collections' previews",
+ )
use_objects = BoolProperty(
- default=True,
- name="Objects",
- description="Clear objects' previews",
- )
+ default=True,
+ name="Objects",
+ description="Clear objects' previews",
+ )
use_intern_data = BoolProperty(
- default=True,
- name="Mat/Tex/...",
- description="Clear 'internal' previews (materials, textures, images, etc.)",
- )
+ default=True,
+ name="Mat/Tex/...",
+ description="Clear 'internal' previews (materials, textures, images, etc.)",
+ )
use_trusted = BoolProperty(
- default=False,
- name="Trusted Blend Files",
- description="Enable python evaluation for selected files",
- )
+ default=False,
+ name="Trusted Blend Files",
+ description="Enable python evaluation for selected files",
+ )
use_backups = BoolProperty(
- default=True,
- name="Save Backups",
- description="Keep a backup (.blend1) version of the files when saving with cleared previews",
- )
+ default=True,
+ name="Save Backups",
+ description="Keep a backup (.blend1) version of the files when saving with cleared previews",
+ )
def invoke(self, context, event):
context.window_manager.fileselect_add(self)
diff --git a/release/scripts/startup/bl_operators/freestyle.py b/release/scripts/startup/bl_operators/freestyle.py
index d3023f8e582..88368792b8b 100644
--- a/release/scripts/startup/bl_operators/freestyle.py
+++ b/release/scripts/startup/bl_operators/freestyle.py
@@ -35,15 +35,15 @@ class SCENE_OT_freestyle_fill_range_by_selection(bpy.types.Operator):
bl_options = {'INTERNAL'}
type = EnumProperty(
- name="Type", description="Type of the modifier to work on",
- items=(("COLOR", "Color", "Color modifier type"),
- ("ALPHA", "Alpha", "Alpha modifier type"),
- ("THICKNESS", "Thickness", "Thickness modifier type")),
- )
+ name="Type", description="Type of the modifier to work on",
+ items=(("COLOR", "Color", "Color modifier type"),
+ ("ALPHA", "Alpha", "Alpha modifier type"),
+ ("THICKNESS", "Thickness", "Thickness modifier type")),
+ )
name = StringProperty(
- name="Name",
- description="Name of the modifier to work on",
- )
+ name="Name",
+ description="Name of the modifier to work on",
+ )
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_operators/image.py b/release/scripts/startup/bl_operators/image.py
index c2ca271de66..5c5ca329cda 100644
--- a/release/scripts/startup/bl_operators/image.py
+++ b/release/scripts/startup/bl_operators/image.py
@@ -30,8 +30,8 @@ class EditExternally(Operator):
bl_options = {'REGISTER'}
filepath = StringProperty(
- subtype='FILE_PATH',
- )
+ subtype='FILE_PATH',
+ )
@staticmethod
def _editor_guess(context):
diff --git a/release/scripts/startup/bl_operators/mesh.py b/release/scripts/startup/bl_operators/mesh.py
index c7a11c23c3f..f07c1ccb549 100644
--- a/release/scripts/startup/bl_operators/mesh.py
+++ b/release/scripts/startup/bl_operators/mesh.py
@@ -34,18 +34,20 @@ class MeshMirrorUV(Operator):
bl_options = {'REGISTER', 'UNDO'}
direction = EnumProperty(
- name="Axis Direction",
- items=(('POSITIVE', "Positive", ""),
- ('NEGATIVE', "Negative", "")),
- )
+ name="Axis Direction",
+ items=(
+ ('POSITIVE', "Positive", ""),
+ ('NEGATIVE', "Negative", ""),
+ ),
+ )
precision = IntProperty(
- name="Precision",
- description=("Tolerance for finding vertex duplicates"),
- min=1, max=16,
- soft_min=1, soft_max=16,
- default=3,
- )
+ name="Precision",
+ description=("Tolerance for finding vertex duplicates"),
+ min=1, max=16,
+ soft_min=1, soft_max=16,
+ default=3,
+ )
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_operators/node.py b/release/scripts/startup/bl_operators/node.py
index 40876e2b069..bb8f991e526 100644
--- a/release/scripts/startup/bl_operators/node.py
+++ b/release/scripts/startup/bl_operators/node.py
@@ -35,31 +35,31 @@ from bpy.props import (
class NodeSetting(PropertyGroup):
value = StringProperty(
- name="Value",
- description="Python expression to be evaluated "
- "as the initial node setting",
- default="",
- )
+ name="Value",
+ description="Python expression to be evaluated "
+ "as the initial node setting",
+ default="",
+ )
# Base class for node 'Add' operators
class NodeAddOperator:
type = StringProperty(
- name="Node Type",
- description="Node type",
- )
+ name="Node Type",
+ description="Node type",
+ )
use_transform = BoolProperty(
- name="Use Transform",
- description="Start transform operator after inserting the node",
- default=False,
- )
+ name="Use Transform",
+ description="Start transform operator after inserting the node",
+ default=False,
+ )
settings = CollectionProperty(
- name="Settings",
- description="Settings to be applied on the newly created node",
- type=NodeSetting,
- options={'SKIP_SAVE'},
- )
+ name="Settings",
+ description="Settings to be applied on the newly created node",
+ type=NodeSetting,
+ options={'SKIP_SAVE'},
+ )
@staticmethod
def store_mouse_cursor(context, event):
@@ -70,7 +70,7 @@ class NodeAddOperator:
if context.region.type == 'WINDOW':
# convert mouse position to the View2D for later node placement
space.cursor_location_from_region(
- event.mouse_region_x, event.mouse_region_y)
+ event.mouse_region_x, event.mouse_region_y)
else:
space.cursor_location = tree.view_center
@@ -99,8 +99,8 @@ class NodeAddOperator:
setattr(node, setting.name, value)
except AttributeError as e:
self.report(
- {'ERROR_INVALID_INPUT'},
- "Node has no attribute " + setting.name)
+ {'ERROR_INVALID_INPUT'},
+ "Node has no attribute " + setting.name)
print(str(e))
# Continue despite invalid attribute
@@ -153,9 +153,9 @@ class NODE_OT_add_and_link_node(NodeAddOperator, Operator):
bl_options = {'REGISTER', 'UNDO'}
link_socket_index = IntProperty(
- name="Link Socket Index",
- description="Index of the socket to link",
- )
+ name="Link Socket Index",
+ description="Index of the socket to link",
+ )
def execute(self, context):
space = context.space_data
@@ -195,11 +195,11 @@ class NODE_OT_add_search(NodeAddOperator, Operator):
nodetype = getattr(bpy.types, item.nodetype, None)
if nodetype:
enum_items.append(
- (str(index),
- item.label,
- nodetype.bl_rna.description,
- index,
- ))
+ (str(index),
+ item.label,
+ nodetype.bl_rna.description,
+ index,
+ ))
return enum_items
# Look up the item based on index
@@ -211,10 +211,10 @@ class NODE_OT_add_search(NodeAddOperator, Operator):
return None
node_item = EnumProperty(
- name="Node Type",
- description="Node type",
- items=node_enum_items,
- )
+ name="Node Type",
+ description="Node type",
+ items=node_enum_items,
+ )
def execute(self, context):
item = self.find_node_item(context)
@@ -233,7 +233,7 @@ class NODE_OT_add_search(NodeAddOperator, Operator):
if self.use_transform:
bpy.ops.node.translate_attach_remove_on_cancel(
- 'INVOKE_DEFAULT')
+ 'INVOKE_DEFAULT')
return {'FINISHED'}
else:
diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py
index 0959cbec448..fb321463d33 100644
--- a/release/scripts/startup/bl_operators/object.py
+++ b/release/scripts/startup/bl_operators/object.py
@@ -36,22 +36,22 @@ class SelectPattern(Operator):
bl_options = {'REGISTER', 'UNDO'}
pattern = StringProperty(
- name="Pattern",
- description="Name filter using '*', '?' and "
- "'[abc]' unix style wildcards",
- maxlen=64,
- default="*",
- )
+ name="Pattern",
+ description="Name filter using '*', '?' and "
+ "'[abc]' unix style wildcards",
+ maxlen=64,
+ default="*",
+ )
case_sensitive = BoolProperty(
- name="Case Sensitive",
- description="Do a case sensitive compare",
- default=False,
- )
+ name="Case Sensitive",
+ description="Do a case sensitive compare",
+ default=False,
+ )
extend = BoolProperty(
- name="Extend",
- description="Extend the existing selection",
- default=True,
- )
+ name="Extend",
+ description="Extend the existing selection",
+ default=True,
+ )
def execute(self, context):
@@ -116,10 +116,10 @@ class SelectCamera(Operator):
bl_options = {'REGISTER', 'UNDO'}
extend = BoolProperty(
- name="Extend",
- description="Extend the selection",
- default=False
- )
+ name="Extend",
+ description="Extend the selection",
+ default=False
+ )
def execute(self, context):
scene = context.scene
@@ -147,24 +147,24 @@ class SelectCamera(Operator):
class SelectHierarchy(Operator):
"""Select object relative to the active object's position """ \
- """in the hierarchy"""
+ """in the hierarchy"""
bl_idname = "object.select_hierarchy"
bl_label = "Select Hierarchy"
bl_options = {'REGISTER', 'UNDO'}
direction = EnumProperty(
- items=(('PARENT', "Parent", ""),
- ('CHILD', "Child", ""),
- ),
- name="Direction",
- description="Direction to select in the hierarchy",
- default='PARENT')
+ items=(('PARENT', "Parent", ""),
+ ('CHILD', "Child", ""),
+ ),
+ name="Direction",
+ description="Direction to select in the hierarchy",
+ default='PARENT')
extend = BoolProperty(
- name="Extend",
- description="Extend the existing selection",
- default=False,
- )
+ name="Extend",
+ description="Extend the existing selection",
+ default=False,
+ )
@classmethod
def poll(cls, context):
@@ -222,18 +222,18 @@ class SubdivisionSet(Operator):
bl_options = {'REGISTER', 'UNDO'}
level = IntProperty(
- name="Level",
- min=-100, max=100,
- soft_min=-6, soft_max=6,
- default=1,
- )
+ name="Level",
+ min=-100, max=100,
+ soft_min=-6, soft_max=6,
+ default=1,
+ )
relative = BoolProperty(
- name="Relative",
- description=("Apply the subsurf level as an offset "
- "relative to the current level"),
- default=False,
- )
+ name="Relative",
+ description=("Apply the subsurf level as an offset "
+ "relative to the current level"),
+ default=False,
+ )
@classmethod
def poll(cls, context):
@@ -306,36 +306,36 @@ class SubdivisionSet(Operator):
class ShapeTransfer(Operator):
"""Copy another selected objects active shape to this one by """ \
- """applying the relative offsets"""
+ """applying the relative offsets"""
bl_idname = "object.shape_key_transfer"
bl_label = "Transfer Shape Key"
bl_options = {'REGISTER', 'UNDO'}
mode = EnumProperty(
- items=(('OFFSET',
- "Offset",
- "Apply the relative positional offset",
- ),
- ('RELATIVE_FACE',
- "Relative Face",
- "Calculate relative position (using faces)",
- ),
- ('RELATIVE_EDGE',
- "Relative Edge",
- "Calculate relative position (using edges)",
- ),
- ),
- name="Transformation Mode",
- description="Relative shape positions to the new shape method",
- default='OFFSET',
- )
+ items=(('OFFSET',
+ "Offset",
+ "Apply the relative positional offset",
+ ),
+ ('RELATIVE_FACE',
+ "Relative Face",
+ "Calculate relative position (using faces)",
+ ),
+ ('RELATIVE_EDGE',
+ "Relative Edge",
+ "Calculate relative position (using edges)",
+ ),
+ ),
+ name="Transformation Mode",
+ description="Relative shape positions to the new shape method",
+ default='OFFSET',
+ )
use_clamp = BoolProperty(
- name="Clamp Offset",
- description=("Clamp the transformation to the distance each "
- "vertex moves in the original shape"),
- default=False,
- )
+ name="Clamp Offset",
+ description=("Clamp the transformation to the distance each "
+ "vertex moves in the original shape"),
+ default=False,
+ )
def _main(self, ob_act, objects, mode='OFFSET', use_clamp=False):
@@ -368,7 +368,7 @@ class ShapeTransfer(Operator):
orig_normals = me_nos(me.vertices)
# actual mesh vertex location isn't as reliable as the base shape :S
- #~ orig_coords = me_cos(me.vertices)
+ # orig_coords = me_cos(me.vertices)
orig_coords = me_cos(me.shape_keys.key_blocks[0].data)
for ob_other in objects:
@@ -498,7 +498,7 @@ class ShapeTransfer(Operator):
class JoinUVs(Operator):
"""Transfer UV Maps from active to selected objects """ \
- """(needs matching geometry)"""
+ """(needs matching geometry)"""
bl_idname = "object.join_uvs"
bl_label = "Transfer UV Maps"
bl_options = {'REGISTER', 'UNDO'}
@@ -658,7 +658,7 @@ class MakeDupliFace(Operator):
class IsolateTypeRender(Operator):
"""Hide unselected render objects of same type as active """ \
- """by setting the hide render flag"""
+ """by setting the hide render flag"""
bl_idname = "object.isolate_type_render"
bl_label = "Restrict Render Unselected"
bl_options = {'REGISTER', 'UNDO'}
@@ -691,38 +691,27 @@ class ClearAllRestrictRender(Operator):
class TransformsToDeltas(Operator):
"""Convert normal object transforms to delta transforms, """ \
- """any existing delta transforms will be included as well"""
+ """any existing delta transforms will be included as well"""
bl_idname = "object.transforms_to_deltas"
bl_label = "Transforms to Deltas"
bl_options = {'REGISTER', 'UNDO'}
mode = EnumProperty(
- items=(('ALL',
- "All Transforms",
- "Transfer location, rotation, and scale transforms",
- ),
- ('LOC',
- "Location",
- "Transfer location transforms only",
- ),
- ('ROT',
- "Rotation",
- "Transfer rotation transforms only",
- ),
- ('SCALE',
- "Scale",
- "Transfer scale transforms only",
- ),
- ),
- name="Mode",
- description="Which transforms to transfer",
- default='ALL',
- )
+ items=(
+ ('ALL', "All Transforms", "Transfer location, rotation, and scale transforms"),
+ ('LOC', "Location", "Transfer location transforms only"),
+ ('ROT', "Rotation", "Transfer rotation transforms only"),
+ ('SCALE', "Scale", "Transfer scale transforms only"),
+ ),
+ name="Mode",
+ description="Which transforms to transfer",
+ default='ALL',
+ )
reset_values = BoolProperty(
- name="Reset Values",
- description=("Clear transform values after transferring to deltas"),
- default=True,
- )
+ name="Reset Values",
+ description=("Clear transform values after transferring to deltas"),
+ default=True,
+ )
@classmethod
def poll(cls, context):
@@ -788,11 +777,11 @@ class TransformsToDeltasAnim(Operator):
def execute(self, context):
# map from standard transform paths to "new" transform paths
STANDARD_TO_DELTA_PATHS = {
- "location" : "delta_location",
- "rotation_euler" : "delta_rotation_euler",
- "rotation_quaternion" : "delta_rotation_quaternion",
- #"rotation_axis_angle" : "delta_rotation_axis_angle",
- "scale" : "delta_scale"
+ "location": "delta_location",
+ "rotation_euler": "delta_rotation_euler",
+ "rotation_quaternion": "delta_rotation_quaternion",
+ # "rotation_axis_angle" : "delta_rotation_axis_angle",
+ "scale": "delta_scale"
}
DELTA_PATHS = STANDARD_TO_DELTA_PATHS.values()
@@ -852,8 +841,8 @@ class TransformsToDeltasAnim(Operator):
fcu.data_path = "delta_rotation_quaternion"
obj.rotation_quaternion.identity()
# XXX: currently not implemented
- #~ elif fcu.data_path == "rotation_axis_angle":
- #~ fcu.data_path = "delta_rotation_axis_angle"
+ # ~ elif fcu.data_path == "rotation_axis_angle":
+ # ~ fcu.data_path = "delta_rotation_axis_angle"
elif fcu.data_path == "scale":
fcu.data_path = "delta_scale"
obj.scale = 1.0, 1.0, 1.0
diff --git a/release/scripts/startup/bl_operators/object_align.py b/release/scripts/startup/bl_operators/object_align.py
index 03b0d4f04a2..11c1514e4bf 100644
--- a/release/scripts/startup/bl_operators/object_align.py
+++ b/release/scripts/startup/bl_operators/object_align.py
@@ -364,40 +364,45 @@ class AlignObjects(Operator):
bl_options = {'REGISTER', 'UNDO'}
bb_quality = BoolProperty(
- name="High Quality",
- description=("Enables high quality calculation of the "
- "bounding box for perfect results on complex "
- "shape meshes with rotation/scale (Slow)"),
- default=True,
- )
+ name="High Quality",
+ description=(
+ "Enables high quality calculation of the "
+ "bounding box for perfect results on complex "
+ "shape meshes with rotation/scale (Slow)"
+ ),
+ default=True,
+ )
align_mode = EnumProperty(
- name="Align Mode:",
- description="Side of object to use for alignment",
- items=(('OPT_1', "Negative Sides", ""),
- ('OPT_2', "Centers", ""),
- ('OPT_3', "Positive Sides", ""),
- ),
- default='OPT_2',
- )
+ name="Align Mode:",
+ description="Side of object to use for alignment",
+ items=(
+ ('OPT_1', "Negative Sides", ""),
+ ('OPT_2', "Centers", ""),
+ ('OPT_3', "Positive Sides", ""),
+ ),
+ default='OPT_2',
+ )
relative_to = EnumProperty(
- name="Relative To:",
- description="Reference location to align to",
- items=(('OPT_1', "Scene Origin", "Use the Scene Origin as the position for the selected objects to align to"),
- ('OPT_2', "3D Cursor", "Use the 3D cursor as the position for the selected objects to align to"),
- ('OPT_3', "Selection", "Use the selected objects as the position for the selected objects to align to"),
- ('OPT_4', "Active", "Use the active object as the position for the selected objects to align to"),
- ),
- default='OPT_4',
- )
+ name="Relative To:",
+ description="Reference location to align to",
+ items=(
+ ('OPT_1', "Scene Origin", "Use the Scene Origin as the position for the selected objects to align to"),
+ ('OPT_2', "3D Cursor", "Use the 3D cursor as the position for the selected objects to align to"),
+ ('OPT_3', "Selection", "Use the selected objects as the position for the selected objects to align to"),
+ ('OPT_4', "Active", "Use the active object as the position for the selected objects to align to"),
+ ),
+ default='OPT_4',
+ )
align_axis = EnumProperty(
- name="Align",
- description="Align to axis",
- items=(('X', "X", ""),
- ('Y', "Y", ""),
- ('Z', "Z", ""),
- ),
- options={'ENUM_FLAG'},
- )
+ name="Align",
+ description="Align to axis",
+ items=(
+ ('X', "X", ""),
+ ('Y', "Y", ""),
+ ('Z', "Z", ""),
+ ),
+ options={'ENUM_FLAG'},
+ )
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py
index 70334fb0f23..f087022b6fd 100644
--- a/release/scripts/startup/bl_operators/object_quick_effects.py
+++ b/release/scripts/startup/bl_operators/object_quick_effects.py
@@ -53,24 +53,26 @@ class QuickFur(Operator):
bl_options = {'REGISTER', 'UNDO'}
density = EnumProperty(
- name="Fur Density",
- items=(('LIGHT', "Light", ""),
- ('MEDIUM', "Medium", ""),
- ('HEAVY', "Heavy", "")),
- default='MEDIUM',
- )
+ name="Fur Density",
+ items=(
+ ('LIGHT', "Light", ""),
+ ('MEDIUM', "Medium", ""),
+ ('HEAVY', "Heavy", "")
+ ),
+ default='MEDIUM',
+ )
view_percentage = IntProperty(
- name="View %",
- min=1, max=100,
- soft_min=1, soft_max=100,
- default=10,
- )
+ name="View %",
+ min=1, max=100,
+ soft_min=1, soft_max=100,
+ default=10,
+ )
length = FloatProperty(
- name="Length",
- min=0.001, max=100,
- soft_min=0.01, soft_max=10,
- default=0.1,
- )
+ name="Length",
+ min=0.001, max=100,
+ soft_min=0.01, soft_max=10,
+ default=0.1,
+ )
def execute(self, context):
fake_context = context.copy()
@@ -117,49 +119,51 @@ class QuickExplode(Operator):
bl_options = {'REGISTER', 'UNDO'}
style = EnumProperty(
- name="Explode Style",
- items=(('EXPLODE', "Explode", ""),
- ('BLEND', "Blend", "")),
- default='EXPLODE',
- )
+ name="Explode Style",
+ items=(
+ ('EXPLODE', "Explode", ""),
+ ('BLEND', "Blend", ""),
+ ),
+ default='EXPLODE',
+ )
amount = IntProperty(
- name="Amount of pieces",
- min=2, max=10000,
- soft_min=2, soft_max=10000,
- default=100,
- )
+ name="Amount of pieces",
+ min=2, max=10000,
+ soft_min=2, soft_max=10000,
+ default=100,
+ )
frame_duration = IntProperty(
- name="Duration",
- min=1, max=300000,
- soft_min=1, soft_max=10000,
- default=50,
- )
+ name="Duration",
+ min=1, max=300000,
+ soft_min=1, soft_max=10000,
+ default=50,
+ )
frame_start = IntProperty(
- name="Start Frame",
- min=1, max=300000,
- soft_min=1, soft_max=10000,
- default=1,
- )
+ name="Start Frame",
+ min=1, max=300000,
+ soft_min=1, soft_max=10000,
+ default=1,
+ )
frame_end = IntProperty(
- name="End Frame",
- min=1, max=300000,
- soft_min=1, soft_max=10000,
- default=10,
- )
+ name="End Frame",
+ min=1, max=300000,
+ soft_min=1, soft_max=10000,
+ default=10,
+ )
velocity = FloatProperty(
- name="Outwards Velocity",
- min=0, max=300000,
- soft_min=0, soft_max=10,
- default=1,
- )
+ name="Outwards Velocity",
+ min=0, max=300000,
+ soft_min=0, soft_max=10,
+ default=1,
+ )
fade = BoolProperty(
- name="Fade",
- description="Fade the pieces over time",
- default=True,
- )
+ name="Fade",
+ description="Fade the pieces over time",
+ default=True,
+ )
def execute(self, context):
fake_context = context.copy()
@@ -303,19 +307,20 @@ class QuickSmoke(Operator):
bl_options = {'REGISTER', 'UNDO'}
style = EnumProperty(
- name="Smoke Style",
- items=(('SMOKE', "Smoke", ""),
- ('FIRE', "Fire", ""),
- ('BOTH', "Smoke + Fire", ""),
- ),
- default='SMOKE',
- )
+ name="Smoke Style",
+ items=(
+ ('SMOKE', "Smoke", ""),
+ ('FIRE', "Fire", ""),
+ ('BOTH', "Smoke + Fire", ""),
+ ),
+ default='SMOKE',
+ )
show_flows = BoolProperty(
- name="Render Smoke Objects",
- description="Keep the smoke objects visible during rendering",
- default=False,
- )
+ name="Render Smoke Objects",
+ description="Keep the smoke objects visible during rendering",
+ default=False,
+ )
def execute(self, context):
if not bpy.app.build_options.mod_smoke:
@@ -390,7 +395,7 @@ class QuickSmoke(Operator):
node_principled = nodes.new(type='ShaderNodeVolumePrincipled')
node_principled.location = grid_location(4, 1)
links.new(node_principled.outputs["Volume"],
- node_out.inputs["Volume"])
+ node_out.inputs["Volume"])
node_principled.inputs["Density"].default_value = 5.0
@@ -406,29 +411,31 @@ class QuickFluid(Operator):
bl_options = {'REGISTER', 'UNDO'}
style = EnumProperty(
- name="Fluid Style",
- items=(('INFLOW', "Inflow", ""),
- ('BASIC', "Basic", "")),
- default='BASIC',
- )
+ name="Fluid Style",
+ items=(
+ ('INFLOW', "Inflow", ""),
+ ('BASIC', "Basic", ""),
+ ),
+ default='BASIC',
+ )
initial_velocity = FloatVectorProperty(
- name="Initial Velocity",
- description="Initial velocity of the fluid",
- min=-100.0, max=100.0,
- default=(0.0, 0.0, 0.0),
- subtype='VELOCITY',
- )
+ name="Initial Velocity",
+ description="Initial velocity of the fluid",
+ min=-100.0, max=100.0,
+ default=(0.0, 0.0, 0.0),
+ subtype='VELOCITY',
+ )
show_flows = BoolProperty(
- name="Render Fluid Objects",
- description="Keep the fluid objects visible during rendering",
- default=False,
- )
+ name="Render Fluid Objects",
+ description="Keep the fluid objects visible during rendering",
+ default=False,
+ )
start_baking = BoolProperty(
- name="Start Fluid Bake",
- description=("Start baking the fluid immediately "
- "after creating the domain object"),
- default=False,
- )
+ name="Start Fluid Bake",
+ description=("Start baking the fluid immediately "
+ "after creating the domain object"),
+ default=False,
+ )
def execute(self, context):
if not bpy.app.build_options.mod_fluid:
diff --git a/release/scripts/startup/bl_operators/object_randomize_transform.py b/release/scripts/startup/bl_operators/object_randomize_transform.py
index a91e1a5b031..dbc9461ad5a 100644
--- a/release/scripts/startup/bl_operators/object_randomize_transform.py
+++ b/release/scripts/startup/bl_operators/object_randomize_transform.py
@@ -104,55 +104,55 @@ class RandomizeLocRotSize(Operator):
bl_options = {'REGISTER', 'UNDO'}
random_seed = IntProperty(
- name="Random Seed",
- description="Seed value for the random generator",
- min=0,
- max=10000,
- default=0,
- )
+ name="Random Seed",
+ description="Seed value for the random generator",
+ min=0,
+ max=10000,
+ default=0,
+ )
use_delta = BoolProperty(
- name="Transform Delta",
- description=("Randomize delta transform values "
- "instead of regular transform"),
- default=False,
- )
+ name="Transform Delta",
+ description=("Randomize delta transform values "
+ "instead of regular transform"),
+ default=False,
+ )
use_loc = BoolProperty(
- name="Randomize Location",
- description="Randomize the location values",
- default=True,
- )
+ name="Randomize Location",
+ description="Randomize the location values",
+ default=True,
+ )
loc = FloatVectorProperty(
- name="Location",
- description=("Maximum distance the objects "
- "can spread over each axis"),
- min=-100.0,
- max=100.0,
- default=(0.0, 0.0, 0.0),
- subtype='TRANSLATION',
- )
+ name="Location",
+ description=("Maximum distance the objects "
+ "can spread over each axis"),
+ min=-100.0,
+ max=100.0,
+ default=(0.0, 0.0, 0.0),
+ subtype='TRANSLATION',
+ )
use_rot = BoolProperty(
- name="Randomize Rotation",
- description="Randomize the rotation values",
- default=True,
- )
+ name="Randomize Rotation",
+ description="Randomize the rotation values",
+ default=True,
+ )
rot = FloatVectorProperty(
- name="Rotation",
- description="Maximum rotation over each axis",
- min=-3.141592, # math.pi
- max=+3.141592,
- default=(0.0, 0.0, 0.0),
- subtype='EULER',
- )
+ name="Rotation",
+ description="Maximum rotation over each axis",
+ min=-3.141592, # math.pi
+ max=+3.141592,
+ default=(0.0, 0.0, 0.0),
+ subtype='EULER',
+ )
use_scale = BoolProperty(
- name="Randomize Scale",
- description="Randomize the scale values",
- default=True,
- )
+ name="Randomize Scale",
+ description="Randomize the scale values",
+ default=True,
+ )
scale_even = BoolProperty(
- name="Scale Even",
- description="Use the same scale value for all axis",
- default=False,
- )
+ name="Scale Even",
+ description="Use the same scale value for all axis",
+ default=False,
+ )
'''scale_min = FloatProperty(
name="Minimun Scale Factor",
@@ -162,13 +162,13 @@ class RandomizeLocRotSize(Operator):
)'''
scale = FloatVectorProperty(
- name="Scale",
- description="Maximum scale randomization over each axis",
- min=-100.0,
- max=100.0,
- default=(1.0, 1.0, 1.0),
- subtype='TRANSLATION',
- )
+ name="Scale",
+ description="Maximum scale randomization over each axis",
+ min=-100.0,
+ max=100.0,
+ default=(1.0, 1.0, 1.0),
+ subtype='TRANSLATION',
+ )
def execute(self, context):
seed = self.random_seed
diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py
index 5c1ca0ab2ad..780183fb713 100644
--- a/release/scripts/startup/bl_operators/presets.py
+++ b/release/scripts/startup/bl_operators/presets.py
@@ -29,6 +29,7 @@ WindowManager.preset_name = StringProperty(
default="New Preset"
)
+
class AddPresetBase:
"""Base preset class, only for subclassing
subclasses must define
@@ -41,26 +42,26 @@ class AddPresetBase:
bl_options = {'REGISTER', 'INTERNAL'}
name = StringProperty(
- name="Name",
- description="Name of the preset, used to make the path name",
- maxlen=64,
- options={'SKIP_SAVE'},
- )
+ name="Name",
+ description="Name of the preset, used to make the path name",
+ maxlen=64,
+ options={'SKIP_SAVE'},
+ )
remove_name = BoolProperty(
- default=False,
- options={'HIDDEN', 'SKIP_SAVE'},
- )
+ default=False,
+ options={'HIDDEN', 'SKIP_SAVE'},
+ )
remove_active = BoolProperty(
- default=False,
- options={'HIDDEN', 'SKIP_SAVE'},
- )
+ default=False,
+ options={'HIDDEN', 'SKIP_SAVE'},
+ )
# needed for mix-ins
order = [
"name",
"remove_name",
"remove_active",
- ]
+ ]
@staticmethod
def as_filename(name): # could reuse for other presets
@@ -225,14 +226,14 @@ class ExecutePreset(Operator):
bl_label = "Execute a Python Preset"
filepath = StringProperty(
- subtype='FILE_PATH',
- options={'SKIP_SAVE'},
- )
+ subtype='FILE_PATH',
+ options={'SKIP_SAVE'},
+ )
menu_idname = StringProperty(
- name="Menu ID Name",
- description="ID name of the menu this was called from",
- options={'SKIP_SAVE'},
- )
+ name="Menu ID Name",
+ description="ID name of the menu this was called from",
+ options={'SKIP_SAVE'},
+ )
def execute(self, context):
from os.path import basename, splitext
@@ -268,22 +269,26 @@ class PresetMenu(Panel):
@classmethod
def draw_panel_header(cls, layout):
layout.emboss = 'NONE'
- layout.popover(cls.bl_space_type,
- cls.bl_region_type,
- cls.__name__,
- icon='PRESET',
- text='')
+ layout.popover(
+ cls.bl_space_type,
+ cls.bl_region_type,
+ cls.__name__,
+ icon='PRESET',
+ text="",
+ )
@classmethod
def draw_menu(cls, layout, text=None):
- if text == None:
+ if text is None:
text = cls.bl_label
- layout.popover(cls.bl_space_type,
- cls.bl_region_type,
- cls.__name__,
- icon='PRESET',
- text=text)
+ layout.popover(
+ cls.bl_space_type,
+ cls.bl_region_type,
+ cls.__name__,
+ icon='PRESET',
+ text=text,
+ )
def draw(self, context):
layout = self.layout
@@ -329,10 +334,10 @@ class AddPresetCamera(AddPresetBase, Operator):
preset_subdir = "camera"
use_focal_length = BoolProperty(
- name="Include Focal Length",
- description="Include focal length into the preset",
- options={'SKIP_SAVE'},
- )
+ name="Include Focal Length",
+ description="Include focal length into the preset",
+ options={'SKIP_SAVE'},
+ )
@property
def preset_values(self):
@@ -397,12 +402,12 @@ class AddPresetFluid(AddPresetBase, Operator):
preset_defines = [
"fluid = bpy.context.fluid"
- ]
+ ]
preset_values = [
"fluid.settings.viscosity_base",
"fluid.settings.viscosity_exponent",
- ]
+ ]
preset_subdir = "fluid"
@@ -434,7 +439,7 @@ class AddPresetHairDynamics(AddPresetBase, Operator):
"settings.density_strength",
"settings.voxel_cell_size",
"settings.pin_stiffness",
- ]
+ ]
class AddPresetInteraction(AddPresetBase, Operator):
@@ -476,11 +481,11 @@ class AddPresetTrackingCamera(AddPresetBase, Operator):
preset_subdir = "tracking_camera"
use_focal_length = BoolProperty(
- name="Include Focal Length",
- description="Include focal length into the preset",
- options={'SKIP_SAVE'},
- default=True
- )
+ name="Include Focal Length",
+ description="Include focal length into the preset",
+ options={'SKIP_SAVE'},
+ default=True
+ )
@property
def preset_values(self):
@@ -601,10 +606,10 @@ class AddPresetOperator(AddPresetBase, Operator):
preset_menu = "WM_MT_operator_presets"
operator = StringProperty(
- name="Operator",
- maxlen=64,
- options={'HIDDEN', 'SKIP_SAVE'},
- )
+ name="Operator",
+ maxlen=64,
+ options={'HIDDEN', 'SKIP_SAVE'},
+ )
preset_defines = [
"op = bpy.context.active_operator",
diff --git a/release/scripts/startup/bl_operators/rigidbody.py b/release/scripts/startup/bl_operators/rigidbody.py
index e10a2a2915e..9fa8188e946 100644
--- a/release/scripts/startup/bl_operators/rigidbody.py
+++ b/release/scripts/startup/bl_operators/rigidbody.py
@@ -51,7 +51,7 @@ class CopyRigidbodySettings(Operator):
"mesh_source",
"use_deform",
"enabled",
- )
+ )
@classmethod
def poll(cls, context):
@@ -93,23 +93,23 @@ class BakeToKeyframes(Operator):
bl_options = {'REGISTER', 'UNDO'}
frame_start = IntProperty(
- name="Start Frame",
- description="Start frame for baking",
- min=0, max=300000,
- default=1,
- )
+ name="Start Frame",
+ description="Start frame for baking",
+ min=0, max=300000,
+ default=1,
+ )
frame_end = IntProperty(
- name="End Frame",
- description="End frame for baking",
- min=1, max=300000,
- default=250,
- )
+ name="End Frame",
+ description="End frame for baking",
+ min=1, max=300000,
+ default=250,
+ )
step = IntProperty(
- name="Frame Step",
- description="Frame Step",
- min=1, max=120,
- default=1,
- )
+ name="Frame Step",
+ description="Frame Step",
+ min=1, max=120,
+ default=1,
+ )
@classmethod
def poll(cls, context):
@@ -217,28 +217,34 @@ class ConnectRigidBodies(Operator):
bl_options = {'REGISTER', 'UNDO'}
con_type = EnumProperty(
- name="Type",
- description="Type of generated constraint",
- # XXX Would be nice to get icons too, but currently not possible ;)
- items=tuple((e.identifier, e.name, e.description, e. value)
- for e in bpy.types.RigidBodyConstraint.bl_rna.properties["type"].enum_items),
- default='FIXED',
- )
+ name="Type",
+ description="Type of generated constraint",
+ # XXX Would be nice to get icons too, but currently not possible ;)
+ items=tuple(
+ (e.identifier, e.name, e.description, e. value)
+ for e in bpy.types.RigidBodyConstraint.bl_rna.properties["type"].enum_items
+ ),
+ default='FIXED',
+ )
pivot_type = EnumProperty(
- name="Location",
- description="Constraint pivot location",
- items=(('CENTER', "Center", "Pivot location is between the constrained rigid bodies"),
- ('ACTIVE', "Active", "Pivot location is at the active object position"),
- ('SELECTED', "Selected", "Pivot location is at the selected object position")),
- default='CENTER',
- )
+ name="Location",
+ description="Constraint pivot location",
+ items=(
+ ('CENTER', "Center", "Pivot location is between the constrained rigid bodies"),
+ ('ACTIVE', "Active", "Pivot location is at the active object position"),
+ ('SELECTED', "Selected", "Pivot location is at the selected object position"),
+ ),
+ default='CENTER',
+ )
connection_pattern = EnumProperty(
- name="Connection Pattern",
- description="Pattern used to connect objects",
- items=(('SELECTED_TO_ACTIVE', "Selected to Active", "Connect selected objects to the active object"),
- ('CHAIN_DISTANCE', "Chain by Distance", "Connect objects as a chain based on distance, starting at the active object")),
- default='SELECTED_TO_ACTIVE',
- )
+ name="Connection Pattern",
+ description="Pattern used to connect objects",
+ items=(
+ ('SELECTED_TO_ACTIVE', "Selected to Active", "Connect selected objects to the active object"),
+ ('CHAIN_DISTANCE', "Chain by Distance", "Connect objects as a chain based on distance, starting at the active object"),
+ ),
+ default='SELECTED_TO_ACTIVE',
+ )
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py
index e32c1ac0f81..8e95d2b9ac1 100644
--- a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py
+++ b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py
@@ -103,7 +103,7 @@ class PlayRenderedAnim(Operator):
file_b = rd.frame_path(frame=int(frame_tmp / 10))
file = ("".join((c if file_b[i] == c else "#")
- for i, c in enumerate(file_a)))
+ for i, c in enumerate(file_a)))
del file_a, file_b, frame_tmp
file = bpy.path.abspath(file) # expand '//'
else:
@@ -115,7 +115,7 @@ class PlayRenderedAnim(Operator):
self.report({'WARNING'}, "File %r not found" % file)
path_valid = False
- #one last try for full range if we used preview range
+ # one last try for full range if we used preview range
if scene.use_preview_range and not path_valid:
file = rd.frame_path(frame=scene.frame_start, preview=False)
file = bpy.path.abspath(file) # expand '//'
diff --git a/release/scripts/startup/bl_operators/sequencer.py b/release/scripts/startup/bl_operators/sequencer.py
index 337492bc8a7..c9a7aa93805 100644
--- a/release/scripts/startup/bl_operators/sequencer.py
+++ b/release/scripts/startup/bl_operators/sequencer.py
@@ -83,11 +83,11 @@ class SequencerCutMulticam(Operator):
bl_options = {'REGISTER', 'UNDO'}
camera = IntProperty(
- name="Camera",
- min=1, max=32,
- soft_min=1, soft_max=32,
- default=1,
- )
+ name="Camera",
+ min=1, max=32,
+ soft_min=1, soft_max=32,
+ default=1,
+ )
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_operators/uvcalc_follow_active.py b/release/scripts/startup/bl_operators/uvcalc_follow_active.py
index 29cefd83328..7620b354a08 100644
--- a/release/scripts/startup/bl_operators/uvcalc_follow_active.py
+++ b/release/scripts/startup/bl_operators/uvcalc_follow_active.py
@@ -18,7 +18,7 @@
# <pep8 compliant>
-#for full docs see...
+# for full docs see...
# http://mediawiki.blender.org/index.php/Scripts/Manual/UV_Calculate/Follow_active_quads
import bpy
@@ -227,14 +227,14 @@ class FollowActiveQuads(Operator):
bl_options = {'REGISTER', 'UNDO'}
mode = bpy.props.EnumProperty(
- name="Edge Length Mode",
- description="Method to space UV edge loops",
- items=(('EVEN', "Even", "Space all UVs evenly"),
- ('LENGTH', "Length", "Average space UVs edge length of each loop"),
- ('LENGTH_AVERAGE', "Length Average", "Average space UVs edge length of each loop"),
- ),
- default='LENGTH_AVERAGE',
- )
+ name="Edge Length Mode",
+ description="Method to space UV edge loops",
+ items=(('EVEN', "Even", "Space all UVs evenly"),
+ ('LENGTH', "Length", "Average space UVs edge length of each loop"),
+ ('LENGTH_AVERAGE', "Length Average", "Average space UVs edge length of each loop"),
+ ),
+ default='LENGTH_AVERAGE',
+ )
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_operators/uvcalc_lightmap.py b/release/scripts/startup/bl_operators/uvcalc_lightmap.py
index ff7bab4102a..0d5bc3136a5 100644
--- a/release/scripts/startup/bl_operators/uvcalc_lightmap.py
+++ b/release/scripts/startup/bl_operators/uvcalc_lightmap.py
@@ -33,7 +33,7 @@ class prettyface:
"yoff",
"has_parent",
"rot",
- )
+ )
def __init__(self, data):
self.has_parent = False
@@ -63,9 +63,9 @@ class prettyface:
self.width = self.height = d * 2
- #else:
- # print(len(data), data)
- # raise "Error"
+ # else:
+ # print(len(data), data)
+ # raise "Error"
for pf in data:
pf.has_parent = True
@@ -460,7 +460,7 @@ def lightmap_uvpack(meshes,
# Tall boxes in groups of 2
for d, boxes in list(odd_dict.items()):
if d[1] < max_int_dimension:
- #\boxes.sort(key = lambda a: len(a.children))
+ # boxes.sort(key=lambda a: len(a.children))
while len(boxes) >= 2:
# print("foo", len(boxes))
ok = True
@@ -597,6 +597,7 @@ def unwrap(operator, context, **kwargs):
return {'FINISHED'}
+
from bpy.props import BoolProperty, FloatProperty, IntProperty
@@ -616,50 +617,55 @@ class LightMapPack(Operator):
bl_options = {'UNDO'}
PREF_CONTEXT = bpy.props.EnumProperty(
- name="Selection",
- items=(('SEL_FACES', "Selected Faces", "Space all UVs evenly"),
- ('ALL_FACES', "All Faces", "Average space UVs edge length of each loop"),
- ('ALL_OBJECTS', "Selected Mesh Object", "Average space UVs edge length of each loop")
- ),
- )
+ name="Selection",
+ items=(
+ ('SEL_FACES', "Selected Faces", "Space all UVs evenly"),
+ ('ALL_FACES', "All Faces", "Average space UVs edge length of each loop"),
+ ('ALL_OBJECTS', "Selected Mesh Object", "Average space UVs edge length of each loop")
+ ),
+ )
# Image & UVs...
PREF_PACK_IN_ONE = BoolProperty(
- name="Share Tex Space",
- description=("Objects Share texture space, map all objects "
- "into 1 uvmap"),
- default=True,
- )
+ name="Share Tex Space",
+ description=(
+ "Objects Share texture space, map all objects "
+ "into 1 uvmap"
+ ),
+ default=True,
+ )
PREF_NEW_UVLAYER = BoolProperty(
- name="New UV Map",
- description="Create a new UV map for every mesh packed",
- default=False,
- )
+ name="New UV Map",
+ description="Create a new UV map for every mesh packed",
+ default=False,
+ )
PREF_APPLY_IMAGE = BoolProperty(
- name="New Image",
- description=("Assign new images for every mesh (only one if "
- "shared tex space enabled)"),
- default=False,
- )
+ name="New Image",
+ description=(
+ "Assign new images for every mesh (only one if "
+ "shared tex space enabled)"
+ ),
+ default=False,
+ )
PREF_IMG_PX_SIZE = IntProperty(
- name="Image Size",
- description="Width and Height for the new image",
- min=64, max=5000,
- default=512,
- )
+ name="Image Size",
+ description="Width and Height for the new image",
+ min=64, max=5000,
+ default=512,
+ )
# UV Packing...
PREF_BOX_DIV = IntProperty(
- name="Pack Quality",
- description="Pre Packing before the complex boxpack",
- min=1, max=48,
- default=12,
- )
+ name="Pack Quality",
+ description="Pre Packing before the complex boxpack",
+ min=1, max=48,
+ default=12,
+ )
PREF_MARGIN_DIV = FloatProperty(
- name="Margin",
- description="Size of the margin as a division of the UV",
- min=0.001, max=1.0,
- default=0.1,
- )
+ name="Margin",
+ description="Size of the margin as a division of the UV",
+ min=0.001, max=1.0,
+ default=0.1,
+ )
def execute(self, context):
kwargs = self.as_keywords()
diff --git a/release/scripts/startup/bl_operators/uvcalc_smart_project.py b/release/scripts/startup/bl_operators/uvcalc_smart_project.py
index 25783653414..aebc0ae0313 100644
--- a/release/scripts/startup/bl_operators/uvcalc_smart_project.py
+++ b/release/scripts/startup/bl_operators/uvcalc_smart_project.py
@@ -26,7 +26,7 @@ from mathutils import (
import bpy
from bpy.types import Operator
-DEG_TO_RAD = 0.017453292519943295 # pi/180.0
+DEG_TO_RAD = 0.017453292519943295 # pi/180.0
# see bugs:
# - T31598 (when too small).
# - T48086 (when too big).
@@ -38,6 +38,7 @@ global USER_FILL_HOLES_QUALITY
USER_FILL_HOLES = None
USER_FILL_HOLES_QUALITY = None
+
def pointInTri2D(v, v1, v2, v3):
key = v1.x, v1.y, v2.x, v2.y, v3.x, v3.y
@@ -93,20 +94,25 @@ def pointInTri2D(v, v1, v2, v3):
def boundsIsland(faces):
- minx = maxx = faces[0].uv[0][0] # Set initial bounds.
+ minx = maxx = faces[0].uv[0][0] # Set initial bounds.
miny = maxy = faces[0].uv[0][1]
# print len(faces), minx, maxx, miny , maxy
for f in faces:
for uv in f.uv:
- x= uv.x
- y= uv.y
- if x<minx: minx= x
- if y<miny: miny= y
- if x>maxx: maxx= x
- if y>maxy: maxy= y
+ x = uv.x
+ y = uv.y
+ if x < minx:
+ minx = x
+ if y < miny:
+ miny = y
+ if x > maxx:
+ maxx = x
+ if y > maxy:
+ maxy = y
return minx, miny, maxx, maxy
+
"""
def boundsEdgeLoop(edges):
minx = maxx = edges[0][0] # Set initial bounds.
@@ -128,45 +134,51 @@ def boundsEdgeLoop(edges):
# Only for UV's
# only returns outline edges for intersection tests. and unique points.
+
def island2Edge(island):
# Vert index edges
edges = {}
- unique_points= {}
+ unique_points = {}
for f in island:
- f_uvkey= map(tuple, f.uv)
-
+ f_uvkey = map(tuple, f.uv)
for vIdx, edkey in enumerate(f.edge_keys):
unique_points[f_uvkey[vIdx]] = f.uv[vIdx]
- if f.v[vIdx].index > f.v[vIdx-1].index:
- i1= vIdx-1; i2= vIdx
+ if f.v[vIdx].index > f.v[vIdx - 1].index:
+ i1 = vIdx - 1
+ i2 = vIdx
else:
- i1= vIdx; i2= vIdx-1
+ i1 = vIdx
+ i2 = vIdx - 1
- try: edges[ f_uvkey[i1], f_uvkey[i2] ] *= 0 # sets any edge with more than 1 user to 0 are not returned.
- except: edges[ f_uvkey[i1], f_uvkey[i2] ] = (f.uv[i1] - f.uv[i2]).length,
+ try:
+ edges[f_uvkey[i1], f_uvkey[i2]] *= 0 # sets any edge with more than 1 user to 0 are not returned.
+ except:
+ edges[f_uvkey[i1], f_uvkey[i2]] = (f.uv[i1] - f.uv[i2]).length,
# If 2 are the same then they will be together, but full [a,b] order is not correct.
# Sort by length
-
length_sorted_edges = [(Vector(key[0]), Vector(key[1]), value) for key, value in edges.items() if value != 0]
- try: length_sorted_edges.sort(key = lambda A: -A[2]) # largest first
- except: length_sorted_edges.sort(lambda A, B: cmp(B[2], A[2]))
+ try:
+ length_sorted_edges.sort(key=lambda A: -A[2]) # largest first
+ except:
+ length_sorted_edges.sort(lambda A, B: cmp(B[2], A[2]))
# Its okay to leave the length in there.
- #for e in length_sorted_edges:
+ # for e in length_sorted_edges:
# e.pop(2)
# return edges and unique points
return length_sorted_edges, [v.to_3d() for v in unique_points.values()]
+
# ========================= NOT WORKING????
# Find if a points inside an edge loop, unordered.
# pt is and x/y
@@ -190,6 +202,7 @@ def pointInEdges(pt, edges):
return intersectCount % 2
"""
+
def pointInIsland(pt, island):
vec1, vec2, vec3 = Vector(), Vector(), Vector()
for f in island:
@@ -212,7 +225,7 @@ def pointInIsland(pt, island):
# box is (left,bottom, right, top)
def islandIntersectUvIsland(source, target, SourceOffset):
# Is 1 point in the box, inside the vertLoops
- edgeLoopsSource = source[6] # Pretend this is offset
+ edgeLoopsSource = source[6] # Pretend this is offset
edgeLoopsTarget = target[6]
# Edge intersect test
@@ -220,24 +233,24 @@ def islandIntersectUvIsland(source, target, SourceOffset):
for seg in edgeLoopsTarget:
i = geometry.intersect_line_line_2d(seg[0],
seg[1],
- SourceOffset+ed[0],
- SourceOffset+ed[1],
+ SourceOffset + ed[0],
+ SourceOffset + ed[1],
)
if i:
- return 1 # LINE INTERSECTION
+ return 1 # LINE INTERSECTION
# 1 test for source being totally inside target
SourceOffset.resize_3d()
for pv in source[7]:
- if pointInIsland(pv+SourceOffset, target[0]):
- return 2 # SOURCE INSIDE TARGET
+ if pointInIsland(pv + SourceOffset, target[0]):
+ return 2 # SOURCE INSIDE TARGET
# 2 test for a part of the target being totally inside the source.
for pv in target[7]:
- if pointInIsland(pv-SourceOffset, source[0]):
- return 3 # PART OF TARGET INSIDE SOURCE.
+ if pointInIsland(pv - SourceOffset, source[0]):
+ return 3 # PART OF TARGET INSIDE SOURCE.
- return 0 # NO INTERSECTION
+ return 0 # NO INTERSECTION
def rotate_uvs(uv_points, angle):
@@ -249,7 +262,7 @@ def rotate_uvs(uv_points, angle):
def optiRotateUvIsland(faces):
- uv_points = [uv for f in faces for uv in f.uv]
+ uv_points = [uv for f in faces for uv in f.uv]
angle = geometry.box_fit_2d(uv_points)
if angle != 0.0:
@@ -270,81 +283,78 @@ def mergeUvIslands(islandList):
global USER_FILL_HOLES
global USER_FILL_HOLES_QUALITY
-
# Pack islands to bottom LHS
# Sync with island
- #islandTotFaceArea = [] # A list of floats, each island area
- #islandArea = [] # a list of tuples ( area, w,h)
-
+ # islandTotFaceArea = [] # A list of floats, each island area
+ # islandArea = [] # a list of tuples ( area, w,h)
decoratedIslandList = []
islandIdx = len(islandList)
while islandIdx:
- islandIdx-=1
+ islandIdx -= 1
minx, miny, maxx, maxy = boundsIsland(islandList[islandIdx])
- w, h = maxx-minx, maxy-miny
+ w, h = maxx - minx, maxy - miny
totFaceArea = 0
- offset= Vector((minx, miny))
+ offset = Vector((minx, miny))
for f in islandList[islandIdx]:
for uv in f.uv:
uv -= offset
totFaceArea += f.area
- islandBoundsArea = w*h
+ islandBoundsArea = w * h
efficiency = abs(islandBoundsArea - totFaceArea)
# UV Edge list used for intersections as well as unique points.
edges, uniqueEdgePoints = island2Edge(islandList[islandIdx])
- decoratedIslandList.append([islandList[islandIdx], totFaceArea, efficiency, islandBoundsArea, w,h, edges, uniqueEdgePoints])
-
+ decoratedIslandList.append([islandList[islandIdx], totFaceArea, efficiency, islandBoundsArea, w, h, edges, uniqueEdgePoints])
# Sort by island bounding box area, smallest face area first.
# no.. chance that to most simple edge loop first.
- decoratedIslandListAreaSort =decoratedIslandList[:]
+ decoratedIslandListAreaSort = decoratedIslandList[:]
- decoratedIslandListAreaSort.sort(key = lambda A: A[3])
+ decoratedIslandListAreaSort.sort(key=lambda A: A[3])
# sort by efficiency, Least Efficient first.
decoratedIslandListEfficSort = decoratedIslandList[:]
# decoratedIslandListEfficSort.sort(lambda A, B: cmp(B[2], A[2]))
- decoratedIslandListEfficSort.sort(key = lambda A: -A[2])
+ decoratedIslandListEfficSort.sort(key=lambda A: -A[2])
# ================================================== THESE CAN BE TWEAKED.
# This is a quality value for the number of tests.
# from 1 to 4, generic quality value is from 1 to 100
- USER_STEP_QUALITY = ((USER_FILL_HOLES_QUALITY - 1) / 25.0) + 1
+ USER_STEP_QUALITY = ((USER_FILL_HOLES_QUALITY - 1) / 25.0) + 1
# If 100 will test as long as there is enough free space.
# this is rarely enough, and testing takes a while, so lower quality speeds this up.
# 1 means they have the same quality
- USER_FREE_SPACE_TO_TEST_QUALITY = 1 + (((100 - USER_FILL_HOLES_QUALITY)/100.0) *5)
+ USER_FREE_SPACE_TO_TEST_QUALITY = 1 + (((100 - USER_FILL_HOLES_QUALITY) / 100.0) * 5)
- #print 'USER_STEP_QUALITY', USER_STEP_QUALITY
- #print 'USER_FREE_SPACE_TO_TEST_QUALITY', USER_FREE_SPACE_TO_TEST_QUALITY
+ # print 'USER_STEP_QUALITY', USER_STEP_QUALITY
+ # print 'USER_FREE_SPACE_TO_TEST_QUALITY', USER_FREE_SPACE_TO_TEST_QUALITY
removedCount = 0
areaIslandIdx = 0
ctrl = Window.Qual.CTRL
- BREAK= False
+ BREAK = False
while areaIslandIdx < len(decoratedIslandListAreaSort) and not BREAK:
sourceIsland = decoratedIslandListAreaSort[areaIslandIdx]
# Already packed?
if not sourceIsland[0]:
- areaIslandIdx+=1
+ areaIslandIdx += 1
else:
efficIslandIdx = 0
while efficIslandIdx < len(decoratedIslandListEfficSort) and not BREAK:
if Window.GetKeyQualifiers() & ctrl:
- BREAK= True
+ BREAK = True
break
# Now we have 2 islands, if the efficiency of the islands lowers theres an
@@ -355,64 +365,60 @@ def mergeUvIslands(islandList):
targetIsland = decoratedIslandListEfficSort[efficIslandIdx]
-
if sourceIsland[0] == targetIsland[0] or\
- not targetIsland[0] or\
- not sourceIsland[0]:
+ not targetIsland[0] or\
+ not sourceIsland[0]:
pass
else:
#~ ([island, totFaceArea, efficiency, islandArea, w,h])
# Wasted space on target is greater then UV bounding island area.
-
#~ if targetIsland[3] > (sourceIsland[2]) and\ #
- #~ print USER_FREE_SPACE_TO_TEST_QUALITY
+ # ~ print USER_FREE_SPACE_TO_TEST_QUALITY
if targetIsland[2] > (sourceIsland[1] * USER_FREE_SPACE_TO_TEST_QUALITY) and\
- targetIsland[4] > sourceIsland[4] and\
- targetIsland[5] > sourceIsland[5]:
+ targetIsland[4] > sourceIsland[4] and\
+ targetIsland[5] > sourceIsland[5]:
# DEBUG # print '%.10f %.10f' % (targetIsland[3], sourceIsland[1])
# These enough spare space lets move the box until it fits
# How many times does the source fit into the target x/y
- blockTestXUnit = targetIsland[4]/sourceIsland[4]
- blockTestYUnit = targetIsland[5]/sourceIsland[5]
+ blockTestXUnit = targetIsland[4] / sourceIsland[4]
+ blockTestYUnit = targetIsland[5] / sourceIsland[5]
boxLeft = 0
-
# Distance we can move between whilst staying inside the targets bounds.
testWidth = targetIsland[4] - sourceIsland[4]
testHeight = targetIsland[5] - sourceIsland[5]
# Increment we move each test. x/y
- xIncrement = (testWidth / (blockTestXUnit * ((USER_STEP_QUALITY/50)+0.1)))
- yIncrement = (testHeight / (blockTestYUnit * ((USER_STEP_QUALITY/50)+0.1)))
+ xIncrement = (testWidth / (blockTestXUnit * ((USER_STEP_QUALITY / 50) + 0.1)))
+ yIncrement = (testHeight / (blockTestYUnit * ((USER_STEP_QUALITY / 50) + 0.1)))
# Make sure were not moving less then a 3rg of our width/height
- if xIncrement<sourceIsland[4]/3:
- xIncrement= sourceIsland[4]
- if yIncrement<sourceIsland[5]/3:
- yIncrement= sourceIsland[5]
-
+ if xIncrement < sourceIsland[4] / 3:
+ xIncrement = sourceIsland[4]
+ if yIncrement < sourceIsland[5] / 3:
+ yIncrement = sourceIsland[5]
- boxLeft = 0 # Start 1 back so we can jump into the loop.
- boxBottom= 0 #-yIncrement
+ boxLeft = 0 # Start 1 back so we can jump into the loop.
+ boxBottom = 0 # -yIncrement
- #~ testcount= 0
+ # ~ testcount= 0
while boxBottom <= testHeight:
# Should we use this? - not needed for now.
- #~ if Window.GetKeyQualifiers() & ctrl:
- #~ BREAK= True
- #~ break
+ # ~ if Window.GetKeyQualifiers() & ctrl:
+ # ~ BREAK= True
+ # ~ break
- ##testcount+=1
- #print 'Testing intersect'
+ # testcount+=1
+ # print 'Testing intersect'
Intersect = islandIntersectUvIsland(sourceIsland, targetIsland, Vector((boxLeft, boxBottom)))
- #print 'Done', Intersect
+ # print 'Done', Intersect
if Intersect == 1: # Line intersect, don't bother with this any more
pass
@@ -429,93 +435,92 @@ def mergeUvIslands(islandList):
# Move the test along its width + SMALL_NUM
#boxLeft += sourceIsland[4] + SMALL_NUM
boxLeft += sourceIsland[4]
- elif Intersect == 0: # No intersection?? Place it.
+ elif Intersect == 0: # No intersection?? Place it.
# Progress
- removedCount +=1
-#XXX Window.DrawProgressBar(0.0, 'Merged: %i islands, Ctrl to finish early.' % removedCount)
+ removedCount += 1
+# XXX Window.DrawProgressBar(0.0, 'Merged: %i islands, Ctrl to finish early.' % removedCount)
# Move faces into new island and offset
targetIsland[0].extend(sourceIsland[0])
- offset= Vector((boxLeft, boxBottom))
+ offset = Vector((boxLeft, boxBottom))
for f in sourceIsland[0]:
for uv in f.uv:
- uv+= offset
+ uv += offset
del sourceIsland[0][:] # Empty
-
# Move edge loop into new and offset.
# targetIsland[6].extend(sourceIsland[6])
- #while sourceIsland[6]:
- targetIsland[6].extend( [ (\
- (e[0]+offset, e[1]+offset, e[2])\
- ) for e in sourceIsland[6] ] )
+ # while sourceIsland[6]:
+ targetIsland[6].extend([(
+ (e[0] + offset, e[1] + offset, e[2])
+ ) for e in sourceIsland[6]])
del sourceIsland[6][:] # Empty
# Sort by edge length, reverse so biggest are first.
- try: targetIsland[6].sort(key = lambda A: A[2])
- except: targetIsland[6].sort(lambda B,A: cmp(A[2], B[2] ))
-
+ try:
+ targetIsland[6].sort(key=lambda A: A[2])
+ except:
+ targetIsland[6].sort(lambda B, A: cmp(A[2], B[2]))
targetIsland[7].extend(sourceIsland[7])
- offset= Vector((boxLeft, boxBottom, 0.0))
+ offset = Vector((boxLeft, boxBottom, 0.0))
for p in sourceIsland[7]:
- p+= offset
+ p += offset
del sourceIsland[7][:]
-
# Decrement the efficiency
- targetIsland[1]+=sourceIsland[1] # Increment totFaceArea
- targetIsland[2]-=sourceIsland[1] # Decrement efficiency
+ targetIsland[1] += sourceIsland[1] # Increment totFaceArea
+ targetIsland[2] -= sourceIsland[1] # Decrement efficiency
# IF we ever used these again, should set to 0, eg
- sourceIsland[2] = 0 # No area if anyone wants to know
+ sourceIsland[2] = 0 # No area if anyone wants to know
break
-
# INCREMENT NEXT LOCATION
if boxLeft > testWidth:
boxBottom += yIncrement
boxLeft = 0.0
else:
boxLeft += xIncrement
- ##print testcount
+ # print testcount
- efficIslandIdx+=1
- areaIslandIdx+=1
+ efficIslandIdx += 1
+ areaIslandIdx += 1
# Remove empty islands
i = len(islandList)
while i:
- i-=1
+ i -= 1
if not islandList[i]:
- del islandList[i] # Can increment islands removed here.
+ del islandList[i] # Can increment islands removed here.
# Takes groups of faces. assumes face groups are UV groups.
+
+
def getUvIslands(faceGroups, me):
# Get seams so we don't cross over seams
- edge_seams = {} # should be a set
+ edge_seams = {} # should be a set
for ed in me.edges:
if ed.use_seam:
- edge_seams[ed.key] = None # dummy var- use sets!
+ edge_seams[ed.key] = None # dummy var- use sets!
# Done finding seams
-
islandList = []
-#XXX Window.DrawProgressBar(0.0, 'Splitting %d projection groups into UV islands:' % len(faceGroups))
- #print '\tSplitting %d projection groups into UV islands:' % len(faceGroups),
+# XXX Window.DrawProgressBar(0.0, 'Splitting %d projection groups into UV islands:' % len(faceGroups))
+ # print '\tSplitting %d projection groups into UV islands:' % len(faceGroups),
# Find grouped faces
faceGroupIdx = len(faceGroups)
while faceGroupIdx:
- faceGroupIdx-=1
+ faceGroupIdx -= 1
faces = faceGroups[faceGroupIdx]
if not faces:
@@ -526,37 +531,38 @@ def getUvIslands(faceGroups, me):
for i, f in enumerate(faces):
for ed_key in f.edge_keys:
- if ed_key in edge_seams: # DELIMIT SEAMS! ;)
- edge_users[ed_key] = [] # so as not to raise an error
+ if ed_key in edge_seams: # DELIMIT SEAMS! ;)
+ edge_users[ed_key] = [] # so as not to raise an error
else:
- try: edge_users[ed_key].append(i)
- except: edge_users[ed_key] = [i]
+ try:
+ edge_users[ed_key].append(i)
+ except:
+ edge_users[ed_key] = [i]
# Modes
# 0 - face not yet touched.
# 1 - added to island list, and need to search
# 2 - touched and searched - don't touch again.
- face_modes = [0] * len(faces) # initialize zero - untested.
+ face_modes = [0] * len(faces) # initialize zero - untested.
- face_modes[0] = 1 # start the search with face 1
+ face_modes[0] = 1 # start the search with face 1
newIsland = []
newIsland.append(faces[0])
-
ok = True
while ok:
ok = True
while ok:
- ok= False
+ ok = False
for i in range(len(faces)):
- if face_modes[i] == 1: # search
+ if face_modes[i] == 1: # search
for ed_key in faces[i].edge_keys:
for ii in edge_users[ed_key]:
if i != ii and face_modes[ii] == 0:
- face_modes[ii] = ok = 1 # mark as searched
+ face_modes[ii] = ok = 1 # mark as searched
newIsland.append(faces[ii])
# mark as searched, don't look again.
@@ -574,7 +580,7 @@ def getUvIslands(faceGroups, me):
break
# if not ok will stop looping
-#XXX Window.DrawProgressBar(0.1, 'Optimizing Rotation for %i UV Islands' % len(islandList))
+# XXX Window.DrawProgressBar(0.1, 'Optimizing Rotation for %i UV Islands' % len(islandList))
for island in islandList:
optiRotateUvIsland(island)
@@ -584,9 +590,8 @@ def getUvIslands(faceGroups, me):
def packIslands(islandList):
if USER_FILL_HOLES:
-#XXX Window.DrawProgressBar(0.1, 'Merging Islands (Ctrl: skip merge)...')
- mergeUvIslands(islandList) # Modify in place
-
+ # XXX Window.DrawProgressBar(0.1, 'Merging Islands (Ctrl: skip merge)...')
+ mergeUvIslands(islandList) # Modify in place
# Now we have UV islands, we need to pack them.
@@ -603,16 +608,16 @@ def packIslands(islandList):
while islandIdx < len(islandList):
minx, miny, maxx, maxy = boundsIsland(islandList[islandIdx])
- w, h = maxx-minx, maxy-miny
+ w, h = maxx - minx, maxy - miny
if USER_ISLAND_MARGIN:
- minx -= USER_ISLAND_MARGIN# *w
- miny -= USER_ISLAND_MARGIN# *h
- maxx += USER_ISLAND_MARGIN# *w
- maxy += USER_ISLAND_MARGIN# *h
+ minx -= USER_ISLAND_MARGIN # *w
+ miny -= USER_ISLAND_MARGIN # *h
+ maxx += USER_ISLAND_MARGIN # *w
+ maxy += USER_ISLAND_MARGIN # *h
# recalc width and height
- w, h = maxx-minx, maxy-miny
+ w, h = maxx - minx, maxy - miny
if w < SMALL_NUM:
w = SMALL_NUM
@@ -628,24 +633,24 @@ def packIslands(islandList):
# Add to boxList. use the island idx for the BOX id.
packBoxes.append([0, 0, w, h])
- islandIdx+=1
+ islandIdx += 1
# Now we have a list of boxes to pack that syncs
# with the islands.
- #print '\tPacking UV Islands...'
-#XXX Window.DrawProgressBar(0.7, "Packing %i UV Islands..." % len(packBoxes) )
+ # print '\tPacking UV Islands...'
+# XXX Window.DrawProgressBar(0.7, "Packing %i UV Islands..." % len(packBoxes) )
# time1 = time.time()
packWidth, packHeight = geometry.box_pack_2d(packBoxes)
# print 'Box Packing Time:', time.time() - time1
- #if len(pa ckedLs) != len(islandList):
+ # if len(pa ckedLs) != len(islandList):
# raise ValueError("Packed boxes differs from original length")
- #print '\tWriting Packed Data to faces'
-#XXX Window.DrawProgressBar(0.8, "Writing Packed Data to faces")
+ # print '\tWriting Packed Data to faces'
+# XXX Window.DrawProgressBar(0.8, "Writing Packed Data to faces")
# Sort by ID, so there in sync again
islandIdx = len(islandList)
@@ -661,16 +666,16 @@ def packIslands(islandList):
xfactor = yfactor = 1.0 / max(packWidth, packHeight)
while islandIdx:
- islandIdx -=1
+ islandIdx -= 1
# Write the packed values to the UV's
xoffset = packBoxes[islandIdx][0] - islandOffsetList[islandIdx][0]
yoffset = packBoxes[islandIdx][1] - islandOffsetList[islandIdx][1]
- for f in islandList[islandIdx]: # Offsetting the UV's so they fit in there packed box
+ for f in islandList[islandIdx]: # Offsetting the UV's so they fit in there packed box
for uv in f.uv:
- uv.x= (uv.x+xoffset) * xfactor
- uv.y= (uv.y+yoffset) * yfactor
+ uv.x = (uv.x + xoffset) * xfactor
+ uv.y = (uv.y + yoffset) * yfactor
def VectoQuat(vec):
@@ -679,7 +684,8 @@ def VectoQuat(vec):
class thickface:
- __slost__= "v", "uv", "no", "area", "edge_keys"
+ __slost__ = "v", "uv", "no", "area", "edge_keys"
+
def __init__(self, face, uv_layer, mesh_verts):
self.v = [mesh_verts[i] for i in face.vertices]
self.uv = [uv_layer[i].uv for i in face.loop_indices]
@@ -700,18 +706,20 @@ def main_consts():
ROTMAT_2D_POS_45D = Matrix.Rotation(radians(45.0), 2)
RotMatStepRotation = []
- rot_angle = 22.5 #45.0/2
+ rot_angle = 22.5 # 45.0/2
while rot_angle > 0.1:
RotMatStepRotation.append([
Matrix.Rotation(radians(+rot_angle), 2),
Matrix.Rotation(radians(-rot_angle), 2),
- ])
+ ])
- rot_angle = rot_angle/2.0
+ rot_angle = rot_angle / 2.0
global ob
ob = None
+
+
def main(context,
island_margin,
projection_limit,
@@ -741,18 +749,18 @@ def main(context,
# Create the variables.
USER_PROJECTION_LIMIT = projection_limit
USER_ONLY_SELECTED_FACES = True
- USER_SHARE_SPACE = 1 # Only for hole filling.
+ USER_SHARE_SPACE = 1 # Only for hole filling.
USER_STRETCH_ASPECT = stretch_to_bounds
- USER_ISLAND_MARGIN = island_margin # Only for hole filling.
+ USER_ISLAND_MARGIN = island_margin # Only for hole filling.
USER_FILL_HOLES = 0
- USER_FILL_HOLES_QUALITY = 50 # Only for hole filling.
- USER_VIEW_INIT = 0 # Only for hole filling.
+ USER_FILL_HOLES_QUALITY = 50 # Only for hole filling.
+ USER_VIEW_INIT = 0 # Only for hole filling.
is_editmode = (context.active_object.mode == 'EDIT')
if is_editmode:
- obList = [ob for ob in [context.active_object] if ob and ob.type == 'MESH']
+ obList = [ob for ob in [context.active_object] if ob and ob.type == 'MESH']
else:
- obList = [ob for ob in context.selected_editable_objects if ob and ob.type == 'MESH']
+ obList = [ob for ob in context.selected_editable_objects if ob and ob.type == 'MESH']
USER_ONLY_SELECTED_FACES = False
if not obList:
@@ -770,15 +778,14 @@ def main(context,
time.sleep(10)
'''
-#~ XXX if not Draw.PupBlock(ob % len(obList), pup_block):
-#~ XXX return
-#~ XXX del ob
+# ~ XXX if not Draw.PupBlock(ob % len(obList), pup_block):
+# ~ XXX return
+# ~ XXX del ob
# Convert from being button types
USER_PROJECTION_LIMIT_CONVERTED = cos(USER_PROJECTION_LIMIT * DEG_TO_RAD)
- USER_PROJECTION_LIMIT_HALF_CONVERTED = cos((USER_PROJECTION_LIMIT/2) * DEG_TO_RAD)
-
+ USER_PROJECTION_LIMIT_HALF_CONVERTED = cos((USER_PROJECTION_LIMIT / 2) * DEG_TO_RAD)
# Toggle Edit mode
is_editmode = (context.active_object.mode == 'EDIT')
@@ -788,19 +795,18 @@ def main(context,
if USER_SHARE_SPACE:
# Sort by data name so we get consistent results
- obList.sort(key = lambda ob: ob.data.name)
- collected_islandList= []
+ obList.sort(key=lambda ob: ob.data.name)
+ collected_islandList = []
-#XXX Window.WaitCursor(1)
+# XXX Window.WaitCursor(1)
time1 = time.time()
# Tag as False so we don't operate on the same mesh twice.
-#XXX bpy.data.meshes.tag = False
+# XXX bpy.data.meshes.tag = False
for me in bpy.data.meshes:
me.tag = False
-
for ob in obList:
me = ob.data
@@ -810,7 +816,7 @@ def main(context,
# Tag as used
me.tag = True
- if not me.uv_layers: # Mesh has no UV Coords, don't bother.
+ if not me.uv_layers: # Mesh has no UV Coords, don't bother.
me.uv_layers.new()
uv_layer = me.uv_layers.active.data
@@ -821,7 +827,7 @@ def main(context,
else:
meshFaces = [thickface(f, uv_layer, me_verts) for i, f in enumerate(me.polygons)]
-#XXX Window.DrawProgressBar(0.1, 'SmartProj UV Unwrapper, mapping "%s", %i faces.' % (me.name, len(meshFaces)))
+# XXX Window.DrawProgressBar(0.1, 'SmartProj UV Unwrapper, mapping "%s", %i faces.' % (me.name, len(meshFaces)))
# =======
# Generate a projection list from face normals, this is meant to be smart :)
@@ -849,17 +855,15 @@ def main(context,
# 0d is 1.0
# 180 IS -0.59846
-
# Initialize projectVecs
if USER_VIEW_INIT:
# Generate Projection
- projectVecs = [Vector(Window.GetViewVector()) * ob.matrix_world.inverted().to_3x3()] # We add to this along the way
+ projectVecs = [Vector(Window.GetViewVector()) * ob.matrix_world.inverted().to_3x3()] # We add to this along the way
else:
projectVecs = []
newProjectVec = meshFaces[0].no
- newProjectMeshFaces = [] # Popping stuffs it up.
-
+ newProjectMeshFaces = [] # Popping stuffs it up.
# Pretend that the most unique angle is ages away to start the loop off
mostUniqueAngle = -1.0
@@ -867,14 +871,12 @@ def main(context,
# This is popped
tempMeshFaces = meshFaces[:]
-
-
# This while only gathers projection vecs, faces are assigned later on.
while 1:
# If theres none there then start with the largest face
# add all the faces that are close.
- for fIdx in range(len(tempMeshFaces)-1, -1, -1):
+ for fIdx in range(len(tempMeshFaces) - 1, -1, -1):
# Use half the angle limit so we don't overweight faces towards this
# normal and hog all the faces.
if newProjectVec.dot(tempMeshFaces[fIdx].no) > USER_PROJECTION_LIMIT_HALF_CONVERTED:
@@ -892,24 +894,23 @@ def main(context,
for fprop in newProjectMeshFaces:
averageVec += fprop.no * ((fprop.area * user_area_weight) + (1.0 - user_area_weight))
- if averageVec.x != 0 or averageVec.y != 0 or averageVec.z != 0: # Avoid NAN
+ if averageVec.x != 0 or averageVec.y != 0 or averageVec.z != 0: # Avoid NAN
projectVecs.append(averageVec.normalized())
-
# Get the next vec!
# Pick the face thats most different to all existing angles :)
- mostUniqueAngle = 1.0 # 1.0 is 0d. no difference.
- mostUniqueIndex = 0 # dummy
+ mostUniqueAngle = 1.0 # 1.0 is 0d. no difference.
+ mostUniqueIndex = 0 # dummy
- for fIdx in range(len(tempMeshFaces)-1, -1, -1):
- angleDifference = -1.0 # 180d difference.
+ for fIdx in range(len(tempMeshFaces) - 1, -1, -1):
+ angleDifference = -1.0 # 180d difference.
# Get the closest vec angle we are to.
for p in projectVecs:
- temp_angle_diff= p.dot(tempMeshFaces[fIdx].no)
+ temp_angle_diff = p.dot(tempMeshFaces[fIdx].no)
if angleDifference < temp_angle_diff:
- angleDifference= temp_angle_diff
+ angleDifference = temp_angle_diff
if angleDifference < mostUniqueAngle:
# We have a new most different angle
@@ -917,30 +918,28 @@ def main(context,
mostUniqueAngle = angleDifference
if mostUniqueAngle < USER_PROJECTION_LIMIT_CONVERTED:
- #print 'adding', mostUniqueAngle, USER_PROJECTION_LIMIT, len(newProjectMeshFaces)
+ # print 'adding', mostUniqueAngle, USER_PROJECTION_LIMIT, len(newProjectMeshFaces)
# Now weight the vector to all its faces, will give a more direct projection
# if the face its self was not representative of the normal from surrounding faces.
newProjectVec = tempMeshFaces[mostUniqueIndex].no
newProjectMeshFaces = [tempMeshFaces.pop(mostUniqueIndex)]
-
else:
- if len(projectVecs) >= 1: # Must have at least 2 projections
+ if len(projectVecs) >= 1: # Must have at least 2 projections
break
-
# If there are only zero area faces then its possible
# there are no projectionVecs
if not len(projectVecs):
Draw.PupMenu('error, no projection vecs where generated, 0 area faces can cause this.')
return
- faceProjectionGroupList =[[] for i in range(len(projectVecs)) ]
+ faceProjectionGroupList = [[] for i in range(len(projectVecs))]
# MAP and Arrange # We know there are 3 or 4 faces here
- for fIdx in range(len(meshFaces)-1, -1, -1):
+ for fIdx in range(len(meshFaces) - 1, -1, -1):
fvec = meshFaces[fIdx].no
i = len(projectVecs)
@@ -949,11 +948,11 @@ def main(context,
bestAngIdx = 0
# Cycle through the remaining, first already done
- while i-1:
- i-=1
+ while i - 1:
+ i -= 1
newAng = fvec.dot(projectVecs[i])
- if newAng > bestAng: # Reverse logic for dotvecs
+ if newAng > bestAng: # Reverse logic for dotvecs
bestAng = newAng
bestAngIdx = i
@@ -962,7 +961,6 @@ def main(context,
# Cull faceProjectionGroupList,
-
# Now faceProjectionGroupList is full of faces that face match the project Vecs list
for i in range(len(projectVecs)):
# Account for projectVecs having no faces.
@@ -979,7 +977,6 @@ def main(context,
# XXX - note, between mathutils in 2.4 and 2.5 the order changed.
f_uv[j][:] = (MatQuat * v.co).xy
-
if USER_SHARE_SPACE:
# Should we collect and pack later?
islandList = getUvIslands(faceProjectionGroupList, me)
@@ -990,12 +987,11 @@ def main(context,
islandList = getUvIslands(faceProjectionGroupList, me)
packIslands(islandList)
-
# update the mesh here if we need to.
# We want to pack all in 1 go, so pack now
if USER_SHARE_SPACE:
-#XXX Window.DrawProgressBar(0.9, "Box Packing for all objects...")
+ # XXX Window.DrawProgressBar(0.9, "Box Packing for all objects...")
packIslands(collected_islandList)
print("Smart Projection time: %.2f" % (time.time() - time1))
@@ -1006,31 +1002,32 @@ def main(context,
bpy.ops.object.mode_set(mode='EDIT')
if use_aspect:
- import bmesh
- aspect = context.scene.uvedit_aspect(context.active_object)
- if aspect[0] > aspect[1]:
- aspect[0] = aspect[1]/aspect[0];
- aspect[1] = 1.0
- else:
- aspect[1] = aspect[0]/aspect[1];
- aspect[0] = 1.0
+ import bmesh
+ aspect = context.scene.uvedit_aspect(context.active_object)
+ if aspect[0] > aspect[1]:
+ aspect[0] = aspect[1] / aspect[0]
+ aspect[1] = 1.0
+ else:
+ aspect[1] = aspect[0] / aspect[1]
+ aspect[0] = 1.0
- bm = bmesh.from_edit_mesh(me)
+ bm = bmesh.from_edit_mesh(me)
- uv_act = bm.loops.layers.uv.active
+ uv_act = bm.loops.layers.uv.active
- faces = [f for f in bm.faces if f.select]
+ faces = [f for f in bm.faces if f.select]
- for f in faces:
- for l in f.loops:
- l[uv_act].uv[0] *= aspect[0]
- l[uv_act].uv[1] *= aspect[1]
+ for f in faces:
+ for l in f.loops:
+ l[uv_act].uv[0] *= aspect[0]
+ l[uv_act].uv[1] *= aspect[1]
dict_matrix.clear()
-#XXX Window.DrawProgressBar(1.0, "")
-#XXX Window.WaitCursor(0)
-#XXX Window.RedrawAll()
+# XXX Window.DrawProgressBar(1.0, "")
+# XXX Window.WaitCursor(0)
+# XXX Window.RedrawAll()
+
"""
pup_block = [\
@@ -1052,41 +1049,41 @@ from bpy.props import FloatProperty, BoolProperty
class SmartProject(Operator):
"""This script projection unwraps the selected faces of a mesh """ \
- """(it operates on all selected mesh objects, and can be used """ \
- """to unwrap selected faces, or all faces)"""
+ """(it operates on all selected mesh objects, and can be used """ \
+ """to unwrap selected faces, or all faces)"""
bl_idname = "uv.smart_project"
bl_label = "Smart UV Project"
bl_options = {'REGISTER', 'UNDO'}
angle_limit = FloatProperty(
- name="Angle Limit",
- description="Lower for more projection groups, higher for less distortion",
- min=1.0, max=89.0,
- default=66.0,
- )
+ name="Angle Limit",
+ description="Lower for more projection groups, higher for less distortion",
+ min=1.0, max=89.0,
+ default=66.0,
+ )
island_margin = FloatProperty(
- name="Island Margin",
- description="Margin to reduce bleed from adjacent islands",
- unit='LENGTH', subtype='DISTANCE',
- min=0.0, max=1.0,
- default=0.0,
- )
+ name="Island Margin",
+ description="Margin to reduce bleed from adjacent islands",
+ unit='LENGTH', subtype='DISTANCE',
+ min=0.0, max=1.0,
+ default=0.0,
+ )
user_area_weight = FloatProperty(
- name="Area Weight",
- description="Weight projections vector by faces with larger areas",
- min=0.0, max=1.0,
- default=0.0,
- )
+ name="Area Weight",
+ description="Weight projections vector by faces with larger areas",
+ min=0.0, max=1.0,
+ default=0.0,
+ )
use_aspect = BoolProperty(
- name="Correct Aspect",
- description="Map UVs taking image aspect ratio into account",
- default=True
- )
+ name="Correct Aspect",
+ description="Map UVs taking image aspect ratio into account",
+ default=True
+ )
stretch_to_bounds = BoolProperty(
- name="Stretch to UV Bounds",
- description="Stretch the final output to texture bounds",
- default=True,
- )
+ name="Stretch to UV Bounds",
+ description="Stretch the final output to texture bounds",
+ default=True,
+ )
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_operators/vertexpaint_dirt.py b/release/scripts/startup/bl_operators/vertexpaint_dirt.py
index f12b76a76ba..1173e0047bb 100644
--- a/release/scripts/startup/bl_operators/vertexpaint_dirt.py
+++ b/release/scripts/startup/bl_operators/vertexpaint_dirt.py
@@ -139,36 +139,36 @@ class VertexPaintDirt(Operator):
bl_options = {'REGISTER', 'UNDO'}
blur_strength = FloatProperty(
- name="Blur Strength",
- description="Blur strength per iteration",
- min=0.01, max=1.0,
- default=1.0,
- )
+ name="Blur Strength",
+ description="Blur strength per iteration",
+ min=0.01, max=1.0,
+ default=1.0,
+ )
blur_iterations = IntProperty(
- name="Blur Iterations",
- description="Number of times to blur the colors (higher blurs more)",
- min=0, max=40,
- default=1,
- )
+ name="Blur Iterations",
+ description="Number of times to blur the colors (higher blurs more)",
+ min=0, max=40,
+ default=1,
+ )
clean_angle = FloatProperty(
- name="Highlight Angle",
- description="Less than 90 limits the angle used in the tonal range",
- min=0.0, max=pi,
- default=pi,
- unit="ROTATION",
- )
+ name="Highlight Angle",
+ description="Less than 90 limits the angle used in the tonal range",
+ min=0.0, max=pi,
+ default=pi,
+ unit="ROTATION",
+ )
dirt_angle = FloatProperty(
- name="Dirt Angle",
- description="Less than 90 limits the angle used in the tonal range",
- min=0.0, max=pi,
- default=0.0,
- unit="ROTATION",
- )
+ name="Dirt Angle",
+ description="Less than 90 limits the angle used in the tonal range",
+ min=0.0, max=pi,
+ default=0.0,
+ unit="ROTATION",
+ )
dirt_only = BoolProperty(
- name="Dirt Only",
- description="Don't calculate cleans for convex areas",
- default=False,
- )
+ name="Dirt Only",
+ description="Don't calculate cleans for convex areas",
+ default=False,
+ )
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_operators/view3d.py b/release/scripts/startup/bl_operators/view3d.py
index 18f91110053..f56c83be7d1 100644
--- a/release/scripts/startup/bl_operators/view3d.py
+++ b/release/scripts/startup/bl_operators/view3d.py
@@ -39,13 +39,16 @@ class VIEW3D_OT_edit_mesh_extrude_individual_move(Operator):
totface = mesh.total_face_sel
totedge = mesh.total_edge_sel
- #~ totvert = mesh.total_vert_sel
+ # totvert = mesh.total_vert_sel
if select_mode[2] and totface == 1:
- bpy.ops.mesh.extrude_region_move('INVOKE_REGION_WIN',
- TRANSFORM_OT_translate={
- "constraint_orientation": 'NORMAL',
- "constraint_axis": (False, False, True)})
+ bpy.ops.mesh.extrude_region_move(
+ 'INVOKE_REGION_WIN',
+ TRANSFORM_OT_translate={
+ "constraint_orientation": 'NORMAL',
+ "constraint_axis": (False, False, True),
+ }
+ )
elif select_mode[2] and totface > 1:
bpy.ops.mesh.extrude_faces_move('INVOKE_REGION_WIN')
elif select_mode[1] and totedge >= 1:
@@ -77,25 +80,32 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator):
totface = mesh.total_face_sel
totedge = mesh.total_edge_sel
- #~ totvert = mesh.total_vert_sel
+ # totvert = mesh.total_vert_sel
if totface >= 1:
if use_vert_normals:
- bpy.ops.mesh.extrude_region_shrink_fatten('INVOKE_REGION_WIN',
- TRANSFORM_OT_shrink_fatten={})
+ bpy.ops.mesh.extrude_region_shrink_fatten(
+ 'INVOKE_REGION_WIN',
+ TRANSFORM_OT_shrink_fatten={},
+ )
else:
- bpy.ops.mesh.extrude_region_move('INVOKE_REGION_WIN',
- TRANSFORM_OT_translate={
- "constraint_orientation": 'NORMAL',
- "constraint_axis": (False, False, True)})
-
- elif totedge == 1:
- bpy.ops.mesh.extrude_region_move('INVOKE_REGION_WIN',
+ bpy.ops.mesh.extrude_region_move(
+ 'INVOKE_REGION_WIN',
TRANSFORM_OT_translate={
"constraint_orientation": 'NORMAL',
- # not a popular choice, too restrictive for retopo.
- #~ "constraint_axis": (True, True, False)})
- "constraint_axis": (False, False, False)})
+ "constraint_axis": (False, False, True),
+ },
+ )
+
+ elif totedge == 1:
+ bpy.ops.mesh.extrude_region_move(
+ 'INVOKE_REGION_WIN',
+ TRANSFORM_OT_translate={
+ "constraint_orientation": 'NORMAL',
+ # not a popular choice, too restrictive for retopo.
+ # "constraint_axis": (True, True, False)})
+ "constraint_axis": (False, False, False),
+ })
else:
bpy.ops.mesh.extrude_region_move('INVOKE_REGION_WIN')
@@ -134,40 +144,40 @@ class VIEW3D_OT_select_or_deselect_all(Operator):
bl_options = {'UNDO'}
extend = BoolProperty(
- name="Extend",
- description="Extend selection instead of deselecting everything first",
- default=False,
- )
+ name="Extend",
+ description="Extend selection instead of deselecting everything first",
+ default=False,
+ )
toggle = BoolProperty(
- name="Toggle",
- description="Toggle the selection",
- default=False,
- )
+ name="Toggle",
+ description="Toggle the selection",
+ default=False,
+ )
deselect = BoolProperty(
- name="Deselect",
- description="Remove from selection",
- default=False,
- )
+ name="Deselect",
+ description="Remove from selection",
+ default=False,
+ )
center = BoolProperty(
- name="Center",
- description="Use the object center when selecting, in editmode used to extend object selection",
- default=False,
- )
+ name="Center",
+ description="Use the object center when selecting, in editmode used to extend object selection",
+ default=False,
+ )
enumerate = BoolProperty(
- name="Enumerate",
- description="List objects under the mouse (object mode only)",
- default=False,
- )
+ name="Enumerate",
+ description="List objects under the mouse (object mode only)",
+ default=False,
+ )
object = BoolProperty(
- name="Object",
- description="Use object selection (editmode only)",
- default=False,
- )
+ name="Object",
+ description="Use object selection (editmode only)",
+ default=False,
+ )
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index 8a520edb70e..8055ff25090 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -36,37 +36,37 @@ from bpy.app.translations import pgettext_tip as tip_
rna_path_prop = StringProperty(
- name="Context Attributes",
- description="RNA context string",
- maxlen=1024,
- )
+ name="Context Attributes",
+ description="RNA context string",
+ maxlen=1024,
+)
rna_reverse_prop = BoolProperty(
- name="Reverse",
- description="Cycle backwards",
- default=False,
- )
+ name="Reverse",
+ description="Cycle backwards",
+ default=False,
+)
rna_wrap_prop = BoolProperty(
- name="Wrap",
- description="Wrap back to the first/last values",
- default=False,
- )
+ name="Wrap",
+ description="Wrap back to the first/last values",
+ default=False,
+)
rna_relative_prop = BoolProperty(
- name="Relative",
- description="Apply relative to the current value (delta)",
- default=False,
- )
+ name="Relative",
+ description="Apply relative to the current value (delta)",
+ default=False,
+)
rna_space_type_prop = EnumProperty(
- name="Type",
- items=tuple(
- (e.identifier, e.name, "", e. value)
- for e in bpy.types.Space.bl_rna.properties["type"].enum_items
- ),
- default='EMPTY',
- )
+ name="Type",
+ items=tuple(
+ (e.identifier, e.name, "", e. value)
+ for e in bpy.types.Space.bl_rna.properties["type"].enum_items
+ ),
+ default='EMPTY',
+)
def context_path_validate(context, data_path):
@@ -163,14 +163,14 @@ class BRUSH_OT_active_index_set(Operator):
bl_label = "Set Brush Number"
mode = StringProperty(
- name="Mode",
- description="Paint mode to set brush for",
- maxlen=1024,
- )
+ name="Mode",
+ description="Paint mode to set brush for",
+ maxlen=1024,
+ )
index = IntProperty(
- name="Number",
- description="Brush number",
- )
+ name="Number",
+ description="Brush number",
+ )
_attr_dict = {
"sculpt": "use_paint_sculpt",
@@ -201,10 +201,10 @@ class WM_OT_context_set_boolean(Operator):
data_path = rna_path_prop
value = BoolProperty(
- name="Value",
- description="Assignment value",
- default=True,
- )
+ name="Value",
+ description="Assignment value",
+ default=True,
+ )
execute = execute_context_assign
@@ -217,10 +217,10 @@ class WM_OT_context_set_int(Operator): # same as enum
data_path = rna_path_prop
value = IntProperty(
- name="Value",
- description="Assign value",
- default=0,
- )
+ name="Value",
+ description="Assign value",
+ default=0,
+ )
relative = rna_relative_prop
execute = execute_context_assign
@@ -234,10 +234,10 @@ class WM_OT_context_scale_float(Operator):
data_path = rna_path_prop
value = FloatProperty(
- name="Value",
- description="Assign value",
- default=1.0,
- )
+ name="Value",
+ description="Assign value",
+ default=1.0,
+ )
def execute(self, context):
data_path = self.data_path
@@ -262,15 +262,15 @@ class WM_OT_context_scale_int(Operator):
data_path = rna_path_prop
value = FloatProperty(
- name="Value",
- description="Assign value",
- default=1.0,
- )
+ name="Value",
+ description="Assign value",
+ default=1.0,
+ )
always_step = BoolProperty(
- name="Always Step",
- description="Always adjust the value by a minimum of 1 when 'value' is not 1.0",
- default=True,
- )
+ name="Always Step",
+ description="Always adjust the value by a minimum of 1 when 'value' is not 1.0",
+ default=True,
+ )
def execute(self, context):
data_path = self.data_path
@@ -305,10 +305,10 @@ class WM_OT_context_set_float(Operator): # same as enum
data_path = rna_path_prop
value = FloatProperty(
- name="Value",
- description="Assignment value",
- default=0.0,
- )
+ name="Value",
+ description="Assignment value",
+ default=0.0,
+ )
relative = rna_relative_prop
execute = execute_context_assign
@@ -322,10 +322,10 @@ class WM_OT_context_set_string(Operator): # same as enum
data_path = rna_path_prop
value = StringProperty(
- name="Value",
- description="Assign value",
- maxlen=1024,
- )
+ name="Value",
+ description="Assign value",
+ maxlen=1024,
+ )
execute = execute_context_assign
@@ -338,10 +338,10 @@ class WM_OT_context_set_enum(Operator):
data_path = rna_path_prop
value = StringProperty(
- name="Value",
- description="Assignment value (as a string)",
- maxlen=1024,
- )
+ name="Value",
+ description="Assignment value (as a string)",
+ maxlen=1024,
+ )
execute = execute_context_assign
@@ -354,10 +354,10 @@ class WM_OT_context_set_value(Operator):
data_path = rna_path_prop
value = StringProperty(
- name="Value",
- description="Assignment value (as a string)",
- maxlen=1024,
- )
+ name="Value",
+ description="Assignment value (as a string)",
+ maxlen=1024,
+ )
def execute(self, context):
data_path = self.data_path
@@ -394,15 +394,15 @@ class WM_OT_context_toggle_enum(Operator):
data_path = rna_path_prop
value_1 = StringProperty(
- name="Value",
- description="Toggle enum",
- maxlen=1024,
- )
+ name="Value",
+ description="Toggle enum",
+ maxlen=1024,
+ )
value_2 = StringProperty(
- name="Value",
- description="Toggle enum",
- maxlen=1024,
- )
+ name="Value",
+ description="Toggle enum",
+ maxlen=1024,
+ )
def execute(self, context):
data_path = self.data_path
@@ -426,7 +426,7 @@ class WM_OT_context_toggle_enum(Operator):
class WM_OT_context_cycle_int(Operator):
"""Set a context value (useful for cycling active material, """ \
- """vertex keys, groups, etc.)"""
+ """vertex keys, groups, etc.)"""
bl_idname = "wm.context_cycle_int"
bl_label = "Context Int Cycle"
bl_options = {'UNDO', 'INTERNAL'}
@@ -519,7 +519,7 @@ class WM_OT_context_cycle_enum(Operator):
class WM_OT_context_cycle_array(Operator):
"""Set a context array value """ \
- """(useful for cycling the active mesh edit mode)"""
+ """(useful for cycling the active mesh edit mode)"""
bl_idname = "wm.context_cycle_array"
bl_label = "Context Array Cycle"
bl_options = {'UNDO', 'INTERNAL'}
@@ -603,15 +603,15 @@ class WM_OT_operator_pie_enum(Operator):
bl_label = "Operator Enum Pie"
bl_options = {'UNDO', 'INTERNAL'}
data_path = StringProperty(
- name="Operator",
- description="Operator name (in python as string)",
- maxlen=1024,
- )
+ name="Operator",
+ description="Operator name (in python as string)",
+ maxlen=1024,
+ )
prop_string = StringProperty(
- name="Property",
- description="Property name (as a string)",
- maxlen=1024,
- )
+ name="Property",
+ description="Property name (as a string)",
+ maxlen=1024,
+ )
def invoke(self, context, event):
wm = context.window_manager
@@ -648,10 +648,10 @@ class WM_OT_context_set_id(Operator):
data_path = rna_path_prop
value = StringProperty(
- name="Value",
- description="Assign value",
- maxlen=1024,
- )
+ name="Value",
+ description="Assign value",
+ maxlen=1024,
+ )
def execute(self, context):
value = self.value
@@ -679,16 +679,16 @@ class WM_OT_context_set_id(Operator):
doc_id = StringProperty(
- name="Doc ID",
- maxlen=1024,
- options={'HIDDEN'},
- )
+ name="Doc ID",
+ maxlen=1024,
+ options={'HIDDEN'},
+)
data_path_iter = StringProperty(
- description="The data path relative to the context, must point to an iterable")
+ description="The data path relative to the context, must point to an iterable")
data_path_item = StringProperty(
- description="The data path from each iterable to the value (int or float)")
+ description="The data path from each iterable to the value (int or float)")
class WM_OT_context_collection_boolean_set(Operator):
@@ -701,12 +701,12 @@ class WM_OT_context_collection_boolean_set(Operator):
data_path_item = data_path_item
type = EnumProperty(
- name="Type",
- items=(('TOGGLE', "Toggle", ""),
- ('ENABLE', "Enable", ""),
- ('DISABLE', "Disable", ""),
- ),
- )
+ name="Type",
+ items=(('TOGGLE', "Toggle", ""),
+ ('ENABLE', "Enable", ""),
+ ('DISABLE', "Disable", ""),
+ ),
+ )
def execute(self, context):
data_path_iter = self.data_path_iter
@@ -759,18 +759,18 @@ class WM_OT_context_modal_mouse(Operator):
data_path_iter = data_path_iter
data_path_item = data_path_item
header_text = StringProperty(
- name="Header Text",
- description="Text to display in header during scale",
- )
+ name="Header Text",
+ description="Text to display in header during scale",
+ )
input_scale = FloatProperty(
- description="Scale the mouse movement by this value before applying the delta",
- default=0.01,
- )
+ description="Scale the mouse movement by this value before applying the delta",
+ default=0.01,
+ )
invert = BoolProperty(
- description="Invert the mouse input",
- default=False,
- )
+ description="Invert the mouse input",
+ default=False,
+ )
initial_x = IntProperty(options={'HIDDEN'})
def _values_store(self, context):
@@ -865,9 +865,9 @@ class WM_OT_url_open(Operator):
bl_options = {'INTERNAL'}
url = StringProperty(
- name="URL",
- description="URL to open",
- )
+ name="URL",
+ description="URL to open",
+ )
def execute(self, context):
import webbrowser
@@ -882,9 +882,9 @@ class WM_OT_path_open(Operator):
bl_options = {'INTERNAL'}
filepath = StringProperty(
- subtype='FILE_PATH',
- options={'SKIP_SAVE'},
- )
+ subtype='FILE_PATH',
+ options={'SKIP_SAVE'},
+ )
def execute(self, context):
import sys
@@ -1068,44 +1068,44 @@ class WM_OT_doc_view(Operator):
rna_path = StringProperty(
- name="Property Edit",
- description="Property data_path edit",
- maxlen=1024,
- options={'HIDDEN'},
- )
+ name="Property Edit",
+ description="Property data_path edit",
+ maxlen=1024,
+ options={'HIDDEN'},
+)
rna_value = StringProperty(
- name="Property Value",
- description="Property value edit",
- maxlen=1024,
- )
+ name="Property Value",
+ description="Property value edit",
+ maxlen=1024,
+)
rna_property = StringProperty(
- name="Property Name",
- description="Property name edit",
- maxlen=1024,
- )
+ name="Property Name",
+ description="Property name edit",
+ maxlen=1024,
+)
rna_min = FloatProperty(
- name="Min",
- default=-10000.0,
- precision=3,
- )
+ name="Min",
+ default=-10000.0,
+ precision=3,
+)
rna_max = FloatProperty(
- name="Max",
- default=10000.0,
- precision=3,
- )
+ name="Max",
+ default=10000.0,
+ precision=3,
+)
rna_use_soft_limits = BoolProperty(
- name="Use Soft Limits",
- )
+ name="Use Soft Limits",
+)
rna_is_overridable_static = BoolProperty(
- name="Is Statically Overridable",
- default=False,
- )
+ name="Is Statically Overridable",
+ default=False,
+)
class WM_OT_properties_edit(Operator):
@@ -1124,8 +1124,8 @@ class WM_OT_properties_edit(Operator):
soft_min = rna_min
soft_max = rna_max
description = StringProperty(
- name="Tooltip",
- )
+ name="Tooltip",
+ )
def _cmp_props_get(self):
# Changing these properties will refresh the UI
@@ -1363,9 +1363,9 @@ class WM_OT_properties_context_change(Operator):
bl_options = {'INTERNAL'}
context = StringProperty(
- name="Context",
- maxlen=64,
- )
+ name="Context",
+ maxlen=64,
+ )
def execute(self, context):
context.space_data.context = self.context
@@ -1401,8 +1401,8 @@ class WM_OT_keyconfig_activate(Operator):
bl_label = "Activate Keyconfig"
filepath = StringProperty(
- subtype='FILE_PATH',
- )
+ subtype='FILE_PATH',
+ )
def execute(self, context):
if bpy.utils.keyconfig_set(self.filepath, report=self.report):
@@ -1436,8 +1436,8 @@ class WM_OT_appconfig_activate(Operator):
bl_label = "Activate Application Configuration"
filepath = StringProperty(
- subtype='FILE_PATH',
- )
+ subtype='FILE_PATH',
+ )
def execute(self, context):
import os
@@ -1461,9 +1461,9 @@ class WM_OT_sysinfo(Operator):
bl_label = "Save System Info"
filepath = StringProperty(
- subtype='FILE_PATH',
- options={'SKIP_SAVE'},
- )
+ subtype='FILE_PATH',
+ options={'SKIP_SAVE'},
+ )
def execute(self, context):
import sys_info
@@ -1475,7 +1475,7 @@ class WM_OT_sysinfo(Operator):
if not self.filepath:
self.filepath = os.path.join(
- os.path.expanduser("~"), "system-info.txt")
+ os.path.expanduser("~"), "system-info.txt")
wm = context.window_manager
wm.fileselect_add(self)
@@ -1539,29 +1539,29 @@ class WM_OT_keyconfig_import(Operator):
bl_label = "Import Key Configuration..."
filepath = StringProperty(
- subtype='FILE_PATH',
- default="keymap.py",
- )
+ subtype='FILE_PATH',
+ default="keymap.py",
+ )
filter_folder = BoolProperty(
- name="Filter folders",
- default=True,
- options={'HIDDEN'},
- )
+ name="Filter folders",
+ default=True,
+ options={'HIDDEN'},
+ )
filter_text = BoolProperty(
- name="Filter text",
- default=True,
- options={'HIDDEN'},
- )
+ name="Filter text",
+ default=True,
+ options={'HIDDEN'},
+ )
filter_python = BoolProperty(
- name="Filter python",
- default=True,
- options={'HIDDEN'},
- )
+ name="Filter python",
+ default=True,
+ options={'HIDDEN'},
+ )
keep_original = BoolProperty(
- name="Keep original",
- description="Keep original file after copying to configuration folder",
- default=True,
- )
+ name="Keep original",
+ description="Keep original file after copying to configuration folder",
+ default=True,
+ )
def execute(self, context):
import os
@@ -1606,24 +1606,24 @@ class WM_OT_keyconfig_export(Operator):
bl_label = "Export Key Configuration..."
filepath = StringProperty(
- subtype='FILE_PATH',
- default="keymap.py",
- )
+ subtype='FILE_PATH',
+ default="keymap.py",
+ )
filter_folder = BoolProperty(
- name="Filter folders",
- default=True,
- options={'HIDDEN'},
- )
+ name="Filter folders",
+ default=True,
+ options={'HIDDEN'},
+ )
filter_text = BoolProperty(
- name="Filter text",
- default=True,
- options={'HIDDEN'},
- )
+ name="Filter text",
+ default=True,
+ options={'HIDDEN'},
+ )
filter_python = BoolProperty(
- name="Filter python",
- default=True,
- options={'HIDDEN'},
- )
+ name="Filter python",
+ default=True,
+ options={'HIDDEN'},
+ )
def execute(self, context):
from bpy_extras import keyconfig_utils
@@ -1656,9 +1656,9 @@ class WM_OT_keymap_restore(Operator):
bl_label = "Restore Key Map(s)"
all = BoolProperty(
- name="All Keymaps",
- description="Restore all keymaps to default",
- )
+ name="All Keymaps",
+ description="Restore all keymaps to default",
+ )
def execute(self, context):
wm = context.window_manager
@@ -1679,9 +1679,9 @@ class WM_OT_keyitem_restore(Operator):
bl_label = "Restore Key Map Item"
item_id = IntProperty(
- name="Item Identifier",
- description="Identifier of the item to remove",
- )
+ name="Item Identifier",
+ description="Identifier of the item to remove",
+ )
@classmethod
def poll(cls, context):
@@ -1726,9 +1726,9 @@ class WM_OT_keyitem_remove(Operator):
bl_label = "Remove Key Map Item"
item_id = IntProperty(
- name="Item Identifier",
- description="Identifier of the item to remove",
- )
+ name="Item Identifier",
+ description="Identifier of the item to remove",
+ )
@classmethod
def poll(cls, context):
@@ -1794,9 +1794,9 @@ class WM_OT_addon_enable(Operator):
bl_label = "Enable Add-on"
module = StringProperty(
- name="Module",
- description="Module name of the add-on to enable",
- )
+ name="Module",
+ description="Module name of the add-on to enable",
+ )
def execute(self, context):
import addon_utils
@@ -1840,9 +1840,9 @@ class WM_OT_addon_disable(Operator):
bl_label = "Disable Add-on"
module = StringProperty(
- name="Module",
- description="Module name of the add-on to disable",
- )
+ name="Module",
+ description="Module name of the add-on to disable",
+ )
def execute(self, context):
import addon_utils
@@ -1869,8 +1869,8 @@ class WM_OT_owner_enable(Operator):
bl_label = "Enable Add-on"
owner_id = StringProperty(
- name="UI Tag",
- )
+ name="UI Tag",
+ )
def execute(self, context):
workspace = context.workspace
@@ -1884,8 +1884,8 @@ class WM_OT_owner_disable(Operator):
bl_label = "Disable UI Tag"
owner_id = StringProperty(
- name="UI Tag",
- )
+ name="UI Tag",
+ )
def execute(self, context):
workspace = context.workspace
@@ -1900,22 +1900,22 @@ class WM_OT_theme_install(Operator):
bl_label = "Install Theme..."
overwrite = BoolProperty(
- name="Overwrite",
- description="Remove existing theme file if exists",
- default=True,
- )
+ name="Overwrite",
+ description="Remove existing theme file if exists",
+ default=True,
+ )
filepath = StringProperty(
- subtype='FILE_PATH',
- )
+ subtype='FILE_PATH',
+ )
filter_folder = BoolProperty(
- name="Filter folders",
- default=True,
- options={'HIDDEN'},
- )
+ name="Filter folders",
+ default=True,
+ options={'HIDDEN'},
+ )
filter_glob = StringProperty(
- default="*.xml",
- options={'HIDDEN'},
- )
+ default="*.xml",
+ options={'HIDDEN'},
+ )
def execute(self, context):
import os
@@ -1977,33 +1977,33 @@ class WM_OT_addon_install(Operator):
bl_label = "Install Add-on from File..."
overwrite = BoolProperty(
- name="Overwrite",
- description="Remove existing add-ons with the same ID",
- default=True,
- )
+ name="Overwrite",
+ description="Remove existing add-ons with the same ID",
+ default=True,
+ )
target = EnumProperty(
- name="Target Path",
- items=(('DEFAULT', "Default", ""),
- ('PREFS', "User Prefs", "")),
- )
+ name="Target Path",
+ items=(('DEFAULT', "Default", ""),
+ ('PREFS', "User Prefs", "")),
+ )
filepath = StringProperty(
- subtype='FILE_PATH',
- )
+ subtype='FILE_PATH',
+ )
filter_folder = BoolProperty(
- name="Filter folders",
- default=True,
- options={'HIDDEN'},
- )
+ name="Filter folders",
+ default=True,
+ options={'HIDDEN'},
+ )
filter_python = BoolProperty(
- name="Filter python",
- default=True,
- options={'HIDDEN'},
- )
+ name="Filter python",
+ default=True,
+ options={'HIDDEN'},
+ )
filter_glob = StringProperty(
- default="*.py;*.zip",
- options={'HIDDEN'},
- )
+ default="*.py;*.zip",
+ options={'HIDDEN'},
+ )
def execute(self, context):
import addon_utils
@@ -2131,9 +2131,9 @@ class WM_OT_addon_remove(Operator):
bl_label = "Remove Add-on"
module = StringProperty(
- name="Module",
- description="Module name of the add-on to remove",
- )
+ name="Module",
+ description="Module name of the add-on to remove",
+ )
@staticmethod
def path_from_addon(module):
@@ -2191,9 +2191,9 @@ class WM_OT_addon_expand(Operator):
bl_options = {'INTERNAL'}
module = StringProperty(
- name="Module",
- description="Module name of the add-on to expand",
- )
+ name="Module",
+ description="Module name of the add-on to expand",
+ )
def execute(self, context):
import addon_utils
@@ -2215,9 +2215,9 @@ class WM_OT_addon_userpref_show(Operator):
bl_options = {'INTERNAL'}
module = StringProperty(
- name="Module",
- description="Module name of the add-on to expand",
- )
+ name="Module",
+ description="Module name of the add-on to expand",
+ )
def execute(self, context):
import addon_utils
@@ -2246,23 +2246,23 @@ class WM_OT_app_template_install(Operator):
bl_label = "Install Template from File..."
overwrite = BoolProperty(
- name="Overwrite",
- description="Remove existing template with the same ID",
- default=True,
- )
+ name="Overwrite",
+ description="Remove existing template with the same ID",
+ default=True,
+ )
filepath = StringProperty(
- subtype='FILE_PATH',
- )
+ subtype='FILE_PATH',
+ )
filter_folder = BoolProperty(
- name="Filter folders",
- default=True,
- options={'HIDDEN'},
- )
+ name="Filter folders",
+ default=True,
+ options={'HIDDEN'},
+ )
filter_glob = StringProperty(
- default="*.zip",
- options={'HIDDEN'},
- )
+ default="*.zip",
+ options={'HIDDEN'},
+ )
def execute(self, context):
import traceback
@@ -2345,16 +2345,16 @@ class WM_OT_tool_set_by_name(Operator):
bl_label = "Set Tool By Name"
name = StringProperty(
- name="Text",
- description="Display name of the tool",
- )
+ name="Text",
+ description="Display name of the tool",
+ )
cycle = BoolProperty(
- name="Cycle",
- description="Cycle through tools in this group",
- default=False,
- options={'SKIP_SAVE'},
- )
+ name="Cycle",
+ description="Cycle through tools in this group",
+ default=False,
+ options={'SKIP_SAVE'},
+ )
space_type = rna_space_type_prop
@@ -2411,21 +2411,21 @@ class WM_OT_studiolight_install(Operator):
bl_label = "Install Custom Studio Light"
files = CollectionProperty(
- name="File Path",
- type=OperatorFileListElement,
- )
+ name="File Path",
+ type=OperatorFileListElement,
+ )
directory = StringProperty(
- subtype='DIR_PATH',
- )
+ subtype='DIR_PATH',
+ )
filter_folder = BoolProperty(
- name="Filter folders",
- default=True,
- options={'HIDDEN'},
- )
+ name="Filter folders",
+ default=True,
+ options={'HIDDEN'},
+ )
filter_glob = StringProperty(
- default="*.png;*.jpg;*.hdr;*.exr",
- options={'HIDDEN'},
- )
+ default="*.png;*.jpg;*.hdr;*.exr",
+ options={'HIDDEN'},
+ )
orientation = EnumProperty(
items=(
("MATCAP", "MatCap", ""),
diff --git a/release/scripts/startup/bl_ui/space_dopesheet.py b/release/scripts/startup/bl_ui/space_dopesheet.py
index 7208135f5e6..9ae20ba2194 100644
--- a/release/scripts/startup/bl_ui/space_dopesheet.py
+++ b/release/scripts/startup/bl_ui/space_dopesheet.py
@@ -59,6 +59,8 @@ def dopesheet_filter(layout, context, genericFiltersOnly=False):
# Generic Layout - Used as base for filtering popovers used in all animation editors
# Used for DopeSheet, NLA, and Graph Editors
+
+
class DopesheetFilterPopoverBase:
bl_region_type = 'HEADER'
bl_label = "Filters"
@@ -211,11 +213,13 @@ class DOPESHEET_HT_header(Header):
TIME_HT_editor_buttons.draw_header(context, layout)
else:
layout.prop(st, "ui_mode", text="")
- layout.popover(space_type='DOPESHEET_EDITOR',
- region_type='HEADER',
- panel_type="DOPESHEET_PT_filters",
- text="",
- icon='FILTER')
+ layout.popover(
+ space_type='DOPESHEET_EDITOR',
+ region_type='HEADER',
+ panel_type="DOPESHEET_PT_filters",
+ text="",
+ icon='FILTER',
+ )
DOPESHEET_MT_editor_menus.draw_collapsible(context, layout)
DOPESHEET_HT_editor_buttons.draw_header(context, layout)
diff --git a/release/scripts/startup/bl_ui/space_graph.py b/release/scripts/startup/bl_ui/space_graph.py
index 9a22e0b4bd7..e3ebb99d859 100644
--- a/release/scripts/startup/bl_ui/space_graph.py
+++ b/release/scripts/startup/bl_ui/space_graph.py
@@ -23,7 +23,7 @@ from bpy.types import Header, Menu, Panel
from .space_dopesheet import (
DopesheetFilterPopoverBase,
dopesheet_filter,
- )
+)
class GRAPH_HT_header(Header):
@@ -41,11 +41,13 @@ class GRAPH_HT_header(Header):
# Now a exposed as a sub-space type
# layout.prop(st, "mode", text="")
- layout.popover(space_type='GRAPH_EDITOR',
- region_type='HEADER',
- panel_type="GRAPH_PT_filters",
- text="",
- icon='FILTER')
+ layout.popover(
+ space_type='GRAPH_EDITOR',
+ region_type='HEADER',
+ panel_type="GRAPH_PT_filters",
+ text="",
+ icon='FILTER',
+ )
GRAPH_MT_editor_menus.draw_collapsible(context, layout)
diff --git a/release/scripts/startup/bl_ui/space_nla.py b/release/scripts/startup/bl_ui/space_nla.py
index 9f23420298f..9a5f835d505 100644
--- a/release/scripts/startup/bl_ui/space_nla.py
+++ b/release/scripts/startup/bl_ui/space_nla.py
@@ -23,7 +23,7 @@ from bpy.types import Header, Menu, Panel
from .space_dopesheet import (
DopesheetFilterPopoverBase,
dopesheet_filter,
- )
+)
class NLA_HT_header(Header):
@@ -37,11 +37,13 @@ class NLA_HT_header(Header):
row = layout.row(align=True)
row.template_header()
- layout.popover(space_type='NLA_EDITOR',
- region_type='HEADER',
- panel_type="NLA_PT_filters",
- text="",
- icon='FILTER')
+ layout.popover(
+ space_type='NLA_EDITOR',
+ region_type='HEADER',
+ panel_type="NLA_PT_filters",
+ text="",
+ icon='FILTER',
+ )
NLA_MT_editor_menus.draw_collapsible(context, layout)
diff --git a/release/scripts/startup/bl_ui/space_time.py b/release/scripts/startup/bl_ui/space_time.py
index 358a813fd0f..4616aeb45a4 100644
--- a/release/scripts/startup/bl_ui/space_time.py
+++ b/release/scripts/startup/bl_ui/space_time.py
@@ -91,14 +91,18 @@ class TIME_MT_editor_menus(Menu):
@staticmethod
def draw_menus(layout, context):
- layout.popover(space_type='DOPESHEET_EDITOR',
- region_type='HEADER',
- panel_type="TIME_PT_playback",
- text="Playback")
- layout.popover(space_type='DOPESHEET_EDITOR',
- region_type='HEADER',
- panel_type="TIME_PT_keyframing_settings",
- text="Keying")
+ layout.popover(
+ space_type='DOPESHEET_EDITOR',
+ region_type='HEADER',
+ panel_type="TIME_PT_playback",
+ text="Playback",
+ )
+ layout.popover(
+ space_type='DOPESHEET_EDITOR',
+ region_type='HEADER',
+ panel_type="TIME_PT_keyframing_settings",
+ text="Keying",
+ )
layout.menu("TIME_MT_view")
layout.menu("TIME_MT_marker")
diff --git a/release/scripts/templates_py/addon_add_object.py b/release/scripts/templates_py/addon_add_object.py
index 56e6e79b94f..b74c0f8ee25 100644
--- a/release/scripts/templates_py/addon_add_object.py
+++ b/release/scripts/templates_py/addon_add_object.py
@@ -8,7 +8,7 @@ bl_info = {
"warning": "",
"wiki_url": "",
"category": "Add Mesh",
- }
+}
import bpy
@@ -22,11 +22,12 @@ def add_object(self, context):
scale_x = self.scale.x
scale_y = self.scale.y
- verts = [Vector((-1 * scale_x, 1 * scale_y, 0)),
- Vector((1 * scale_x, 1 * scale_y, 0)),
- Vector((1 * scale_x, -1 * scale_y, 0)),
- Vector((-1 * scale_x, -1 * scale_y, 0)),
- ]
+ verts = [
+ Vector((-1 * scale_x, 1 * scale_y, 0)),
+ Vector((1 * scale_x, 1 * scale_y, 0)),
+ Vector((1 * scale_x, -1 * scale_y, 0)),
+ Vector((-1 * scale_x, -1 * scale_y, 0)),
+ ]
edges = []
faces = [[0, 1, 2, 3]]
@@ -45,11 +46,11 @@ class OBJECT_OT_add_object(Operator, AddObjectHelper):
bl_options = {'REGISTER', 'UNDO'}
scale = FloatVectorProperty(
- name="scale",
- default=(1.0, 1.0, 1.0),
- subtype='TRANSLATION',
- description="scaling",
- )
+ name="scale",
+ default=(1.0, 1.0, 1.0),
+ subtype='TRANSLATION',
+ description="scaling",
+ )
def execute(self, context):
@@ -72,7 +73,7 @@ def add_object_manual_map():
url_manual_prefix = "https://docs.blender.org/manual/en/dev/"
url_manual_mapping = (
("bpy.ops.mesh.add_object", "editors/3dview/object"),
- )
+ )
return url_manual_prefix, url_manual_mapping
diff --git a/release/scripts/templates_py/background_job.py b/release/scripts/templates_py/background_job.py
index ddd8ce1384e..2f444641a51 100644
--- a/release/scripts/templates_py/background_job.py
+++ b/release/scripts/templates_py/background_job.py
@@ -73,21 +73,27 @@ def main():
# When --help or no args are given, print this help
usage_text = (
- "Run blender in background mode with this script:"
- " blender --background --python " + __file__ + " -- [options]"
- )
+ "Run blender in background mode with this script:"
+ " blender --background --python " + __file__ + " -- [options]"
+ )
parser = argparse.ArgumentParser(description=usage_text)
# Example utility, add some text and renders or saves it (with options)
# Possible types are: string, int, long, choice, float and complex.
- parser.add_argument("-t", "--text", dest="text", type=str, required=True,
- help="This text will be used to render an image")
-
- parser.add_argument("-s", "--save", dest="save_path", metavar='FILE',
- help="Save the generated file to the specified path")
- parser.add_argument("-r", "--render", dest="render_path", metavar='FILE',
- help="Render an image to the specified path")
+ parser.add_argument(
+ "-t", "--text", dest="text", type=str, required=True,
+ help="This text will be used to render an image",
+ )
+
+ parser.add_argument(
+ "-s", "--save", dest="save_path", metavar='FILE',
+ help="Save the generated file to the specified path",
+ )
+ parser.add_argument(
+ "-r", "--render", dest="render_path", metavar='FILE',
+ help="Render an image to the specified path",
+ )
args = parser.parse_args(argv) # In this example we wont use the args
diff --git a/release/scripts/templates_py/batch_export.py b/release/scripts/templates_py/batch_export.py
index 8de7a5e2903..1463915886a 100644
--- a/release/scripts/templates_py/batch_export.py
+++ b/release/scripts/templates_py/batch_export.py
@@ -28,7 +28,7 @@ for obj in selection:
bpy.ops.export_scene.fbx(filepath=fn + ".fbx", use_selection=True)
- ## Can be used for multiple formats
+ # Can be used for multiple formats
# bpy.ops.export_scene.x3d(filepath=fn + ".x3d", use_selection=True)
obj.select_set(action='DESELECT')
diff --git a/release/scripts/templates_py/custom_nodes.py b/release/scripts/templates_py/custom_nodes.py
index 8ca748c1d66..23d8ee55e72 100644
--- a/release/scripts/templates_py/custom_nodes.py
+++ b/release/scripts/templates_py/custom_nodes.py
@@ -124,6 +124,8 @@ from nodeitems_utils import NodeCategory, NodeItem
# our own base class with an appropriate poll function,
# so the categories only show up in our own tree type
+
+
class MyNodeCategory(NodeCategory):
@classmethod
def poll(cls, context):
@@ -159,6 +161,7 @@ classes = (
MyCustomNode,
)
+
def register():
from bpy.utils import register_class
for cls in classes:
diff --git a/release/scripts/templates_py/manipulator_operator.py b/release/scripts/templates_py/manipulator_operator.py
index c16de53e694..35e1c5b4fd1 100644
--- a/release/scripts/templates_py/manipulator_operator.py
+++ b/release/scripts/templates_py/manipulator_operator.py
@@ -16,6 +16,7 @@ from bpy.props import (
FloatVectorProperty,
)
+
def main(context, plane_co, plane_no):
obj = context.active_object
matrix = obj.matrix_world.copy()
@@ -218,6 +219,7 @@ classes = (
SelectSideOfPlaneManipulatorGroup,
)
+
def register():
for cls in classes:
bpy.utils.register_class(cls)
@@ -227,5 +229,6 @@ def unregister():
for cls in reversed(classes):
bpy.utils.unregister_class(cls)
+
if __name__ == "__main__":
register()
diff --git a/release/scripts/templates_py/manipulator_operator_target.py b/release/scripts/templates_py/manipulator_operator_target.py
index 0abf6f2f654..ba53b5e10ff 100644
--- a/release/scripts/templates_py/manipulator_operator_target.py
+++ b/release/scripts/templates_py/manipulator_operator_target.py
@@ -8,6 +8,7 @@ from bpy.types import (
ManipulatorGroup,
)
+
class MyCameraWidgetGroup(ManipulatorGroup):
bl_idname = "OBJECT_WGT_test_camera"
bl_label = "Object Camera Test Widget"
@@ -45,4 +46,5 @@ class MyCameraWidgetGroup(ManipulatorGroup):
mpr = self.roll_widget
mpr.matrix_basis = ob.matrix_world.normalized()
+
bpy.utils.register_class(MyCameraWidgetGroup)
diff --git a/release/scripts/templates_py/manipulator_simple.py b/release/scripts/templates_py/manipulator_simple.py
index 7e02940d527..8ddb870cd13 100644
--- a/release/scripts/templates_py/manipulator_simple.py
+++ b/release/scripts/templates_py/manipulator_simple.py
@@ -9,6 +9,7 @@ from bpy.types import (
ManipulatorGroup,
)
+
class MyLampWidgetGroup(ManipulatorGroup):
bl_idname = "OBJECT_WGT_lamp_test"
bl_label = "Test Lamp Widget"
@@ -42,4 +43,5 @@ class MyLampWidgetGroup(ManipulatorGroup):
mpr = self.energy_widget
mpr.matrix_basis = ob.matrix_world.normalized()
+
bpy.utils.register_class(MyLampWidgetGroup)
diff --git a/release/scripts/templates_py/operator_file_export.py b/release/scripts/templates_py/operator_file_export.py
index 38c88069845..8a1eb4ae54c 100644
--- a/release/scripts/templates_py/operator_file_export.py
+++ b/release/scripts/templates_py/operator_file_export.py
@@ -26,26 +26,28 @@ class ExportSomeData(Operator, ExportHelper):
filename_ext = ".txt"
filter_glob = StringProperty(
- default="*.txt",
- options={'HIDDEN'},
- maxlen=255, # Max internal buffer length, longer would be clamped.
- )
+ default="*.txt",
+ options={'HIDDEN'},
+ maxlen=255, # Max internal buffer length, longer would be clamped.
+ )
# List of operator properties, the attributes will be assigned
# to the class instance from the operator settings before calling.
use_setting = BoolProperty(
- name="Example Boolean",
- description="Example Tooltip",
- default=True,
- )
+ name="Example Boolean",
+ description="Example Tooltip",
+ default=True,
+ )
type = EnumProperty(
- name="Example Enum",
- description="Choose between two items",
- items=(('OPT_A', "First Option", "Description one"),
- ('OPT_B', "Second Option", "Description two")),
- default='OPT_A',
- )
+ name="Example Enum",
+ description="Choose between two items",
+ items=(
+ ('OPT_A', "First Option", "Description one"),
+ ('OPT_B', "Second Option", "Description two"),
+ ),
+ default='OPT_A',
+ )
def execute(self, context):
return write_some_data(context, self.filepath, self.use_setting)
diff --git a/release/scripts/templates_py/operator_file_import.py b/release/scripts/templates_py/operator_file_import.py
index 0ec57544f3d..9856b6a9040 100644
--- a/release/scripts/templates_py/operator_file_import.py
+++ b/release/scripts/templates_py/operator_file_import.py
@@ -29,26 +29,28 @@ class ImportSomeData(Operator, ImportHelper):
filename_ext = ".txt"
filter_glob = StringProperty(
- default="*.txt",
- options={'HIDDEN'},
- maxlen=255, # Max internal buffer length, longer would be clamped.
- )
+ default="*.txt",
+ options={'HIDDEN'},
+ maxlen=255, # Max internal buffer length, longer would be clamped.
+ )
# List of operator properties, the attributes will be assigned
# to the class instance from the operator settings before calling.
use_setting = BoolProperty(
- name="Example Boolean",
- description="Example Tooltip",
- default=True,
- )
+ name="Example Boolean",
+ description="Example Tooltip",
+ default=True,
+ )
type = EnumProperty(
- name="Example Enum",
- description="Choose between two items",
- items=(('OPT_A', "First Option", "Description one"),
- ('OPT_B', "Second Option", "Description two")),
- default='OPT_A',
- )
+ name="Example Enum",
+ description="Choose between two items",
+ items=(
+ ('OPT_A', "First Option", "Description one"),
+ ('OPT_B', "Second Option", "Description two"),
+ ),
+ default='OPT_A',
+ )
def execute(self, context):
return read_some_data(context, self.filepath, self.use_setting)
diff --git a/release/scripts/templates_py/operator_mesh_add.py b/release/scripts/templates_py/operator_mesh_add.py
index 3231214c773..407956a0fda 100644
--- a/release/scripts/templates_py/operator_mesh_add.py
+++ b/release/scripts/templates_py/operator_mesh_add.py
@@ -8,23 +8,25 @@ def add_box(width, height, depth):
no actual mesh data creation is done here.
"""
- verts = [(+1.0, +1.0, -1.0),
- (+1.0, -1.0, -1.0),
- (-1.0, -1.0, -1.0),
- (-1.0, +1.0, -1.0),
- (+1.0, +1.0, +1.0),
- (+1.0, -1.0, +1.0),
- (-1.0, -1.0, +1.0),
- (-1.0, +1.0, +1.0),
- ]
-
- faces = [(0, 1, 2, 3),
- (4, 7, 6, 5),
- (0, 4, 5, 1),
- (1, 5, 6, 2),
- (2, 6, 7, 3),
- (4, 0, 3, 7),
- ]
+ verts = [
+ (+1.0, +1.0, -1.0),
+ (+1.0, -1.0, -1.0),
+ (-1.0, -1.0, -1.0),
+ (-1.0, +1.0, -1.0),
+ (+1.0, +1.0, +1.0),
+ (+1.0, -1.0, +1.0),
+ (-1.0, -1.0, +1.0),
+ (-1.0, +1.0, +1.0),
+ ]
+
+ faces = [
+ (0, 1, 2, 3),
+ (4, 7, 6, 5),
+ (0, 4, 5, 1),
+ (1, 5, 6, 2),
+ (2, 6, 7, 3),
+ (4, 0, 3, 7),
+ ]
# apply size
for i, v in enumerate(verts):
@@ -48,50 +50,51 @@ class AddBox(bpy.types.Operator):
bl_options = {'REGISTER', 'UNDO'}
width = FloatProperty(
- name="Width",
- description="Box Width",
- min=0.01, max=100.0,
- default=1.0,
- )
+ name="Width",
+ description="Box Width",
+ min=0.01, max=100.0,
+ default=1.0,
+ )
height = FloatProperty(
- name="Height",
- description="Box Height",
- min=0.01, max=100.0,
- default=1.0,
- )
+ name="Height",
+ description="Box Height",
+ min=0.01, max=100.0,
+ default=1.0,
+ )
depth = FloatProperty(
- name="Depth",
- description="Box Depth",
- min=0.01, max=100.0,
- default=1.0,
- )
+ name="Depth",
+ description="Box Depth",
+ min=0.01, max=100.0,
+ default=1.0,
+ )
layers = BoolVectorProperty(
- name="Layers",
- description="Object Layers",
- size=20,
- options={'HIDDEN', 'SKIP_SAVE'},
- )
+ name="Layers",
+ description="Object Layers",
+ size=20,
+ options={'HIDDEN', 'SKIP_SAVE'},
+ )
# generic transform props
view_align = BoolProperty(
- name="Align to View",
- default=False,
- )
+ name="Align to View",
+ default=False,
+ )
location = FloatVectorProperty(
- name="Location",
- subtype='TRANSLATION',
- )
+ name="Location",
+ subtype='TRANSLATION',
+ )
rotation = FloatVectorProperty(
- name="Rotation",
- subtype='EULER',
- )
+ name="Rotation",
+ subtype='EULER',
+ )
def execute(self, context):
- verts_loc, faces = add_box(self.width,
- self.height,
- self.depth,
- )
+ verts_loc, faces = add_box(
+ self.width,
+ self.height,
+ self.depth,
+ )
mesh = bpy.data.meshes.new("Box")
@@ -127,6 +130,7 @@ def unregister():
bpy.utils.unregister_class(AddBox)
bpy.types.INFO_MT_mesh_add.remove(menu_func)
+
if __name__ == "__main__":
register()
diff --git a/release/scripts/templates_py/operator_modal_draw.py b/release/scripts/templates_py/operator_modal_draw.py
index d11ddf0b467..6f75d6c632e 100644
--- a/release/scripts/templates_py/operator_modal_draw.py
+++ b/release/scripts/templates_py/operator_modal_draw.py
@@ -75,5 +75,6 @@ def register():
def unregister():
bpy.utils.unregister_class(ModalDrawOperator)
+
if __name__ == "__main__":
register()
diff --git a/release/scripts/templates_py/operator_modal_view3d.py b/release/scripts/templates_py/operator_modal_view3d.py
index ed8d031285d..be41ea4d714 100644
--- a/release/scripts/templates_py/operator_modal_view3d.py
+++ b/release/scripts/templates_py/operator_modal_view3d.py
@@ -9,9 +9,9 @@ class ViewOperator(bpy.types.Operator):
bl_label = "Simple View Operator"
offset = FloatVectorProperty(
- name="Offset",
- size=3,
- )
+ name="Offset",
+ size=3,
+ )
def execute(self, context):
v3d = context.space_data
diff --git a/release/scripts/templates_py/ui_menu.py b/release/scripts/templates_py/ui_menu.py
index a21e5ed86c8..36391a54f4e 100644
--- a/release/scripts/templates_py/ui_menu.py
+++ b/release/scripts/templates_py/ui_menu.py
@@ -42,6 +42,7 @@ def unregister():
bpy.types.INFO_HT_header.remove(draw_item)
+
if __name__ == "__main__":
register()
diff --git a/release/scripts/templates_py/ui_menu_simple.py b/release/scripts/templates_py/ui_menu_simple.py
index 2129dfd81a4..aaad92d0e19 100644
--- a/release/scripts/templates_py/ui_menu_simple.py
+++ b/release/scripts/templates_py/ui_menu_simple.py
@@ -19,6 +19,7 @@ def register():
def unregister():
bpy.utils.unregister_class(SimpleCustomMenu)
+
if __name__ == "__main__":
register()
diff --git a/release/scripts/templates_py/ui_previews_dynamic_enum.py b/release/scripts/templates_py/ui_previews_dynamic_enum.py
index 0cfa232116d..39a3750bfee 100644
--- a/release/scripts/templates_py/ui_previews_dynamic_enum.py
+++ b/release/scripts/templates_py/ui_previews_dynamic_enum.py
@@ -89,19 +89,19 @@ preview_collections = {}
def register():
from bpy.types import WindowManager
from bpy.props import (
- StringProperty,
- EnumProperty,
- )
+ StringProperty,
+ EnumProperty,
+ )
WindowManager.my_previews_dir = StringProperty(
- name="Folder Path",
- subtype='DIR_PATH',
- default=""
- )
+ name="Folder Path",
+ subtype='DIR_PATH',
+ default=""
+ )
WindowManager.my_previews = EnumProperty(
- items=enum_previews_from_directory_items,
- )
+ items=enum_previews_from_directory_items,
+ )
# Note that preview collections returned by bpy.utils.previews
# are regular Python objects - you can use them to store custom data.