Draft: Bugfix in snapping

This commit is contained in:
Yorik van Havre 2013-10-06 16:52:14 -03:00
parent 88493ec0e5
commit 01d5193296

View File

@ -324,43 +324,46 @@ class Snapper:
# calculating the nearest snap point # calculating the nearest snap point
shortest = 1000000000000000000 shortest = 1000000000000000000
origin = Vector(self.snapInfo['x'],self.snapInfo['y'],self.snapInfo['z']) origin = Vector(self.snapInfo['x'],self.snapInfo['y'],self.snapInfo['z'])
winner = [Vector(0,0,0),None,Vector(0,0,0)] winner = None
fp = point
for snap in snaps: for snap in snaps:
if (not snap) or (snap[0] == None): if (not snap) or (snap[0] == None):
print "debug: Snapper: invalid snap point: ",snaps pass
#print "debug: Snapper: invalid snap point: ",snaps
else: else:
delta = snap[0].sub(origin) delta = snap[0].sub(origin)
if delta.Length < shortest: if delta.Length < shortest:
shortest = delta.Length shortest = delta.Length
winner = snap winner = snap
# see if we are out of the max radius, if any if winner:
if self.radius: # see if we are out of the max radius, if any
dv = point.sub(winner[2]) if self.radius:
if (dv.Length > self.radius): dv = point.sub(winner[2])
if (not oldActive) and self.isEnabled("passive"): if (dv.Length > self.radius):
winner = self.snapToVertex(self.snapInfo) if (not oldActive) and self.isEnabled("passive"):
winner = self.snapToVertex(self.snapInfo)
# setting the cursors
if self.tracker: # setting the cursors
self.tracker.setCoords(winner[2]) if self.tracker:
self.tracker.setMarker(self.mk[winner[1]]) self.tracker.setCoords(winner[2])
self.tracker.on() self.tracker.setMarker(self.mk[winner[1]])
# setting the trackline self.tracker.on()
fp = cstr(winner[2]) # setting the trackline
if self.trackLine and lastpoint: fp = cstr(winner[2])
self.trackLine.p2(fp) if self.trackLine and lastpoint:
self.trackLine.on() self.trackLine.p2(fp)
# set the cursor self.trackLine.on()
self.setCursor(winner[1]) # set the cursor
self.setCursor(winner[1])
# set the arch point tracking
if self.lastArchPoint: # set the arch point tracking
self.setArchDims(self.lastArchPoint,fp) if self.lastArchPoint:
if Draft.getType(obj) in ["Wall","Structure"]: self.setArchDims(self.lastArchPoint,fp)
self.lastArchPoint = winner[2] if Draft.getType(obj) in ["Wall","Structure"]:
else: self.lastArchPoint = winner[2]
self.lastArchPoint = None else:
self.lastArchPoint = None
# return the final point # return the final point
return fp return fp