[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