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

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'measureit/measureit_main.py')
-rw-r--r--measureit/measureit_main.py202
1 files changed, 158 insertions, 44 deletions
diff --git a/measureit/measureit_main.py b/measureit/measureit_main.py
index 633a1754..f325f8ab 100644
--- a/measureit/measureit_main.py
+++ b/measureit/measureit_main.py
@@ -160,6 +160,13 @@ class MeasureitProperties(PropertyGroup):
glfont_size = IntProperty(name="Text Size",
description="Text size",
default=14, min=6, max=150)
+ glfont_align = EnumProperty(items=(('L', "Left Align", ""),
+ ('C', "Center Align", ""),
+ ('R', "Right Align", "")),
+ name="Align Font",
+ description="Set Font Alignment")
+ glfont_rotat = IntProperty(name='Rotate', min=0, max=360, default=0,
+ description="Text rotation in degrees")
gllink = StringProperty(name="gllink",
description="linked object for linked measures")
glocwarning = BoolProperty(name="glocwarning",
@@ -365,13 +372,16 @@ class MeasureitEditPanel(Panel):
row = box.row()
row.prop(scene, 'measureit_scale', text="Scale")
if scene.measureit_scale is True:
- row.prop(scene, 'measureit_scale_factor', text="1")
- row.prop(scene, 'measureit_scale_precision', text="")
- row.prop(scene, 'measureit_gl_scaletxt', text="")
+ split = row.split(percentage=0.25, align=False)
+ split.prop(scene, 'measureit_scale_color', text="")
+ split.prop(scene, 'measureit_scale_factor', text="1")
row = box.row()
- row.prop(scene, 'measureit_scale_color')
+ row.separator()
+ row.prop(scene, 'measureit_gl_scaletxt', text="")
row.prop(scene, 'measureit_scale_font')
+ row.prop(scene, 'measureit_scale_precision', text="")
row = box.row()
+ row.separator()
row.prop(scene, 'measureit_scale_pos_x')
row.prop(scene, 'measureit_scale_pos_y')
@@ -379,9 +389,15 @@ class MeasureitEditPanel(Panel):
row = box.row()
row.prop(scene, 'measureit_ovr', text="Override")
if scene.measureit_ovr is True:
- row.prop(scene, 'measureit_ovr_color', text="")
+ split = row.split(percentage=0.25, align=False)
+ split.prop(scene, 'measureit_ovr_color', text="")
+ split.prop(scene, 'measureit_ovr_width', text="Width")
+ row = box.row()
+ row.separator()
row.prop(scene, 'measureit_ovr_font', text="Font")
- row.prop(scene, 'measureit_ovr_width', text="Width")
+ row.prop(scene, 'measureit_ovr_font_align', text="")
+ if scene.measureit_ovr_font_align == 'L':
+ row.prop(scene, 'measureit_ovr_font_rotation', text="Rotate")
mp = context.object.MeasureGenerator[0]
# -----------------
@@ -389,6 +405,9 @@ class MeasureitEditPanel(Panel):
# -----------------
if mp.measureit_num > 0:
box = layout.box()
+ row = box.row(True)
+ row.operator("measureit.expandallsegmentbutton", text="Expand all", icon="ZOOMIN")
+ row.operator("measureit.collapseallsegmentbutton", text="Collapse all", icon="ZOOMOUT")
for idx in range(0, mp.measureit_num):
if mp.measureit_segments[idx].glfree is False:
add_item(box, idx, mp.measureit_segments[idx])
@@ -479,9 +498,10 @@ class MeasureitEditPanel(Panel):
# -----------------------------------------------------
-# Add segment to the panel.
+# Add segment options to the panel.
# -----------------------------------------------------
def add_item(box, idx, segment):
+ scene = bpy.context.scene
row = box.row(True)
if segment.glview is True:
icon = "VISIBLE_IPO_ON"
@@ -489,17 +509,27 @@ def add_item(box, idx, segment):
icon = "VISIBLE_IPO_OFF"
row.prop(segment, 'glview', text="", toggle=True, icon=icon)
- row.prop(segment, 'gladvance', text="", toggle=True, icon="MANIPUL")
- row.prop(segment, 'gltxt', text="")
- row.prop(segment, 'glcolor', text="")
+ row.prop(segment, 'gladvance', text="", toggle=True, icon="SCRIPTWIN")
+ if segment.gltype == 20: # Area special
+ split = row.split(percentage=0.15, align=True)
+ split.prop(segment, 'glcolorarea', text="")
+ split = split.split(percentage=0.20, align=True)
+ split.prop(segment, 'glcolor', text="")
+ else:
+ split = row.split(percentage=0.25, align=True)
+ split.prop(segment, 'glcolor', text="")
+ split.prop(segment, 'gltxt', text="")
op = row.operator("measureit.deletesegmentbutton", text="", icon="X")
op.tag = idx # saves internal data
if segment.gladvance is True:
row = box.row(True)
- if segment.gltype != 10 and segment.gltype != 20:
- row.prop(segment, 'glspace', text="Distance")
-
row.prop(segment, 'glfont_size', text="Font")
+ row.prop(segment, 'glfont_align', text="")
+ if segment.glfont_align == 'L':
+ row.prop(segment, 'glfont_rotat', text="Rotate")
+ row = box.row(True)
+ if segment.gltype != 9 and segment.gltype != 10 and segment.gltype != 20:
+ row.prop(segment, 'glspace', text="Distance")
row.prop(segment, 'glfontx', text="X")
row.prop(segment, 'glfonty', text="Y")
@@ -513,13 +543,15 @@ def add_item(box, idx, segment):
if segment.gltype != 2 and segment.gltype != 10:
row = box.row(True)
- row.prop(segment, 'gldist', text="Distance", toggle=True, icon="ALIGN")
- row.prop(segment, 'glnames', text="Text", toggle=True, icon="FONT_DATA")
+ if scene.measureit_gl_show_d is True and segment.gltype != 9:
+ row.prop(segment, 'gldist', text="Distance", toggle=True, icon="ALIGN")
+ if scene.measureit_gl_show_n is True:
+ row.prop(segment, 'glnames', text="Text", toggle=True, icon="FONT_DATA")
# sum distances
if segment.gltype == 1 or segment.gltype == 12 or segment.gltype == 13 or segment.gltype == 14:
row.prop(segment, 'gltot', text="Sum")
- if segment.gltype != 10 and segment.gltype != 20:
+ if segment.gltype != 9 and segment.gltype != 10 and segment.gltype != 20:
row = box.row(True)
row.prop(segment, 'glwidth', text="Line")
row.prop(segment, 'gldefault', text="Automatic position")
@@ -530,8 +562,9 @@ def add_item(box, idx, segment):
row.prop(segment, 'glnormalz', text="Z")
# Loc axis
- if segment.gltype != 2 and segment.gltype != 10 \
- and segment.gltype != 12 and segment.gltype != 13 and segment.gltype != 14 and segment.gltype != 20:
+ if segment.gltype != 2 and segment.gltype != 9 and segment.gltype != 10 \
+ and segment.gltype != 11 and segment.gltype != 12 and segment.gltype != 13 \
+ and segment.gltype != 14 and segment.gltype != 20:
row = box.row(True)
row.prop(segment, 'glocx', text="X", toggle=True)
row.prop(segment, 'glocy', text="Y", toggle=True)
@@ -568,12 +601,8 @@ def add_item(box, idx, segment):
row = box.row(True)
row.prop(segment, 'glarc_a', text="")
row.prop(segment, 'glarc_b', text="")
- row.prop(segment, 'glarc_s', text="Size")
-
- # Area special
- if segment.gltype == 20:
- row = box.row(True)
- row.prop(segment, 'glcolorarea', text="")
+ if segment.glarc_a != '99' or segment.glarc_b != '99':
+ row.prop(segment, 'glarc_s', text="Size")
# ------------------------------------------------------------------
@@ -723,18 +752,24 @@ class MeasureitConfPanel(Panel):
# Configuration data
box = layout.box()
row = box.row()
- row.prop(scene, "measureit_gl_txt", text="Text")
- row = box.row()
- row.prop(scene, "measureit_default_color", text="")
+ split = row.split(percentage=0.2, align=True)
+ split.label("Text")
+ split = split.split(percentage=0.2, align=True)
+ split.prop(scene, "measureit_default_color", text="")
+ split.prop(scene, "measureit_gl_txt", text="")
+ row = box.row(True)
row.prop(scene, "measureit_hint_space")
+ row.prop(scene, "measureit_font_align", text="")
# Arrow
row = box.row(True)
row.prop(scene, "measureit_glarrow_a", text="")
row.prop(scene, "measureit_glarrow_b", text="")
- row.prop(scene, "measureit_glarrow_s", text="Size")
-
- row = box.row()
+ if scene.measureit_glarrow_a != '99' or scene.measureit_glarrow_b != '99':
+ row.prop(scene, "measureit_glarrow_s", text="Size")
+ row = box.row(True)
row.prop(scene, "measureit_font_size")
+ if scene.measureit_font_align == 'L':
+ row.prop(scene, "measureit_font_rotation", text="Rotate")
# ------------------------------------------------------------------
@@ -773,7 +808,7 @@ class MeasureitRenderPanel(Panel):
# -------------------------------------------------------------
-# Defines button for add a measure segment
+# Defines button that adds a measure segment
#
# -------------------------------------------------------------
class AddSegmentButton(Operator):
@@ -840,6 +875,8 @@ class AddSegmentButton(Operator):
# text
ms.gltxt = scene.measureit_gl_txt
ms.glfont_size = scene.measureit_font_size
+ ms.glfont_align = scene.measureit_font_align
+ ms.glfont_rotat = scene.measureit_font_rotation
# Sum group
ms.gltot = scene.measureit_sum
# Add index
@@ -860,7 +897,7 @@ class AddSegmentButton(Operator):
# -------------------------------------------------------------
-# Defines button for add area measure
+# Defines button that adds an area measure
#
# -------------------------------------------------------------
class AddAreaButton(Operator):
@@ -927,6 +964,8 @@ class AddAreaButton(Operator):
# text
ms.gltxt = scene.measureit_gl_txt
ms.glfont_size = scene.measureit_font_size
+ ms.glfont_align = scene.measureit_font_align
+ ms.glfont_rotat = scene.measureit_font_rotation
# Sum group
ms.gltot = scene.measureit_sum
# Add index
@@ -946,7 +985,7 @@ class AddAreaButton(Operator):
# -------------------------------------------------------------
-# Defines button for add a measure segment to x/y/z origin
+# Defines button that adds a measure segment to x/y/z origin
#
# -------------------------------------------------------------
class AddSegmentOrtoButton(Operator):
@@ -1015,6 +1054,8 @@ class AddSegmentOrtoButton(Operator):
# text
ms.gltxt = scene.measureit_gl_txt
ms.glfont_size = scene.measureit_font_size
+ ms.glfont_align = scene.measureit_font_align
+ ms.glfont_rotat = scene.measureit_font_rotation
# Sum group
ms.gltot = scene.measureit_sum
# Add index
@@ -1035,7 +1076,7 @@ class AddSegmentOrtoButton(Operator):
# -------------------------------------------------------------
-# Defines button for add a angle
+# Defines button that adds an angle measure
#
# -------------------------------------------------------------
class AddAngleButton(Operator):
@@ -1096,6 +1137,8 @@ class AddAngleButton(Operator):
# text
ms.gltxt = scene.measureit_gl_txt
ms.glfont_size = scene.measureit_font_size
+ ms.glfont_align = scene.measureit_font_align
+ ms.glfont_rotat = scene.measureit_font_rotation
# Add index
mp.measureit_num += 1
@@ -1114,7 +1157,7 @@ class AddAngleButton(Operator):
# -------------------------------------------------------------
-# Defines button for add a arc
+# Defines button that adds an arc measure
#
# -------------------------------------------------------------
class AddArcButton(Operator):
@@ -1179,6 +1222,8 @@ class AddArcButton(Operator):
# text
ms.gltxt = scene.measureit_gl_txt
ms.glfont_size = scene.measureit_font_size
+ ms.glfont_align = scene.measureit_font_align
+ ms.glfont_rotat = scene.measureit_font_rotation
# Add index
mp.measureit_num += 1
@@ -1197,7 +1242,7 @@ class AddArcButton(Operator):
# -------------------------------------------------------------
-# Defines button for add a label segment
+# Defines button that adds a label segment
#
# -------------------------------------------------------------
class AddLabelButton(Operator):
@@ -1260,6 +1305,8 @@ class AddLabelButton(Operator):
# text
ms.gltxt = scene.measureit_gl_txt
ms.glfont_size = scene.measureit_font_size
+ ms.glfont_align = scene.measureit_font_align
+ ms.glfont_rotat = scene.measureit_font_rotation
# Add index
mp.measureit_num += 1
@@ -1278,7 +1325,7 @@ class AddLabelButton(Operator):
# -------------------------------------------------------------
-# Defines button for add a link
+# Defines button that adds a link
#
# -------------------------------------------------------------
class AddLinkButton(Operator):
@@ -1404,6 +1451,8 @@ class AddLinkButton(Operator):
# text
ms.gltxt = scene.measureit_gl_txt
ms.glfont_size = scene.measureit_font_size
+ ms.glfont_align = scene.measureit_font_align
+ ms.glfont_rotat = scene.measureit_font_rotation
# link
ms.gllink = linkobject
# Add index
@@ -1423,7 +1472,7 @@ class AddLinkButton(Operator):
# -------------------------------------------------------------
-# Defines button for add a origin segment
+# Defines button that adds an origin segment
#
# -------------------------------------------------------------
class AddOriginButton(Operator):
@@ -1505,6 +1554,8 @@ class AddOriginButton(Operator):
# text
ms.gltxt = scene.measureit_gl_txt
ms.glfont_size = scene.measureit_font_size
+ ms.glfont_align = scene.measureit_font_align
+ ms.glfont_rotat = scene.measureit_font_rotation
# Add index
mp.measureit_num += 1
@@ -1520,7 +1571,7 @@ class AddOriginButton(Operator):
# -------------------------------------------------------------
-# Defines button for delete a measure segment
+# Defines button that deletes a measure segment
#
# -------------------------------------------------------------
class DeleteSegmentButton(Operator):
@@ -1554,7 +1605,7 @@ class DeleteSegmentButton(Operator):
# -------------------------------------------------------------
-# Defines button for delete all measure segment
+# Defines button that deletes all measure segments
#
# -------------------------------------------------------------
class DeleteAllSegmentButton(Operator):
@@ -1589,7 +1640,7 @@ class DeleteAllSegmentButton(Operator):
# -------------------------------------------------------------
-# Defines button for delete all measure segment
+# Defines button that deletes all measure segment sums
#
# -------------------------------------------------------------
class DeleteAllSumButton(Operator):
@@ -1615,7 +1666,69 @@ class DeleteAllSumButton(Operator):
# -------------------------------------------------------------
-# Defines button for render
+# Defines button that expands all measure segments
+#
+# -------------------------------------------------------------
+class ExpandAllSegmentButton(Operator):
+ bl_idname = "measureit.expandallsegmentbutton"
+ bl_label = "Expand"
+ bl_description = "Expand all measure properties"
+ bl_category = 'Measureit'
+ tag = IntProperty()
+
+ # ------------------------------
+ # Execute button action
+ # ------------------------------
+ def execute(self, context):
+ if context.area.type == 'VIEW_3D':
+ # Add properties
+ mainobject = context.object
+ mp = mainobject.MeasureGenerator[0]
+
+ for i in mp.measureit_segments:
+ i.gladvance = True
+
+ return {'FINISHED'}
+ else:
+ self.report({'WARNING'},
+ "View3D not found, cannot run operator")
+
+ return {'CANCELLED'}
+
+
+# -------------------------------------------------------------
+# Defines button that collapses all measure segments
+#
+# -------------------------------------------------------------
+class CollapseAllSegmentButton(Operator):
+ bl_idname = "measureit.collapseallsegmentbutton"
+ bl_label = "Collapse"
+ bl_description = "Collapses all measure properties"
+ bl_category = 'Measureit'
+ tag = IntProperty()
+
+ # ------------------------------
+ # Execute button action
+ # ------------------------------
+ def execute(self, context):
+ if context.area.type == 'VIEW_3D':
+ # Add properties
+ mainobject = context.object
+ mp = mainobject.MeasureGenerator[0]
+
+ for i in mp.measureit_segments:
+ i.gladvance = False
+
+ return {'FINISHED'}
+ else:
+ self.report({'WARNING'},
+ "View3D not found, cannot run operator")
+
+ return {'CANCELLED'}
+
+
+# -------------------------------------------------------------
+# Defines button for render option
#
# -------------------------------------------------------------
class RenderSegmentButton(Operator):
@@ -1646,7 +1759,6 @@ class RenderSegmentButton(Operator):
# noinspection PyBroadException
try:
result = bpy.data.images['Render Result']
- #if result.has_data is False:
bpy.ops.render.render()
except:
bpy.ops.render.render()
@@ -1805,6 +1917,8 @@ class AddNoteButton(Operator):
# text
ms.gltxt = scene.measureit_gl_txt
ms.glfont_size = scene.measureit_font_size
+ ms.glfont_align = scene.measureit_font_align
+ ms.glfont_rotat = scene.measureit_font_rotation
# Add index
mp.measureit_num += 1
@@ -1819,7 +1933,7 @@ class AddNoteButton(Operator):
# -------------------------------------------------------------
-# Defines button for enable/disable the tip display
+# Defines button that enables/disables the tip display
#
# -------------------------------------------------------------
class RunHintDisplayButton(Operator):