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 # setting the cursors
if self.tracker: if self.tracker:
self.tracker.setCoords(winner[2]) self.tracker.setCoords(winner[2])
self.tracker.setMarker(self.mk[winner[1]]) self.tracker.setMarker(self.mk[winner[1]])
self.tracker.on() self.tracker.on()
# setting the trackline # setting the trackline
fp = cstr(winner[2]) fp = cstr(winner[2])
if self.trackLine and lastpoint: if self.trackLine and lastpoint:
self.trackLine.p2(fp) self.trackLine.p2(fp)
self.trackLine.on() self.trackLine.on()
# set the cursor # set the cursor
self.setCursor(winner[1]) self.setCursor(winner[1])
# set the arch point tracking # set the arch point tracking
if self.lastArchPoint: if self.lastArchPoint:
self.setArchDims(self.lastArchPoint,fp) self.setArchDims(self.lastArchPoint,fp)
if Draft.getType(obj) in ["Wall","Structure"]: if Draft.getType(obj) in ["Wall","Structure"]:
self.lastArchPoint = winner[2] self.lastArchPoint = winner[2]
else: else:
self.lastArchPoint = None self.lastArchPoint = None
# return the final point # return the final point
return fp return fp