[Bf-extensions-cvs] [7b69758c] master: xoffsets: Cleanup, reorderd code to match new vers

NBurn noreply at git.blender.org
Mon May 29 20:30:16 CEST 2017


Commit: 7b69758c5374284653358eb8ce8754f08fab8fe3
Author: NBurn
Date:   Mon May 29 14:27:53 2017 -0400
Branches: master
https://developer.blender.org/rBAC7b69758c5374284653358eb8ce8754f08fab8fe3

xoffsets: Cleanup, reorderd code to match new vers

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

M	mesh_xoffsets.py

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

diff --git a/mesh_xoffsets.py b/mesh_xoffsets.py
index fa232792..821a4cbf 100644
--- a/mesh_xoffsets.py
+++ b/mesh_xoffsets.py
@@ -116,7 +116,7 @@ class VertObj:
         self.obj = bpy.context.scene.objects # short hand, for internal use
 
     def copy(self): # return independent copy of vertObj
-        return vertObj( self.objInd, self.vertInd, self.co3D.copy(), [*self.co2D], self.dist2D, self.refInd )
+        return VertObj( self.objInd, self.vertInd, self.co3D.copy(), [*self.co2D], self.dist2D, self.refInd )
 
     def set2D(self):
         global RegRv3d
@@ -218,6 +218,12 @@ def get_dist_3D(ptA, ptB):
     return res
 
 
+# for making sure rise over run doesn't get flipped
+def slope_check(pt1,pt2):
+    cmp = ( pt1[0] >= pt2[0], pt1[1] >= pt2[1], pt1[2] >= pt2[2] )
+    return cmp
+
+
 def get_slope_3D(self, ptA, ptB):
     dist3D = get_dist_3D( ptA, ptB )
     x1,y1,z1 = ptA[0],ptA[1],ptA[2]
@@ -241,12 +247,6 @@ def get_new_pt_3D(xyz,slope3D,dis3D):
     return Vector([newX,newY,newZ])
 
 
-# for making sure rise over run doesn't get flipped
-def slope_check(pt1,pt2):
-    cmp = ( pt1[0] >= pt2[0], pt1[1] >= pt2[1], pt1[2] >= pt2[2] )
-    return cmp
-
-
 # todo: split into 2 functions ?
 # finds 3D location that shares same slope of line connecting Anchor and
 # Free or is on axis line going through Anchor
@@ -468,8 +468,48 @@ def find_all(co_find):
         return []
 
 
+# == 3D View mouse location and button code ==
+# Functions outside_loop() and point_inside_loop() for creating the measure
+# change "button" in the 3D View taken from patmo141's Vitual Button script:
+# https://blenderartists.org/forum/showthread.php?259085
+
+def outside_loop(loopCoords):
+    xs = [v[0] for v in loopCoords]
+    ys = [v[1] for v in loopCoords]
+    maxx = max(xs)
+    maxy = max(ys)
+    bound = (1.1*maxx, 1.1*maxy)
+    return bound
+
+
+def point_inside_loop(loopCoords, mousLoc):
+    nverts = len(loopCoords)
+    #vectorize our two item tuple
+    out = Vector(outside_loop(loopCoords))
+    vecMous = Vector(mousLoc)
+    intersections = 0
+    for i in range(0,nverts):
+        a = Vector(loopCoords[i-1])
+        b = Vector(loopCoords[i])
+        if intersect_line_line_2d(vecMous,out,a,b):
+            intersections += 1
+    inside = False
+    if fmod(intersections,2):
+        inside = True
+    return inside
+
+
 ### GL drawing code ### 
 
+
+def get_box_coor(origin,rWidth,rHeight,xOffset,yOffset):
+    coBL = (origin[0]-xOffset), (origin[1]-yOffset)
+    coTL = (origin[0]-xOffset), (origin[1]+rHeight+yOffset)
+    coTR = (origin[0]+rWidth+xOffset), (origin[1]+rHeight+yOffset)
+    coBR = (origin[0]+rWidth+xOffset), (origin[1]-yOffset)
+    return [coBL, coTL, coTR, coBR]
+
+
 def draw_font_at_pt(text, pt_co, pt_color):
     font_id = 0
     bgl.glColor4f(*pt_color)
@@ -511,43 +551,103 @@ def draw_box(boxCo, color):
     return
 
 
-# == 3D View mouse location and button code ==
-# Functions outside_loop() and point_inside_loop() for creating the measure
-# change "button" in the 3D View taken from patmo141's Vitual Button script:
-# https://blenderartists.org/forum/showthread.php?259085
+def draw_btn(text, co2D, mouseLoc, colorOff, colorOn):
+    color = colorOff
+    offSet = 5
+    font_id = 0
+    blf.size(font_id, 32, 72)
+    w, h = blf.dimensions(font_id, text)
+    textCoor = (co2D[0] - w/2, (co2D[1] + 5*offSet))
+    boxCo = get_box_coor(textCoor, w, h, offSet, offSet)
 
-def outside_loop(loopCoords):
-    xs = [v[0] for v in loopCoords]
-    ys = [v[1] for v in loopCoords]
-    maxx = max(xs)
-    maxy = max(ys)
-    bound = (1.1*maxx, 1.1*maxy)
-    return bound
+    bgl.glColor4f(*color)
+    blf.position(font_id, textCoor[0], textCoor[1], 0.0)
+    blf.draw(font_id, text)
+    if point_inside_loop(boxCo,mouseLoc):
+        color = colorOn
 
+    draw_box(boxCo, color)
+    return boxCo
 
-def point_inside_loop(loopCoords, mousLoc):
-    nverts = len(loopCoords)
-    #vectorize our two item tuple
-    out = Vector(outside_loop(loopCoords))
-    vecMous = Vector(mousLoc)
-    intersections = 0
-    for i in range(0,nverts):
-        a = Vector(loopCoords[i-1])
-        b = Vector(loopCoords[i])
-        if intersect_line_line_2d(vecMous,out,a,b):
-            intersections += 1
-    inside = False
-    if fmod(intersections,2):
-        inside = True
-    return inside
 
+def drawAllPts(self):
+    global currMeasStor
+    refPts,btnDrawn,lockPts = self.refPts,self.btnDrawn,self.refPts.mLs
+    if refPts.cnt == 1:
+        refPts.rLs[0].set2D()
+        draw_pt_2D(refPts.rLs[0].co2D, refPts.col_ls[0])
+    else:
+        midP = []
+        if refPts.cnt < 3:
+            midP = VertObj( -1,-1,getMidpoint3D( refPts.rLs[0].co3D, refPts.rLs[1].co3D ))
+        else:
+            midP = VertObj( -1,-1,lockPts[1].co3D.copy() )
 
-def get_box_coor(origin,rWidth,rHeight,xOffset,yOffset):
-    coBL = (origin[0]-xOffset), (origin[1]-yOffset)
-    coTL = (origin[0]-xOffset), (origin[1]+rHeight+yOffset)
-    coTR = (origin[0]+rWidth+xOffset), (origin[1]+rHeight+yOffset)
-    coBR = (origin[0]+rWidth+xOffset), (origin[1]-yOffset)
-    return [coBL, coTL, coTR, coBR]
+        lastPt = []
+        if refPts.axLock == '':
+            for i in range( refPts.cnt ):
+                refPts.rLs[i].set2D()
+                draw_pt_2D(refPts.rLs[i].co2D, refPts.col_ls[i])
+                if lastPt != []:
+                    draw_line_2D(lastPt, refPts.rLs[i].co2D, refPts.col_ls[0])
+                lastPt = refPts.rLs[i].co2D
+        else:
+            if   refPts.axLock == 'X':
+                draw_font_at_pt ( refPts.axLock, [70,70], Colr.red )
+            elif refPts.axLock == 'Y':
+                draw_font_at_pt ( refPts.axLock, [70,70], Colr.green )
+            elif refPts.axLock == 'Z':
+                draw_font_at_pt ( refPts.axLock, [70,70], Colr.blue )
+            for i in range( refPts.cnt ):
+                refPts.rLs[i].set2D()
+                draw_pt_2D(refPts.rLs[i].co2D, refPts.col_ls[i])
+                refPts.mLs[i].set2D()
+                draw_pt_2D(refPts.mLs[i].co2D, refPts.col_ls[i])
+                if lastPt != []:
+                    draw_line_2D(lastPt, refPts.mLs[i].co2D, refPts.col_ls[0])
+                lastPt = refPts.mLs[i].co2D
+
+        if btnDrawn:
+            midP.set2D()
+            MeasStr = format(currMeasStor, '.2f')
+            self.boxCo = draw_btn(MeasStr, midP.co2D, self.mouseLoc,Colr.white,refPts.col_ls[0])
+
+
+'''
+# for testing / debug purposes, may use later for UI elements
+# finds 0 and 180 degree reference points
+def draw_pts_0_180(self,ptLs,axisLock,Color):
+    AncC = ptLs[0].co3D
+    PivC = ptLs[1].co3D
+    FreC = ptLs[2].co3D
+    region = bpy.context.region
+    rv3d = []
+    for area in bpy.context.screen.areas:
+        if area.type == "VIEW_3D": 
+            rv3d = area.spaces[0].region_3d
+            break
+    A2P_dis = get_dist_3D( AncC, PivC )
+    P2F_dis = get_dist_3D( PivC, FreC )
+    dis180 = A2P_dis + P2F_dis
+    co180 = get_new_3D_coor(self,'',AncC, PivC, dis180)
+    co000 = get_new_3D_coor(self,'',PivC, AncC, P2F_dis)
+    co180_2d, co000_2d = [], []
+
+    if axisLock == '':
+        co180_2d = location_3d_to_region_2d(region, rv3d, [ co180[0],co180[1],co180[2] ])
+        co000_2d = location_3d_to_region_2d(region, rv3d, [ co000[0],co000[1],co000[2] ])
+    elif axisLock == 'X':
+        co180_2d = location_3d_to_region_2d(region, rv3d, [ FreC[0],co180[1],co180[2] ])
+        co000_2d = location_3d_to_region_2d(region, rv3d, [ FreC[0],co000[1],co000[2] ])
+    elif axisLock == 'Y':
+        co180_2d = location_3d_to_region_2d(region, rv3d, [ co180[0],FreC[1],co180[2] ])
+        co000_2d = location_3d_to_region_2d(region, rv3d, [ co000[0],FreC[1],co000[2] ])
+    elif axisLock == 'Z':
+        co180_2d = location_3d_to_region_2d(region, rv3d, [ co180[0],co180[1],FreC[2] ])
+        co000_2d = location_3d_to_region_2d(region, rv3d, [ co000[0],co000[1],FreC[2] ])
+    draw_pt_2D( co180_2d, Color )
+    draw_pt_2D( co000_2d, Color )
+'''
 
 
 def sceneRefresh(edType):
@@ -786,105 +886,6 @@ def do_rotate(self, newFreeCoor,freeInSel,selectedLs,sel_backup):
         self.refPts.rLs[obI].set2D()
 
 
-'''
-# for testing / debug purposes, may use later for UI elements
-# finds 0 and 180 degree reference points
-def draw_pts_0_180(self,ptLs,axisLock,Color):
-    AncC = ptLs[0].co3D
-    PivC = ptLs[1].co3D
-    FreC = ptLs[2].co3D
-    region = bpy.context.region
-    rv3d = []
-    for area in bpy.context.screen.areas:
-        if area.type == "VIEW_3D": 
-            rv3d = area.spaces[0].region_3d
-            break
-    A2P_dis = get_dist_3D( AncC, PivC )
-    P2F_dis = get_dist_3D( PivC, FreC )
-    dis180 = A2P_dis + P2F_dis
-    co180 = get_new_3D_coor(self,'',AncC, PivC, dis180)
-    co000 = get_new_3D_coor(self,'',PivC, AncC, P2F_dis)
-    co180_2d, co000_2d = [], []
-
-    if axisLock == '':
-        co180_2d = location_3d_to_region_2d(region, rv3d, [ co180[0],co180[1],co180[2] ])
-        co000_2d = location_3d_to_region_2d(region, rv3d, [ co000[0],co000[1],co000[2] ])
-    elif axisLock == 'X':
-        co180_2d = location_3d_to_region_2d(region, rv3d, [ FreC[0],co180[1],co180[2] ])
-        co000_2d = location_3d_to_region_2d(region, rv3d, [ FreC[0],co000[1],co000[2] ])
-    elif axisLock == 'Y':
-        co180_2d = location_3d_to_region_2d(region, rv3d, [ co180[0],FreC[1],co180[2] ])
-        co000_2d = location_3d_to_region_2d(region, rv3d, [ co000[0],FreC[1],co000[2] ])
-    elif axisLock == 'Z':
-        co180_2d = location_3d_to_region_2d(region, rv3d, [ co180[0],co180[1],FreC[2] ])
-        co000_2d = location_3d_to_region_2d(region, rv3d, [ co000[0],co000[1],FreC[2] ])
-    draw_pt_2D( co180_2d, Color )
-    draw_pt_2D( co000_2d, Color )
-'''
-
-
-def draw_btn(text, co2D, mouseLoc, colorOff, colorOn):
-    color = colorOff
-    offSet = 5
-    font_id = 0
-    blf.size(font_id, 32, 72)
-    w, h = blf.dimensions(font_id, text)
-    textCoor = (co2D[0] - w/2, (co2D[1] + 5*offSet))
-    boxCo = get_box_coor(textCoor, w, h, offSet, offSet)
-
-    bgl.glColor4f(*color)
-    blf.position(font_id, textCoor[0], textCoor[1], 0.0)
-    blf.draw(f

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list