Draft: Allow snapping to the center of ellipses

This commit is contained in:
Yorik van Havre 2014-06-08 19:36:59 -03:00
parent 32f509cba1
commit 24f83252a6

View File

@ -307,11 +307,15 @@ class Snapper:
#snaps.extend(self.snapToOrtho(edge,lastpoint,constrain)) # now part of snapToPolar
snaps.extend(self.snapToIntersection(edge))
snaps.extend(self.snapToElines(edge,eline))
if DraftGeomUtils.geomType(edge) == "Circle":
et = DraftGeomUtils.geomType(edge)
if et == "Circle":
# the edge is an arc, we have extra options
snaps.extend(self.snapToAngles(edge))
snaps.extend(self.snapToCenter(edge))
elif et == "Ellipse":
# extra ellipse options
snaps.extend(self.snapToCenter(edge))
elif "Vertex" in comp:
# directly snapped to a vertex
@ -728,12 +732,16 @@ class Snapper:
"returns a list of center snap locations"
snaps = []
if self.isEnabled("center"):
rad = shape.Curve.Radius
pos = shape.Curve.Center
for i in [15,37.5,52.5,75,105,127.5,142.5,165,195,217.5,232.5,255,285,307.5,322.5,345]:
ang = math.radians(i)
cur = Vector(math.sin(ang)*rad+pos.x,math.cos(ang)*rad+pos.y,pos.z)
snaps.append([cur,'center',self.toWP(pos)])
c = self.toWP(pos)
if hasattr(shape.Curve,"Radius"):
rad = shape.Curve.Radius
for i in [15,37.5,52.5,75,105,127.5,142.5,165,195,217.5,232.5,255,285,307.5,322.5,345]:
ang = math.radians(i)
cur = Vector(math.sin(ang)*rad+pos.x,math.cos(ang)*rad+pos.y,pos.z)
snaps.append([cur,'center',c])
else:
snaps.append([c,'center',c])
return snaps
def snapToIntersection(self,shape):