Commit Graph

198 Commits

Author SHA1 Message Date
Benjamin Bræstrup Sayoc
41111c5ee9 TechDraw: fix state handling of dimensions
- Positioning was calculated using `boundingRect` while `transformOriginPoint` was set according to `tightBoundingRect`, causing mismatch when `QGIDatumLabel` contains more than text (eg. shapes around text). Now `transformOriginPoint` and positioning calculated according to `tightBoundingRect`, and setting `transformOriginPoint` of `QGIDatumLabel` are handled by itself. This fixes an issue where the gap between dimension lines and text varied depending on dimension's angle.
- `m_lineWidth` was set in multiple locations, causing confusion and bug introduction
- If `X` or `Y` property changed, the remaining changed properties were not handled due to using `if else` rather than `if` for property change checking. This became an issue due the above mentioned simplification of `m_lineWidth` setting: if `X` or `Y` had changed (upon document restore).
- Center position was uneededly saved in variables `posX` and `posY` when it could be calculated on demand using `tightBoundingRect`. Removing this uneeded state simplfies code and lowers the risk of bug introduction due to lack of updating state.
2025-05-26 17:18:04 +02:00
bofdahof
ba2c2ca5ad Console: rename PascalCase named methods to camelCase 2025-05-06 17:50:21 +02:00
Kacper Donat
b999ce0336 TechDraw: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Benjamin Nauck
f22f3705db Use Base::toDegrees() instead of manually converting 2025-04-15 07:16:39 +02:00
Benjamin Nauck
21fbf8e539 Use Base::toRadians() instead of manually converting 2025-04-15 07:16:36 +02:00
Benjamin Nauck
738bc95fa2 TechDraw: Add #include <limits> where used 2025-03-31 23:53:03 +02:00
Benjamin Nauck
cf94011294 Techdraw: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:39 +01:00
Chris Hennes
d41114589c Merge pull request #19411 from benj5378/enums2
TechDraw: hard type enums, part 2
2025-03-03 10:37:21 -06:00
Chris Hennes
1a2070c36f Merge pull request #19636 from kadet1090/color-in-base
Base: Move App::Color to Base
2025-03-02 16:36:40 -06:00
Benjamin Bræstrup Sayoc
351feb132a Remove magic number and hard type enums in ArrowPropEnum.h
- Remove currently present magic numbers
- Hard type enums, so magic numbers can no longer be introduced. We don't want people to introduce magic numbers.
2025-03-02 17:14:24 +01:00
Benjamin Bræstrup Sayoc
aae45a2b8a TechDraw: extract QGIDatumLabel 2025-02-25 14:25:31 +00:00
Benjamin Bræstrup Sayoc
9941b59e98 TechDraw: hard type enums, part 3 (#19418)
* Remove magic number and hard type enums in LineNameEnum.h

- Remove currently present magic numbers
- Hard type enums, so magic numbers can no longer be introduced. We don't want people to introduce magic numbers.

* Remove magic number and hard type enums in QGIFace.h

- Remove currently present magic numbers
- Hard type enums, so magic numbers can no longer be introduced. We don't want people to introduce magic numbers.

* Remove magic number and hard type enums in Enums.h

- Remove currently present magic numbers
- Hard type enums, so magic numbers can no longer be introduced. We don't want people to introduce magic numbers.

* Remove magic number and hard type enums in QGVPage.h

- Remove currently present magic numbers
- Hard type enums, so magic numbers can no longer be introduced. We don't want people to introduce magic numbers.

* Remove magic number and hard type enums in TaskSurfaceFinishSymbols.h

- Remove currently present magic numbers
- Hard type enums, so magic numbers can no longer be introduced. We don't want people to introduce magic numbers.

* Remove magic number and hard type enums in QGTracker.h

- Remove currently present magic numbers
- Hard type enums, so magic numbers can no longer be introduced. We don't want people to introduce magic numbers.
2025-02-24 11:58:05 -05:00
WandererFan
abb57f10b6 Update src/Mod/TechDraw/Gui/QGIViewDimension.cpp
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-02-23 09:14:23 -05:00
WandererFan
022dde80f1 Update src/Mod/TechDraw/Gui/QGIViewDimension.cpp
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-02-23 09:14:23 -05:00
WandererFan
d928750026 Update src/Mod/TechDraw/Gui/QGIViewDimension.cpp
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-02-23 09:14:23 -05:00
wandererfan
812976f9df [TD]lint removal 2025-02-23 09:14:23 -05:00
wandererfan
b084d7fadb {TD]Set Arrow end property at Dimension level. 2025-02-23 09:14:23 -05:00
Kacper Donat
13fbab9e42 Base: Move App::Color to Base
Every basic data type is stored in Base module, color is standing out as
one that does not. Moving it to Base opens possibilities to integrate it
better with the rest of FreeCAD.
2025-02-17 21:10:26 +01:00
Benjamin Bræstrup Sayoc
c53679422b Remove magic numbers and hard type enums in DimensionFormatter.h.h
- Remove currently present magic numbers
- Hard type enums, so magic numbers can no longer be introduced. We don't want people to introduce magic numbers.
2025-02-17 12:16:49 -05:00
Benjamin Bræstrup Sayoc
9a8bdbaf9f TechDraw: Use QStringLiteral 2025-02-10 18:32:44 +01:00
Chris Hennes
143edf737a Merge pull request #19232 from WandererFan/miscSmallFixes
[TD]minor fixes x3
2025-02-03 17:54:20 +01:00
Benjamin Guest
4f56102978 TechDraw: Fix dimension alignment issue.
Fixes issue #19121 "dimension numbers placed lower than normal".

Problem:

QGCustomText has a new method `alignmentRect` which can optionally return a
`tightBoundingRect` instead of the regular `boundingRect`. The
`alignmentRect` is used for laying out the `QGIDatumLabel`, however
QGraphicsItemGroup's `childrenBoundingRect` use the childrens'
`boundingRect` and knows nothing of `alignmentRect`. The result is an
improperly sized label and frame and miss alignment. Additionally
`childrenBoundingRect` calculations includes hidden views, so even though
the `m_tolTextOver` and `m_tolTextUnder` are hidden they still affect
the bounding rect size.

Solution:

1. Implement new method `QGIDatumLabel::tightBoundingRect` this
   calculates the bounding rect using the subview's
   `aligmentRect` if there is text in the custom text.
2. Use `tightBoundingRect` in place of `boundingRect` to for the drawing of
   arrows and the exact dim frames.
3. This PR acknowledges that there are some edge case fonts that while not
   clipped may not interface perfectly with arrows and the exact dimension
   frame.
4. Fix vertical alignment of `m_tolTextOver` / `m_tolTextUnder`
5. Incorporate PR Review comments
2025-01-27 20:39:41 +01:00
wandererfan
2bc9f2ea1f [TD]allow showing units on individual dimensions 2025-01-24 13:04:00 -05:00
WandererFan
dc25d51e80 [TD]Dimension font clipping (fix #11452) (#18771)
* [TD]separate alignment and rendering bounding rectangles

* [TD]use alignment rectangle (fix #11452)
2025-01-13 11:13:59 -06:00
Ladislav Michl
1e529bcc7d TechDraw: Ensure tolerance font size is > 0 2024-12-16 12:23:51 -05:00
luzpaz
a633be7342 Fix various typos
Found via codespell.
2024-11-15 20:18:46 +01:00
wandererfan
17e9f10ca7 [TD]throttle over aggressive dimension autocorrect 2024-10-14 17:45:53 +02:00
Benjamin Bræstrup Sayoc
66539741ac [TechDraw] Some refactoring of frame pen 2024-09-02 16:53:37 -04:00
Benjamin Bræstrup Sayoc
61a681de19 [TechDraw] Fix incorrect centering of dimension label
and improve rendering of frame
Fixes #15103
2024-09-02 16:53:37 -04:00
PaddleStroke
3375bbfb8e TechDraw: Snap: disable snap if ALT is pressed. 2024-06-25 09:16:51 -05:00
wmayer
127f935711 Fix several compiler warnings
* -Wmaybe-uninitialized
* -Wunused-parameter
* -Wunused-variable
* -Wnonnull
* -Wstringop-truncation
* -Wstringop-overflow
2024-06-19 21:14:23 -05:00
PaddleStroke
c335ecb5ae TechDraw: Snapping: Fix bug where distanceX dimensions would wrongly compare to all dimensions. 2024-06-03 11:58:58 -04:00
PaddleStroke
cc4dd7ca64 TechDraw: Dimension Snapping : Enable different types of dimensions to snap together. 2024-06-03 11:58:58 -04:00
PaddleStroke
fcf973170b TechDraw: Dimension: fix centering snapping. 2024-06-03 11:58:58 -04:00
wmayer
3e23bd759b Mod: Fix several compiler warnings 2024-05-30 08:55:11 +02:00
PaddleStroke
f523f6c3ad TechDraw: Introduce dimension snapping 2024-05-27 11:44:31 -04:00
PaddleStroke
80fb3a492c TechDraw: Dimension: Allow snapping label to its center position. 2024-05-27 11:44:31 -04:00
PaddleStroke
cc393632e1 Techdraw: Smart Dimension: Fixes and simplifies code 2024-05-13 15:03:37 +02:00
PaddleStroke
41650a78d4 TechDraw: Implement 'Area' dimension. 2024-05-06 18:42:28 +02:00
wmayer
48ff9ad3a1 [TD]Refactor LTNP correction code for Dimensions
- additional geometry types

- add method to handle line like bsplines

- handle deleted ref body feature

- add test for empty savedGeometry

- add switch for matcher/LTNP on/off
2024-03-17 08:56:34 -04:00
wandererfan
c94a419eac [TD]fix over/under tolerance
- left justify tolerances
- use format spec for tolerance == zero
- prevent uncommanded tolerance format changes
- use 'w' format for HoleShaftFit
- allow zero tolerance values for HoleShaftFit
2024-03-14 21:45:16 -04:00
Tomas Pavlicek
1cf7861b51 [TechDraw] Implement proper selection of subitems (#11804) 2023-12-22 08:25:58 -05:00
wandererfan
b8bea76481 [TD]spelling in comments 2023-11-26 16:42:06 -05:00
wandererfan
9d3d7aba22 [TD]fix dimension location 2023-11-25 08:05:50 -05:00
Florian Foinant-Willig
2d27b84686 TechDraw: fix extension lines of projected dimension 2023-10-02 13:53:01 -04:00
wandererfan
9a6f12d9c6 [TD]fix selection highlighting from tree 2023-09-03 10:09:42 -04:00
wandererfan
9ad7a0ea72 [TD]use vp Property for arrow size 2023-06-07 12:38:26 -04:00
luzpaz
4e2124e1d3 Fix misc. linting and typos
Trim whitespace; move imports to separate lines, fix typos
2023-04-25 17:14:39 +02:00
Benjamin Bræstrup Sayoc
ddff39dbac [TechDraw] Add customizability for dimension line spacing 2023-04-15 10:20:38 -04:00
Benjamin Bræstrup Sayoc
a93060c6b9 [TechDraw] Simplify return logic
Normal warmup
2023-04-11 13:49:57 -04:00