diff options
Diffstat (limited to 'measureit/measureit_main.py')
-rw-r--r-- | measureit/measureit_main.py | 202 |
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): |