[Bf-extensions-cvs] [7420961] master: Adds units of the metric system and vertical line
Germano Cavalcante mano-wii
noreply at git.blender.org
Wed Oct 14 03:22:49 CEST 2015
Commit: 74209611af996be117098e0e58202c2966f5e288
Author: Germano Cavalcante (mano-wii)
Date: Tue Oct 13 22:21:30 2015 -0300
Branches: master
https://developer.blender.org/rBAC74209611af996be117098e0e58202c2966f5e288
Adds units of the metric system and vertical line
km hm dam m dm cm mm
and
<-- "|" -->
===================================================================
M mesh_snap_utilities_line.py
===================================================================
diff --git a/mesh_snap_utilities_line.py b/mesh_snap_utilities_line.py
index 7a1b603..2998e9a 100644
--- a/mesh_snap_utilities_line.py
+++ b/mesh_snap_utilities_line.py
@@ -1,4 +1,4 @@
-### BEGIN GPL LICENSE BLOCK #####
+### BEGIN GPL LICENSE BLOCK #####
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -426,25 +426,36 @@ class CharMap:
ascii = {
".", ",", "-", "+", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "0",
+ "c", "m", "d", "k", "h", "a",
" ", "/", "*", "'", "\""
#"="
}
type = {
- 'BACK_SPACE', 'DEL'
+ 'BACK_SPACE', 'DEL',
+ 'LEFT_ARROW', 'RIGHT_ARROW'
}
- def __init__(self, length_entered = ""):
- self.length_entered = length_entered
-
+ @staticmethod
def modal(self, context, event):
c = event.ascii
- if c == ",":
- c = "."
- self.length_entered += c
- if event.type in self.type and len(self.length_entered) >= 1:
- self.length_entered = self.length_entered[:-1]
+ if c:
+ if c == ",":
+ c = "."
+ self.length_entered = self.length_entered[:self.line_pos] + c + self.length_entered[self.line_pos:]
+ self.line_pos += 1
+ if self.length_entered:
+ if event.type == 'BACK_SPACE':
+ self.length_entered = self.length_entered[:self.line_pos-1] + self.length_entered[self.line_pos:]
+ self.line_pos -= 1
+
+ elif event.type == 'DEL':
+ self.length_entered = self.length_entered[:self.line_pos] + self.length_entered[self.line_pos+1:]
- return self.length_entered
+ elif event.type == 'LEFT_ARROW':
+ self.line_pos = (self.line_pos - 1) % (len(self.length_entered)+1)
+
+ elif event.type == 'RIGHT_ARROW':
+ self.line_pos = (self.line_pos + 1) % (len(self.length_entered)+1)
class SnapUtilitiesLine(bpy.types.Operator):
""" Draw edges. Connect them to split faces."""
@@ -657,20 +668,19 @@ class SnapUtilitiesLine(bpy.types.Operator):
if event.shift:
if isinstance(self.geom, bmesh.types.BMEdge):
if self.list_verts:
- loc = self.obj_matrix * self.list_verts[-1].co
- self.vector_constrain = (loc, loc + self.obj_matrix * self.geom.verts[1].co - self.obj_matrix * self.geom.verts[0].co, event.type)
+ loc = self.list_verts_co[-1]
+ self.vector_constrain = (loc, loc + self.list_verts_co[-1] - self.list_verts_co[0], event.type)
else:
self.vector_constrain = [self.obj_matrix * v.co for v in self.geom.verts]+[event.type]
else:
if self.list_verts:
- loc = self.obj_matrix * self.list_verts[-1].co
+ loc = self.list_verts_co[-1]
else:
loc = self.location
self.vector_constrain = [loc, loc + self.constrain_keys[event.type]]+[event.type]
- if event.ascii in CharMap.ascii or event.type in CharMap.type:
- CharMap2 = CharMap(self.length_entered)
- self.length_entered = CharMap2.modal(context, event)
+ if self.list_verts_co and (event.ascii in CharMap.ascii or event.type in CharMap.type):
+ CharMap.modal(self, context, event)
#print(self.length_entered)
elif event.type == 'LEFTMOUSE':
@@ -703,7 +713,7 @@ class SnapUtilitiesLine(bpy.types.Operator):
elif event.value == 'RELEASE':
if event.type in {'RET', 'NUMPAD_ENTER'}:
- if self.length_entered != "" and self.list_verts_co != []:
+ if self.length_entered != "" and self.list_verts_co:
try:
text_value = bpy.utils.units.to_value(self.unit_system, 'LENGTH', self.length_entered)
vector = (self.location-self.list_verts_co[-1]).normalized()
@@ -730,15 +740,16 @@ class SnapUtilitiesLine(bpy.types.Operator):
self.list_verts = []
self.list_verts_co = []
self.list_faces = []
-
+
a = ""
if self.list_verts_co:
- if self.length_entered == "":
+ if self.length_entered:
+ pos = self.line_pos
+ a = 'length: '+ self.length_entered[:pos] + '|' + self.length_entered[pos:]
+ else:
length = self.len
length = convert_distance(length, self.uinfo)
a = 'length: '+ length
- else:
- a = 'length: '+ self.length_entered
context.area.header_text_set("hit: %.3f %.3f %.3f %s" % (self.location[0], self.location[1], self.location[2], a))
self.modal_navigation(context, event)
@@ -797,6 +808,7 @@ class SnapUtilitiesLine(bpy.types.Operator):
self.type = 'OUT'
self.len = 0
self.length_entered = ""
+ self.line_pos = 0
self.out_color = preferences.out_color
self.face_color = preferences.face_color
More information about the Bf-extensions-cvs
mailing list