Sketcher/UX. Improve the usability of selecting vertices for constraint assignment (Box Selection).
- Dominant language
- C++
- Stars
- 33.6k
- Forks
- 6k
- Avg merge
- 3d 17h
- Merged PRs (30d)
- 196
Description
### Is there an existing issue for this?
- [x] I have searched the existing issues
### Problem description
Currently, to assign constraints, we are forced to ONLY click on vertices if two or more lines meet at that vertex.
Video demonstration of the problem.
https://github.com/user-attachments/assets/8c89e0a9-d708-4eaa-9bf8-f947f8195ee5
However, for improved usability, it is often more logical to use box selection (lasso selection is currently unavailable, unfortunately).
Box selection allows you to quickly and easily select the desired vertices rather than targeting each vertex. However, in the current implementation, box selection selects not one vertex, but two (the reason can be seen here: https://github.com/FreeCAD/FreeCAD/issues/13391).
If box selection only selected one of several vertices at a point, we could use a quick assignment method, such as dimension constraints.

Just look how convenient it is to use a frame to align the mass of vertices horizontally (but it could be a chain of horizontal dimensions).
https://github.com/user-attachments/assets/33d0056e-95fb-48ea-903b-b43f59eb7273
Overall, I can say that FreeCAD has virtually no usability for selecting subelements. Most often, you have to click, click, click, because SHIFT+B or SHIFT+E are completely useless. The selection filter is also almost useless.
If we can select vertices with a click and use them, why can't we select them with a frame?
By the way, there's a similar problem in TECHDRAW. We have a chain of dimensions. But each vertex requires a mouse click and can't be selected with a frame. BUT! Look how convenient it is to specify a mass dimension chain. A similar approach could be used for constraints.
https://github.com/user-attachments/assets/aea4f00a-0a25-41dc-8785-73c055919892
MeasureIT add-on in Blender
https://github.com/user-attachments/assets/29ef1f2f-4b8c-459c-985a-476c07c1b12d
### Full version info
```shell
OS: Manjaro Linux (KDE/plasma/xcb)
Architecture: x86_64
Version: 1.1.0dev.20251104 (Git shallow) AppImage
Build date: 2025/11/04 19:07:44
Build type: Release
Branch: main
Hash: af014a1bb44264d749ba9522917f0d1ac76c4bbf
Python 3.11.14, Qt 6.8.3, Coin 4.0.3, Vtk 9.3.1, boost 1_86, Eigen3 3.4.0, PySide 6.8.3
shiboken 6.8.3, xerces-c 3.3.0, IfcOpenShell 0.8.2, OCC 7.8.1
Locale: Russian/Russia (ru_RU)
Navigation Style/Orbit Style/Rotation Mode: Revit/Turntable/Drag at cursor
Stylesheet/Theme/QtStyle: unset/FreeCAD Classic/fusion
Logical DPI/Physical DPI/Pixel Ratio: 96/91.7938/1
Installed mods:
* addFC-main 1.5.1
* CurvedShapes 1.0.14
* SvgWorkbench 1.0.0.dev6
* Reinforcement
* SearchBar 1.8.0 (Disabled)
* SvgWorkbench-main 1.0.0.dev5
* PitchedRoof
* LyapinWorkbrench
* FreeCAD_FastenersWB-master 0.5.42
* FreeCAD_SketchArch-master
* MeshRemodel-master 1.10.38
* FrameForge 0.1.5
* fasteners 0.5.43
* Road 2025.2.22
* MeshRemodel 1.10.38
* addFC 1.9.3
* Curves 0.6.70
* freecad.gears 1.3.0
* CurvedShapesWorkbench-master 1.0.13
* Silk 0.2.0
* sheetmetal 0.7.58
* frame 0.1.1
* OpenTheme 2025.5.20
* Manipulator-master 1.6.3
* FreeCAD_ThreadProfile-master 1.97.0
```
### Subproject(s) affected?
Sketcher
### Anything else?
_No response_
### Code of Conduct
- [x] I agree to follow this project's Code of Conduct
Contributor guide
Research direction
Start in the Sketcher workbench by reproducing box selection where multiple vertices meet at one point, then compare it with individual vertex selection for constraint assignment. Done means box selection selects the intended single vertices so users can assign constraints without repeated clicks.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- design
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100