When validating distance joints, parts would move from preview position to
a different valid solution. This was caused by preSolve() being called
inconsistently - applied during offset changes for all joint types, but
distance joints are not in JointUsingPreSolve list.
Fix: Only call preSolve() for joint types that are designed to use it,
matching the logic used elsewhere in the codebase.
When user has specified a filter for a multi selection attempt, for
example Ctrl + clicking on a disallowed edge, the visual highlighting of
previously selected valid objects (that filter allowed) would disappear,
even though they were still internally valid in selection system.
The root cause of that was that when `addSelection()` failed, the code
still applied a `SoSelectionElementAction::None` to the scene graph
path, which was clearing visual highlighting for all objects in that
path, including those valid selection.
So, the fix is to set `pPath` to `nullptr` if selection fails, to
prevent any visual action from happening and being applied, in essence
leaving correct (and existing) selection untouched.
* Measure: Add circle center distance types to quickmeasure
* Measure: Add cylinder axis distance types to quickmeasure
* Measure: Fix PointToCylinder minimum distance not computing
* Quickmeasure: compute circle and cylinder diameters when they are closed
* Quickmeasure: add angle measurement between cylinder & circle axes
* Quickmeasure: Remove minimum distance between circle center and cylinder surface
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Gui: Widen the default customize dialog
* Gui: Make panels the same width in keyboard and toolbars tabs
* Remove namespace additions
---------
Co-authored-by: Ryan Kembrey <ryan.kembrey@student.uts>
* Sketcher: Use different colors for touch/window selection
As the title says. I think it was missing, so currently right to left
motion makes the box selection in Sketcher green with dashed lines,
whereas motion from left to right makes it blue with solid lines.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Sketcher: Introduce Select All (Ctrl + A)
As the title says, this allows selecting all geometries on the sketch
with CTRL + A shortcut, plus also allows to select "Select All" option
from Edit menu.
* Sketcher: Use fmt instead of std::stringstream in selectAll
* Sketcher: Fix typo in selectAll
Co-authored-by: João Matos <joao@tritao.eu>
---------
Co-authored-by: João Matos <joao@tritao.eu>
In versions prior to 1.0 there was never the requirement that the shape of a FeatureBase must contain a solid. This has changed with ea0a7b0679 for no obvious reason. This requirement should be dropped again.
In versions prior to 1.0 the method Feature::getBaseShape() was used within the Pad feature to check if the base feature has a solid. This method throws an exception if the shape doesn't have a solid.
Since version 1.0 the new method Feature::getBaseTopoShape() is used. As parameter a boolean is passed to either throw an exception or silently return a null shape. The implementation of this function is inconsistent:
If the parameter is false it throws an exception if the base feature's shape has no solid but if the parameter is true it doesn't check if the shape has a solid and returns it as is.
This leads to incorrect behaviour in the calling instance where the shape of the base feature is tried to be fused with the padded shape. This operation will fail if the shape of the base feature has no solid.
This fixes https://github.com/FreeCAD/FreeCAD/issues/23348
* Mesh: Change 1 missed dialog title to Title Case
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>