Commit Graph

32204 Commits

Author SHA1 Message Date
MisterMakerNL
6d81d0556a Gui: Various fixes to official themes
Updated PropertyEditor QLabel and QPushButton styles for better visual consistency
and usability, including specific pushbutton styling for the Placement tool. Adjusted
QCheckBox disabled indicator styles to use consistent border and background colors,
and fixed background color for checked and indeterminate disabled states.

Gave inactive and active tab their own token. Fixed missing hover for
scrollbar.

Changed the value of EditedEdgeColor in the FreeCAD Light preference
pack Due to contrast issues with default shape color.

Refreshed Theme_thumbnail_dark.png and Theme_thumbnail_light.png images.
Updated Thumbnails_themes.svg with new Inkscape version metadata, export
paths, and visual adjustments, including color and layout changes to
theme preview rectangles.

Refreshed Theme_thumbnail_dark.png and Theme_thumbnail_light.png images.
Updated Thumbnails_themes.svg with new export filenames, DPI settings,
and adjusted some SVG properties for improved export consistency.

Changed the TextDisabledColor to fix issue with lighten full black.

Adjusted the QComboBox padding-right from 2px to 18px in FreeCAD.qss to
provide space for the check-mark indicating the active item.

Changed the 'HighlightColor' value in the FreeCAD Light preference pack
configuration to dark green to solve contrast issues.

Introduces InActiveTabBackgroundColor and ActiveTabBackgroundColor to
both FreeCAD Dark and FreeCAD Light preference packs for improved tab
appearance customization.
2025-08-27 17:58:57 +02:00
Kacper Donat
5719bb8bf8 Merge pull request #22389 from PaddleStroke/pd_transform
PartDesign: Transform tools
2025-08-27 15:22:26 +02:00
marioalexis
b2ad8d79de Fem: Acquire the GIL before running Python code 2025-08-27 14:58:06 +02:00
wwmayer
df4486733e Fem: Fix crash when writing mesh to z88 file
For the z88 export the FemMesh must be passed to its Python wrapper which will increase the counter upon construction and decrease it upon destruction. If the counter becomes 0 the FemMesh will be destroyed too which causes a crash.

To fix the crash the counter must be increased and safely decreased after the lifetime of the Python wrapper.

This fixes https://github.com/FreeCAD/FreeCAD/issues/23380
2025-08-27 14:57:50 +02:00
Paul Lee
43eafe9dc2 [ArchStructure] Fix Regression : FaceMaker
Fix #22822

See discussion and example model file in github :-
https://github.com/FreeCAD/FreeCAD/issues/22822
2025-08-27 12:30:32 +02:00
FEA-eng
513208f328 PartDesign: Update missed error message about multiple solids (#23392)
* PartDesign: Update FeatureLoft.cpp

* PartDesign: Update FeatureExtrude.cpp

* PartDesign: Update FeaturePipe.cpp

* PartDesign: Remove empty lines added by GitHub editor

* PartDesign: Remove empty lines added by GitHub editor
2025-08-27 09:37:53 +00:00
Chris Hennes
146c84cf1e Merge pull request #23374 from wwmayer/issue_23353
Exporting mesh to Z88 format no longer breaks all export and configs
2025-08-26 23:20:25 -05:00
wwmayer
e055ce777d Fem: Fix file suffixes
*i1.txt or *o2.txt are not valid suffixes for a file dialog. In the past (until 2018) the suffixes were set to *.txt but this has been changed with 65b1484b7.

To avoid creating invalid filenames the original suffixes are restored.
2025-08-26 22:22:56 -05:00
Adrian Insaurralde Avalos
f922d282db Fix autouic warnings about duplicate names in ui files 2025-08-26 11:00:30 +02:00
paddle
0ddb804ab1 PartDesign: Patterns: Tooltips. 2025-08-26 09:13:17 +02:00
PaddleStroke
c1ccf75918 PartDesign: Transform rework 2025-08-26 08:46:51 +02:00
Benjamin Nauck
1b49998f6f Merge pull request #23291 from 3x380V/measurement
Measure: Useability improvements
2025-08-26 06:51:50 +02:00
PaddleStroke
f7f9692c57 Sketcher: Circle DSH: move diameter constraint. Fix #22267 (#22862)
* Sketcher: Circle DSH: move diameter constraint. Fix #22267

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Improve. To squash

* [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>
2025-08-25 21:37:37 -05:00
Roy-043
7d5f5e13a3 MeshPart: "Trim by plane" -> "Trim With Plane" (#23361)
* MeshPart: "Trim by plane" -> "Trim With Plane"

* [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>
2025-08-25 22:39:25 +00:00
PaddleStroke
465f6cb52c Assembly: Screw Joint, fix distance name to Thread Pitch 2025-08-25 16:44:04 -05:00
Frank David Martínez M
0f2ea5588c [Core] Fix #15558: Direct expression in ternary operator (#22938)
* [Core] Fix #15558: Direct expression in ternary operator

* [Core] Added tests for Non-Numeric conditions in ternary op.

* [Core] prevent relational operator chains at grammar level.

* [Core] Rewrite expressions grammar as a layered grammar.

* [Core] Revert to left associative relops (like C/C++) plus tests.
2025-08-25 21:52:42 +02:00
Roy-043
457c57f9ad Draft: Implement hints for creation tools (#23244)
* Draft: Implement hints for creation tools

Fixes: #22886
Related: #22298

This PR implements hints for the tools in the Draft Creation toolbar.

* Fix confusing indentation

* Fix typo in comment
2025-08-25 19:42:59 +02:00
PaddleStroke
679a072a4a PartDesign: Extrude 2 sides (#21794)
* PartDesign: extrude 2 sides

* Part: OpCodes XOR

* PartDesign: Remove deprecated generatePrism functions

* PartDesign: Extrude : Update Sides combobox strings

* Change "Sides" to "Mode"

* Use OpCodes::Extrude instead of Prism.
2025-08-25 17:17:23 +00:00
Chris Hennes
e53f48d1fc Material: Add missing include for PCH 2025-08-25 18:50:27 +02:00
paddle
96361625e7 PartDesign: Remove message taskbox and use regular warnings instead. 2025-08-25 18:39:08 +02:00
paddle
274ae4ba2b PartDesign: Remove unnecessary warning. 2025-08-25 18:39:06 +02:00
paddle
a875eb4081 PartDesign: Rename Transformed::Mode enum 2025-08-25 18:38:34 +02:00
paddle
b8a6926930 Part: Add PatternParametersWidget 2025-08-25 18:38:34 +02:00
paddle
66e186f396 Gui: Move ComboLink from PartDesign to Gui. 2025-08-25 18:38:34 +02:00
paddle
1eb05317ee PartDesign: add linear pattern spacing and extent icons. 2025-08-25 18:38:34 +02:00
Roy-043
ec2ae4b205 Draft: fix 2 issues with Draft_SelectPlane 2025-08-25 18:24:01 +02:00
wmayer
2a12b9eeb7 Mesh: In ReaderOBJ replace std::atoi with std::stoi 2025-08-25 18:13:59 +02:00
wmayer
9c63b7032b Mesh: Improve OBJ mesh import
This change allows it to load OBJ files created by Blender.

Fixes https://github.com/FreeCAD/FreeCAD/issues/19456
2025-08-25 18:13:59 +02:00
Roy-043
8f50d063dd Draft: Support relative paths for hatch patterns 2025-08-25 18:12:20 +02:00
tetektoza
fb2307362d Sketcher: Set total angle to make evaluation choose it when typing in OVP (#23193)
* Sketcher: Set total angle to make evaluation choose it when typing in OVP

When typing an angle value (e.g., "315 deg") in the sketcher rotate tool,
the result differed from manually moving the mouse to achieve the same rotation.
The angle would "flip" to equivalent but opposite directions (315 deg became -45 deg)
due to smart angle selection logic choosing the "closer" alternative.

The parameter enforcement system (`doEnforceControlParameters`) calculated cursor
positions for keyboard input but never directly set the `totalAngle` value.
The mouse logic's smart angle selection algorithm then calculated totalAngle
independently, potentially choosing equivalent but opposite angle directions
(e.g., -45 deg instead of +315 deg) based on proximity to the previous angle value.

Solution is to basically predefine `totalAngle` if user has typed it so
this "smart logic" will always choose the `totalAngle` that user typed.

* Sketcher: Set total angle for arc tool

* Sketcher: Set total angle for Arc Slot tool
2025-08-25 11:10:17 -05:00
Roy-043
ac02b86521 Bim: Fix direction of panel waves (#23271)
* Update ArchPanel.py

* Update ArchPanel.py
2025-08-25 18:09:31 +02:00
MisterMakerNL
237d421417 Replace preference page icons
replaced icon so look more like the actual wb icons
2025-08-25 11:08:19 -05:00
PaddleStroke
b7440a660c Assembly: Move label change logic to onChange 2025-08-25 11:06:11 -05:00
tetektoza
0c909af75c Part: Start listing BoundBox properties for Expression Editor
As the title says. It was missing, so this patch adds all needed.
2025-08-25 18:04:22 +02:00
wmayer
85cf53cb83 Mesh: Fix crash MeshPy::setPoint & MeshPy::movePoint
Fixes https://github.com/FreeCAD/FreeCAD/issues/18823
2025-08-25 10:55:53 -05:00
xtemp09
887e7bd595 Simplify repr() function 2025-08-25 10:38:39 -05:00
Paul Lee
67178b953d [ArchWindow] Clone and Link to Support Sill Change
Problems / Course of Developement:

  1. Allow changing Sill feature was added in
  - https://github.com/FreeCAD/FreeCAD/pull/21005

  2. Bug fix was added in
  - f6bba5d58e

  3. Further Problems were identified as discused in
  - https://github.com/FreeCAD/FreeCAD/pull/21005#issuecomment-3010959162

  'New Observation-

      1. Clone or Link to a Window does not work and return error
      2. This PR/Commit (21005) translate the Base Sketch when Sill property is changed, to change the final disposition of a Window object; however, it will also shift the disposition of a Clone and Link as a result (with error message above fixed). This is apparently not an expected behaviour.

  (Sidenote- When SketchArch Addon is installed and parametric placement is used, there would not no impact)

Current Commit:

  1. Support Link and Clone of Arch Windows (bug fix)

  2. Instead of changing base Sketch disposition, the Placement of Arch Window, Clone, or Link is adjusted.
2025-08-25 17:30:13 +02:00
paddle
76f2b120ff Sketcher: Port and fix internal faces from RealThunder's branch
Co-authored-by: Zheng Lei <realthunder.dev@gmail.com>
Co-authored-by: Kacper Donat <kacper@kadet.net>
Co-authored-by: Pierre-Louis Boyer <pierrelouis.boyer@gmail.com>
2025-08-25 17:09:10 +02:00
PaddleStroke
b4d799b0ed Assembly: Fix untranslatable string in CommandInsertNewPart.py (#23355)
* Assembly: Fix untranslatable string in CommandInsertNewPart.py

* [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>
2025-08-25 14:38:33 +00:00
PaddleStroke
2fc762d75d Sketcher: fix constraint icon size (#22940)
* Sketcher: fix constraint icon size

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* [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>
2025-08-25 15:59:46 +02:00
Furgo
3a3b4a89c0 BIM: add interactive sun position and ray visualization to Arch Site (#22516)
* BIM: add properties for static sun sphere representation

* BIM: create Coin3D nodes for the sun sphere

* BIM: implement logic for static sun representation

* BIM: add additional info properties to sun ray

* BIM: use Draft.Line for sun ray, improve visual appearance

* BIM: color code the sun path arc

* BIM: add hour marker points to the sun path arc

* BIM: make sun path diagram smoother

* BIM: add conditional sun hour marker labels

* BIM: set constraints to time values

* BIM: remove redundant import
2025-08-25 11:37:30 +02:00
Roy-043
5f322c9626 Draft: task_orthoarray.py make some strings translatable 2025-08-25 11:31:50 +02:00
wmayer
7b9a853025 Measure: Extend angle measurements
Support to measure the angle using a planar B-spline surface
2025-08-25 09:29:29 +02:00
wmayer
01c427d5e3 PD: Increase the tolerance to check for planar surfaces
The default tolerance to check for a planar B-spline surface is 1.0e-7 which might be too strict in some cases.
Therefore the tolerance is increased to 2.0e-7.

This fixes issue 21242
2025-08-25 09:29:29 +02:00
wmayer
792c0ae5e8 Measure: Fix some linter warnings 2025-08-25 09:29:29 +02:00
wmayer
f42f3dc069 Measure: Improve TaskMeasure dialog
+ Use Qt's translation of the Save and Close buttons
+ Use QShortcut instead of eventFilter() because the latter is
  too aggressive eating all Enter and ESC events

This fixes the remaining issues as mentioned at the PR 17109
2025-08-25 09:29:29 +02:00
wmayer
f00fbe0070 Measure: Allow any surface type for MeasureArea 2025-08-25 09:23:54 +02:00
wmayer
d1a84ab538 Measure: Fix TaskMeasure
Made several fixes to TaskMeasure:
* Move to correct namespace
* Handle possible exception in update() method
* Add null pointer checks for buttonBox
* Cannot use 'Measure::MeasurePython' as template argument in addObject<>
  because the macro PROPERTY_HEADER_WITH_OVERRIDE determines the invalid
  string 'App::FeaturePythonT<FeatureT>' so that an exception is raised

Note: The changes might fix issue 20304
2025-08-25 09:21:33 +02:00
wmayer
14de080897 Measure: Fix several crashes in Measurement
Measurement::getShape() used to call ShapeFinder::getLocatedShape()
that failed to return a valid shape in many cases. And the calling
instance didn't check for a valid shape either which caused
a segmentation fault.

Solution:
Replace ShapeFinder::getLocatedShape() with Part::Feature::getShape()
that works more reliably and where needed check for a valid shape
before accessing it.

This fixes issue 19452 and improves the fix for 19349
2025-08-25 09:21:33 +02:00
wmayer
8e247bb469 Measure: Implement quick measure as command and make it toggable
The quick measure can considerably slow down the system when selecting
part elements. With this change the user is able to turn off this
bottleneck.
2025-08-25 09:21:33 +02:00