Skip to content

Commit

Permalink
fix multiple constraints
Browse files Browse the repository at this point in the history
  • Loading branch information
3nids committed Feb 5, 2014
1 parent 79d2f5d commit d55d544
Showing 1 changed file with 19 additions and 18 deletions.
37 changes: 19 additions & 18 deletions CadEventFilter.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,19 +192,7 @@ def _constrain(self, point):
"""
previousPoint = self.cadPointList.previousPoint()
penulPoint = self.cadPointList.penultimatePoint()

if previousPoint is not None:
dx = point.x()-previousPoint.x()
dy = point.y()-previousPoint.y()
dist = math.sqrt( point.sqrDist(previousPoint))
else:
dx, dy, dist = None, None, None

if penulPoint is not None:
ddx = previousPoint.x() - penulPoint.x()
ddy = previousPoint.y() - penulPoint.y()
else:
ddx, ddy = None, None
dx, dy, ddx, ddy, dist = None, None, None, None, None


#################
Expand All @@ -218,14 +206,14 @@ def _constrain(self, point):
pass
else:
point.setX( self.inputwidget.x )

if self.snapSegment is not None and not self.inputwidget.ly:
# we will magnietize to the intersection of that segment and the lockedX !
y = CadIntersection.LineIntersectionAtX( self.snapSegment[1], self.snapSegment[2], point.x() )
point.setY( y )
else:
if self.inputwidget.rx:
self.inputwidget.x = dx
self.inputwidget.x = point.x() - previousPoint.x()
else:
self.inputwidget.x = point.x()

Expand All @@ -247,12 +235,20 @@ def _constrain(self, point):
point.setX( x )
else:
if self.inputwidget.ry:
self.inputwidget.y = dy
self.inputwidget.y = point.y() - previousPoint.y()

else:
self.inputwidget.y = point.y()

#################
# Angle constrain
if self.cadPointList.constraintCapabilities.absoluteAngle:
dx = point.x() - previousPoint.x()
dy = point.y() - previousPoint.y()
if self.inputwidget.ra and self.cadPointList.constraintCapabilities.relativeAngle:
ddx = previousPoint.x() - penulPoint.x()
ddy = previousPoint.y() - penulPoint.y()

if self.cadPointList.constraintCapabilities.absoluteAngle and self.inputwidget.la:
a = self.inputwidget.a/180.0*math.pi
if self.inputwidget.ra:
Expand Down Expand Up @@ -294,6 +290,11 @@ def _constrain(self, point):

#################
# Distance constrain
if self.cadPointList.constraintCapabilities.distance:
dx = point.x() - previousPoint.x()
dy = point.y() - previousPoint.y()
dist = math.sqrt(point.sqrDist(previousPoint))

if self.cadPointList.constraintCapabilities.distance and self.inputwidget.ld:
if dist == 0:
# handle case where mouse is over origin and distance constraint is enabled
Expand All @@ -319,15 +320,15 @@ def _constrain(self, point):
#Update the widget's x&y values (for display only)
if self.inputwidget.rx:
if self.cadPointList.constraintCapabilities.relativePos:
self.inputwidget.x = dx
self.inputwidget.x = point.x() - previousPoint.x()
else:
self.inputwidget.rx = False
if not self.inputwidget.rx:
self.inputwidget.x = point.x()

if self.inputwidget.ry:
if self.cadPointList.constraintCapabilities.relativePos:
self.inputwidget.y = dy
self.inputwidget.y = point.y() - previousPoint.y()
else:
self.inputwidget.ry = False
if not self.inputwidget.ry:
Expand Down

0 comments on commit d55d544

Please sign in to comment.