[Bf-blender-cvs] [7f3da8f] master: UI: Presets for scene units

Campbell Barton noreply at git.blender.org
Thu Mar 24 19:02:27 CET 2016


Commit: 7f3da8f5c91e5dbf030b938a5d852ebc9ce6b361
Author: Campbell Barton
Date:   Fri Mar 25 05:01:15 2016 +1100
Branches: master
https://developer.blender.org/rB7f3da8f5c91e5dbf030b938a5d852ebc9ce6b361

UI: Presets for scene units

This adds simple preset menu for unit scale scene property.

D1799 by @alm

===================================================================

A	release/scripts/presets/units_length/centimeters.py
A	release/scripts/presets/units_length/feet.py
A	release/scripts/presets/units_length/inches.py
A	release/scripts/presets/units_length/kilometers.py
A	release/scripts/presets/units_length/meters.py
A	release/scripts/presets/units_length/miles.py
A	release/scripts/presets/units_length/millimeters.py
M	release/scripts/startup/bl_operators/presets.py
M	release/scripts/startup/bl_ui/properties_scene.py

===================================================================

diff --git a/release/scripts/presets/units_length/centimeters.py b/release/scripts/presets/units_length/centimeters.py
new file mode 100644
index 0000000..80d5c3e
--- /dev/null
+++ b/release/scripts/presets/units_length/centimeters.py
@@ -0,0 +1,5 @@
+import bpy
+scene = bpy.context.scene
+
+scene.unit_settings.system = 'METRIC'
+scene.unit_settings.scale_length = 0.01
diff --git a/release/scripts/presets/units_length/feet.py b/release/scripts/presets/units_length/feet.py
new file mode 100644
index 0000000..015cb81
--- /dev/null
+++ b/release/scripts/presets/units_length/feet.py
@@ -0,0 +1,5 @@
+import bpy
+scene = bpy.context.scene
+
+scene.unit_settings.system = 'IMPERIAL'
+scene.unit_settings.scale_length = 0.3048
diff --git a/release/scripts/presets/units_length/inches.py b/release/scripts/presets/units_length/inches.py
new file mode 100644
index 0000000..7bdc963
--- /dev/null
+++ b/release/scripts/presets/units_length/inches.py
@@ -0,0 +1,5 @@
+import bpy
+scene = bpy.context.scene
+
+scene.unit_settings.system = 'IMPERIAL'
+scene.unit_settings.scale_length = 0.0254
diff --git a/release/scripts/presets/units_length/kilometers.py b/release/scripts/presets/units_length/kilometers.py
new file mode 100644
index 0000000..d2a80e5
--- /dev/null
+++ b/release/scripts/presets/units_length/kilometers.py
@@ -0,0 +1,5 @@
+import bpy
+scene = bpy.context.scene
+
+scene.unit_settings.system = 'METRIC'
+scene.unit_settings.scale_length = 1000.0
diff --git a/release/scripts/presets/units_length/meters.py b/release/scripts/presets/units_length/meters.py
new file mode 100644
index 0000000..831f1f2
--- /dev/null
+++ b/release/scripts/presets/units_length/meters.py
@@ -0,0 +1,5 @@
+import bpy
+scene = bpy.context.scene
+
+scene.unit_settings.system = 'METRIC'
+scene.unit_settings.scale_length = 1.0
diff --git a/release/scripts/presets/units_length/miles.py b/release/scripts/presets/units_length/miles.py
new file mode 100644
index 0000000..59c1e2b
--- /dev/null
+++ b/release/scripts/presets/units_length/miles.py
@@ -0,0 +1,5 @@
+import bpy
+scene = bpy.context.scene
+
+scene.unit_settings.system = 'IMPERIAL'
+scene.unit_settings.scale_length = 1609.344
diff --git a/release/scripts/presets/units_length/millimeters.py b/release/scripts/presets/units_length/millimeters.py
new file mode 100644
index 0000000..b89918f
--- /dev/null
+++ b/release/scripts/presets/units_length/millimeters.py
@@ -0,0 +1,5 @@
+import bpy
+scene = bpy.context.scene
+
+scene.unit_settings.system = 'METRIC'
+scene.unit_settings.scale_length = 0.001
diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py
index daa8ab5..e01e509 100644
--- a/release/scripts/startup/bl_operators/presets.py
+++ b/release/scripts/startup/bl_operators/presets.py
@@ -662,3 +662,21 @@ class WM_MT_operator_presets(Menu):
         return AddPresetOperator.operator_path(self.operator)
 
     preset_operator = "script.execute_preset"
+
+
+class AddPresetUnitsLength(AddPresetBase, Operator):
+    """Add or remove length units preset"""
+    bl_idname = "scene.units_length_preset_add"
+    bl_label = "Add Length Units Preset"
+    preset_menu = "SCENE_MT_units_length_presets"
+
+    preset_defines = [
+        "scene = bpy.context.scene"
+    ]
+
+    preset_values = [
+        "scene.unit_settings.system",
+        "scene.unit_settings.scale_length",
+    ]
+
+    preset_subdir = "units_length"
diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py
index bbf11ab..a05f0ac 100644
--- a/release/scripts/startup/bl_ui/properties_scene.py
+++ b/release/scripts/startup/bl_ui/properties_scene.py
@@ -18,7 +18,12 @@
 
 # <pep8 compliant>
 import bpy
-from bpy.types import Panel, UIList
+from bpy.types import (
+        Menu,
+        Panel,
+        UIList,
+        )
+
 from rna_prop_ui import PropertyPanel
 
 from bl_ui.properties_physics_common import (
@@ -27,6 +32,14 @@ from bl_ui.properties_physics_common import (
         )
 
 
+class SCENE_MT_units_length_presets(Menu):
+    """Sets the unit of measure for properties that use length values"""
+    bl_label = "Unit Presets"
+    preset_subdir = "units_length"
+    preset_operator = "script.execute_preset"
+    draw = Menu.draw_preset
+
+
 class SCENE_UL_keying_set_paths(UIList):
     def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
         # assert(isinstance(item, bpy.types.KeyingSetPath)
@@ -75,14 +88,28 @@ class SCENE_PT_unit(SceneButtonsPanel, Panel):
 
         unit = context.scene.unit_settings
 
-        col = layout.column()
-        col.row().prop(unit, "system", expand=True)
-        col.row().prop(unit, "system_rotation", expand=True)
+        row = layout.row(align=True)
+        row.menu("SCENE_MT_units_length_presets", text=SCENE_MT_units_length_presets.bl_label)
+        row.operator("scene.units_length_preset_add", text="", icon='ZOOMIN')
+        row.operator("scene.units_length_preset_add", text="", icon='ZOOMOUT').remove_active = True
 
-        if unit.system != 'NONE':
-            row = layout.row()
-            row.prop(unit, "scale_length", text="Scale")
-            row.prop(unit, "use_separate")
+        layout.separator()
+
+        split = layout.split(percentage=0.35)
+        split.label("Length:")
+        split.prop(unit, "system", text="")
+        split = layout.split(percentage=0.35)
+        split.label("Angle:")
+        split.prop(unit, "system_rotation", text="")
+
+        col = layout.column()
+        col.enabled = unit.system != 'NONE'
+        split = col.split(percentage=0.35)
+        split.label("Unit Scale:")
+        split.prop(unit, "scale_length", text="")
+        split = col.split(percentage=0.35)
+        split.row()
+        split.prop(unit, "use_separate")
 
 
 class SceneKeyingSetsPanel:




More information about the Bf-blender-cvs mailing list