From c7b963d99171dacb14cc515151801ec7ac4b79f6 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Tue, 2 Jun 2020 16:50:04 +0200 Subject: [PATCH] Sketcher: Avoid PointOnObject Autoconstraint on BSpline ======================================================= fixes #4295 PointOnObject autoconstraint for BSplines is currently not supported, this commit prevents malformed autoconstraint creation. --- src/Mod/Sketcher/Gui/DrawSketchHandler.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp index fe9a6fe712..1dbc17f8f8 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp +++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp @@ -172,6 +172,9 @@ int DrawSketchHandler::seekAutoConstraint(std::vector &suggested } if (GeoId != Constraint::GeoUndef) { + + const Part::Geometry * hitobject = sketchgui->getSketchObject()->getGeometry(GeoId); + // Currently only considers objects in current Sketcher AutoConstraint constr; constr.Type = Sketcher::None; @@ -181,7 +184,7 @@ int DrawSketchHandler::seekAutoConstraint(std::vector &suggested constr.Type = Sketcher::Coincident; else if (type == AutoConstraint::CURVE && PosId != Sketcher::none) constr.Type = Sketcher::PointOnObject; - else if (type == AutoConstraint::VERTEX && PosId == Sketcher::none) + else if (type == AutoConstraint::VERTEX && PosId == Sketcher::none && hitobject->getTypeId() != Part::GeomBSplineCurve::getClassTypeId()) constr.Type = Sketcher::PointOnObject; else if (type == AutoConstraint::CURVE && PosId == Sketcher::none) constr.Type = Sketcher::Tangent;