Draft : Added knots support for snapping (#26571)
* Draft : Added knots support for snapping Signed-off-by: Yash Suthar <yashsuthar983@gmail.com> * Use Special snap for knots and rename snapToBSpline to snapToBSplineKnots --------- Signed-off-by: Yash Suthar <yashsuthar983@gmail.com> Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
This commit is contained in:
@@ -413,6 +413,8 @@ class Snapper:
|
||||
elif et == "Ellipse":
|
||||
# extra ellipse options
|
||||
snaps.extend(self.snapToCenter(edge))
|
||||
elif et == "BSplineCurve":
|
||||
snaps.extend(self.snapToBSplineKnots(edge))
|
||||
elif "Face" in comp:
|
||||
# we are snapping to a face
|
||||
if shape.ShapeType == "Face":
|
||||
@@ -800,6 +802,17 @@ class Snapper:
|
||||
snaps.append([mp, "midpoint", self.toWP(mp)])
|
||||
return snaps
|
||||
|
||||
def snapToBSplineKnots(self, edge):
|
||||
"""Return a list of knot snap locations for a BSpline."""
|
||||
snaps = []
|
||||
if self.isEnabled("Special"):
|
||||
if hasattr(edge, "Curve") and isinstance(edge.Curve, Part.BSplineCurve):
|
||||
knots = edge.Curve.getKnots()
|
||||
for k in knots:
|
||||
p = edge.Curve.value(k)
|
||||
snaps.append([p, "special", self.toWP(p)])
|
||||
return snaps
|
||||
|
||||
def snapToNear(self, shape, point):
|
||||
"""Return a list with a near snap location for an edge."""
|
||||
if self.isEnabled("Near") and point:
|
||||
|
||||
Reference in New Issue
Block a user