Compare commits

..

7120 Commits

Author SHA1 Message Date
pre-commit-ci[bot] 4b2296936c [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2026-03-16 20:36:26 +00:00
pre-commit-ci[bot] 56530cd309 [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/psf/black-pre-commit-mirror: 2892f1f81088477370d4fbc56545c05d33d2493f → fa505ab9c3e0fedafe1709fd7ac2b5f8996c670d](https://github.com/psf/black-pre-commit-mirror/compare/2892f1f81088477370d4fbc56545c05d33d2493f...fa505ab9c3e0fedafe1709fd7ac2b5f8996c670d)
- [github.com/pre-commit/mirrors-clang-format: 317810f3c6a0ad3572367dc86cb6e41863e16e08 → 88c364bab316f4b6b18f6c298133bbbf32d7cd15](https://github.com/pre-commit/mirrors-clang-format/compare/317810f3c6a0ad3572367dc86cb6e41863e16e08...88c364bab316f4b6b18f6c298133bbbf32d7cd15)
2026-03-16 20:31:17 +00:00
marioalexis 601bcd5e3d App: Fix separator path in safe mode 2026-03-16 21:03:28 +01:00
PaddleStroke dcb380e1ca Sketcher: Text position OVP fix 2026-03-16 19:15:09 +01:00
Alfredo Monclus cfe641fb7d Gui: improve quantitySpinbox / Sketcher OVP (#25978)
* Gui: fix quantity spinbox size not adapting to number of decimals

* Gui: fix quantity spinbox units getting cut (force max chars)

* Gui: editableDatumLabel remove hardcoded values

* fixes

* Gui: sketcher ovp auto adjust size

* Gui: ovp fix cursor jumping behind the unit

* Gui: Refactor changes to QuantitySpinBox

The QuantitySpinBox uses d-pointer (pimpl) to store its private data -
this commit ensures that all state is stored here and exposed via
getters and setters + qproperties.

* Gui: sketcher ovp fix cursor jumping after the unit

* Gui: allow quantitySpinBox to set max digits allowed

Useful for adjustable width in the Sketcher OVP

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2026-03-16 18:41:00 +01:00
PaddleStroke d384c9d8cb Link : Fix transparent face regression 2026-03-16 18:32:36 +01:00
PaddleStroke 3620b68b21 Assembly: Command: Select joints of component (#27530)
* Assembly: Command: Select joints of component https://github.com/FreeCAD/FreeCAD/issues/23721

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

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

* Update src/Mod/Assembly/Gui/Commands.cpp

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2026-03-16 18:25:05 +01:00
tarman3 20e70f84e1 CAM: ToolController - Default RampFeed after migration (#27191) 2026-03-16 13:10:34 -04:00
Nishendra Singh e28b1ce1ad techdraw: added supplementary angle display 2026-03-16 18:07:32 +01:00
Alfredo Monclus c8efc26982 PartDesign: fix the range of the custom clearance of threads (#26296)
* PartDesign: fix the range of the custom clearance of threads

* PartDesign: hole ensure diameter is on the correct range
2026-03-16 18:02:31 +01:00
Loke Strøm 9abe7b4af1 Sketcher: Fix: Arc of Hyperbola (#27656)
* Sketcher: Fix: Arc of Hyperbola

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

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

* Added minor grater than major radius support

* Fixed merge errors

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

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

* Improved comments and added a confused points check for S1 and S2 distance.

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

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

* Added compile check for occ version and check before getting minor radius.

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

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

* Apply suggestions from code review

OCC version check

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2026-03-16 17:49:34 +01:00
Timothy Miller 27f077c62b Part: Fix AttacherEngine property not synced with AttacherType (#15716)
When Part2DObject (e.g., Sketch) is created, it calls setAttacher() to
set up AttachEnginePlane. This updated the internal AttacherType property
but left the user-visible AttacherEngine enum at its default "Engine 3D".

Now setAttacher() also updates AttacherEngine for non-base attachers,
keeping the visible property in sync with the actual engine type.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-16 17:42:36 +01:00
PaddleStroke eabd052c17 Core: Fix freecad when windows path has non ASCII characters (#28222)
* Core: Fix freecad when Windows username has non ASCII characters

* Update ApplicationDirectories.cpp

* Tests: Add tests of pathToString/stringToPath

Validates the fix for non-ASCII characters in filesystem paths (e.g.
Windows usernames with umlauts). Includes Windows-specific tests that
verify pathToString produces UTF-8 from wide-string paths and that
the naive fs::path::string() does not. On Linux these functions are
effectively a no-op, so the tests themselves are only really useful
on Windows.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 17:37:43 +01:00
freecad-gh-actions-translation-bot 706b01f607 Update translations from Crowdin 2026-03-16 17:31:49 +01:00
dependabot[bot] 8a2f665430 Bump github/issue-metrics from 4.1.0 to 4.1.1
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/41a7961f701cc64490f32e143af8ef479b93e87d...6a35322ff89cee3e1a594d282c27eb34bffa9174)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 4.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 14:05:28 +01:00
sliptonic 9fe630e0c3 Merge pull request #23093 from Connor9220/UpdateCircularHoleBaseGUI
CAM: Circular Hole Improvements - GUI sorting enhancements, and migration fixes
2026-03-15 15:02:28 -05:00
Ladislav Michl 91f015b132 Gui: {get,set}Camera expects utf-8 encoding
Python interface to the setCamera() is using 's' format string, which
converts Unicode object to C string using 'utf-8' encoding. Reflect
that for QString conversion as well.
2026-03-15 20:38:42 +01:00
sliptonic 6d8b98d471 block delete logic 2026-03-14 11:19:14 -04:00
tarman3 03f506c5a5 fix onDocumentRestored 2026-03-14 11:18:54 -04:00
Turan Furkan Topak d90c88f0fc make polar and circular arrays aware of the active working plane (#28324) 2026-03-14 13:18:00 +01:00
Bojan Pejic df8c6b5db9 BIM: fix zero level height warning dialog (#28065)
* BIM: fix zero level height warning dialog
2026-03-14 11:48:49 +00:00
Yash Suthar 5455306a4a Draft: fix angular mode extension lines creation (#27987)
* Draft: fix angular mode extension lines creation

Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>

* Draft: update the agularDimension extlines svg representation

Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>

---------

Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2026-03-14 12:34:58 +01:00
Furgo d1476c819c BIM: refactor link processing, add BIM_Link wrapper command (#28104)
* BIM: refactor, introduce link properties override helper

* BIM: add Link support to Arch_Add, Arch_Remove

Fixes: https://github.com/FreeCAD/FreeCAD/issues/26255
Fixes: https://github.com/FreeCAD/FreeCAD/issues/28139

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

* BIM: add link command wrapper

* BIM: add link addition and removal tests

---------

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2026-03-14 12:22:02 +01:00
Billy Huddleston 88a74cfa3a Fix Drag'n drop for QT6.10
Fix Merge conflicts
2026-03-13 18:09:12 -04:00
Billy Huddleston 5e818e961c CAM: Remove "Automatic TSP" mode and improve natural sorting
CAM: CircularHoleBase - Fix onDocumentRestored

Removed the expermental "Automatic TSP" sorting mode and ensured legacy
files are migrated to "Automatic". Start using C++ TSP sorting for
"Automatic" mode for better performance. Refactored natural sorting for
table columns, relocating the utility class for reuse and using a robust
sort key.

src/Mod/CAM/Path/Op/CircularHoleBase.py:
- Removed "Automatic TSP" from SortingMode options and logic
- Added migration logic for legacy "Automatic TSP" values
- Cleaned up redundant assignments

src/Mod/CAM/Path/Op/Gui/CircularHoleBase.py:
- Updated to use relocated NaturalSortTableWidgetItem for feature and
diameter columns
- Improved sorting behavior for mixed text/number columns

src/Mod/CAM/Path/Base/Gui/Util.py:
- Added NaturalSortTableWidgetItem using the existing natural_sort_key
for robust sorting
2026-03-13 15:57:13 -04:00
Billy Huddleston fdef6c35e7 GUI sorting enhancements, and migration fixes
This update enhances the GUI with new sorting modes and manual reordering, and
adds migration logic to ensure robust property

src/Mod/CAM/Gui/Resources/panels/PageBaseHoleGeometryEdit.ui:
- Add Sorting mode combo box with "Automatic", "Automatic TSP", and "Manual" options
- Add UI improvements for hole sorting, selection, and filtering

src/Mod/CAM/Path/Op/CircularHoleBase.py:
- Add migration logic to ensure SortingMode property exists and is up to date
- Use sort_locations_tsp when SortingMode is "Automatic TSP"

src/Mod/CAM/Path/Op/Gui/CircularHoleBase.py:
- Add RowMoveTableWidget for manual row reordering in the GUI
- Update TaskPanelHoleGeometryPage to support new sorting modes and improved UI behavior
2026-03-13 15:56:14 -04:00
Chris Hennes 4ac848aab0 Merge pull request #26031 from pjcreath/split-sketchobject
Split monolithic SketchObject.cpp
2026-03-13 14:37:49 -05:00
sliptonic e1fdc27e7c Merge pull request #28321 from davidgilkaufman/roadmap_clipper
[CAM] Clipper upgrade roadmap epic
2026-03-13 13:35:07 -05:00
sliptonic 0caccde398 Merge pull request #25667 from tarman3/boundary_threshold
CAM: DressupBoundary - RetractThreshold
2026-03-13 12:52:59 -05:00
sliptonic 244dffcfb7 Merge pull request #27514 from tarman3/holes_diameter
CAM: CircularHoleBase - Fix holeDiameter() for face
2026-03-13 12:45:43 -05:00
David Kaufman 5328e74e3d link FPA grant proposal 2026-03-13 13:27:54 -04:00
sliptonic 3c48b4a950 CAM: Machine-based postprocessing (#27507)
CAM: Add template dropdown below machine name in editor

Adds a template selection dropdown to the Machine Editor dialog,
positioned below the machine name field. Dropdown lists user and
built-in templates for new machines only. Adds MachineFactory
template discovery and ensures templates are copied to build directory.

src/Mod/CAM/CMakeLists.txt:
- Copy machine templates to build directory for runtime access

src/Mod/CAM/Machine/models/machine.py:
- Add MachineFactory.list_builtin_templates() for template discovery
- Use FreeCAD install path for built-in templates

src/Mod/CAM/Machine/ui/editor/machine_editor.py:
- Add template dropdown below name field for new machines
- Populate dropdown with user and built-in templates
- Update UI fields when template is selected

Major improvements to the GenericPlasma postprocessor with new dialog-based
mode selection and robust plasma cutting features.

New Features:
- Add pre_processing_dialog() for interactive mode selection
- Replace persistent mark_entry_only property with runtime dialog
- User-friendly choice between Normal Cutting and Mark Entry Points Only
- Enhanced torch control with pierce height movement
- Complete mark_entry_only implementation with proper marking sequence
- Improved error handling and state management

Technical Improvements:
- Add _reset_plasma_state() for clean per-operation tracking
- Fix Z direction detection with proper null checking
- Enhanced height extraction from StartDepth/FinalDepth/ClearanceHeight
- Better error handling with debug logging
- Graceful fallback when GUI not available

Bug Fixes:
- Fix torch control to move to pierce height before ignition
- Fix force_rapid_feeds to remove F parameters (revert from override)
- Fix state tracking initialization and null value handling
- Add proper state reset for each operationUses a dialog to set mark_only.

Co-authored-by: tarman3 <joice501790018@tutamail.com>
2026-03-13 13:18:45 -04:00
sliptonic a78c31be69 Merge pull request #28274 from Connor9220/FixToolbitSubClass
CAM: Fix saving of _shape_type for toolbits
2026-03-13 12:11:19 -05:00
sliptonic c2495411b7 Merge pull request #28173 from tarman3/linking_opti
CAM: Linking - Minor optimization for simple solid
2026-03-13 12:01:50 -05:00
sliptonic 1a8e2fb333 Merge pull request #28172 from tarman3/maneuver_toCommand
CAM: Maneuver - Move instruction_to_command() to class
2026-03-13 12:00:07 -05:00
sliptonic 73c3c78474 Merge pull request #28167 from tarman3/machinestate
CAM: MachineState - Allow process list of commands
2026-03-13 11:57:49 -05:00
sliptonic 509c881ea0 Merge pull request #28140 from tarman3/linking_tolerance
CAM: Linking - Tolerance in get_linking_moves()
2026-03-13 11:55:08 -05:00
David Kaufman d690dcb1d3 Clipper upgrade roadmap 2026-03-13 11:47:33 -04:00
dependabot[bot] 493829b376 Bump actions/download-artifact from 8.0.0 to 8.0.1
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3...3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 8.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-12 21:46:11 -05:00
pre-commit-ci[bot] 0819d776d7 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2026-03-12 20:25:01 +00:00
pjcreath 79aca8950f Sketch: [5/5] Fix up files after splitting SketchObject.cpp
Remove stale includes and make other adjustments for compilation.
2026-03-12 16:17:08 -04:00
pjcreath 8efe9964e7 Sketch: [4/5] Move code from SketchObject.cpp to SketchObjectExternal.cpp.
This is a purely mechanical reorganization with no functional changes.
Use "git blame -C --minimal" to trace line origins prior to this commit.
2026-03-12 16:17:08 -04:00
pjcreath eda87a7efe Sketch: [3/5] Move code from SketchObject.cpp to SketchObjectGeometry.cpp.
This is a purely mechanical reorganization with no functional changes.
Use "git blame -C --minimal" to trace line origins prior to this commit.
2026-03-12 16:17:08 -04:00
pjcreath e1815f10ff Sketch: [2/5] Move code from SketchObject.cpp to SketchObjectConstraints.cpp.
This is a purely mechanical reorganization with no functional changes.
Use "git blame -C --minimal" to trace line origins prior to this commit.
2026-03-12 16:17:08 -04:00
pjcreath 7d39a9d59a Sketch: [1/5] Move code from SketchObject.cpp to SketchObjectOperations.cpp.
This is a purely mechanical reorganization with no functional changes.
Use "git blame -C --minimal" to trace line origins prior to this commit.
2026-03-12 16:17:08 -04:00
wmayer baa47bd606 Sketch: Refactor SketchObject::getPoint
Add the helper class SketchGeometryType and the interface SketchGeometry with the needed sub-classes to
remove the cascaded if-else construct
2026-03-12 16:17:08 -04:00
wmayer 51b37da53e Sketch: Fix crash when moving sketch with hidden constraints
Clicking the eye icon on the constraints panel hides all constraints. This calls SketchObject::setVirtualSpace where the existing Constraint
objects will be replaced. However, the Constraint objects are also stored inside the member 'solvedSketch' but won't be replaced so that the
pointers there will become dangling.

If the user starts to drag the sketch the pointers are still dangling and cause a crash when calling 'solvedSketch.moveGeometries'.

The crash can be reproduced with:
1. Create a sketch
2. Add a single line
3. Set a length constraint
4. Make it a non-driving constraint
5. Hide it with the eye icon or by unticking the check box
6. Move the line

The same crash also occurs when calling the methods setLabelDistance() or setLabelPosition() from Python and then trying to move the sketch.

Solution:

To fix the problem add the lightweight method 'Sketch::updateConstraints' and call it inside SketchObject::setVirtualSpace to quickly update
the pointers after invalidating them.

This fixes issue 19566
2026-03-12 16:17:08 -04:00
André Lopes 8ce3c4a1cc Fix #24079: clarify TechDraw Scale tooltip (#28293) 2026-03-12 18:12:02 +00:00
Roy-043 037ce3bffd BIM: update tooltips in BIM Setup to match current prefs
Related to #25004

Updated the tooltips to point to correct pref pages.

Additionally:
* Minor text tweaks.
* Replaced "Gui::PrefColorButton" with "Gui::ColorButton".
2026-03-12 18:28:48 +01:00
Roy-043 b9306c6f63 BIM: fix BuildingPart color issues including v1.0 regressions (#28001)
* BIM: fix BuildingPart color issues including v1.0 regressions

Fixes #27136.

* [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>
2026-03-12 14:39:24 +00:00
tarman3 7b2b972efa CAM: MachineState - Allow process list of commands 2026-03-12 10:28:31 +02:00
filippor 6d66721582 fix CAM missing python file in cmake 2026-03-11 22:03:23 -04:00
Billy Huddleston 448235cd2b CAM: Fix saving of _shape_type for toolbits
Corrects logic so that the _shape_type is saved properly and not always
defaulted to the primary toolbit type. Ensures subclass/alias
information is preserved when saving toolbits.

src/Mod/CAM/Path/Tool/toolbit/models/base.py:
- Fix fallback logic for _shape_type to correctly save subclass/alias
when present
- Only default to primary type if _shape_type is missing or matches the
main class

src/Mod/CAM/Path/Tool/docobject/ui/docobject.py:
- Improve label formatting by handling underscores, hyphens, and extra
spaces

src/Mod/CAM/Path/Tool/toolbit/ui/typefilter.py:
- Simplify type filter mapping and display logic for toolbit subtypes
2026-03-11 21:58:32 -04:00
Bojan a729bb4bc1 Material: add transaction support to Std_SetMaterial task 2026-03-11 20:00:39 -05:00
Chris Hennes 03fc08d02e Revert "[Weekly Build] Update IfcOpenShell to 0.8.4"
This reverts commit 5e7bbe15e3.
2026-03-11 08:18:44 +01:00
WandererFan e44c1ce75a TechDraw: Allow 3d dimension references to use point objects (#28199)
* [TD]fix 3d point object reference in dimension

* [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>
2026-03-11 06:08:35 +01:00
marioalexis 4083c7c616 Fem: Add name to examples dock widget 2026-03-11 06:05:07 +01:00
PaddleStroke 76a84f63ab Sketcher: Dimension tool: don't update distance type based on position for horizontal/vert 2026-03-11 05:36:10 +01:00
WandererFan 065315d7a4 TechDraw: fix crash in area dim for face with nested voids (#28097) 2026-03-10 22:57:59 -05:00
PaddleStroke 451072f0d7 Sketcher : arc with symmetric + 2 coincidence fix (#28120) 2026-03-10 22:13:02 -05:00
Roy-043 0b232ac1ff Draft: Avoid import of whole Draft module (#25386) 2026-03-10 21:59:36 -05:00
Grzegorz Kwacz 737cab44f2 Gui/View: Move (get|set)Camera to methods (#27801) 2026-03-10 21:57:34 -05:00
Benjamin Nauck 5ae85148cc Merge pull request #22217 from PaddleStroke/sk_texttool
Sketcher: Text tool
2026-03-10 18:07:50 +01:00
tarman3 1182be91bc CAM: Maneuver - Move instruction_to_command() to class 2026-03-10 15:52:35 +02:00
Benjamin Nauck cd5876dc54 Sketcher: Escape text and font path in EditTextDialog
Escape user-provided text and font path strings before inserting them
into the Python command string, preventing breakage or injection from
strings containing quotes or backslashes.
2026-03-10 12:54:45 +01:00
Benjamin Nauck ca4660167e Sketcher: Add .ttc (TrueType Collection) to font file discovery 2026-03-10 12:54:45 +01:00
Benjamin Nauck a0c97a102e Part: Add HarfBuzz text shaping for proper kerning in makeTextWires
Replace the character-by-character positioning loop with HarfBuzz
text shaping. The old code used FT_Get_Kerning which only reads
legacy kern tables. HarfBuzz handles both GPOS kerning and legacy
kern tables, as well as ligatures and complex script shaping.
2026-03-10 12:54:45 +01:00
Roy-043 90c83636cb Draft: update GUI text in Draft_SelectPlane
After #27979, the Draft_SelectPlane code also accepts 1 or 2 vertices. This PR updates the task panel text accordingly.
2026-03-10 10:33:23 +01:00
tarman3 e561950ff8 CAM: Linking - Minor optimization for simple solid 2026-03-10 09:06:14 +02:00
PaddleStroke e7e5e39e7b Sketcher: Change default text to Text 2026-03-10 07:22:26 +01:00
paddle d842e4151c Sketcher: Text: Fixes 2026-03-10 07:22:25 +01:00
paddle 320bd61156 Sketcher: Text tool - review changes 2026-03-10 07:22:25 +01:00
PaddleStroke fed11359d9 Update SketcherToolDefaultWidget.h 2026-03-10 07:22:09 +01:00
paddle fdf0013dcb Sketcher: Text tool 2026-03-10 07:21:04 +01:00
tarman3 bf98221885 CAM: Linking - Tolerance in get_linking_moves() 2026-03-10 06:52:28 +02:00
Bojan d214306d1b PartDesign/Part: prevent chamfer crash on OCC kernel failure 2026-03-10 01:52:57 +01:00
PaddleStroke a0af0d2b85 Link: Fix mirror twice color issue (#28071) 2026-03-09 22:12:34 +01:00
Turan Furkan Topak ee27de857a Contribution Standards: Adding new rules, mostly around AI discussions (#24646) 2026-03-09 15:55:49 -05:00
sliptonic 4afbadec04 Merge pull request #26605 from tarman3/inspect_title
CAM: Inspect and Export - Window title
2026-03-09 15:25:18 -05:00
sliptonic cdd9d685fe CAM: Improvements to machine (#28011)
* CAM:  Improvements to machine

* CAM: SPDX

* lint and translation string problems

* fixing headers and missing toolhead tests

---------

Co-authored-by: tarman3 <joice501790018@tutamail.com>
2026-03-09 14:02:31 -04:00
Krish Sharma a34bad7da4 Add status bar hints for modifier keys in Std_Measure (#26568)
* Add status bar hints for modifier keys in Std_Measure

* Align status bar hints according to design guide

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

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

* Update src/Mod/Measure/Gui/TaskMeasure.cpp

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

* Update src/Mod/Measure/Gui/TaskMeasure.cpp

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

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

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

* Replace 'invert' with 'toggle' to improve readability

* Added missing namespace qualifier

* Fix MSVC list assignment errors with explicit std::list<InputHint>

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

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

* fix InputHint': undeclared identifier

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2026-03-09 18:24:54 +01:00
PaddleStroke e20b42e484 Assembly: fix joint creation not working on draft links (#26085)
* Assembly: add support for draft links

* Update AssemblyObject.cpp

* Update ViewProviderAssembly.cpp

* Update GeoFeature.cpp

* Update JointObject.py

* [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>
2026-03-09 18:15:01 +01:00
PaddleStroke 79923c16f3 Gui: Fix shortcut warning (#28217) 2026-03-09 18:00:22 +01:00
Bojan 004927e16e TechDraw: clear selection after editing Annotation from 2D page Fixes FreeCAD#27983 2026-03-09 17:59:17 +01:00
Yorik van Havre e8d9f30c10 Merge pull request #28020 from Roy-043/BIM-remove-switch-to-beam-creation-based-on-dimensions
BIM: remove switch to profile beam creation based on dimensions
2026-03-09 16:52:18 +00:00
dependabot[bot] f06dfa5af8 Bump github/issue-metrics from 3.25.5 to 4.1.0
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.25.5 to 4.1.0.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/67526e7bd8100b870f10b1c120780a8375777b43...41a7961f701cc64490f32e143af8ef479b93e87d)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 4.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-09 14:22:17 +01:00
Jonas Voigt dc1e96c46a Gui: Add styling to spreadsheet color picker (#28191) 2026-03-09 13:11:44 +00:00
freecad-gh-actions-translation-bot 96afba8351 Update translations from Crowdin 2026-03-09 07:28:51 +01:00
Chris Hennes 72b9a91337 Materials: Correct missing or incorrect licenses and authors
During conversion of some materials from the originals, in some cases authorship
was lost, or licensing mistaken. In addition, during their creation some files
had incorrect licenses applied. Files previously licensed LGPL-2.1.-or-later had
that license restored. Other files were re-licensed by agreement of their
author.

Co-Authored-By: David Carter <dcarter@davidcarter.ca>
2026-03-09 06:02:07 +01:00
WandererFan c468a622e6 TechDraw: Trap attempt to write to held file (#25716) 2026-03-09 04:32:27 +00:00
marioalexis edde9fb18e Fem: Remove transparency from equation icons 2026-03-09 05:15:36 +01:00
Roy-043 5754c66a55 BIM: do not process shapes of BuildingParts for TD BIMViews
Fixes #17661.
Fixes #27396.

In ArchSectionPlane.py the shape of BuildingParts was also processed. This resulted in duplicate geometry as BuildingParts inherit their shape from their (also processed) content.

This PR requires some testing, it should not be backported to v1.1.
2026-03-08 22:11:20 -05:00
Roy-043 146ed0d704 Draft: allow more than 1 character for in-command shortcuts (#26950) 2026-03-08 22:08:57 -05:00
Chris Hennes e807d2d421 Part: Fix dangling pointer in getElementSource() 2026-03-08 22:50:47 +01:00
Parag Debnath 0e83500531 Core: Fix the visibility of bounding boxes (#28123)
Co-authored-by: Parag Debnath <paragforwork@gmail.com>
2026-03-08 22:48:04 +01:00
Chris Hennes 143c1737af Merge pull request #25200 from pieterhijma/doc-formatting
Doc: Improve the formatting of doxygen output
2026-03-08 15:32:15 -05:00
tarman3 f7939beee0 CAM: Linking - Tolerance in get_linking_moves() 2026-03-08 21:30:24 +02:00
marioalexis84 c6aeec9146 Fem: Add method to create custom arrays in pipeline (#26076)
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2026-03-08 19:25:48 +00:00
marioalexis 9e065cdb7f Fem: Add command to clear mesh groups 2026-03-08 13:58:12 -05:00
marioalexis b55dd47120 Spreadsheet: Include missing header <QTextDocument> 2026-03-08 13:42:34 -05:00
Gaurang-2005 11dd9d8870 Fix Collada exporter skipping App::Link geometry (#27974)
* Fix Collada exporter skipping App::Link geometry

Resolve App::Link objects recursively during export so referenced
geometry is included in the .dae output while preserving link placement.

* Arch: Fix Collada export for App::Link objects

The Collada exporter skipped geometry for App::Link instances because
it only handled objects directly present in the document.

This change resolves Link objects using getLinkedObject() and exports
their referenced geometry while applying the placement of the exporting
instance.

The original App::Part expansion behavior is preserved.

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

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

* Arch: fix placement handling for App::Link and primitives in Collada export

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

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

* final change

* [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>
2026-03-08 17:31:54 +00:00
marioalexis 88940fb375 Fem: Fix crash in pipeline 2026-03-08 11:24:52 -05:00
dependabot[bot] aa5feb3df0 CI: Pin actions/github script to 8.1.0 by hash 2026-03-08 11:15:35 -05:00
dependabot[bot] dee9d5a498 Bump step-security/harden-runner from 2.13.3 to 2.14.0
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.13.3 to 2.14.0.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/df199fb7be9f65074067a9eb93f12bb4c5547cf2...20cf305ff2072d973412fa9b1e3a4f227bda3c76)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-08 11:12:32 -05:00
marioalexis 8c18208c97 Fem: Add log verbosity preference to Elmer 2026-03-08 11:09:37 -05:00
Bojan Pejic d68b0c087e Draft: move working plane to vertex when pre-selected (#27979) 2026-03-08 11:53:13 +00:00
Chris 35b77bc069 bim: attempt to fix crash with issue #27984 bim text in td doc (#28135) 2026-03-08 12:30:51 +01:00
tarman3 0702616895 CAM: BoundaryDressup - RetractThreshold 2026-03-08 12:47:43 +02:00
theo-vt f36aeef878 Sketcher.planegcs: don't check for constraint update in solve routine 2026-03-07 17:41:35 -06:00
Syres916 5e7bbe15e3 [Weekly Build] Update IfcOpenShell to 0.8.4 2026-03-07 16:50:58 -06:00
Maik-0000FF 687c75e5bc Gui: Fix Linux SpaceMouse performance: event coalescing, camera batching, per-axis deadzone (#28110)
* Fix Linux SpaceMouse jerkiness: coalesce spnav events and batch camera updates

On Linux, pollSpacenav() posts every spnav motion event individually
(125-250Hz from spacenavd), each triggering a full scene redraw. Combined
with camera->orientation and camera->position each triggering separate
Coin3D notifications, this results in up to 500 redraws/sec.

Fix 1 - Event coalescing (GuiNativeEventLinux.cpp):
The drain loop now keeps only the latest motion state and posts once after
all pending events are consumed. SpaceMouse events are absolute deflection
(current puck position), not deltas, so the latest event always contains
the complete state.

Fix 2 - Batched camera updates (NavigationStyle.cpp):
Wrap camera property changes in enableNotify(false/true) + touch() so
Coin3D fires a single redraw instead of two per event.

Together this reduces redraws from ~500/sec to ~60/sec (display refresh),
eliminating the jerky navigation that Linux users experience with complex
models.

Fixes #25926

* Add per-axis deadzone filtering for Linux SpaceMouse

Each SpaceMouse axis has different sensitivity and noise characteristics.
A single global deadzone is too coarse — rotation axes may need different
thresholds than translation axes.

Read per-axis deadzone values from user.cfg (BaseApp/Spaceball/Motion)
using keys PanLRDeadzone, PanUDDeadzone, ZoomDeadzone, TiltDeadzone,
RollDeadzone, SpinDeadzone. Values default to 0 (no filtering).

Axis values below their individual threshold are zeroed before posting
the motion event, preventing unintended drift from sensor noise while
preserving intentional small movements.

This is the Linux equivalent of deadzone handling that NavLib provides
on Windows/macOS.

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

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

* Use std::array for axisDeadzoneKeys to avoid magic number

Replace C-style array with std::array and use .size() instead of
hardcoded loop bound, as suggested in code review.

* Cache deadzone values with ParameterGrp Observer instead of polling

Replace per-event GetParameterGroupByPath + GetInt calls with a static
DeadzoneCache that loads values once and updates them via
ParameterGrp::ObserverType when user.cfg changes. Also use
static constexpr for the keys array and std::abs for readability.

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

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

* Move DeadzoneCache from static local to member variable

Replace the static local DeadzoneCache in pollSpacenav() with a
std::unique_ptr<DeadzoneCache> member of GuiNativeEvent, initialized
in initSpaceball() after the spnav connection is established.
Forward-declare in the header to keep includes minimal.

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

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

---------

Co-authored-by: Maik-0000FF <Maik-0000FF@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-03-07 22:37:59 +01:00
PaddleStroke 36dd4b983c Sketcher: Dimension tool: Filter coincident points (#27630) 2026-03-07 15:34:56 -06:00
Chris cee71e1fb1 CMake: Add check for Qt/PySide version mismatch (#27156)
* CMake: fixes issue #27065 check for Qt/PySide version mismatches
* lint / format several PySide related CMake files
2026-03-07 15:12:57 -06:00
mosfet80 baed171ec5 PD: Remove unused variable from TaskRevolutionParameters.cpp (#26009) 2026-03-07 14:19:05 -06:00
PeterfoxUwU ecb188fe4c Base: Added Quantities for Optic/Chemical mechanics (#27944)
* Base: Added Quantities for Optic/Chemical mechanics

* [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>
2026-03-07 21:10:40 +01:00
Grzegorz Kwacz 1027be1efa Spreadsheet: Decrease default size (#27152)
* Spreadsheet: dynamic row and coulumn counts

* Spreadsheet: test distant cell

* Spreadsheet: fix removeColumns condition

* Spreadsheet: Fix zoom detachment

* Spreadsheet: Fix SheetModel::containInView

* Spreadsheet: Make sure the number of rows/cols decreases correctly after removal

* Spreadsheet: Code quality fixes

* Spreadsheet: Fix typo

* Spreadsheet: Move sheet->insert/remove outside Qt signals

* Update src/Mod/Spreadsheet/Gui/SheetTableView.cpp

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

* Update src/Mod/Spreadsheet/Gui/SheetModel.h

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

* Spreadsheet: Add comment about nesting beginInsertColumn

* Spreadsheet: Remove c-style Qt header

---------

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2026-03-07 20:59:49 +01:00
Andrea d2b84db105 Sketcher: Cleanup commented-out code
Remove the TestSketcherGui file entirely, it contained only commented
lines. Delete commented out debugging output. Remove other commented-out
code that didn't have any explanation or justification for leaving it
in.
2026-03-07 13:55:52 -06:00
Benjamin Nauck c263d8f51c Merge pull request #18678 from chennes/applicationAddTranslatableExportType 2026-03-07 17:03:09 +01:00
Chris Hennes 0f0d2c849f Points: Add translation tags to export formats 2026-03-07 00:47:05 -06:00
Chris Hennes 025d4a9f5c Part: Add translation tags to export formats 2026-03-07 00:47:05 -06:00
Chris Hennes 8140957413 OpenSCAD: Add translation tags to export formats 2026-03-07 00:47:05 -06:00
Chris Hennes 6ad2206595 Mesh: Add translation tags to export formats 2026-03-07 00:47:05 -06:00
Chris Hennes dff7fc6ca8 Import: Add translation tags to export formats 2026-03-07 00:47:00 -06:00
Chris Hennes 1671ecb902 FEM: Add translation tags to export formats 2026-03-07 00:46:53 -06:00
Chris Hennes 8a17ca36a4 Draft: Add translation tags to export formats 2026-03-07 00:46:53 -06:00
Chris Hennes b8929f279f BIM: Add translation tags to export formats 2026-03-07 00:46:53 -06:00
Chris Hennes 07540ad3ba Gui: Add translation tags to export formats 2026-03-07 00:46:53 -06:00
Chris Hennes c387a4b5c9 App: Create addTranslatableExportType method
This method aims to solve the problem of untranslatable description
strings on file types. Some, but not all, file format description
strings contain translatable elements. For example, some languages
may translate "FEM mesh formats". Many format descriptions include
the words "file," "format," or "mesh" -- these could potentially be
replaced with localized versions.
2026-03-07 00:46:47 -06:00
Chris Hennes 21ef29bb82 Merge pull request #27969 from 3x380V/pd_cleanup
PartDesign: Minor cleanup
2026-03-07 00:27:26 -06:00
Chris Hennes 8cb06956d0 Merge pull request #27759 from dhruvjamwal/main
Fix #27741: Prevent camel case splitting on numbers in Property Editor.
2026-03-07 00:08:47 -06:00
Benjamin Nauck 17651fbfa4 Part: Fix signal handler compatibility with OCCT 8
OCCT 8.0.0 removed the NewInstance/Jump API from signal exception
classes in favor of Standard_ErrorHandler::Abort.
2026-03-06 23:58:26 -06:00
Yurii Sokolovskyi 87651cdd4c Autoconstraints redundancy error message fix
Report view now shows which sketch caused the 'Autoconstraints cause redundancy, Removing them' error
2026-03-06 23:26:26 -06:00
dependabot[bot] d34969f7d6 Bump actions/download-artifact from 7.0.0 to 8.0.0
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7.0.0 to 8.0.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/37930b1c2abaa49bbe596cd826c3c89aef350131...70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 8.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 23:19:22 -06:00
Chris Hennes 60ebafd0b3 Gui: Tweak comment for clarity
Co-authored-by: Pieter Hijma <pieterhijma@users.noreply.github.com>
2026-03-06 22:36:12 -06:00
Chris Hennes 15dd009f13 Tests: Add test for PropertyItem setName() behavior 2026-03-06 22:34:42 -06:00
marioalexis dbb6cbe335 Fem: Add property to set pipeline and filters color if Field is None - fixes #21352 2026-03-06 22:25:42 -06:00
Ladislav Michl 2dcb495a67 TD: Fix warnings 2026-03-06 22:23:46 -06:00
Pieter Hijma a102c8a359 Gui: Prevent unhandled exception adding properties
This commit prevents unhandled exceptions to be thrown in the Add
Property dialog.  When the user provides a valid name, for example 'Abc'
and then an invalid name, for example 'Abc^', an exception is thrown
that is caught by Qt's notify which may lead to a crash.  This is caused
by the fact that the editor is still bound to the old property that has
been removed.  The main idea was to preserve values that were provided
by the user as long as possible, also when a property name changes.
This design goal tried to preserve the user provided value even if the
property name is not valid.  Although the underlying property item is
explicitly unbound in that situation, the editor is not.

The solution is to also explicitly unbind the editor if there is an
editor that can have bindings.  Unbinding an editor does not
automatically hide the f(x) symbol in the editor (leading to errors on
unbound editors), so this commit also adds a bit of logic to hide
the f(x) symbol when an editor is unbound.
2026-03-06 22:12:49 -06:00
Kristian Rekstad 8fda540e1a Idf: improve dox 2026-03-06 20:50:45 -06:00
PaddleStroke bbd1266398 PartDesign: Fix wireframe not working on external link to body 2026-03-06 20:34:17 -06:00
Petter Reinholdtsen 087522528b Base: Corrected delete() call in XMLTools.
The memory is allocated using new() with alignment requirements, and
should be deleted using the same alignment requirement.  See
issue #27781 for the valgrind error.
2026-03-06 19:18:01 -06:00
marioalexis 18cf24e1d9 Fem: Show all solvers in tool bar - fixes #27703 2026-03-06 17:17:25 -06:00
Connor9220 f0a70d5468 Merge pull request #23747 from tarman3/selectside
CAM: Path.Op.Area - Fix offer side
2026-03-06 17:50:15 -05:00
tarman3 26357db694 CAM: Inspect and Export gcode window title 2026-03-06 21:46:58 +02:00
PaddleStroke 83d14b785e Sketcher: Fix crash on external deletion (#27717)
* Sketcher: Fix crash on external deletion

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

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

* Update SketchObject.pyi

* Update SketchObjectPyImp.cpp

* Update ViewProviderSketch.cpp

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

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

* Update SketchObjectPyImp.cpp

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

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

* Sketcher: Fix last external not being removed from ref 27719

* Update SketchObject.cpp

* Update SketchObject.cpp

* Update SketchObject.h

* [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

* rename fixMissingAxisInExternalGeo

* Update SketchObject.cpp

* Update SketchObjectPyImp.cpp

* [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>
2026-03-06 19:19:13 +00:00
PaddleStroke bc0d94d7a7 RTGroup 2: App: add PropertyListsT::removeIf() (#26173)
* App: add PropertyListsT::removeIf()

For convenient list value filtering.
Co-authored-by: Zheng Lei <realthunder.dev@gmail.com>

* Update Property.h

* Update Property.h
2026-03-06 19:15:33 +00:00
Connor9220 840122a358 Merge pull request #26976 from tarman3/points_coincide_list
CAM: Path.Geom.pointsCoincide - allow list and tuple
2026-03-06 12:36:09 -05:00
FilippoR a18f77f3b8 fix CAMTests.TestPathOpUtil.TestPathOpUtil.test46 & test47 (#28038)
* fix CAMTests.TestPathOpUtil.TestPathOpUtil.test46

* fix CAMTests.TestPathOpUtil.TestPathOpUtil.test47

* disable CAMTests.TestTestPost.TestTestPost.test00190
2026-03-06 12:31:05 -05:00
Connor9220 eb522b52dc Merge pull request #26507 from tarman3/save_gcode
CAM: Exporting G-code - Buttons text
2026-03-06 12:13:22 -05:00
tarman3 04e0518051 CAM: LeadInOut - Fix positive overtravel for open profile (#25482)
* CAM: LeadInOut - Replace G01 by G1

* CAM: LeadInOut - Fix positive overtravel for open profile
2026-03-06 12:08:10 -05:00
Connor9220 dac4062d54 Merge pull request #27960 from petterreinholdtsen/cam-fanuc-new-improved
CAM: Improved Fanuc support (header, python warnings).
2026-03-06 11:56:22 -05:00
PaddleStroke 949c5421cf Sketcher: refactor removeAxesAlignment (#27451) 2026-03-06 17:29:52 +01:00
PaddleStroke 912fd47b5f Merge pull request #27531 from PaddleStroke/asm_gotolink
Assembly: Command: Got to linked assembly
2026-03-06 15:50:59 +01:00
kkocdko b098f3ad44 Linux: use exec command in AppRun 2026-03-06 15:45:51 +01:00
PaddleStroke f65dda922f Assembly: Fix JCS position if assembly is transformed (#28089)
* Assembly: Fix JCS position if assembly is transformed

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

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

* redrawJointPlacement & showPreviewJCS Refactor to avoid duplicate code

* Assembly: JointObject: Simplify setJCSPosition

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

* Update JointObject.py

* Update src/Mod/Assembly/JointObject.py

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2026-03-06 09:41:15 +00:00
Petter Reinholdtsen 4c6eed1e63 CAM: Improved Fanuc support (header, python warnings).
Adjusted G code output to include FreeCAD body and job information.
The first comment in the G code is shown on the machine controller,
and should contain useful information for operators to to identify
jobs.  Fetch the body and job label using findParentJob and insert it
into the G code.  For some reason the body and job information is not
available when called from TestFanucPost.py, so handle case where it
is undefined as earlier.  This new use of findParentJob exposes error
in mock code used in code tests.  This is fixed in a different pull
request to make this patch easily backportable to the 1.1 branch.

Fixed issues with Fanuc post processor discovered by lint.  Made sure
global variables used are declared.  This fixes issue updating the
postamble and preamble introduced in
ef794c31bd

Added docstrings, adjusted import statements and wrapped long line to
keep linter happy.

Reformatted code with black for consistent formatting.

Also reverted obsolete setText() workaround from commit
9c78ced00c now
that https://github.com/FreeCAD/FreeCAD/pull/26008 is merged.
2026-03-06 09:09:11 +01:00
Benjamin Nauck 6238fe1081 Merge pull request #26172 from PaddleStroke/patch-985354 2026-03-06 07:10:59 +01:00
sliptonic b20a6acc26 CAM: Consolidates tapping into Drilling as a new strategy. (#27506) 2026-03-05 21:46:32 +01:00
Devanshi Bhatt c6b99363d6 #25004: change the tooltip contents for correct line width location (#28057)
* #25004: change the tooltip contents for correct line width location

* #25004 : Update the tooltip contents for correct line width location
2026-03-05 19:50:22 +00:00
Benjamin Nauck 26435d03fd Merge pull request #27845 from marioalexis84/fem-pipelinepy_time_info 2026-03-05 17:32:45 +01:00
marioalexis 3c56c164ee Fem: Fix start page example 2026-03-05 09:30:04 -06:00
Zheng Lei 6ea74652c9 App: fix PropertyLinkBase::getLinkedObjects() 2026-03-05 08:31:53 +01:00
Parag Debnath 2db12d8a66 added conflict free shortcuts (#28036)
Co-authored-by: Parag Debnath <paragforwork@gmail.com>
2026-03-04 20:57:30 +01:00
Benjamin Nauck 637463ac35 Merge pull request #27746 from furgo16/bim-add-options-task-boxes
BIM: add quick-access options task boxes to all relevant objects
2026-03-03 23:57:35 +01:00
Ladislav Michl e516eae53b Part: Remove deprecated cutFaces 2026-03-03 23:55:29 +01:00
paul e12d8fd01e [ArchWall] Multi-Material width return to Width Property (#27972)
* [ArchWall] Multi-Material width return to Width Property

Fix #27804
- BIM: Wall with MultiMaterial assigned reports wrong Width

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

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

* [ArchWall] Multi-Material width return to Width Property (rev.)

Fix #27804

- BIM: Wall with MultiMaterial assigned reports wrong Width

(rev.
Better algorithm - https://github.com/FreeCAD/FreeCAD/issues/27804#issuecomment-3986056788)

* [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>
2026-03-03 04:53:33 +00:00
Chris Hennes e1644a7310 Merge pull request #27879 from kadet1090/fix-checked-state
Part: Make 3D View properly checkable
2026-03-02 19:22:01 -06:00
marioalexis 3ae8d45506 Fem: Read material info from .frd file 2026-03-02 23:17:45 +01:00
Furgo 2777999d03 BIM: Fix placement jump when uncloning objects (#27597)
* BIM: Fix placement jump when uncloning objects

The Unclone command incorrectly multiplied the parent's placement by the
clone's placement. Since Arch clones store absolute placement (not
relative to the parent), this resulted in a double transform.

This caused baseless walls to jump to a new position upon uncloning.
Standard base-backed walls often masked this bug because their local
placement is usually Identity (0,0,0), but they would also fail if moved
independently of their base.

This fix assigns the clone's current placement directly to the new
object, preserving its position.

Fixes https://github.com/FreeCAD/FreeCAD/issues/26929

* BIM: do placement assignment and recompute only once
2026-03-02 21:58:45 +01:00
Roy-043 64a4cee116 BIM: remove switch to profile beam creation based on dimensions
Fixes #28013.

When creating a structure from a profile the code could ignore `self.bmode` (beam-mode) and create a beam even if the user selected the column option in the task panel.

Rounding errors due to the conversion of numerical values read from the input boxes triggered the bug (89mm -> 3.5" -> 88.89999999999999mm).

But beyond that, it is IMO not correct to disregard user input. If the column option is specified, a column should be created irrespective of the dimensions.
2026-03-02 21:17:56 +01:00
jffmichi fe25d8d0f7 CAM: Fix new CAM simulator on macOS 2026-03-02 11:32:02 -06:00
Florian Foinant-Willig be1ec84709 Sketcher: extend Perpendicular constraint to point point line 2026-03-02 11:30:55 -06:00
Roy-043 ffab288f4e Draft: fix clone diffuse color regression
Fixes #27958.

Delay formatting of clone object to ensure shape availability.
2026-03-02 17:13:13 +00:00
Kacper Donat 2fb271ff28 Gui: Clear cached shape after change to Deviation 2026-03-02 11:12:36 -06:00
marioalexis 617db3a2d4 Fem: Remove deprecated Calculix implementation 2026-03-02 11:09:34 -06:00
nishi 2d6e49cb7f Measurement: label drag when infront of model (#27832)
Co-authored-by: Nishendra Singh <snishendra@student.ethz.ch>
2026-03-02 11:08:54 -06:00
chris jones @ipatch 7d454121de core: fix issue #26478 select all instances even in group with mirror'd objects + unit tests 2026-03-02 11:05:45 -06:00
Grzegorz Kwacz ba404c03ef Spreadsheet: Don't show overlay 2026-03-02 11:04:47 -06:00
sliptonic 8faaa60a0a Merge pull request #27860 from petterreinholdtsen/cam-fanuc-post-crash-fix
CAM: Implemented Fanuc thread tapping and fixed crash in post processor.
2026-03-02 10:59:12 -06:00
chris jones @ipatch 7e7045577f fixes #27968 material: sunset usage of reinterpret_cast 2026-03-02 10:53:08 -06:00
Roy-043 93e537f3b3 BIM: BIM_DrawingView: always create Cut lines view
Fixes #27803.

As suggested by @semhustej: always create the "Cut lines" view, even of there are no solids (yet) that intersect the section plane.
2026-03-02 15:03:28 +00:00
Roy-043 da584c2c84 BIM: fix window hinge direction if edge has no delta Z
Fixes #24903.

If the global Z-coordinates of the endpoints of the hinge edge are equal, compare the local Z-, Y- or X-coordinates instead.
2026-03-02 15:02:22 +00:00
Roy-043 d6479d055d BIM: change TD BIMView linecaps to square 2026-03-02 15:00:54 +00:00
Roy-043 1f848b4d78 BIM: remove superfluous transaction handling when editing IFC props
As pointed out here:
https://github.com/FreeCAD/FreeCAD/pull/26758#issuecomment-3830289031
2026-03-02 14:59:47 +00:00
freecad-gh-actions-translation-bot b78b0a7d60 Update translations from Crowdin 2026-03-02 08:17:01 +01:00
Furgo d321a330ee squash with structure 2026-03-02 07:01:48 +01:00
Furgo 6a4697c74d BIM: _Equipment uses generic options task box on edit 2026-03-02 07:01:48 +01:00
Furgo f329584eb5 BIM: _Structure uses generic options task box on edit 2026-03-02 07:01:48 +01:00
Furgo 6a76d22d76 BIM: _Space uses generic options task box on edit 2026-03-02 07:01:48 +01:00
Furgo 6c85e4a6a2 BIM: Truss uses generic options task box on edit 2026-03-02 07:01:48 +01:00
Furgo d9dc07c890 BIM: _CurtainWall uses generic options task box on edit 2026-03-02 07:01:48 +01:00
Furgo 5199c47c2d BIM: _Panel uses generic options task box on edit 2026-03-02 07:01:48 +01:00
Furgo aade9e1eed BIM: Component provides a reusable options task box 2026-03-02 07:01:39 +01:00
sliptonic 07cc653e66 Merge pull request #27990 from jffmichi/cam_remove_dogbone
CAM: Remove remaining reference to deprecated Dogbone dressup
2026-03-01 21:43:14 -06:00
jffmichi 3a05cb2756 CAM: Remove remaining reference to deprecated Dogbone dressup 2026-03-02 00:19:40 +01:00
Parag Debnath 230b64f2f5 Gui: Add shortcut for save a copy (#27966)
* added shortcut for save copy

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

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

* Ctrl+Alt+Shift+S to save a copy

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

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

---------

Co-authored-by: Parag Debnath <paragforwork@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-03-01 19:42:54 +01:00
Ladislav Michl 1e982cae1f PD: Remove unused remapSupportShape 2026-02-28 23:20:31 +01:00
Ladislav Michl 1ed0e153dc PD: Remove unused parameter from getTopoShapeVerifiedFace 2026-02-28 23:20:17 +01:00
Petter Reinholdtsen 263bfe9948 CAM: Updated Fanuc test and support methods to match working post script.
The thread tapping is corrected and the test code is adjusted to match.
2026-02-28 22:11:15 +01:00
Chris Hennes 61418544a5 Base: Fix typo unexpection->unexpected 2026-02-28 19:57:41 +01:00
Petter Reinholdtsen df1a1ab981 CAM: Implemented Fanuc thread tapping and fixed crash in post processor.
The current post processor fail completely for any operation because the
ShapeName attribute no longer exist.  Changed code to look for attributes
present in FreeCAD 1.1 and master branch.  Rewrote thread tapping code
to work with new tapping support. Switched thread tapping to use feed in
distance per minute (G94) instead of earlier distance per revolution to
avoid switching between mm/min and mm/rev for different operations.

Fixes #27814
2026-02-28 19:38:19 +01:00
Wiljam Holmes 6dfe193428 Sketch: Rename "Attachment Editor" to "Edit Attachment" in context menu 2026-02-28 11:12:01 -06:00
sliptonic ec4dcde60c Merge pull request #27585 from tarman3/holes_auto
CAM: Drillable - Auto-select optimizations
2026-02-28 09:26:33 -06:00
sliptonic df3809e66b Original dogbone dressup has been deprecated for more than 4 years.
Dogbone II is stable.
Removing the deprecated code and tests
2026-02-28 08:47:38 -06:00
FilippoR 8653d94287 App: Add #include <climit> and switch to std::numeric_limits (#27742)
* add missing include to fix compilation on Fedora 44
* change short limit notation
2026-02-28 08:02:23 -06:00
Benjamin Nauck 93f76a8991 Merge pull request #27854 from 3x380V/signal
Part: Use signal handlers based on OCC's implementation
2026-02-28 13:58:19 +01:00
Syres916 34d03ebee6 [Mesh] Stop repeated /home/username/freecad-daily-source/src/Mod/Mesh/App/WildMagic4/Wm4MathMCR.h:30:50: warning: backslash-newline at end of file 2026-02-28 13:45:12 +01:00
wmayer 512cf349f9 Part: Use Part::SignalException in FCBRepAlgoAPI_BooleanOperation::Build
This avoids a hard crash as reported in issue 19403 and still shows the stack trace
2026-02-28 10:11:03 +01:00
wmayer 2eb4dc7c73 Part: Use signal handlers based on OCC's implementation 2026-02-28 10:11:03 +01:00
wmayer be5e657a61 Core: Refactor code to install new and SIGSEGV handlers 2026-02-28 10:11:00 +01:00
PaddleStroke 821596140d Assembly: Show Solver Task only when in Assembly workbench (#27502) 2026-02-28 08:17:43 +01:00
Chris Hennes 0c66d18c21 Wide character support for env vars on windows (#27626)
* Base: Move wstring conversion into Base::Tools

* App: Switch Windows calls from getenv to GetEnvironmentVariableW

* Apply suggestion from @kadet1090

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2026-02-28 04:02:30 +00:00
Krish Sharma 9ac1b960a6 App: Improve clarity of out-of-scope link error message (#26776) 2026-02-27 21:53:57 -06:00
theo-vt 68b3d8d6e4 App.DocumentObserver: set toPython in all constructors 2026-02-27 21:30:00 -06:00
Adam Spontarelli 88787b11d1 Changed Insert Component parts list to be collapsed by default (#27658)
* Changed Insert Component parts list to be collapsed by default

* only collapse large assemblies and only expand first child.

---------

Co-authored-by: Adam Spontarelli <adam@vector-space.org>
2026-02-27 18:43:28 -06:00
wmayer 8caa218950 Sketcher: Handle exception in DrawSketchHandlerOffset::drawOffsetPreview
Do not let exception slip through Qt event handlers as this is known to cause a crash on macOS.

This fixes issue 19587
2026-02-28 01:33:35 +01:00
wmayer 61d17a6122 Part: Fix crash in Revolution::execute()
If a datum line is used as base shape then it causes a segmentation
fault because the shape is infinite that the CAD kernel fails with.

Solution:
Explicitly check beforehand if the shape is infinite or null.

This fixes issue 21429
2026-02-28 00:38:21 +01:00
wmayer d588e89d1d Gui: Do not allow to activate disabled workbench
Change Command::_assureWorkbench to check if the passed workbench is
disabled or not. If yes then do nothing.

This fixes issue 21477.

Hint: The method Application::activateWorkbench() is still able to
activate a disabled workbench
2026-02-27 23:45:37 +01:00
Chris Hennes 92ebf00cc4 Gui: Add attempted lock file name when IPC fails 2026-02-27 23:37:33 +01:00
Chris Hennes b37da5b3cc App: Check for empty path component name before appending 2026-02-27 23:37:03 +01:00
Chris Hennes 3d60531390 TD: Migrate version check to ProgramVersion class
Eliminates a use of deprecated `sscanf`
2026-02-27 23:30:37 +01:00
Chris Hennes ac576bc05e Part: Migrate version check to ProgramVersion class
Also add v1.2 to the recognized program version enumeration.
2026-02-27 23:30:11 +01:00
Chris Hennes 07e94dfaae Part: Eliminate use of sscanf
Replace with safer modern C++ `std::from_chars` (plus some additional
validation for expected inputs). Includes unit tests for new function.
2026-02-27 23:29:31 +01:00
Chris Hennes b4325de672 Core: Allow implicit construction of QString from ASCII 2026-02-27 23:21:17 +01:00
tarman3 b9b8d4023f CAM: Exporting G-code - Buttons text 2026-02-27 22:56:40 +02:00
tarman3 eb0d7ba6a5 CAM: CircularHoleBase.holeDiameter() - Remove useless obj 2026-02-27 20:43:56 +02:00
tarman3 eaf76e4d0a CAM: CircularHoleBase.holeDiameter() - Fix face 2026-02-27 20:41:07 +02:00
sliptonic b8f98e2842 Merge pull request #27040 from Dimitris75/CAM-Waterline-OCL-Adaptive-Add-Optimize-Linear-Paths
CAM: Waterline OCL Adaptive - Adding Optimize Linear Paths - Removing BoundBox ComboBox
2026-02-27 11:57:53 -06:00
sliptonic 2b98e80313 Merge pull request #27091 from Connor9220/ToolbitSubClass
CAM: Refactor shape type handling for aliases and subtypes
2026-02-27 11:53:47 -06:00
Chris Hennes 659780c31b Tests: Add QtTests run to CI 2026-02-27 11:30:55 -06:00
Dhruv Singh Jamwal 7be33f496e Gui: Prevent camel case splitting on numbers/symbols in Property Editor 2026-02-27 11:30:21 -06:00
sliptonic 51cff10dcc Merge pull request #24849 from tarman3/leadinout_arcz
CAM: LeadInOut - ArcZ following profile
2026-02-27 11:28:06 -06:00
sliptonic c9517011d2 Merge pull request #27504 from tarman3/holes_face_multiple_edges
CAM: CircularHoleBase - Fix holePosition() for face with several arcs
2026-02-27 11:25:20 -06:00
sliptonic 7deca678ca Merge pull request #27686 from tarman3/base_addgeometry_apply
CAM: Base Task Panel - Fix Apply after adding geometry
2026-02-27 11:14:21 -06:00
sliptonic 8a011392bc Merge pull request #27178 from davidgilkaufman/fix_big_arcs
[CAM] separate tolerance variable used for arc fitting from tolerance used for section height offsets
2026-02-27 10:43:50 -06:00
Chris Hennes 0872d45827 Merge pull request #27099 from timpieces/expressionparser-improvements
ExpressionParser: Return unique_ptr from public interface (#27098)
2026-02-27 09:51:08 -06:00
dependabot[bot] e292f96feb Bump actions/upload-artifact from 6.0.0 to 7.0.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6.0.0 to 7.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 09:48:11 -06:00
FEA-eng 46dd3badbd Replace "Change Image" option name for clarity (#27913) 2026-02-27 13:46:21 +01:00
Benjamin Nauck 8694ccf754 Merge pull request #27862 from marioalexis84/fem-material_nonlinear
Fem: MaterialMechanicalNonlinear grouped under MaterialSolid
2026-02-26 21:32:02 +01:00
sliptonic 4878248572 Merge pull request #27859 from Doriangaensslen/d_dev
CAM: Move ThreadMilling and Tapping from experimental to standard
2026-02-26 14:08:31 -06:00
Furgo 2ee49e0647 BIM: _Wall options task box gains expressions and units support 2026-02-26 20:20:40 +01:00
Parag Debnath ca575acf1e Renamed '3d View' to 'Pick Position'. 2026-02-26 20:11:34 +01:00
marioalexis 046be9efc5 Fem: Update examples 2026-02-26 15:07:57 -03:00
marioalexis a1acc9cf38 Fem: Improve nonlinear properties 2026-02-26 15:07:57 -03:00
Roy-043 bfb0e203da Revert " Draft: fix ghost preview of Arch_SectionPlane and Draft_WorkingPlane…"
This reverts commit 37600b85a0.
2026-02-26 17:17:44 +01:00
Benjamin Nauck f319a57252 Merge pull request #27835 from 3x380V/fem 2026-02-26 17:09:50 +01:00
wmayer e1b9cbf48a FEM: Fix build warnings 2026-02-26 13:44:40 +01:00
wmayer d60deb6fb6 Fem: Optimize netgen mesh creation
When pressing the Apply button the fem mesh feature is computed but still
marked as touched. When pressing the OK button it will be recomputed even
if nothing has changed. To avoid the superfluous recompute purge the
touched flag when the Apply button is pressed.
2026-02-26 13:34:58 +01:00
tarman3 7cb5c2663d CAM: CircularHoleBase.holePosition() - Remove useless obj 2026-02-26 13:43:39 +02:00
tarman3 5e0695d150 CAM: CircularHoleBase.holePosition() - Fix for face with several arcs 2026-02-26 13:43:39 +02:00
Louis Gombert 0df693e204 Remove extra header define checks (#27851) 2026-02-25 22:46:40 -06:00
dependabot[bot] b6c8e68eda Bump step-security/harden-runner from 2.14.2 to 2.15.0
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.14.2 to 2.15.0.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/5ef0c079ce82195b2a36a210272d6b661572d83e...a90bcbc6539c36a85cdfeb73f7e2f433735f215b)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-25 22:43:52 -06:00
sliptonic a17bb6bf10 Merge pull request #27013 from tarman3/CmdMoveMill
CAM: Path.Geom.CmdMoveMill
2026-02-25 18:31:26 -06:00
Kacper Donat e62d68a49e Gui: Improve visuals of checked toolbar buttons 2026-02-25 21:05:05 +01:00
Kacper Donat 1a8840bff9 Part: Make 3D View properly checkable
This commit fixes the 3D View button in "Location" sections in Part GUI
to stay pressed when it is active.
2026-02-25 21:05:05 +01:00
tarman3 4a773d2f6a CAM: Refactor CmdMoveMill 2026-02-25 20:49:22 +02:00
tarman3 9972df7c1d CAM: Path.Geom.pointsCoincide - allow list and tuple 2026-02-25 20:40:19 +02:00
tarman3 97cf569756 CAM: PathScripts/PathUtils.py - Get CmdMove from Geom 2026-02-25 20:38:49 +02:00
tarman3 6620e149a5 CAM: Path.Geom.CmdMoveMill 2026-02-25 20:38:41 +02:00
sliptonic f2063c055f Cam constants (#27861)
* CAM: Create a more accessible CONSTANTS file

* Changes to make the tests less noisy

* Update src/Mod/CAM/CONSTANTS.py

Co-authored-by: tarman3 <joice501790018@tutamail.com>

* missing cmake change

* maintainer feedback

---------

Co-authored-by: tarman3 <joice501790018@tutamail.com>
2026-02-25 19:11:33 +01:00
Chris Hennes ad50c6eb64 Merge pull request #27428 from kadet1090/add-style-parameter-tuples
Gui: Add Tuple type to StyleParameters
2026-02-25 08:28:50 -06:00
tarman3 657a34b48a CAM: Drillable - allowPartial for faces 2026-02-25 08:07:07 +02:00
Dorian Gaensslen d5397516b5 move thread milling out of experimental too 2026-02-24 21:38:31 +01:00
Dorian Gaensslen 4895bea741 Forum Thread 49591, move from Experimental to standard 2026-02-24 21:11:44 +01:00
tarman3 9abcdad176 CAM: Drillable - Auto-select faces with number edges more than 3 2026-02-24 21:22:04 +02:00
tarman3 e643328599 CAM: Drillable - Optimizations for Auto-select 2026-02-24 21:20:54 +02:00
marioalexis 9c9bf18478 Fem: Set pipeline time info for new CalculiX 2026-02-24 16:15:57 -03:00
marioalexis c1ca8a79c9 Fem: Add method to set pipeline time info data 2026-02-24 16:00:51 -03:00
theo-vt 34ae16cd01 Sketcher: fix evaluation of driven diameter constraint 2026-02-24 19:54:53 +01:00
Ladislav Michl 6d9201c828 PD: Avoid QString to std::string back and forth conversion
Fixes Qt5 build.
2026-02-24 11:30:24 -06:00
sliptonic ab2f655245 Merge pull request #26131 from tarman3/axismap
CAM: Axismap Dressup - Invert rotary axis
2026-02-24 09:34:17 -06:00
Roy-043 650b15dd76 Draft: fix anno style assignment regression
Fixes #27822.

Break statement had wrong indentation.
2026-02-24 13:03:25 +01:00
Syres916 ab5ef99344 [MeshPart] Fix string encoding document, object and subobject names 2026-02-24 00:28:35 -06:00
tarman3 0a4f6ec7c4 CAM: Drillable - Remove raisedFeature() 2026-02-24 06:20:11 +02:00
tarman3 2e7261eec3 CAM: Drillable - Fix linter errors 2026-02-24 06:20:11 +02:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ e89d849bb7 [ Sketcher ]: Fix Windows Include (#27829) 2026-02-23 21:35:35 -06:00
PaddleStroke 3c860396d8 TechDraw: Annotation tool rework (#24624) 2026-02-24 00:59:15 +00:00
Parag Debnath acb14726b6 Part: add missing tooltips to Location task panel (fixes #27736) 2026-02-23 21:41:16 +01:00
Louis Gombert 0b44a3f6c8 Sketcher: Optimize eliminateNonZerosOverPivotInUpperTriangularMatrix for sparse matrices
Matrix processing function eliminateNonZerosOverPivotInUpperTriangularMatrix tried to eliminate ALL non zero values in the upper triangle, even values under a small epsilon. This makes the routine take much more time than it should be. Not considering small values significantly speeds it up, ultimately increasing sketch constraint solving performance.
2026-02-23 18:30:54 +01:00
tarman3 26a1e452c0 CAM: Profile - Fix 2 equal length edges 2026-02-23 11:30:01 -06:00
PaddleStroke 4deb889057 Assembly: Fix mirrored links not working. (#26090) 2026-02-23 11:29:27 -06:00
xtemp09 59370eeb23 [GUI] Prevent double click event on visibility icon (#26043) 2026-02-23 11:26:15 -06:00
theo-vt 92894ea3a8 Sketcher: Evaluate driven constraints rather than solving them (#26632) 2026-02-23 11:14:22 -06:00
Loke Strøm f153960396 Measurement: Added disc/circular faces measurements radius, diameter and area. (#27415)
* Added disc measurements radius, diameter and area.

* [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>
2026-02-23 18:04:01 +01:00
Paul Ebbers e591fe0901 GUI: Add wrap-around to search in parameters (#24772) 2026-02-23 11:02:55 -06:00
sliptonic 88e7c60414 Merge pull request #27788 from petterreinholdtsen/cam-fanuc-fix-drilling
CAM: Adjusted fanuc post processor to always use required drill parameters.
2026-02-23 10:54:41 -06:00
Yash Suthar 1c0ac9a269 Measure: fix measurements are saved if exit tool by opening a sketch
Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2026-02-23 10:47:21 -06:00
PaddleStroke 194ec0820c PartDesign: UpToFace to plane in LCS (#27637)
* PartDesign: UpToFace to plane in LCS

* Update TaskSketchBasedParameters.cpp
2026-02-23 10:46:05 -06:00
tarman3 ab1b3246d4 CAM: AxisMap Dressup - Add 'Invert' to Task panel 2026-02-23 18:42:48 +02:00
tarman3 27b74f3ba3 CAM: AxisMap Dressup - Deflection 2026-02-23 18:42:47 +02:00
tarman3 1396309093 CAM: AxisMap Dressup - Invert axis 2026-02-23 18:42:42 +02:00
Kacper Donat cd19a3cee5 Merge pull request #27127 from alfrix/fix_tapered
PD: hole fix tapered threads not cutting properly
2026-02-23 17:42:24 +01:00
Benjamin Nauck 7923614124 Merge pull request #27367 from 3x380V/app
App: Random fixes 3
2026-02-23 14:09:23 +01:00
captain0xff f238a5f4e5 CAM: fix the transform tool 2026-02-23 11:07:37 +01:00
wmayer 26c2d7a77c App: Fix linter warnings 2026-02-23 10:12:38 +01:00
wmayer 05ef4153f5 App: Add overloaded method Application::closeDocument 2026-02-23 10:12:38 +01:00
wmayer 7a392c4d99 App: Add overloaded method Document::removeObject 2026-02-23 10:12:38 +01:00
wmayer 0eb01c636c App: Fix PropertyFileIncluded::SaveDocFile
Before trying to access the filename check whether it isn't set.
In this case print a warning and return.
2026-02-23 10:12:38 +01:00
wmayer af5c40d8e8 App: Fix some linter warnings 2026-02-23 10:12:38 +01:00
wmayer e4b6e5ab43 App: Add convenience methods to DocumentT and DocumentObjectT 2026-02-23 10:12:38 +01:00
wmayer 322da60cb2 Fix macro Q_DISABLE_COPY_MOVE 2026-02-23 10:12:38 +01:00
Furgo 99d142af38 BIM: rename obsolete Mesh property to HiRes (#27783)
* BIM: rename obsolete Mesh property to HiRes

* BIM: remove unused createMeshView function

* BIM: remove all remaining references of Mesh
2026-02-23 08:09:40 +01:00
freecad-gh-actions-translation-bot 23df715e24 Update translations from Crowdin 2026-02-22 22:04:19 -06:00
marioalexis 159059fc7d Fem: Fix import vtk Python module 2026-02-22 21:51:32 -06:00
marioalexis d4c28786df Fem: Add displace mesh option to CalculiX 2026-02-22 16:29:45 -06:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ ca9e1ecdf3 All: Header Guards ➞ Pragma Once (#27154) 2026-02-22 16:28:20 -06:00
Max Wilfinger 3a241c5515 Merge pull request #27775 from marioalexis84/fem-elmer_text_output
Fem: Load Elmer text output
2026-02-22 21:30:32 +01:00
tarman3 144f1843fa CAM: Axismap Dressup - Refactoring 2026-02-22 21:36:06 +02:00
tarman3 92a23ca21b CAM: Axismap Dressup - Remove _linear2angular() 2026-02-22 21:36:06 +02:00
tarman3 a57ea57dba CAM: AxisMap Dressup - Remove _stripArcs() 2026-02-22 21:36:06 +02:00
tarman3 0fce2611ad CAM: Base Task Panel - Fix Apply after adding geometry 2026-02-22 16:38:20 +02:00
Morten Vajhøj cc626f88b1 Measurement: Moved buttons to top (#27774)
* Moved button position

* Remove command

Remove setting button position in TaskMeasure constructor.
2026-02-22 12:01:16 +01:00
Petter Reinholdtsen 954a1239f3 Adjusted fanuc post processor to always use required drill parameters.
At least for G73, the Z, Q and R parameters seem to be required.
Assuming drill related parameters are required for all drill
operations to err on the safe side.

Fixes #27413
2026-02-22 09:56:33 +01:00
marioalexis 1e51d10de8 Fem: Enable keep results on rerun option for new CalculiX 2026-02-21 18:40:13 -03:00
marioalexis e116b5ae34 Fem: Load Elmer solver text output 2026-02-21 18:40:06 -03:00
Max Wilfinger 7001255e90 Merge pull request #27749 from marioalexis84/fem-elmer_examples_run
Fem: Run Elmer examples - fixes #27547
2026-02-21 22:04:22 +01:00
Furgo b36991b239 BIM: initial implementation of Sliding Door preset (#27375)
* BIM: initial implementation of sliding door preset

* BIM: fix sliding door context menus

* BIM: limit travel distance

* BIM: increase preset indexes for icons

* BIM: update edit task panel to adapt to sliding doors

* BIM: make rotation/translation data exclusive or

* BIM: remove code duplication for Sliding and -Sliding doors

* BIM: refine travel distance clamping to expose handle

* BIM: make sliding direction independent of geometry direction

* BIM: remove non-visible 2D symbol for now

* BIM: make door leaf wire comment more precise

* BIM: use local coordinates when calculating the start/end points for the sliding track
2026-02-21 19:10:46 +00:00
Max Wilfinger d3496b0458 Merge pull request #27616 from WandererFan/nearestFractionFillTemplateFields
TechDraw: Fix fillTemplateFields returns unusual fractional scale
2026-02-21 16:01:46 +01:00
Max Wilfinger 23f046075a Merge pull request #27577 from pieterhijma/fix-fem-analysis-toggle 2026-02-21 13:54:04 +01:00
Chris Hennes 359e1033ec Addon Manager: Update to 2026-02-19 2026-02-21 13:49:47 +01:00
tarman3 c9518817c6 CAM: Path.Op.Area - Offer side 2026-02-21 08:45:24 +02:00
dependabot[bot] 2fda119f74 Bump korthout/backport-action from 3.4.1 to 4.1.0
Bumps [korthout/backport-action](https://github.com/korthout/backport-action) from 3.4.1 to 4.1.0.
- [Release notes](https://github.com/korthout/backport-action/releases)
- [Commits](https://github.com/korthout/backport-action/compare/d07416681cab29bf2661702f925f020aaa962997...01619ebc9a6e3f6820274221b9956b3e7365000a)

---
updated-dependencies:
- dependency-name: korthout/backport-action
  dependency-version: 4.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-20 20:20:14 -06:00
chris jones @ipatch 1d6b2a4cca core: git: alphabetize entries in .gitignore and add entry for .clangd 2026-02-21 01:05:06 +01:00
Billy Huddleston 69b1b19024 CAM: Refactor shape type handling for aliases and subtypes
This PR intruduces a way to dynamicly alias toolbits and adds subtype
for toolbits. Prior to this change, aliases were hardcoded in multiple
locations, making it difficult to maintain and extend. Now, aliases
and the newly subtypes are defined in a single JSON file, which is
loaded at runtime. This allows for easier management and addition of new
aliases or subtypes without modifying the codebase.

Updated the shape system to use a dict format for aliases and subtypes,
improved label formatting, and fixed normalization logic for toolbit
types. Enhanced dropdown display and editor logic to properly handle
subtypes and aliases, including special cases for consecutive capitals.

Users can add shape_aliases.json to the toolbit Shape dirctory allowing
theme to add/remove entries.  Adding a "!" in front of a alias or a
subtime removes it from the list.

This PR also introduces the ability for  the user to choose tools from
a libary or all tools when adding tools via the Job panel.

src/Mod/CAM/Path/Tool/docobject/ui/docobject.py:
- Added keep_case and preserve_consecutive_caps options to
_get_label_text for improved label formatting

src/Mod/CAM/Path/Tool/shape/__init__.py:
- Refactored alias/subtype loading to support new dict format
- Applied aliases and subtypes to shape classes

src/Mod/CAM/Path/Tool/shape/models/base.py:
- Added subtypes attribute to ToolBitShape
- Updated class lookup to support subtypes

src/Mod/CAM/Path/Tool/toolbit/models/base.py:
- Improved normalization logic for aliases and subtypes in
ToolBit.from_dict

src/Mod/CAM/Path/Tool/toolbit/ui/editor.py:
- Updated editor logic to use subtypes and aliases for dropdowns
- Improved read-only and editable state handling

src/Mod/CAM/Path/Tool/toolbit/ui/typefilter.py:
- Used _get_label_text for dropdown filter display with improved
formatting

src/Mod/CAM/Tools/Shape/shape_aliases.json:
- Converted to new dict format with separate aliases and subtypes
2026-02-20 18:48:46 -05:00
sliptonic e3857b11a1 Merge pull request #26818 from tarman3/engrave_fix_taskpanel
CAM: Engrave - Fix regression in Task panel after #22304
2026-02-20 12:02:57 -06:00
sliptonic 6a4b6af094 Merge pull request #27389 from tarman3/path_length
CAM: Fix calculation arc move length
2026-02-20 12:00:47 -06:00
sliptonic 088b384216 Merge pull request #27704 from tarman3/leadinout_g00
CAM: LeadInOut - Replace G00 and G01 by G0 and G1
2026-02-20 11:57:10 -06:00
sliptonic 3f83c820d5 Merge pull request #24958 from tarman3/startPoint
CAM: Profile - Start point in the middle of longthest edge
2026-02-20 11:05:53 -06:00
marioalexis 49652e3c60 Fem: Update and clean up examples and test 2026-02-20 13:01:07 -03:00
marioalexis f8e5a92b98 Fem: Add base class for solver and mesher tools 2026-02-20 10:43:49 -03:00
marioalexis 6f8e9f1a9e Fem: Add Tool property to solvers and meshers 2026-02-20 10:43:49 -03:00
chris jones @ipatch b026958f80 part: fixes #27592 add tooltips for part primitives 2026-02-20 10:14:16 +01:00
marcuspollio d90b6ebd0d Gui: Add line selection to TextEditor 2026-02-19 22:24:40 -06:00
dependabot[bot] 0327534ffe Bump actions/upload-artifact from 5.0.0 to 6.0.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5.0.0 to 6.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-19 16:20:29 -06:00
dependabot[bot] b4e690d9cb Bump actions/download-artifact from 6.0.0 to 7.0.0
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6.0.0 to 7.0.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/018cc2cf5baa6db3ef3c5f8a56943fffe632ef53...37930b1c2abaa49bbe596cd826c3c89aef350131)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-19 16:20:17 -06:00
Pieter Hijma 94c722d285 Fem: Improve visibility toggling Result and Solver 2026-02-19 16:28:00 +01:00
Roy-043 ddb54cce65 BIM: workaround for WP switch crash (issue #26539) (#27373) 2026-02-19 09:26:35 -06:00
Pieter Hijma 0339458869 Core: Disable toggling visibility text document 2026-02-19 16:22:55 +01:00
Furgo 85e0038515 BIM: Set default value of 'MoveWithHost' property to True (#27685) 2026-02-19 14:39:44 +01:00
Yash Suthar f67088a970 Measure: Fix crash while dragging label of unsaved measurment
Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2026-02-19 07:36:43 +01:00
Nathan Schulte 99016e37ed Gui: Add startup log when missing SVG support (#27694) 2026-02-18 18:00:14 -06:00
PaddleStroke be6af47f29 Sketcher: Offset: add checkbox tooltips (#26114) 2026-02-18 21:02:54 +00:00
tarman3 c29868cd48 CAM: LeadInOut - Replace G00(1,2,3) by G0(1,2,3) 2026-02-18 20:43:44 +02:00
dependabot[bot] 45f65f643d Bump actions/stale from 10.1.0 to 10.2.0
Bumps [actions/stale](https://github.com/actions/stale) from 10.1.0 to 10.2.0.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/5f858e3efba33a5ca4407a664cc011ad407f2008...b5d41d4e1d5dceea10e7104786b73624c18a190f)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: 10.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-18 13:41:16 +01:00
paul aa4a71b55b [ArchWall] Fix Regression: sortSketchWidth only in addon (#27676)
* [ArchWall] Fix Regression: sortSketchWidth only in addon

Regression was introduced when get_width() method uses ArchSketchObject.sortSketchWidth() function in below lines.

https://github.com/FreeCAD/FreeCAD/blob/468269b9a6ea58cd8b0f9d8579b711c530db83b2/src/Mod/BIM/ArchWall.py#L1668-L1673
        if not lwidths:
            if obj.OverrideWidth:
                if obj.Base and obj.Base.isDerivedFrom("Sketcher::SketchObject"):
                    lwidths = ArchSketchObject.sortSketchWidth(
                        obj.Base, obj.OverrideWidth, obj.ArchSketchEdges
                    )

ArchSketchObject.sortSketchWidth() function is not in the FC core ArchSketchObject.py module and this results in error.  This function would only exist when the external add-on is present and loaded.

Previously, a try/exception test was used; now hasattr() is used in this fix to test the presence of the required function before it is used.

* [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>
2026-02-18 11:49:33 +01:00
Yash Suthar 2d3b0a2ded Measure: ix angle measurement for face and edge selection
Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2026-02-18 09:21:17 +01:00
Louis Gombert 3bad5dabde Add missing NOLINTEND clang-tidy comment 2026-02-17 15:26:14 -06:00
PaddleStroke bd07c8a214 Sketcher: OVP Fix tab not working when mouse move (#27638)
* Sketcher: OVP Fix tab not working when mouse move

* [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>
2026-02-17 22:02:36 +01:00
Benjamin Nauck 99f4776fda Merge pull request #27381 from furgo16/bim-window-task-panel
BIM: add window options task box
2026-02-17 18:52:33 +01:00
Furgo c788a88d6a BIM: simplify value assignment for quantity spinboxes
Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2026-02-17 17:19:55 +01:00
Furgo 6f0b1fca3d BIM: use the correct widget for percentages 2026-02-17 17:19:55 +01:00
Furgo 9fad0ed223 BIM: add window options task box 2026-02-17 17:19:55 +01:00
dependabot[bot] fca58d99ed Bump actions/cache from 4.3.0 to 5.0.3
Bumps [actions/cache](https://github.com/actions/cache) from 4.3.0 to 5.0.3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/0057852bfaa89a56745cba8c7296529d2fc39830...cdf6c1fa76f9f475f3d7449005a359c84ca0f306)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 5.0.3
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-17 09:08:42 -06:00
bdieterm 468269b9a6 TemplatePyMod: fix DocumentObject for newer FreeCAD versions (#27662)
* TemplatePyMod: fix DocumentObject for newer FreeCAD versions

original bug report:
https://forum.freecad.org/viewtopic.php?p=873546

* TemplatePyMod: fix FeaturePython example for newer FreeCAD versions
2026-02-17 10:07:58 +01:00
Louis Gombert 289411f51c Move costly boost includes out of core headers
Use pimpl or move definitions to .cpp files in order to avoid including huge Boost headers in core FreeCAD headers. Due to boost inclusions in a few core headers, boost graph utilities, multi index and predicates headers were included in in a large portion of translation units, without them being actually required. This helps reduce build time of the project.
2026-02-16 21:58:36 -06:00
Chris Hennes f83aaf0e59 Merge pull request #25538 from marioalexis84/fem-clean_dlg_settings
Fem: Remove unnecessary code
2026-02-16 11:14:31 -06:00
xtemp09 f1d79d9ab4 [GUI] Make precision of QuantitySpinBox accessible from Python 2026-02-16 11:13:52 -06:00
marbocub bc3c0dc19a Sketcher: Add symmetric constraint option (an element + a symmetry line) (#25525) 2026-02-16 11:05:56 -06:00
Steven James 8567dce28a FeaturePython objects include the Python class's __repr__ it their __repr__ (#24462) 2026-02-16 10:57:14 -06:00
Chris Hennes 72a024aaeb Merge pull request #27587 from WandererFan/BrokenViewRemoveFCBRepAlgoAPI_Cut2
TechDraw: FCBRepAlgoAPI_Cut returns null shape for BrokenView break
2026-02-16 10:51:06 -06:00
xtemp09 e0cd49e670 [Spreadsheet] Syncronize scrollbars in ZoomableView
Closes #27165.
2026-02-16 10:38:56 -06:00
Chris 17d5bca2ec part: fixes #27365 mirror place copy at correct location (#27370) 2026-02-16 10:32:08 -06:00
WandererFan 82ba9ec9d8 fix spelling mistake
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2026-02-16 09:24:47 -05:00
Furgo d05db60465 BIM: prevent child objects from moving during Arch Wall debasing (#27290)
* BIM: regression test for child object stability during wall debasing

Introduces test_debase_wall_stationary_children to verify that objects
attached to a wall (via Additions or Hosts) retain their global position
when the wall's base is removed and its placement is recalculated.

* BIM: Fix wall debasing to maintain stationary child element positions

Corrects the placement propagation that occurred when Arch.debaseWall()
recalculated the Wall's Placement, causing connected children (Windows,
Additions) to shift their global coordinates.

The fix pins children by capturing their current global placements before
the wall's placement is updated, and immediately restoring those placements
after the wall's transformation is complete.

Fixes: https://github.com/FreeCAD/FreeCAD/issues/27267

* Avoid confusing comment about wall placement in TestArchWall.py

---------

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2026-02-16 14:14:34 +00:00
PaddleStroke bb5afb911a Sketcher: Fix loss of expression on trim (#27505) 2026-02-15 20:41:13 -06:00
freecad-gh-actions-translation-bot ec9ead0db9 Update translations from Crowdin 2026-02-15 19:41:17 -06:00
PaddleStroke 94a4017432 Assembly: Bom: fix non-grouping regression 2026-02-15 19:03:06 -06:00
Louis Gombert 5f89fd4e98 Replace deprecated QImage::mirrored by QImage::flipped
QImage::mirrored was deprecated and will be deleted by Qt6.13
2026-02-15 18:59:37 -06:00
Grzegorz Kwacz 7b4770c3f2 Remove Navigation from context menu 2026-02-15 18:57:54 -06:00
Chris Hennes f991407900 PD: Return inversion status by reference (#27435)
* PD: Return inversion status by reference

* Update FeatureExtrude.cpp

Co-authored-by: PaddleStroke <pierrelouis.boyer@gmail.com>

---------

Co-authored-by: PaddleStroke <pierrelouis.boyer@gmail.com>
2026-02-16 01:01:37 +01:00
PaddleStroke 47855a018b Assembly: Fix nested assembly stuck isolate bug 2026-02-15 17:50:13 -06:00
wandererfan f60f3d7cc5 [TD]use nearestFraction to get scale 2026-02-15 18:33:09 -05:00
wandererfan bef9d03312 [TD]expose nearestFraction to python 2026-02-15 18:32:06 -05:00
Roy-043 37600b85a0 Draft: fix ghost preview of Arch_SectionPlane and Draft_WorkingPlaneProxy (#27605) 2026-02-15 17:06:44 -06:00
bdieterm ce38741a52 Core: improve Python docstring for Document.addObject 2026-02-15 17:04:19 -06:00
Roy-043 62700a5f12 TemplatePyMod: fix regression due to locked=True mod
Fix regression caused by:
https://github.com/FreeCAD/FreeCAD/commit/a7331cbb43876b14e5e84d1fde1b673e8c381bb7
2026-02-15 12:48:53 -06:00
Furgo 562cac277c BIM: fix coordinate normalization and area calculation for generic ArchComponents (#27322)
* BIM: extend ArchComponent test suite

Adds several unit tests to TestArchComponent.py to validate the
coordinate system logic and CSG behavior of generic Arch Components.

Included tests cover:
- Double-transformation/displacement bugs when using moved base objects.
- Correct alignment of CSG additions/subtractions in world space.
- Consistency of Vertical and Horizontal area calculations for
  rotated components.
- Automatic geometry spreading (arraying) via the Axis property.
- Cleanup behavior ensuring the shape is cleared when the Base
  link is removed.

* BIM: fix double displacement bug and area calculation in ArchComponent

Rewrites ArchComponent.Component.execute to resolve placement
conflicts between the Document Object and its internal TopoShape.

Changes:
- Reset base_shape.Placement to Identity immediately after copying
  from the source. This strips inherited placements from the Base
  object, ensuring the geometry is local before processing.
- Pass the object's placement to processSubShapes. This allows
  additions and subtractions to be correctly localized to the
  component's local origin.
- Replaces direct Shape assignment with self.applyShape(). This fixes
  area calculations by ensuring the AreaCalculator receives the
  correct placement context, and enables automatic geometry
  spreading via the Axis property.

Fixes: https://github.com/FreeCAD/FreeCAD/issues/24580

* BIM: Refine base validation in ArchComponent to prevent stale shapes

Updates the validation logic in ArchComponent.execute() to correctly
handle the removal of a base object.

Changes:
- The check on self.ensureBase(obj) now explicitly looks for
  False. Because ensureBase returns None when no base is present,
  the previous logic would return early and leave the old shape
  behind.
- This change allows the method to fall through to the shape-clearing
  logic, ensuring that unlinking a base object correctly removes its
  geometry from the 3D view.
- Added a TODO note to ensureBase() regarding its undocumented
  triple-state return (True, False, None) for future cleanup.
2026-02-15 17:35:26 +01:00
Kacper Donat fae6cda1d7 Merge pull request #26938 from chennes/macroPathToDefault
Gui: Don't record macro path if default
2026-02-14 20:24:31 +01:00
Chris Hennes 45598fa319 Merge pull request #27552 from hyarion/fix-schema-issues
Base: Fix schema issues
2026-02-14 12:17:51 -06:00
Loke Strøm cbdb615141 Measurement: Fix: Implicit C-string to QString conversions causing build failure (#27580)
* Measurement: Fix: missing tr() wrapping causing build failure

* Swapped tr() with QLatin1String()

* [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>
2026-02-14 09:49:34 +01:00
Chris Hennes 3fecf957cb Points: Switch to modern libE57 types 2026-02-13 23:33:24 +01:00
Chris Hennes 0cacc9bd34 Merge pull request #27363 from 3x380V/import
Import fixes
2026-02-13 15:43:45 -06:00
theo-vt 9cbef0c5ce Sketcher.scale: scale constraint with the right index (#27188) 2026-02-13 15:34:46 -06:00
chris jones @ipatch 4938a6f75b material: fixes #25817 prevent unecessary save over dialogue 2026-02-13 15:32:46 -06:00
PaddleStroke 885b8cf1de Sketcher : SketchObject::getHigherElements fix (#27560) 2026-02-13 15:32:26 -06:00
Pieter Hijma 1bfaa81d77 FEM: Reenable toggling visibility
This reenables visibility toggling for Analysis and Solver objects.
2026-02-13 22:16:03 +01:00
Pieter Hijma 7586620d41 Revert [Core] Remove various DisplayModes from FEM
This reverts commit 5915575f19.
2026-02-13 21:54:02 +01:00
Loke Strøm 5d81f8ac16 Sketcher: Fix: Arc of ellipse when first and second X coordinates are the same (#27327) 2026-02-13 11:57:27 -06:00
Syres916 ba030237b7 [Gui] Ensure Read Only Booleans in PropertyEditor are shown using Disabled Text Color (#27429)
* Ensure read only Booleans are shown using Disabled Text color
* Make the disabled text color a more significant contrast to enabled
* Ensure correct contrasting color for Axis letters versus background color for both Light and Dark themes
2026-02-13 11:56:20 -06:00
Frank David Martínez M f1366e8a75 Base: Remove assertion on isForceXML() (#27491)
This fixes a difference between Main code and LS3 Code ported during TNP big merge. The Issue generates a crash if FreeCAD is compiled in Debug Mode: #27489.
2026-02-13 11:51:52 -06:00
Chris e595cc49f2 FEM: Update netgenplugin src files to fix builds with netgen >= 6.2.2601 (#27508) 2026-02-13 11:50:04 -06:00
chris jones @ipatch 9289e27230 gui: preferences fixes #27379 2026-02-13 11:48:48 -06:00
Roy-043 a8757f7947 Draft: fix depency of patharray normal on view direction
Change normal calculation to use get_shape_normal
2026-02-13 11:47:44 -06:00
Chris Hennes 9e042ff480 PD: Improve error handling for RevolMethod::ToFirst 2026-02-13 17:48:13 +01:00
wandererfan 6d73f9173c [TD]use BRepAlgoAPI_Cut instead of FCBRepAlgoAPI_Cut 2026-02-13 10:29:46 -05:00
wandererfan 36ddfdc7b9 [TD]fix crash on failed cut
- wrong result and warning on first time through.  Fixes itself after
  next execute().
- https://github.com/FreeCAD/FreeCAD/issues/27414
2026-02-13 10:29:46 -05:00
Paweł Biegun 1752fd59f9 Measurement: Add on the fly measurement unit change (#27462)
Enables the user to change the unit of the measurement temporarily to convert to a different unit. This is useful when the user sometimes needs to get a dimension of the model in a different unit than the one it was designed in.
2026-02-12 14:35:54 +00:00
Benjamin Nauck d94269f85f Base: Add sweep round-trip tests for all unit schemas
Sweep tests parse a string and translate it back, verifying identical
output. Values cover every threshold band at 10x increments plus a
scientific-notation value in each default band. Tests all 10 schemas.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 14:26:46 +01:00
Benjamin Nauck bb977afe55 Base: Fix floating point issue in schema threshold comparison
When a parsed value lands exactly at a threshold boundary (e.g. "1 S/m"
= 1e-9 at threshold 1e-9), floating point rounding could cause the
wrong unit to be selected. Shrink thresholds by a relative epsilon so
boundary values fall through to the next (more natural) unit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 14:26:45 +01:00
Benjamin Nauck 3f17f2f01f Base: Fix schema translation data
Corrects 12 bugs across Internal and MKS schemas where factors were
wrong, units were assigned to the wrong threshold positions, or
thresholds didn't align with natural unit boundaries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 14:26:45 +01:00
Roy-043 7912f84136 BIM+Draft: fix Placement task panel issue for Arch_SectionPlane and Draft_WorkingPlaneProxy (#27101)
* BIM+Draft: fix Placement Task Panel issue for Arch_SectionPlane and Draft_WorkingPlaneProxy

* BIM+Draft: fix Placement Task Panel issue for Arch_SectionPlane and Draft_WorkingPlaneProxy
2026-02-12 12:39:46 +00:00
Roy-043 db5fff6ccc BIM: fix BuildingPart issues with Arch_Reference 2026-02-12 11:35:55 +00:00
PaddleStroke 6abb2b447f Assembly: Isolate grounded objects on selection (#24952)
* Assembly: Isolate grounded objects on selection

* [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

* Update ViewProviderAssembly.cpp

* Update ViewProviderAssembly.cpp

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2026-02-12 09:43:46 +01:00
marioalexis ba174bdad5 Fem: Remove unnecessary code from Z88 preference page 2026-02-12 09:38:33 +01:00
marioalexis ea27d96374 Fem: Remove unnecessary code from import/export INP preference page 2026-02-12 09:38:33 +01:00
marioalexis 1fcbe6095c Fem: Remove unnecessary code from CalculiX preference page 2026-02-12 09:38:33 +01:00
JIJINBEI 379179ce2b README: Update compiling section to recommend pixi (#27501) 2026-02-11 21:36:18 +00:00
Chris Hennes 076c5916b5 Sketcher: Remove unneeded parameters from seekConstraintPosition 2026-02-11 19:49:31 +01:00
Yash Suthar 3d14203fa4 Draft: fix Draft_Label MaxChars property (#27478)
* Draft: fix Draft_Label MaxChars property

Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>

* Minor tweak: moved/replaced call to self.onChanged

---------

Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2026-02-11 17:58:42 +00:00
Chris Hennes ec18d4e250 Tests/Sketcher: Eliminate unused variables 2026-02-11 17:03:18 +01:00
Chris Hennes ecbe21ca03 Sketcher: Annotate unused parameter 2026-02-10 19:10:36 +01:00
Roy-043 54c0c2f83c Draft: fix ghost preview of Draft_Labels
Draft_Labels have a unique Placement implementation. A ghost preview therefore cannot be generated in the standard manner. This was missed in #18795 (my bad).
2026-02-10 11:43:22 -06:00
Chris 47aa61bd94 CI: allow libpack builds to be triggered via githubs workflow_dispatch (#26742) 2026-02-10 11:42:23 -06:00
Yash Suthar 2cd45b07f7 Sketcher: Fix snap while drag and fix drag for arc
Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2026-02-10 10:20:11 -06:00
Roy-043 0eaf14373f BIM: fix case of some titles (#27474) 2026-02-10 15:41:05 +00:00
dependabot[bot] ff377e031f Bump jwlawson/actions-setup-cmake from 2.0.2 to 2.1.1
Bumps [jwlawson/actions-setup-cmake](https://github.com/jwlawson/actions-setup-cmake) from 2.0.2 to 2.1.1.
- [Release notes](https://github.com/jwlawson/actions-setup-cmake/releases)
- [Commits](https://github.com/jwlawson/actions-setup-cmake/compare/802fa1a2c4e212495c05bf94dba2704a92a472be...3a6cbe35ba64df7ca70c51365c4aff65db9a9037)

---
updated-dependencies:
- dependency-name: jwlawson/actions-setup-cmake
  dependency-version: 2.1.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-10 09:12:33 -06:00
PaddleStroke 3d0df45cd4 Assembly: BOM: take mirrored state of links in account. (#26113) 2026-02-10 09:10:03 -06:00
wmayer be3acac53a Import: Fix import/export of STEP file
For the import/export use the transparency value of the material property.
Since v1.0 the alpha channel of the diffuse color is used for this but
when changing the transparency in the user interface this alpha channel
won't be adjusted and thus leads to unexpected results.

This fixes issue 18569
2026-02-10 11:03:27 +01:00
wmayer 1412cad2ec Import: Use ImportGui module for IGES import & export
Fixes issue 10701
2026-02-10 11:03:27 +01:00
Caio Venâncio do Rosário bf51a00dfd Draft: Fix switchUi method bug (#27422)
* Draft: Fix switchUi method bug

* [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>
2026-02-10 10:33:35 +01:00
Christoph Niethammer 1046c3682a Fix typos (#26576)
* Fix typos in code documentation

Signed-off-by: Christoph Niethammer <christoph.niethammer@gmail.com>

* Update tool tip for links 'copyOnChange' property

The tool tip for the copyOnChange property was missing the "tracking"
option and had some typos. For details see the wiki documentation at
https://wiki.freecad.org/Std_LinkMake and commit
d1b6bb78d1.

Signed-off-by: Christoph Niethammer <christoph.niethammer@gmail.com>

---------

Signed-off-by: Christoph Niethammer <christoph.niethammer@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2026-02-09 19:15:50 -06:00
sliptonic 4497ce0146 Merge pull request #22204 from jffmichi/camsim
CAM: integrate new simulator as MDI widget into main window
2026-02-09 11:40:06 -06:00
tarman3 353459f1fe CAM: Profile - fix _getCutAreaCrossSection() 2026-02-09 11:12:11 -06:00
drwho495 72b1076788 Remove hasher check and migrate CAM files 2026-02-09 11:00:23 -06:00
Chris Hennes 6a1da227cd Merge pull request #27346 from TomPcz/sketcher-label-offset
Sketcher: Fix dimension label alignment and inactive strikethrough
2026-02-09 10:58:39 -06:00
Billy Huddleston 6e34b79da4 CAM: Update SVG annotation IDs for tool shapes
Renamed several SVG text element IDs in tool shape files that did not
match the expected naming conventions used. This ensures that the tool
parameters are correctly recognized and utilized by the Tool library
editor.

src/Mod/CAM/Tools/Shape/bullnose.svg:
- Changed text element id from "torus_radius" to "corner_radius"

src/Mod/CAM/Tools/Shape/radius.svg:
- Changed text element id from "cutting_edge_height-7" to
"cutting_radius"
- Changed text element id from "diameter-9" to "tip_diameter"

src/Mod/CAM/Tools/Shape/svg_source/bullnose.svg:
- Changed text element id from "torus_radius" to "corner_radius"

src/Mod/CAM/Tools/Shape/svg_source/radius.svg:
- Changed text element id from "cutting_edge_height-7" to
"cutting_radius"
- Changed text element id from "diameter-9" to "tip_diameter"
2026-02-09 10:55:53 -06:00
Neale Swinnerton e38c831970 feat(Gui): set client name to FreeCAD when connecting to spacenav
This enables per-application configuration in spacenavd for FreeCAD.
2026-02-09 10:55:23 -06:00
sliptonic 3f84746a5c Merge pull request #27247 from Daniel-Khodabakhsh/fix-0-step-down
CAM: Fix case when CAM operation `Start depth` equal to `Final depth` and `Step down` is zero
2026-02-09 10:06:04 -06:00
dependabot[bot] 94b147fcad Bump step-security/harden-runner from 2.14.1 to 2.14.2
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.14.1 to 2.14.2.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/e3f713f2d8f53843e71c69a996d56f51aa9adfb9...5ef0c079ce82195b2a36a210272d6b661572d83e)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.14.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-09 10:01:10 -06:00
chris jones @ipatch c4317f88f8 sketcher: fixes #27281 fix access out of bounds crash with "remove axes alignment" 2026-02-09 09:52:02 -06:00
dependabot[bot] c8c764e215 Bump prefix-dev/setup-pixi from 0.9.3 to 0.9.4
Bumps [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi) from 0.9.3 to 0.9.4.
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](https://github.com/prefix-dev/setup-pixi/compare/82d477f15f3a381dbcc8adc1206ce643fe110fb7...a0af7a228712d6121d37aba47adf55c1332c9c2e)

---
updated-dependencies:
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.9.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-09 08:53:31 -06:00
freecad-gh-actions-translation-bot e5d0e5316d Update translations from Crowdin 2026-02-09 05:39:43 +01:00
Kacper Donat 1cc53d911a Gui: Add element-wise tuple arithmetic to StyleParameters
Add arithmetic operators (+, -, *, /, unary -) to Value, enabling
element-wise operations on tuples and scalar broadcast with numerics.
Tuple addition/subtraction uses union semantics: named elements match
by name, unnamed elements match positionally, and unmatched elements
pass through. BinaryOp and UnaryOp now delegate to these Value operators.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 00:33:00 +01:00
Kacper Donat 7bf2050865 Gui: Add dot syntax for tuple member access in StyleParameters
Add MemberAccess AST node and postfix `.member` parsing to support
extracting individual elements from tuple-valued parameters, e.g.
`@ButtonBorderThickness.left` or `@Grays.0`.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 00:33:00 +01:00
Kacper Donat b7b3187e1d Gui: Split Value types out of ParameterManager into Value.h/.cpp
Move Numeric, Tuple, Value, valueTypeName, ArgumentParser, and ParamDef
into their own Value.h/.cpp files. ParameterManager.h now includes
Value.h and keeps only parameter sources and the manager itself.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 00:33:00 +01:00
Kacper Donat 9e0538abc8 Gui: Add ArgumentParser for named/positional function arguments
Adds ArgumentParser class that resolves mixed positional and named
arguments against a declared function signature (Python-style).
Includes Tuple::get<T>(name) for type-checked access with
user-friendly error messages. Refactors lighten/darken/blend to use it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 00:33:00 +01:00
Kacper Donat a64a43b9ca Gui: Refactor function arguments to use TupleLiteral
Replace the separate argument parsing in parseFunctionCall() with a
call to parseTuple(), unifying the two comma-separated-expression
parsing paths. FunctionCall now stores a TupleLiteral instead of
a vector of expressions, and evaluates it into a Tuple value that
functions access via at()/find().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 00:33:00 +01:00
Kacper Donat 7c813a6f5a Gui: Add tests for StyleParameters tuple support
Test cases cover unnamed, named, and mixed tuples, single named
elements, nested tuples, expressions and mixed types in elements,
toString roundtrip, Value::holds/get accessors, Tuple::at/find/size,
error handling, and backward compatibility of grouped expressions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 00:33:00 +01:00
Kacper Donat 884baf2cb8 Gui: Add tuple parsing to StyleParameters parser
Add TupleLiteral AST node and parser support for tuple syntax using
parentheses with comma-separated elements: (val1, val2) for unnamed
tuples, (name: val1, val2) for named elements.

Disambiguation with grouped expressions in parseFactor():
- `(identifier:` lookahead → tuple
- expression followed by `,` → tuple
- expression followed by `)` → grouped expression (backward compatible)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 00:33:00 +01:00
Daniel Khodabakhsh 8d3c786656 Fix case when CAM operation start = stop and step down is zero. 2026-02-08 15:30:19 -08:00
Kacper Donat 0f4ad868f7 Gui: Add Tuple type to StyleParameters
Add a tuple value type to the StyleParameters system, allowing related
values to be grouped into a single parameter with optional named fields.

Tuple is stored inline in the Value variant. The circular dependency
(Value contains Tuple, Tuple elements contain Value) is broken by
storing element values as shared_ptr<const Value> inside Tuple::Element.

Generic holds<T>() and get<T>() template methods are added to Value
for uniform type-checked access to all variant alternatives.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 00:29:03 +01:00
Captain 3237a21580 PartDesign: add interactive gizmos for box, cylinder and sphere operations (#23700) 2026-02-08 14:36:04 -06:00
Joe a79a22185d Materials: Add Copper Alloys to Material-Metals (#25832)
* Add Copper Alloys to Material-Metals

Added a set of Copper Alloys presented in Application Data Sheet
'cda144-8-mechanical-low-temperature.pdf, Nov1974'
Permission and Credit to the 'Copper Distributor's Association (CDA)'
These cards follow values for 295°K

Colours approximate values found by general search of images and
descriptions found on the internet and use FreeCAD's appearances.

* Add Copper Alloy general/generic information

This additional information appears as general info not affected by
anneal or cold drawn or aging factors.
Information found from pages C10200, C12200, C15000, C22000, C23000,
C44300, C46400, C51000, C61400, C64700, C65500, C70600, C71500, C95500

Also followed suggestions of adding tagging and description mentioned
in pull request.

* Add Copper Alloy source URL

Added the URL for the source Application Data Sheet
'cda144-8-mechanical-low-temperature.pdf, Nov1974'
This pdf is hosted by the 'Copper Distributor's Association (CDA)'

Here is the source URL for this pull request in case it's needed:
https://github.com/FreeCAD/FreeCAD/pull/25832

* Add Copper Alloy UltimateStrain for 102,122a,122b at 295°K

102=2.8%, 122a=39.7%, 122b=1.46%

* Add Copper Alloy UltimateStrain for remaining cards 150...955 at 295°K

105=4.13%, 220=41.5%, 230=40.4%, 443=82%, 464=31.8%, 510=3.6%, 614=27%
647=9.9%, 655=10.4%, 706=28.4%, 715=39.9%, 955=10.6%.

Removed spaces between IACS = nn%, so that it all stays on same line.

Added C95500 compressive MPa.
Added C64700 Si and IACS ranges.

Also looked at 'KindOfMaterial' for Steel and made similar edits based
on Table 2 info shown in brackets () to try keep a bit of consistency.

* Fix Ultimate Strain Description and Units

Ultimate Strain is the maximum stretch you can do to a material before it
gives up. This is associated with Ultimate Tensile Strength, which is the
maximum stress you can apply before the material starts to fail, elongate
and eventually fracture.

Units are of the type ΔL/L, such as, stretched 0.10in per 1.0in (10%), or
stretched 0.15mm per 1.0mm (15%). To avoid confusion, use 0.1 or 0.15 and
avoid using 10 as for 10% or 15 as with 15%, and just call it a fraction.

* Add Copper Alloy Elongation, Reduction of Area, Yield Strain, Toughness

Impact Charpy and Notch Tensile Strength are both considered as Toughness
There is currently no use for these in FreeCAD, but maybe a future use as
these are part of the Table 2 and better to add them now vs forget adding
them later. The Charpy test is a fast cost-effective standardized method,
and there are other more sophisticated impact tests that can be "better".
There are other tests than the notch tensile strength test, but it's also
a simple, fast, cost-effective method to create fracture toughness data.

While adding 'Elongation' and 'Reduction of Area' both these are referred
to as percentages (preferred over fraction), it seemed best to change the
'Ultimate Strain' to percentages too for consistency even though this has
was referred to as fraction or percentage when searching for definitions.

Added Yield Strain, probably not important now because the elastic region
is pretty small, but with smart metals that can do up to 5% bends then it
seems something worth adding it for that category of future metal alloys.

* Add Copper Alloy Isotropic, Linear, Toughness Temperature Arrays

* Add Copper Alloy Elastic & Toughness arrays and reduce model wordiness

Reduced wordiness of array models by cutting-out Metal and Temperature
as these are somewhat redundant words.

Added remaining ElasticProperties and PlasticTriaxialProperties.

* Add Copper Alloy Linear Elastic Temperature Arrays

Moved Elongation and ReductionOfArea after YieldStrain/Strength and added
FractureStrength so these are grouped together on the cards since they're
all related (Note: Material viewer resorts these alphabetically).

Linear Elastic arrays are set in the order of strain/strength for Tensile
then strain/strength for Yield, and then Elongation/FractureStrength, and
then ReductionOfArea.

Reviewed pdf again and corrected a few errors missed/made earlier.
2026-02-08 12:04:28 -06:00
William Skellenger 5f952812c3 Fix tooltips on mirror checkboxes in sketcher (#27131) 2026-02-08 10:03:37 +00:00
Chris Hennes 0f23770ad7 Merge pull request #27064 from ScholliYT/addObjectNameTo3mfExport
Mesh: Add object name attribute to 3MF export
2026-02-08 03:22:56 -06:00
Kacper Donat 9dbf5ae94b Part: Refactor TopoShape::splitWires (#23096)
This refactors TopoShape::splitWires method to be easier to follow and
use variable names that better describe the intent.
2026-02-07 23:24:47 -06:00
mosfet80 fa97300ec6 Remove unused files
removed unnecessary doxygen files
2026-02-07 23:14:25 -06:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ 8af563804c SPDX [ 49 ][ Src / Mod / PartDesign ] (#26715) 2026-02-07 22:53:31 -06:00
PhoneDroid 0d4d884a59 [ Doc ]: Rework 3rd party library overview 2026-02-07 22:51:05 -06:00
William Skellenger f2a392c8f1 make the filename tooltip show the actual filename 2026-02-07 22:40:15 -06:00
wandererfan 0745d40f86 [TD]fix fail on single edge cutting profile 2026-02-07 21:47:00 -06:00
Roy-043 105543bf17 BIM: fix regression caused by Link Hosts handling (#27406) 2026-02-07 21:43:30 -06:00
Chris Hennes 5b27deb4f0 Gui: Migrate old macro dir if needed 2026-02-07 20:36:43 -06:00
Chris Hennes f008c80030 Gui: Don't record macro path if default 2026-02-07 20:35:32 -06:00
TomPcz b441a3b6c1 Assembly: Fix help text height in CreateBom 2026-02-07 18:38:37 +01:00
sliptonic f36c9a8580 Merge pull request #27114 from petterreinholdtsen/cam-toolbit-m10-m8-taps
CAM: Added M8x1.25 (aka M8 coarse) thread tapping bit.
2026-02-07 09:06:12 -06:00
jffmichi 184c977677 CAM: show new cam simulator in main window 2026-02-07 11:03:23 +01:00
timpieces adf15a401d ExpressionParser: Add more tests for expression parsing (#27098)
- I'm not familiar with absolutely all usages of expressions - this is
  intended more as a starting point to make it easy to add more
- The test captures *current* behaviour, please don't assume that
  everything it tests is *correct* behaviour
2026-02-07 11:23:13 +08:00
timpieces 1de8cd5e36 ExpressionParser: Make cosmetic test changes before adding more tests (#27098)
Fix some weird quirks before adding new tests:
- The whole file has clang format off, this feels unnecessary, localize
  it to where it's important
- Put the code inside a nested test namespace within the production
  namespace, this is generally good practice rather than putting it in
  the global namespace, and it means we don't have to explicitly namespace
  methods that are directly under test
- Rename variables to camelCase, which afaict is closer to 'normal' in
  freecad cpp
- Remove the usage of arrays. Maintaining manual array sizes is
  annoying. Just use initializer lists here as they are all constants.
- I have *not* renamed the snake_case methods, as I feel that it
  destroys too much of the git history for too little benefit
2026-02-07 11:23:13 +08:00
timpieces daceb8afe4 ExpressionParser: Return unique_ptr from simplified (#27098)
- Removes many/most of the copy().release() from the last commit
- Still some .release() in the simplify functions now
- It doesn't work to rename simplify and turn it into a protected
  method, because it's called recursively within the tree
2026-02-07 11:23:13 +08:00
timpieces 8dad760db4 ExpressionParser: Return unique_ptr from copy (#27098)
- We need copy().release() on many of these calls because nodes in the
  tree call 'copy' explicitly. It's not really different to the code
  that's there now, but it's not pretty either. Some of these will go
  away in the upcoming commit
2026-02-07 11:23:13 +08:00
timpieces 1455321ace ExpressionParser: Return unique_ptr from eval (#27098)
- Most of the usages of 'release' are temporary here, but a few will
  likely need to stay. In these cases, the existing behaviour is
  retained. To fix all usages, smart pointers would need to be used all
  throughout the tree
- The freecad_cast looks awkward now. I haven't added a new version that
  works with smart pointers because it's not clear what the right
  ownership semantics would be. Make the caller be explicit for now.
2026-02-07 11:23:13 +08:00
timpieces 47d02c0618 ExpressionParser: Return unique_ptr from parse (#27098)
- Start at ScanResult, as starting higher makes it easy to have memory
  issues.
- There are multiple memory leaks (at least in tests, but possibly in
  production code too) from using raw pointers in the public interface
  here. Fix these before adding more tests.
- Starts at ScanResult
- The bison changes were applied manually, as I don't think that it's
  pixified and running my local version showed many changes.
- I've chosen not to pimplify Expression, but only because it would be
  such a significant change for not so much value.
2026-02-07 11:23:09 +08:00
jffmichi 61de0ffa8f CAM: use QOpenGLWidget for new simulator 2026-02-07 00:38:07 +01:00
tarman3 53bb61da00 CAM: Fix calculation arc move time 2026-02-06 22:25:39 +02:00
tarman3 dd3c12758f CAM: Fix calculation arc move length 2026-02-06 21:46:57 +02:00
Petter Reinholdtsen dfdabbfc87 CAM: Reintroduce matching pre-/postamble and help text for dynapath_4060_post.py
This change was introduced in 80a35a8765 (#24617) and
reverted without explanation in 21a597a85e (#27202).
I assume it was reverted by mistake.

Note that for dynapath_4060_post.py, the original help text did not match the postamble,
illustrating the need to ensure the actual value matches the help text.
2026-02-06 19:44:40 +01:00
Kristian Rekstad 2db8942fa9 Web: improve docs by explaining purpose and use
Also remove python example in AppWeb.cpp because it is duplicated by
web.dox
2026-02-06 11:49:51 -06:00
dependabot[bot] 71e4b4f564 Bump actions/setup-python from 6.1.0 to 6.2.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/83679a892e2d95755f2dac6acb0bfd1e9ac5d548...a309ff8b426b58ec0e2a45f0f869d46889d02405)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-06 11:43:33 -06:00
dependabot[bot] 6a349de3e3 Bump step-security/harden-runner from 2.13.3 to 2.14.1
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.13.3 to 2.14.1.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/df199fb7be9f65074067a9eb93f12bb4c5547cf2...e3f713f2d8f53843e71c69a996d56f51aa9adfb9)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.14.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-06 11:43:23 -06:00
dependabot[bot] cc665f1070 Bump peter-evans/create-pull-request from 7.0.11 to 8.1.0
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.11 to 8.1.0.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/22a9089034f40e5a961c8808d113e2c98fb63676...c0f553fe549906ede9cf27b5156039d195d2ece0)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-version: 8.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-06 11:43:12 -06:00
Petter Reinholdtsen 626c510177 CAM: Added M8x1.25 (aka M8 coarse) thread tapping bit.
This provide a metric thread tap example alongside the
imperial 3/8"-16 tap example.
2026-02-06 06:29:12 +01:00
Krish Sharma 24f0c8e2c3 Update src/Gui/PreferencePages/DlgSettingsSelection.ui
Co-authored-by: Furgo <148809153+furgo16@users.noreply.github.com>
2026-02-05 21:46:40 +01:00
Krrish777 4768f20d89 Update tooltip for auto-switch to 3D view preference to match Std_TreeSyncView behavior 2026-02-05 21:46:40 +01:00
Krrish777 13909dbb00 Remove duplicate/old tooltips 2026-02-05 21:46:40 +01:00
Krrish777 ed2471e835 Gui: Add informative tooltips to Tree Selection Behavior 2026-02-05 21:46:40 +01:00
Krrish777 afd998541d Gui: Add tooltips to Selection preference page 2026-02-05 21:46:40 +01:00
Benjamin Nauck 74e1d71c65 Merge pull request #27355 from 3x380V/app
App: Random fixes 2
2026-02-05 20:22:43 +01:00
dependabot[bot] 1d11f05560 Bump actions/checkout from 4 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-05 08:48:07 -06:00
paul 45a8650b7d [BimWall] Fix Regression check ArchSketchLock (#27324)
* [BimWall] Fix Regression check ArchSketchLock

Github Discussion / Fix Regression:
Fix #24595
(https://github.com/FreeCAD/FreeCAD/pull/24595#issuecomment-3763092751)
(and incorporate comments in previous PR, to be abandoned, https://github.com/FreeCAD/FreeCAD/pull/26985)

Regression and Fix:
-  When external SketchArch Add-on is installed, and ArchSketchLock is False (not pressed), the BimWall.Arch_Wall() tool with BaseLine select 'Sketch' return error
-  This PR fix the said regression

* [BimWall] Fix Regression check ArchSketchLock (rev. 1)
(Update following comment at - https://github.com/FreeCAD/FreeCAD/pull/27324#pullrequestreview-3750099100)

Github Discussion / Fix Regression:

- Fix https://github.com/FreeCAD/FreeCAD/pull/24595#issuecomment-3763092751
- (and incorporate comments in previous PR, to be abandoned, https://github.com/FreeCAD/FreeCAD/pull/26985

Regression and Fix:

- When external SketchArch Add-on is installed, and ArchSketchLock is False (not pressed), the BimWall.Arch_Wall() tool with BaseLine select 'Sketch' return error
-  This PR fix the said regression

* [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>
2026-02-05 12:36:16 +01:00
wmayer cda2b8cbdb Use Application::getExecutableName() instead of Config()["ExeName"] 2026-02-05 10:59:52 +01:00
wmayer 4f116d8de3 App: Move Python functions from Application to ApplicationPy
This reduces build time when adding new Python functions because
only one file must be compiled.
2026-02-05 10:59:52 +01:00
wmayer c97f6e5b3f App: Improve Document::writeObjects
Do not directly pass getNameInDocument() to the ostream as this will
set the badbit in case it returns nullptr. As a result no further
output is written to the stream and leads to loss of data.

Instead the returned C string is stored in a local variable and in case
it's nullptr an empty string is passed to the ostream.

At the end of the function writeObjects() it's checked whether the
failbit or badbit is set. If yes an error message is printed and the
failbit or badbit are cleared.

This is supposed to fix the issue 18044.

In case this fix is not sufficient it can be also check for every
object inside writeObjectData()
2026-02-05 10:59:50 +01:00
wmayer 2c3d9e2bb7 Base: Add C++ iostate methods to Writer class 2026-02-05 10:58:12 +01:00
wmayer 2c2cdbfe7f App: Refactor Document::writeObjects 2026-02-05 10:47:49 +01:00
wmayer 6c9ad95a70 App: Improve handling with freeze status
* Do not raise an exception when saving a document and an object has
  'freeze' status because this breaks the project file and may lead
  to loss of data.
* Make 'freeze' state persistent
* When toggling 'freeze' status only work directly on the selection.
  Do not use in-list or out-list of an object because this makes it
  quite inflexible and leads to unpredictable behaviour.

This fixes issue with saving frozen files described in 18806.
2026-02-05 10:04:46 +01:00
Tomáš Pikálek 41e3cdb9a5 Sketcher: Reimplement strikethrough of inactive constraint labels 2026-02-04 21:04:06 +01:00
Chris Hennes 27587b9cd2 Packaging: Fix typo in end-of-line format 2026-02-04 20:46:02 +01:00
Tomáš Pikálek 77e5645af0 Sketcher: Vertical centering of constraint labels 2026-02-04 19:44:21 +01:00
Jacob Oursland 9440749423 CI: pin swig on release builds. 2026-02-04 18:51:14 +01:00
Chris Hennes 6f60022a35 Package: Make Windows uninstaller preferences language clearer 2026-02-04 06:37:22 +01:00
PaddleStroke 8a6872e69d Merge pull request #25848 from PaddleStroke/sk_scale_distances
Sketcher: Distance constraints: scale label distance on creation.
2026-02-03 16:34:53 -06:00
Chris Hennes ed6c0c8111 Merge pull request #25990 from Lgt2x/find-netgen-fix
CMake: require Netgen when BUILD_FEM_NETGEN is ON, don't fail silently
2026-02-03 23:10:38 +01:00
xtemp09 0b5a0a6abb [GUI] Handle Enter and Escape in the search box in Preferences. 2026-02-03 21:57:29 +01:00
Pieter Hijma 6d3f786b38 Doc: Improve layout doxygen output 2026-02-03 21:07:13 +01:00
Pieter Hijma 1eb6968265 Doc: Comment out doxygen javascript
This commit comments out javascript for doxygen that does not work
anymore or is unneeded in newer versions.  The code is left in for later
attempts to revitalize this functionality, most notable the search
function.
2026-02-03 21:07:13 +01:00
Chris Hennes 6ada8e2cef Merge pull request #25199 from pieterhijma/doc-element-mapping
Doc: Improve the documentation of element mapping
2026-02-03 21:06:53 +01:00
Chris Hennes f3b4aa6b8c Merge pull request #25198 from pieterhijma/doc-expressions
Doc: Improve the documentation of expressions
2026-02-03 21:06:13 +01:00
Chris Hennes eb42b77285 Merge pull request #25143 from furgo16/issue_24571
App: cherry-pick - Implement Save() & Restore() for int/float constraint properties
2026-02-03 21:04:50 +01:00
Roy-043 8657d0a377 BIM: fix BuildingPart area calculation for indirect children (#24848)
* BIM: fix BuildingPart area calculation for indirect children

Fixes #24667.
2026-02-03 13:23:59 -06:00
Steven James c07d248bc3 Make Subclasses of Part::Feature objects repr as their derived Type (#24429) 2026-02-03 11:03:29 -06:00
Roy-043 dafed93c63 BIM: support relative path for hybrid IFC file (#24190) 2026-02-03 10:16:10 -06:00
Ladislav Michl e7bcb2c15e Gui: cleanup includes in *PyImp.cpp
Sort includes and implicitely add missing ones. While there
consistently explain where generated files some from.
2026-02-03 16:56:45 +01:00
Roy-043 f9ab227459 Draft: title in default task panel in title case
See #27314.
2026-02-03 12:09:08 +01:00
Roy-043 e6808b6f2e BIM: titles in default task panel in title case
This task panel appears when no command is active. There are 2 versions. One appears if there is a selection, the other if there is none.
2026-02-03 11:05:29 +01:00
captain0xff 79632dd3c6 App: handle symlinks in Application::processFiles & DocInfo::getDocPath 2026-02-02 19:50:36 +01:00
Chris Hennes a4a1ef7294 App: Get Addon name from Metadata 2026-02-02 19:50:16 +01:00
Yash Suthar 8f2a3a4d7d Draft : Added knots support for snapping (#26571)
* Draft : Added knots support for snapping

Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>

* Use Special snap for knots and rename snapToBSpline to snapToBSplineKnots

---------

Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2026-02-02 17:11:20 +00:00
Dan Henderson 21a597a85e CAM: Post Processor Dyna_4060_Post - various bug fixes and updates (#27202)
* various bug fixes and updates

* [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>
2026-02-02 18:07:31 +01:00
Daniel-Khodabakhsh 1c90c1ec44 CAM: Fix case when CAM operation Safe height, Start depth, and Final depth are the same value. (#27258)
Co-authored-by: Daniel Khodabakhsh <d@niel.khodabakh.sh>
2026-02-02 18:03:59 +01:00
Roy-043 30ea676367 BIM: add processSubShapes to ArchSpace.py
Fixes #24579.
2026-02-02 18:03:08 +01:00
Roy-043 ed104dd2c1 BIM: remove LibraryWebSearch option from BIM_Library as it required the Web WB (#27048)
* BIM: remove LibraryWebSearch option from BIM_Library as it required the Web WB

Removed the 'checkWebSearch' checkbox and updated tooltip text formatting.

* BIM: remove LibraryWebSearch option from BIM_Library as it required the Web WB

* Restore tooltip
2026-02-02 17:59:40 +01:00
PaddleStroke a3486b4dd2 Assembly: Insert flexible assembly grounds the correct part (#27206)
* Assembly: Insert flexible assembly grounds the correct part

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

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

* Assembly: Migrate ObjectToGround to PropertyLinkGlobal to support assembly links

* Update JointObject.py

* Assembly: ViewProviderAssembly fix assembly link deletion issue

* Assembly: ViewProviderAssembly: make sure no duplicates in canDelete

* Assembly CommandInsertLink fix typo

* [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>
2026-02-02 17:43:45 +01:00
PaddleStroke 212e4f07af Assembly: Fix isolate not working on sub assembly components 2026-02-02 17:41:41 +01:00
Kacper Donat 92dbaad9db Merge pull request #27243 from 3x380V/app
App: Random fixes 1
2026-02-02 17:40:40 +01:00
David Kaufman 388c66b41e move max-arc-radius test from AlmostALine to CheckForArc 2026-02-02 10:46:00 -05:00
Furgo 125ff0dcea BIM: add task panel box for wall options (#26758)
* BIM: add Wall options task box to ArchWall's edit task panel

* BIM: update Align property live on the task box

* BIM: make wall options cancellable

* BIM: make the Component task box actions reversible, in particular debasing a wall

* BIM: implement baseless walls creation (#24595)

* BIM: Implement smart base removal for Walls

Previously, removing the Base object from an Arch Wall would cause the
wall to reset its position to the document origin and could lead to
unintended geometric changes for complex walls.

This commit introduces a "smart debasing" mechanism integrated into the
Component Task Panel's "Remove" button:

- For walls based on a single straight line, the operation now preserves
  the wall's global position and parametric `Length`, making it an
  independent object.
- For walls with complex bases (multi-segment, curved), a warning dialog
  is now presented to the user, explaining the consequences (shape
  alteration and position reset) before allowing the operation to
  proceed.

This is supported by new API functions `Arch.is_debasable()` and
`Arch.debaseWall()`, which contain the core logic for the feature.

Fixes: https://github.com/FreeCAD/FreeCAD/issues/24453

* BIM: Move wall debasing logic into ArchWall proxy

The logic for handling the removal of a wall's base object was previously
implemented directly within the generic `ComponentTaskPanel` in
`ArchComponent.py`. This created a tight coupling, forcing the generic
component UI to have specific knowledge about the `ArchWall` type.

This commit refactors the implementation to follow a more object-oriented
and polymorphic design:

1.  A new overridable method, `handleComponentRemoval(subobject)`, has been
    added to the base `ArchComponent` proxy class. Its default implementation
    maintains the standard removal behavior.

2.  The `_Wall` proxy class in `ArchWall.py` now overrides this method. All
    wall-specific debasing logic, including the eligibility check and the
    user-facing warning dialog, now resides entirely within this override.

3.  The `ComponentTaskPanel.removeElement` method has been simplified. It is
    now a generic dispatcher that calls `handleComponentRemoval` on the
    proxy of the object being edited, with no specific knowledge of object types.

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

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

* BIM: Add interactive creation of baseless walls

Introduce a new workflow for creating Arch Walls without a dependency on
a baseline object (e.g., a Draft Line).

- The `Arch_Wall` command is enhanced with a "No baseline" mode, controlled
  by a new "Walls baseline" preference, allowing users to create
  placement-driven walls directly in the 3D view.
- The existing `debaseWall` function has been refactored for correctness
  and consistency with the new baseless wall geometry.

Co-authored-by: Yorik van Havre <yorik@uncreated.net>

* BIM: Refactor structure of the Arch Wall command

Refactor the `Arch_Wall` GUI command (`BimWall.py`) for improved
readability, maintainability, and architectural clarity.

- A `WallBaselineMode` Enum is introduced to replace the original
  integer values, making the code self-documenting.
- The monolithic `create_wall` method is broken down into smaller,
  single-responsibility helper functions for each creation mode.
- The `addDefault` method has been removed, with its logic
  integrated into the new structure.

* BIM: Add Draft Stretch support for baseless walls

This commit makes the new baseless Arch Walls graphically editable using
the `Draft_Stretch` tool.

- An API for stretching (`calc_endpoints` and `set_from_endpoints`)
  has been added to the `ArchWall` proxy.
- The `Draft_Stretch` tool is now aware of baseless walls and calls this
  new proxy API to perform the stretch operation, enabling users to
  stretch them.

Co-authored-by: Yorik van Havre <yorik@uncreated.net>

* [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

* BIM: address CodeQL warnings

* BIM: Fix wall alignment for GUI creation of baseless walls

Fixes an issue whereby creating a baseless wall from the GUI would
ignore the selected `Align` property, always resulting in a
center-aligned wall.

- The underlying geometry generation for baseless walls now correctly
  honors the `Align` property passed by the GUI and API.
- To ensure predictable behavior, the implementation uses the same
  geometric convention as walls built from a base object, making the
  `Align` property work uniformly for all wall types.
- This also corrects the behavior of the `Arch.makeWall` function for
  baseless walls.
- Update unit tests to test wall alignment.

* BIM: Refactor wall geometry generation for improved clarity and maintainability

Improves the internal logic for wall geometry creation, addressing CodeQL warnings and enhancing overall maintainability without changing external behavior.

- The `build_base_from_scratch` method is refactored to unify the separate logic paths for single- and multi-layer walls, reducing code duplication.
- A local helper function is introduced to create face geometry, for better modularity and readability.
- In the `_Wall.execute` method, the control flow that relied on implicit type checking is replaced with an explicit strategy pattern for fusing solids, making the logic more robust.
- Variable names are made more descriptive.
- A NumPy-style docstring is added to better document the function.

* Draft: fix stretching of rotated baseless walls

* BIM: add unit test for stretching baseless walls

* BIM: add regression tests for working-plane-relative coordinates and reuse of base sketches

* BIM: Fix baseless wall creation to respect the working plane

Corrects an issue where baseless walls were created using global
coordinates instead of being relative to the active Draft working plane.

The calculated local placement of the wall is now correctly transformed
into the global coordinate system by multiplying it with the working
plane's placement.

* BIM: Ensure unique baselines for subsequent wall creation

Fixes a bug where creating multiple walls with baselines would
incorrectly reuse the same underlying Sketch or Draft Line object.

The object retrieval logic after the `doCommand` call now correctly uses
`ActiveObject` to get a reliable reference to the new object instead of
relying on a hardcoded name.

* BIM: Make the wall's base object label translatable

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

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

* BIM: use singular for consistency with other labels

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

* Fix typo

* BIM: address reviewer's comments about improving object reference passing between Python and FreeCAD contexts, and functions

* BIM: remove defensive programming: the callback is only executed as a result of a user's GUI action

* BIM: use the params API to define WallBaseline parameter

* BIM: add Arch Wall tests for joining wall logic

* BIM: add joining logic

* BIM: re-add ArchSketch support

* BIM: re-add multimaterial support on wall creation

* BIM: address CodeQL warning, remove module duplication

* BIM: fix check for SketchArch module when creating sketch-based walls

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Yorik van Havre <yorik@uncreated.net>
Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

* CI: upgrade Ubuntu native build to 24.04

* CI: reenable Ubuntu native build

* CI: abandon PySide6 pip approach, try KDE Neon repos

* BIM: fix mistake in casting return value

* BIM: add wall label to better identify transaction in the Undo stack

* BIM: remove superfluous statement

* BIM: add explanatory comment about additional transaction  pending flag

* BIM: Refactor Wall transaction logic to use explicit argument passing

This replaces the `Proxy.InTransaction` flag mechanism with a cleaner
transaction architecture based on explicit argument passing.

The motivation for managing the transaction mechanism is that
previously, removing a Wall's base object via the Task Panel triggered
`debaseWall`, which opened and committed its own transaction
immediately. This nested commit finalized the document state
prematurely, rendering the Task Panel's "Cancel" button ineffective.

The Task Panel now owns the transaction lifecycle for the editing
session. It propagates a `manage_transaction=False` flag down to the
logic layer, preventing nested transactions from committing prematurely.

Key changes:
- Arch.py: `debaseWall` now accepts `manage_transaction` (default True).
  Setting it to False allows the Task Panel to disable the nested
  transaction and include the debasing operation into its own
  transaction context instead.
- ArchComponent.py:
  - `ComponentTaskPanel` now manages the transaction lifecycle (Open in
    init, Commit in accept, Abort in reject).
  - `ComponentTaskPanel.removeElement` now passes
    `manage_transaction=False` when calling the object's
    `handleComponentRemoval` proxy method.
  - Updated `Component.handleComponentRemoval` signature to accept the
    `manage_transaction` argument.
- ArchWall.py:
  - Updated `_Wall.handleComponentRemoval` to pass the
    `manage_transaction` flag to `debaseWall`.
  - Cleaned up `WallTaskPanel` by removing the deprecated
    `InTransaction` logic and redundant overrides.

* BIM: provide immediate visual feedback on additions and subtractions

* BIM: remove low-level API transaction management

* BIM: Refactor transaction management in ComponentTaskPanel

The C++ GUI layer implicitly manages the transaction lifecycle when
entering and exiting edit mode.

Explicitly opening a transaction in init and committing in accept() is
redundant, as the backend establishes the transaction name and performs
the final commit during the resetEdit() cleanup phase.

The reject() method retains an explicit abortTransaction() call to
signal a rollback, which prevents the backend from committing session
changes by default.

Docstrings are added to clarify this implicit interaction between the
Python UI and the C++ document management logic.

* Wall Options in title case

* QtGui.QApplication.translate -> translate

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Yorik van Havre <yorik@uncreated.net>
Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2026-02-02 15:39:20 +00:00
Roy-043 ca923d089f BIM: some improvements for ArchProfile.py (#27118) 2026-02-02 16:04:13 +01:00
Roy-043 7ad0b16d02 BIM: add test for horizontal area of tilted cylinders (#27108)
* BIM: add test for horizontal area of tilted cylinders

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

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

* Fix typos and use makeComponent instead of makeStructure

* Change makeComponent back to makeStructure

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-02-02 16:03:50 +01:00
Furgo 36c0eaf44b BIM: Prevent incorrect assembly icon for baseless parametric walls (#27277)
The icon logic in _ViewProviderWall.getIcon previously switched to the
assembly icon for any wall without a Base that contained Additions. This
caused an unexpected icon change when a wall was debased, as it still
retains a parametric body defined by its Length property.

Update the logic to only show the assembly icon if the wall has no Base,
has Additions, and its Length is zero. This ensures that baseless walls
driven by their own dimensions maintain the standard wall icon.
2026-02-02 15:56:08 +01:00
freecad-gh-actions-translation-bot 0b7da82433 Update translations from Crowdin 2026-02-02 11:49:57 +01:00
PaddleStroke 3d7cc53317 Measure: fix new measure marked as recompute (#27235) 2026-02-01 14:45:04 +01:00
nishi 1818911c5f Measure: corrected angle measurements bug (#27254) 2026-02-01 14:43:10 +01:00
xtemp09 ce3fdd6e4b Add an icon to "Clear Recent Files List" action 2026-02-01 12:31:09 +01:00
Billy Huddleston c98d077d91 Revert "CAM: Add threshold for treating large-radius arcs as linear in simulator"
This reverts commit 0b35385f4a9416c58bda2353e912bf2539d21c6d.
2026-02-01 09:02:17 +01:00
Kacper Donat bf83b9bfde Base: Add TimeTracker (#26305)
* Base: Add TimeTracker

This adds TimeTracker utility that can be used to orchestrate code
with time measurements in an easy way and detect performance issues.

* Update src/Base/TimeInfo.h

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2026-01-31 20:00:40 +01:00
Furgo 2a103cf08e Gui: Unify Python exception reporting in command handlers
Replace custom exception formatting with PyException::reportException()
for consistent output that includes previously missing exception types.
2026-01-31 19:59:42 +01:00
Pieter Hijma 1d51b8e5e5 Doc: Improve the Expression Framework topic 2026-01-31 19:52:33 +01:00
Pieter Hijma befd4a23ee Doc: Improve App::PropertyExpressionEngine docs 2026-01-31 19:52:33 +01:00
Pieter Hijma ee538f707f Doc: Move doc comments in PropertyExpressionEngine
Several doc comments in App/PropertyExpressionEngine.cpp are moved to
header files.
2026-01-31 19:52:33 +01:00
Pieter Hijma f113e775a1 Doc: Improve the App::Expression documentation 2026-01-31 19:52:33 +01:00
Pieter Hijma 063f03c764 Doc: Move doc comments in App::Expression
Several doc comments in App/Expression.cpp are moved to header files.
2026-01-31 19:52:33 +01:00
Chris Hennes bbd0ba7626 Merge pull request #25197 from pieterhijma/doc-link
Doc: Improve the documentation of Link
2026-01-31 19:52:19 +01:00
mosfet80 af4a989dc1 Build: Fix CMake deprecation warning in FastSignals (#26819) 2026-01-31 15:59:49 +01:00
PaddleStroke 964e7387e3 Assembly: Explode temporarily (#25456) 2026-01-31 15:57:22 +01:00
Grzegorz Kwacz cd8fd9ace5 Spreadsheet: Update row/column context menu 2026-01-31 15:36:55 +01:00
PaddleStroke fb4721bcb2 Assembly: Remove solver msg when file is closed (#27210) 2026-01-31 15:19:36 +01:00
Louis Gombert 2dcc351532 TechDraw: fix Qt5 compatibility
emplace_back was added in Qt6, replace by append which does the same thing.
2026-01-31 12:51:11 +01:00
Arusekk c497a583ca BIM: Fix ArchBuildingPart not moving child object base (#27237)
When a child (e.g. a Wall) of an ArchBuildingPart (e.g. of a Level)
had both 'Move With Host' and 'Move Base' enabled, it failed to move
the base (e.g. Line) of the child, and only displaced the child
itself (effectively ignoring the 'Move Base' setting).

Example project structure:

Level
|
+- Wall ('Move With Host' = true, 'Move Base' = true)
   |
   +- (base of Wall) Line
2026-01-31 11:50:51 +01:00
Chris Hennes 0a585dc3bb Base: Add tests for escapeXml 2026-01-31 09:09:27 +01:00
Tom Stein 49c80ebe5c Mesh: Add object name attribute to 3MF export
Export mesh object names as 'name' attribute in 3MF files according to
the 3MF specification. This allows downstream tools to identify objects
by their original FreeCAD names.

Changes:
- Moved Exporter::xmlEscape() to Base XMLTools::escapeXml() for shared XML entity escaping
- Update Writer3MF::AddMesh() to accept and output object names with default "" where no attribute will be added
- Updated all codepaths leading to 3mf exports to include the object name
2026-01-31 09:09:27 +01:00
kkocdko 44fd6754d8 Pixi: Fix qt6-wayland dep
add qt6-wayland into `./package/rattler-build/recipe.yaml` in `run` section, and run `pixi lock`
2026-01-31 09:05:03 +01:00
Ladislav Michl 0831f7e392 App: Avoid C string compare
Since we are linking to boost anyway, use boost function for case
insensitive string compare. While there, make affected methods accept
std::string arguments, which simplifies code a bit.
2026-01-30 10:58:09 +01:00
wmayer 1886bcda00 App: Fix crash in Transaction::addObjectChange
It can happen that TransactionFactory::createTransaction() fails to create a transaction object because an unsuitable type is passed
(like BadType) and returns a null pointer.

The calling instances (Transaction::addObjectChange, Transaction::addObjectDel, Transaction::addObjectNew, Transaction::addOrRemoveProperty)
do not check for a null pointer and thus cause a segmentation fault by dereferencing it.

To fix the issue change the above methods to explicitly handle a null pointer.

This fixes issue 21095.

Note: In this case it's caused by the class ViewProviderFace which on purpose isn't added to the type system so that its type will be BadType.
2026-01-30 10:58:09 +01:00
wmayer 60b0221402 App: Optimize PropertyMaterialList::getDiffuseColors()/getTransparencies() 2026-01-30 10:58:09 +01:00
wmayer 8062fadbd4 App: Replace C macros with lambda expression 2026-01-30 10:58:09 +01:00
wmayer 93ee3a3475 App: Remove assert() from PropertyXLink::Restore
If the property is added to a view provider then in debug mode this will
cause a crash while in release mode this will cause undefined behaviour
because of a static_cast.

To fix crashes remove the assert() and replace the static_cast with
freecad_cast.
2026-01-30 10:58:09 +01:00
wmayer dace71205f App: In ProjectFile::loadDocument() check for parse errors
In case a parse error occurred then return with false and do not set the DOMDocument
2026-01-30 10:56:05 +01:00
wmayer 56e687d9cc App: Refactor PropertyExpressionEngine::afterRestore()
Put the reading of each expression of an object into a try/catch block. This is to avoid that all expressions of an object may be lost.

This mitigates the issue 19866
2026-01-30 10:56:05 +01:00
wmayer 3fba587044 App: In ExpressionParser::parse add the failing expression text to the error message 2026-01-30 10:56:05 +01:00
wmayer 2799aa2700 App: Simplify and fix code for ifcopenshell version check 2026-01-30 10:56:05 +01:00
Leandro Heck 2c25b65b92 Fix warning of widgets with the same name. 2026-01-29 20:20:46 +01:00
Chase Naples b182ebdfd6 Docs: update Link copyOnChange tooltip (#26603) 2026-01-29 17:46:32 +00:00
Yash Suthar b47bb64398 Core: redirect to toolbar creation if user tries to add function when there is nothing in Tree
Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2026-01-29 16:09:48 +01:00
Roy-043 0f2bdf280f Draft: fix autogroup behavior if active group is a layer (#27102) 2026-01-29 15:38:55 +01:00
PaddleStroke 00c3422c1f Sketcher: Tooltip when hovering expression driven constraint (#25954) 2026-01-29 15:04:40 +01:00
timpieces ad6c6bc8fd Gui: Default load/save img to working directory (#26182)
- FileOptionsDialog is only used in the 'save screenshot / save image'
  codepath, and currently it doesn't set a directory to it defaults to
  process CWD, which is surely not what the user wants.
- The load image codepath uses a custom QFileDialog instead of the
  helper code in FileDialog, there doesn't seem to be a great reason for
  this, although the helper doesn't have support for mime types it seems.
- I haven't changed the dialogs to 'set/store' the working directory. I'm
  not sure this is desired as this isn't a 'normal' save/load operation.
- It would be ideal to remove the FileOptionsDialog in future. The
  extended functionality could be turned into a separate dialog which
  opens before or after the file chooser. This would allow native dialogs
  to be used and would unify the code paths for file selection.
- Further, it would be nice to just merge at least the load image into
  the existing import/open option, and to put 'save image' next to
  'export', but those changes may be much more time consuming.

For now I've kept it simple. Let's see what others think.
2026-01-29 14:08:48 +01:00
Krrish777 32ee950210 Improve UX for Rename Property Group with tooltip 2026-01-29 14:07:28 +01:00
phaseloop 32e47bdda6 increase max line size to 120 in pylintrc 2026-01-29 14:04:36 +01:00
Roy-043 c2504d2639 BIM: fix typos in #27213 (#27225) 2026-01-29 13:04:19 +00:00
Roy-043 4f7b473a4a TechDraw update some GUI texts (Title Case mod) (#26849)
* Menu text "Align Horizontal/Vertical Chain Dimensions" to match "Align Oblique Chain Dimensions"

* Menu text "Centerline Between 2 Faces" is not correct.

* Update button text "Replace References With Current Selection" to title case

* Change task panel title from 'Add offset vertex' to 'Offset Vertex'

* Correct text casing for 'Pick points' button

* Correct text casing for 'Pick points' and 'Edit points'

* Fix capitalization of task panel section title

* Correct text case for 'Escape Picking' button

* Update texts for centerline buttons to match menu texts
2026-01-29 14:01:56 +01:00
sliptonic 63dba7bb64 Merge pull request #26951 from chennes/libe57formatTo330
LibE57format to v3.3.0
2026-01-29 06:33:59 -06:00
Chris Hennes a00db89f57 Merge pull request #25196 from pieterhijma/doc-application
Doc: Improve the documentation of Application
2026-01-29 13:31:09 +01:00
Chris Hennes c74ac37488 Merge pull request #25195 from pieterhijma/doc-document
Doc: Improve the documentation of Document
2026-01-29 13:29:43 +01:00
sliptonic 836c0c0d2e Merge pull request #25534 from chennes/msvcBlanketWarningDisabling
Build: Remove blanket disabling of deprecation warnings
2026-01-29 06:27:19 -06:00
PaddleStroke a0847c22c7 Sketcher: fix logic flaw in ConstraintLineByAngle 2026-01-29 13:15:42 +01:00
Chris Hennes 96e4071e2d Merge pull request #27134 from WandererFan/CosCircleLineStyle2
TechDraw: Fix circle centerline default line style
2026-01-29 13:14:39 +01:00
Chris Hennes 63e0c0ff49 Merge pull request #27094 from WandererFan/ProjGroupDragGoesToOrigin4
TechDraw: Projection Group jumps to origin
2026-01-29 12:52:59 +01:00
Kacper Donat 4dda92e599 Part: Fix regressions in MultiCommon boolean operation
This commit addresses two regressions in the MultiCommon feature:

1. Computation Logic: Fixed an issue where the common operation was
   calculated as the intersection of the first shape with the union of
   the rest (the default behavior of makeElementBoolean). It now
   correctly computes the intersection of all shapes sequentially.

2. Compound Handling: Added logic to expand a single compound input
   into its constituent shapes. Previously, a compound was treated
   as a single entity, leading to incorrect intersection results.

To maintain backward compatibility, a hidden 'Behavior' property is
introduced. This ensures that documents created in FreeCAD 1.0, which
rely on the previous behavior, continue to render as originally
intended while new objects use the corrected logic.
2026-01-29 12:40:20 +01:00
Vassily Checkin d3d6459484 Sketcher: fix intermittent crash on sketch exit 2026-01-29 11:42:04 +01:00
Timothy Miller 9eed3a8d77 Part: Fix mirror() regression with non-identity Placement (#26963)
* Part: Fix mirror() regression with non-identity Placement

The makeElementMirror() function incorrectly extracted and pre-multiplied
the shape's Location with the mirror transform. Since BRepBuilderAPI_Transform
already handles shapes with Location correctly, this resulted in the placement
being applied twice, producing incorrect results for shapes with non-identity
Placement.

Fixes #20834

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Part: Add regression test for mirror() with Placement

Adds testTopoShapeMirrorWithPlacement to verify that mirror() produces
identical results regardless of whether the shape is positioned via
direct coordinates or via Placement.

This test would have caught the bug fixed in the previous commit where
shapes with non-identity Placement produced incorrect mirror results.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Fix regression test for mirror with Placement

The test was incorrectly trying to create equivalent boxes using
different methods that don't actually produce the same geometry.
Part.makeBox with a direction vector is not equivalent to setting
a Placement with rotation.

Fixed to use the correct approach that demonstrates the actual bug:
- Method 1: Box with geometry at (0,30,0), identity Placement
- Method 2: Box with geometry at origin, moved via Placement

Both should produce identical mirror results, which they now do
with the makeElementMirror() fix.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Timothy Miller <theosib@zeromark.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:05:35 +01:00
Jacob Oursland 5f0d6b4aef Pixi: pin xcb-util-cursor==0.1.5 to address cursor bug. 2026-01-29 10:07:35 +01:00
Furgo d77e77f9f4 App: Replace getAttributeAs{Integer,Float} with templated getAttribute
Template was introduced in https://github.com/FreeCAD/FreeCAD/pull/19907
2026-01-29 08:44:25 +01:00
wwmayer 2c221883c1 Test: Add test case for issue 24571 2026-01-29 08:44:25 +01:00
wwmayer 2de933793d App: Implement Save() & Restore() for int/float constraint properties
Implement the methods Save() and Restore() for PropertyIntegerConstraint and PropertyFloatConstraint. Handle also the case of a user-defined ranges.

This fixes https://github.com/FreeCAD/FreeCAD/issues/24571.

Hint: For PropertyQuantityConstraint this is not doable because it doesn't support user-defined ranges
2026-01-29 08:44:25 +01:00
graelo b0a9c6ea4b Fix quicklook appex build (#27144) 2026-01-29 08:23:04 +01:00
Roy-043 104089179c BIM: fix title case of GUI texts (#27213) 2026-01-28 21:08:27 +01:00
Alfredo Monclus 928e5e0fbb PD: preview substractive feature check for removed volume 2026-01-28 11:03:30 -03:00
Alfredo Monclus 603fc4b341 PD: hole speficify the tolerance in the boolean op
this fixes issues in which the helix is the only thing being cut and the revolve is ignored
2026-01-28 11:03:30 -03:00
Alfredo Monclus 70b9305f2e PD: hole use a compound instead of a fuse for threads 2026-01-28 11:03:30 -03:00
PaddleStroke 7bcaa766de Sketcher: Fix arc angle dragging distance 2026-01-27 16:33:30 +01:00
David Kaufman 8e04386c67 use CArea::get_accuracy instead of Point::arc_tolerance 2026-01-26 16:27:19 -05:00
PaddleStroke caff52b1ed Assembly: fix sub assembly joint bug (#27172) 2026-01-26 19:23:07 +01:00
sliptonic 1446a91bdc Merge pull request #26534 from alfrix/wayland_fix
Gui: fix skip grabMouse on Wayland
2026-01-26 11:03:58 -06:00
sliptonic bf92b99dad Merge pull request #27137 from Lgt2x/speedup-expression-completer
Expression Completer: speedup property completion
2026-01-26 11:01:30 -06:00
sliptonic 32bb7d94eb Merge pull request #27084 from chennes/catchOSErrOnBadDrive
App: Catch `OSError` during initialization with bad library dir
2026-01-26 10:52:58 -06:00
sliptonic 533b1be963 Merge pull request #27107 from PaddleStroke/asm_3patches
Assembly: Fix Assembly activation issues.
2026-01-26 10:51:28 -06:00
sliptonic ad23c0de17 Merge pull request #27116 from chennes/updateCopyrightYear
Core: Update copyright year to 2026
2026-01-26 10:49:40 -06:00
Chris 3f49793794 cam: attempt to fix issue #26652 ie. fix issue with state of recompute button for tool bit (#26884)
* cam: attempt to fix issue #26652 ie. fix issue with state of recompute button for tool bit

* add unit test for issue #26652

* run precommit

* relocate `purgeTouched()` call to end of `_update_visual_representation` function
2026-01-26 10:42:20 -06:00
David Kaufman cdce2f0ffd [CAM] separate tolerance variable used for arc fitting from tolerance used for section height offsets 2026-01-26 10:35:23 -05:00
PaddleStroke 9b6de80231 Update UtilsAssembly.py 2026-01-26 11:35:38 +01:00
freecad-gh-actions-translation-bot d574623a2e Update translations from Crowdin 2026-01-26 10:11:06 +01:00
PaddleStroke b4025abab6 Assembly: Change Joint References to remove cyclic dependency. (#25513)
* Assembly: Change Joint References to remove cyclic dependency.

* Update JointObject.py

* Update TestCore.py

* Update JointObject.py

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

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

* Update AssemblyUtils.cpp

* Update UtilsAssembly.py

* Update JointObject.py

* small fix for link groups

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-26 09:44:59 +01:00
Chris Hennes 4db0eaf171 Base: Auto-inject copyright year 2026-01-26 09:44:57 +01:00
captain0xff 11d22e326c Gui: Prevent the editing root from getting clipped 2026-01-25 10:46:36 +01:00
Captain 6aee8b81c9 PartDesign: Added interactive gizmo for draft operation (#27111)
* PartDesign: Add interactive gizmo for draft operation

* [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>
2026-01-25 00:00:07 +01:00
pre-commit-ci[bot] 78f38d5c15 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2026-01-24 21:23:51 +00:00
Louis Gombert d10bd05689 Expression Completer: speedup property completion using cache
Cache object property list in expression completer, so it is not rebuilt for every requested index. This helps with performance when an object has a large number of properties.
2026-01-24 22:11:18 +01:00
sliptonic 1a956b0f01 Merge pull request #24617 from petterreinholdtsen/cam-pre-post-dedup
CAM: Ensure pre-/postamble help text matches active values by avoiding duplication.
2026-01-24 12:03:38 -06:00
Morten Vajhøj 356fe85d01 Measurement: Added support for cylindrical surfaces (#27044)
* Added support for cylindrical surfaces

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

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

* Removed unnessecary sign

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

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

* Reverted change

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-24 17:12:16 +01:00
wandererfan b8f09bd758 [TD]clang warnings 2026-01-24 08:40:51 -05:00
wandererfan 29066c1a53 [TD]fix circle centerlines line style 2026-01-24 08:40:46 -05:00
tarman3 6a66c233f1 CAM: Profile - Start point in the middle of edges 2026-01-24 00:38:52 +02:00
PaddleStroke c9041132f9 Sketcher: add switch between radius and diameter (#26794) 2026-01-23 21:39:46 +00:00
Chris Hennes f0280bffad Core: Update copyright year to 2026 2026-01-23 14:35:00 -06:00
Petter Reinholdtsen 80a35a8765 CAM: Ensure pre-/postamble help text matches active values by avoiding duplication
Make sure to use the active default values for preamble and postamble in the help text,
and provide the current default values as the default in the add_argument().

The only exception is uccnc_post.py, where the real default value depend on the use of
--no-comments, and sending the default argument to add_argument() would change behaviour.

This change was inspired by the changes done to fix (#20792) in
d84d9c9bd1.
2026-01-23 19:43:16 +01:00
sliptonic 6c66564062 Merge pull request #21220 from dbtayl/fix_adaptive_bspline
CAM: Adaptive: Fix bspline processing
2026-01-23 12:17:51 -06:00
sliptonic fef12ad011 Merge pull request #26426 from davidgilkaufman/adaptive_fix_small_loops
CAM: Adaptive fix small loops
2026-01-23 12:17:14 -06:00
sliptonic acda0ac0ba Merge pull request #23242 from tarman3/boundary-g0
CAM: DressupBoundary - Fix G0
2026-01-23 12:11:10 -06:00
pre-commit-ci[bot] 31abd38514 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2026-01-23 16:42:54 +00:00
PaddleStroke dfada102f7 Update Document.h 2026-01-23 17:42:12 +01:00
PaddleStroke 9c6ea80757 Update ViewProviderAssembly.cpp 2026-01-23 17:40:01 +01:00
PaddleStroke 44d383b5f2 Update Document.h 2026-01-23 17:39:17 +01:00
PaddleStroke 5e882f1773 Update ActiveObjectList.cpp 2026-01-23 17:38:46 +01:00
pre-commit-ci[bot] b87899f4ca [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2026-01-23 15:19:27 +00:00
paddle 62cbaf7336 Assembly: Fix "deactivated by activating a App::Part, assembly stay in edit"
Fix "Activating a body in a part in an assembly deactivates the assembly and activate the part"
Fix "A manually deactivated assembly is still restoring later"
2026-01-23 16:09:43 +01:00
PaddleStroke abc5f90466 Assembly: prevent assembly collapse when editing sketch. (#26956)
* Gui: View provider: isAutoCollapseOnDeactivation

* Update ViewProvider.h

* Update ActiveObjectList.cpp

* Update ViewProviderAssembly.cpp

* Update ActiveObjectList.cpp
2026-01-23 16:01:06 +01:00
Amon Sha 6a0d59b0c1 Merge pull request #27077 from amon-sha/fix_sketcher_autoscale_segfault
Sketcher: fix segfault during autoscale
2026-01-23 15:18:25 +01:00
Furgo 14aca4f9f2 BIM: add regression and functional test for ArchWall's MakeBlock feature (#27002)
Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2026-01-23 11:37:36 +01:00
wandererfan ea58456534 [TD]avoid crash on missing ViewProviderPage 2026-01-22 19:29:08 -05:00
wandererfan bef6aafa73 [TD]handle AutoDistribute property toggle 2026-01-22 16:14:39 -05:00
wandererfan 3fca5d99ee [TD]fix secondary view drag goes to origin 2026-01-22 16:14:07 -05:00
wandererfan fd014445fb [TD]make QGIProjGroup methods public
- also adds a convenience method to return all the views in the group
2026-01-22 16:13:11 -05:00
wandererfan 5d4495785b [TD]more reliable test for DrawProjGroupItem 2026-01-22 16:11:14 -05:00
PaddleStroke e9c5feb40d Core: Overlay: Improve AutoTask mode (#26768) 2026-01-22 20:24:29 +01:00
Kacper Donat 3fdf405ce8 Merge pull request #24951 from PaddleStroke/asm_jointhighlight
Assembly: Highlight joint elements on joint selection
2026-01-22 20:16:56 +01:00
PaddleStroke bb6832897a Assembly: Solver messages (#24623)
* Assembly: Solver messages

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

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

* Update ViewProviderAssembly.cpp

* Update src/Mod/Assembly/App/AssemblyUtils.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update src/Mod/Assembly/App/AssemblyUtils.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update src/Mod/Assembly/App/AssemblyUtils.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update src/Mod/Assembly/Gui/Commands.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update ViewProviderAssembly.cpp

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

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

* Update src/Mod/Assembly/Gui/TaskAssemblyMessages.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update AssemblyObject.h

* Update AssemblyObject.cpp

* Update Commands.cpp

* Update ViewProviderAssembly.cpp

* Update AssemblyObject.cpp

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

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

* Thank you

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2026-01-22 15:21:13 +01:00
Chris Hennes 9919f77642 App: Handle OSError for library directory 2026-01-22 07:46:46 -06:00
PaddleStroke 54d235f8a5 Sketcher: Show constraint type in the list 2026-01-22 10:36:35 +01:00
Roy-043 27cb425156 BIM: fix variable name error in ArchWall.py (#26991) 2026-01-22 10:22:14 +01:00
PaddleStroke 93abfc4fa4 Sketch: Forward non-default edit mode to base class. (#27063)
Ported from Codeberg commit 66dbf277

Co-authored-by: wwmayer <wmayer@freecad.org>
2026-01-21 22:41:44 +01:00
Chris Hennes 29df72c1a7 Merge pull request #25239 from graelo/quicklook-clean-pixi
feat(macos): add quicklook extensions
2026-01-21 15:27:22 -06:00
Roy-043 457a2eb300 BIM: fix Array Tools dropdown (#27060) 2026-01-21 14:49:08 +01:00
chris 1f213dd498 cmake: fix issue #25048 have cmake fail when pivy and swig use different API versions, update status messages 2026-01-20 19:08:18 -06:00
Yash Suthar 9beca4363a Sketcher: Switch to perpendicular based instead of "de la Hire" in setting minor axis of ellipse
Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2026-01-20 22:54:07 +01:00
PaddleStroke dee4ab6dbd Gui: Fix property checkbox regression (#27049)
* Gui: Fix property checkbox regression

* Update PropertyItemDelegate.cpp

* Gui: property checkbox: toggle with enter when it has focus

* [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>
2026-01-20 20:22:29 +00:00
Roy-043 fbf5cb7e11 Draft: fix snapping to geometry on image
Fixes #26965

`self.snapObjectIndex` should be increased if the object under the cursor is not 'snappable'. This is the same principle as is used in the `cycleSnapObject` function.
2026-01-20 20:54:34 +01:00
wandererfan 396d8c503d [TD]fix vertex display in manual frame mode 2026-01-20 20:05:05 +01:00
Dimitris75 1800ef0f10 CAM Waterline OCL Adaptive
Add - Optimize Linear Paths
Remove - Unecessary BoundBox selection
2026-01-20 04:35:32 +02:00
Max Wilfinger 98c042a587 Recalculate example files 2026-01-19 22:34:15 +01:00
sliptonic cd389c6284 Merge pull request #26988 from Connor9220/AddTaperedBallNose
CAM: Add tapered ball nose toolbit/shape asset
2026-01-19 15:30:29 -06:00
Dan Taylor 4f9ef13571 CAM: Adaptive: Fix handling of BSplines (though TechDraw still has some failures that cascade) 2026-01-19 13:38:33 -06:00
PaddleStroke a49edadde2 PropertyEditor: Fix tab toggling bool (#26955) 2026-01-19 11:10:11 -06:00
Roy-043 0a8392e995 BIM: fix ArchReference Placement if whole file is used 2026-01-19 17:02:56 +00:00
Roy-043 23ce17f4d0 Draft: fix DiscretizeEllipses preference inconsistency (#26953) 2026-01-19 10:51:19 -06:00
PaddleStroke 17ac7dab3d PartDesign: allow makeShellFromUpToFace to update extrusion direction
Updated makeShellFromUpToShape to accept the direction vector by reference.
This allows the method to reverse the direction internally if required
to successfully reach the target face, fixing cases where the extrusion
would otherwise fail or go the wrong way.

Note: While passing the direction as a non-const reference is a quick
fix for this regression, it is acknowledged as non-ideal and should
be considered for future refactoring.
2026-01-19 10:39:31 -06:00
Zheng, Lei 72971d48e5 Part: Do not recompute visuals if shape did not change
This commit registers last rendered shape within the ViewProvider for
Part objects and short-circuits the visuals recomputed if shape did not
change.

Co-Authored-By: Kacper Donat <kadet1090@gmail.com>
2026-01-19 10:39:05 -06:00
Roy-043 c858e09ca5 BIM: fix placement issue in BIM_View (#27015)
* BIM: fix placement issue in BIM_View

* BIM: fix placement issue in BIM_View
2026-01-19 16:30:04 +00:00
PaddleStroke 443b71d96e PartDesign: enable LCS in 'Move after feature' 2026-01-19 16:21:50 +01:00
PaddleStroke af053f19f5 Sketcher: Fix box selection regressions. And make addSelections Print to python (#26869) 2026-01-19 09:19:38 -06:00
Furgo 2d75d1ee8c BIM: add vertical area tests (#26874)
* BIM: Add tests for ArchComponent.AreaCalculator.isFaceVertical

* BIM: test new area calculation fallback case

* BIM: add test for composite complex surface vertical area calculation
2026-01-19 15:12:18 +01:00
freecad-gh-actions-translation-bot 10a540b1bf Update translations from Crowdin 2026-01-19 08:10:24 +01:00
Max Wilfinger ea2c1b0c75 GitHub: Dispatch the diff-link updater immediately after the weekly release is created 2026-01-19 00:09:53 +01:00
Petter Reinholdtsen 78b017130a Base: Removed unused private variable decimals to avoid lint issue.
The linter report 'private field 'decimals' is not used'.  The
getDecimals() method return pack.defDecimals, which was also
used to set the value of the decimals variable in the initializer,
so the decimals variable is redundant.
2026-01-18 20:29:51 +01:00
Syres916 0a45527b8b [Sketcher] Fix serious integer typo 2026-01-18 13:59:12 +01:00
PaddleStroke c5e9e602d1 Assembly: fix crash when measure active 2026-01-18 11:04:46 +01:00
Yash Suthar 7aafb105f7 App: Prevent addObjects from extracting children of nested groups (#26846)
* App: Prevent from extracting children of nested groups

Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>

* Update src/App/GeoFeatureGroupExtension.cpp

---------

Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2026-01-18 02:05:43 +00:00
Yash Suthar cf93c33359 Sketcher: Fix external geometry creation from LCS (#26946)
* Sketcher: Fix external geometry creation from LCS

Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>

* Sketcher : Refactor used freecad_cast

Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>

---------

Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2026-01-18 00:21:45 +01:00
Billy Huddleston 51ea541969 CAM: Add tapered ball nose toolbit/shape asset
Introduced new toolbit and shape models for tapered ball nose tools,
including schema, summary, and integration into CMake and module
imports. Added corresponding SVG and FCStd files to resources.

Updated SVGs so end markers (arrows) render correctly in Qt by
converting markers to paths. Kept a source SVG with markers as
strokes (not paths) for future editing and updates.

Reworked the ToolBitEditor UI to display the toolbit to the right of the
toolbit properties, improving usability. Shrunk the overall height of
the editor window to better fit typical screen sizes.

src/Mod/CAM/CMakeLists.txt:
- Registered new taperedballnose toolbit and shape models and resources
- Added updated SVGs and source SVGs for marker compatibility

src/Mod/CAM/Path/Tool/shape/__init__.py:
- Imported ToolBitShapeTaperedBallNose and added to __all__

src/Mod/CAM/Path/Tool/shape/models/taperedballnose.py:
- Added ToolBitShapeTaperedBallNose class with schema and label

src/Mod/CAM/Path/Tool/toolbit/__init__.py:
- Imported ToolBitTaperedBallNose and added to __all__

src/Mod/CAM/Path/Tool/toolbit/models/taperedballnose.py:
- Added ToolBitTaperedBallNose class with summary and integration

Tools/Shape/taperedballnose.svg, Tools/Shape/taperedballnose.fcstd:
- Added new SVG and FCStd for tapered ball nose
- Updated SVGs for correct marker rendering in Qt
- Kept editable source SVGs with markers as strokes for future updates
2026-01-17 17:33:03 -05:00
graelo 237b0a64b7 fix(macos): check quicklook registration state before registering 2026-01-16 22:25:55 +01:00
Syres916 c14d6f8848 [Sketcher] set vertex size for new sketches to preference otherwise … (#26908)
* [Sketcher] set vertex size for new sketches to preference otherwise set to 4px

---------

Co-authored-by: Chris Hennes <chennes@gmail.com>
2026-01-16 17:52:27 +00:00
graelo 0307de98d4 chore(clean): remove support for Qt5 in src/MacAppBundle/CmakeLists.txt 2026-01-16 16:10:02 +01:00
Chris Hennes 3a553dc4f9 3rdParty/libE57Format: Update subtree to v3.3.0
Merge commit '30858e0f2b6cc88cde5635f1383bc70e40458c78' into libe57formatTo330
2026-01-15 20:30:58 -06:00
Chris Hennes 30858e0f2b Squashed 'src/3rdParty/libE57Format/' changes from d51a32d6ab7..d885ae35147
d885ae35147 {doc} Update CHANGELOG for 3.3.0
9e7c0a25e4c {cmake} Update version to 3.3.0
8b668f19380 {doc} Update CHANGELOG
dcdda358b0f {doc} Add MicMac to README
5fb956155c7 Replace codecvt_utf8_utf16(deprecatred in C++17) with WIN32 API if C++>=17
a99cbb9ac82 {ci} Update actions/checkout to v5
23a37530095 {ci} Fix CI warnings
04a913cc35e {ci, doc} Fix clang -documentation warnings (#327)
7e3079b9a35 {ci} Make Windows CI working again (#325)
bab1d8b2350 {doc} Update CHANGELOG

git-subtree-dir: src/3rdParty/libE57Format
git-subtree-split: d885ae35147dabd0ad9f6a85e46538b27b1b701c
2026-01-15 20:30:58 -06:00
Frank Martinez 3d9f640300 Remove unnecessary warnings during Mod scanning. 2026-01-15 11:06:26 -06:00
Max Wilfinger a141f8a061 Merge pull request #25825 from Lgt2x/vtk-compatibility
SMESH: Patch for VTK 9.6 compatibility
2026-01-15 10:01:38 +01:00
graelo b2e9d87971 chore(sign): update macos signing script 2026-01-15 08:57:47 +01:00
pre-commit-ci[bot] ee29d8c915 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2026-01-15 08:57:47 +01:00
graelo c83d117386 feat(macos): add quicklook extensions 2026-01-15 08:57:47 +01:00
Louis Gombert 261ca3905b Smesh: patch other VTK UG deprecations 2026-01-15 08:55:18 +01:00
Louis Gombert 3a68d91ae3 smesh: update for VTK 9.6 Types array
UG::Types is now a vtkDataArray, that should be accessed through GetCellType
2026-01-15 08:55:18 +01:00
Louis Gombert ff3e419d2e smesh: update for VTK 9.4 polyhedron rework
Implement new compactGrid method based on the upstream smesh version. The compatibility layer was removed for VTK 9.6.
2026-01-15 08:55:18 +01:00
Louis Gombert 6d4ce9e9b8 Remove usages of non thread-safe vtkUnstructuredGrid::GetFaceStream
This overload was deprecated in VTK 9.4 and removed in VTK 9.6. Replace with with the thread-safe version, that was already present in VTK 9.1
2026-01-15 08:55:18 +01:00
Louis Gombert c9acda2a65 Standardize VTK version check pre-processing directives
Check for the build date of the exact introduction of the feature instead of the next tagged version
2026-01-15 08:55:18 +01:00
Louis Gombert bd90728f88 Smesh: Remove the VTK_CELL_ARRAY_V2 compatibility define
This define was introduced in 9.0 for compatiblity with vtk 8.X, and removed for VTK 9.6. As we now support VTK>=9.1, it is not necessary to keep it.
2026-01-15 08:55:18 +01:00
Billy Huddleston c25a8fe75e CAM: Fix Path.Machine.ui/editor install and packaging
Corrected CMakeLists.txt to ensure Path/Machine/ui/editor Python files
are installed and packaged properly. The previous variable name typo
prevented these files from being included in AppImage and install
targets, though local builds worked due to build directory copying.
This resolves missing module errors on some systems and in AppImage.

src/Mod/CAM/CMakeLists.txt:
- Fixed INSTALL command to use the correct
PathPythonMachineUiEditor_SRCS variable for Path/Machine/ui/editor
- Ensured all relevant Python files are included in both build and
install steps
2026-01-15 06:15:18 +01:00
tarman3 d6e9726786 CAM: Drilling - Fix regression after #26584 (#26827)
* CAM: Drilling - Fix regression after #26584

* CAM: Linking generator - Fix machinestate handling

Fix linking generator for drilling

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

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

* Add remaining logic to terminate canned cycles appropriately (#2)

* sorted heights

* Refactor buildPostList

Introduces early tool prep to the buildpostables.
Allows emitting a T command early to give tool changer
time to index the tool before the M6 tool change command is emitted.

updates unit testing for this use case

Not implemented in postprocessors yet.

fix

* Helper and tests for terminating canned cycles

fix cycle termination

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

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

* CAM: setFeedRate now aware of drilling semantics (#3)

Remove retract plane property
machinestate properly handling z position

* next bugs (#4)

* setFeedRate now aware of drilling semantics
Remove retract plane property
machinestate properly handling z position

* unnecessary import.
Improved linking

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

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

* Fix rendering of canned cycles in G99 mode (#5)

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

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

* fix for collision  (#6)

* collision bug fix

* fix local variable

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

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

---------

Co-authored-by: sliptonic <shopinthewoods@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-15 06:13:58 +01:00
Chris Hennes 19708d4dc1 Merge pull request #26894 from furgo16/ci-ubuntu2404-with-kde-neon-qt6
CI: re-enable and upgrade native Ubuntu build to 24.04
2026-01-14 13:06:59 -06:00
paul d002e0cf46 [ArchWall] Fix: Better Info 0 Width Or 0 Height (#25878)
* [ArchWall] Fix: Better Info 0 Width Or 0 Height

Fix #25338

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

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

* [ArchWall] (Update) Fix: Better Info 0 Width Or 0 Height

Update - Following discussion at https://github.com/FreeCAD/FreeCAD/pull/25878

Fix #25338

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

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

* [ArchWall] (Update 2) Fix: Better Info 0 Width Or 0 Height

Update - Following discussion at #25878
Update 2 - Add translation

Fix #25338

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

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

* [ArchWall] (Update 3) Fix: Better Info 0 Width Or 0 Height
Update - Following discussion at #25878
Update 2 - Add translation
Update 3 - Follow comment on https://github.com/FreeCAD/FreeCAD/pull/25878#issuecomment-3724698834
         - Test of shape further relocated to after self.applyShape()

Fix #25338

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

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

* Improve warning message for ArchWall object

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2026-01-14 18:22:47 +00:00
Furgo 944188790d CI: abandon PySide6 pip approach, try KDE Neon repos 2026-01-14 16:53:15 +01:00
Furgo b7a4df9bf2 CI: reenable Ubuntu native build 2026-01-14 16:53:15 +01:00
Furgo d3629472d6 CI: upgrade Ubuntu native build to 24.04 2026-01-14 16:53:15 +01:00
Roy-043 e4eebe50d0 Add AutoColor handling for sketches in gui_setstyle.py (#25781) 2026-01-14 15:53:31 +01:00
Furgo eef47d9a66 BIM: fix ArchWallGui tests (#26904) 2026-01-14 15:46:53 +01:00
Furgo b842f0e635 BIM: provide better user information when a face horizontality or verticality cannot be determined (#26231)
* BIM: pinpoint failing face for ArchComponent.isVertical()

* BIM: pass face index when checking for verticality

* BIM: keep old comment

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

---------

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2026-01-14 15:42:05 +01:00
PaddleStroke 4cc0a1b718 Assembly: Fix error on open doc in insert tool 2026-01-13 23:48:50 +01:00
Chris Hennes cd6aa97485 Merge pull request #26886 from AjinkyaDahale/sk-fix-symmetric-after-refactor-stage-5
Sketcher: fix `addSymmetric` after refactor stage 5
2026-01-13 15:23:43 -06:00
chris 9f9dc75627 core: qt layout ui: ux/ui: fixes #26048 keep workbench selector visible 2026-01-13 13:51:47 -06:00
PaddleStroke fc82d71c15 Sketcher: Fix symmetry of slot redundancy false positive (#26604)
* Sketcher: Fix symmetry of slot redundancy false positive

Perturb symmetric geometries when using the 'create symmetric constraints' option to avoid numerical singularities in the solver (Jacobian Rank).
If geometry is "perfect", the solver cannot distinguish between the derivative of a Symmetry constraint and an Equal constraint, flagging one as redundant.
2026-01-13 13:48:41 -06:00
Furgo 6812de49a3 BIM: implement baseless walls creation (#24595)
* BIM: Implement smart base removal for Walls

Previously, removing the Base object from an Arch Wall would cause the
wall to reset its position to the document origin and could lead to
unintended geometric changes for complex walls.

This commit introduces a "smart debasing" mechanism integrated into the
Component Task Panel's "Remove" button:

- For walls based on a single straight line, the operation now preserves
  the wall's global position and parametric `Length`, making it an
  independent object.
- For walls with complex bases (multi-segment, curved), a warning dialog
  is now presented to the user, explaining the consequences (shape
  alteration and position reset) before allowing the operation to
  proceed.

This is supported by new API functions `Arch.is_debasable()` and
`Arch.debaseWall()`, which contain the core logic for the feature.

Fixes: https://github.com/FreeCAD/FreeCAD/issues/24453

* BIM: Move wall debasing logic into ArchWall proxy

The logic for handling the removal of a wall's base object was previously
implemented directly within the generic `ComponentTaskPanel` in
`ArchComponent.py`. This created a tight coupling, forcing the generic
component UI to have specific knowledge about the `ArchWall` type.

This commit refactors the implementation to follow a more object-oriented
and polymorphic design:

1.  A new overridable method, `handleComponentRemoval(subobject)`, has been
    added to the base `ArchComponent` proxy class. Its default implementation
    maintains the standard removal behavior.

2.  The `_Wall` proxy class in `ArchWall.py` now overrides this method. All
    wall-specific debasing logic, including the eligibility check and the
    user-facing warning dialog, now resides entirely within this override.

3.  The `ComponentTaskPanel.removeElement` method has been simplified. It is
    now a generic dispatcher that calls `handleComponentRemoval` on the
    proxy of the object being edited, with no specific knowledge of object types.

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

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

* BIM: Add interactive creation of baseless walls

Introduce a new workflow for creating Arch Walls without a dependency on
a baseline object (e.g., a Draft Line).

- The `Arch_Wall` command is enhanced with a "No baseline" mode, controlled
  by a new "Walls baseline" preference, allowing users to create
  placement-driven walls directly in the 3D view.
- The existing `debaseWall` function has been refactored for correctness
  and consistency with the new baseless wall geometry.

Co-authored-by: Yorik van Havre <yorik@uncreated.net>

* BIM: Refactor structure of the Arch Wall command

Refactor the `Arch_Wall` GUI command (`BimWall.py`) for improved
readability, maintainability, and architectural clarity.

- A `WallBaselineMode` Enum is introduced to replace the original
  integer values, making the code self-documenting.
- The monolithic `create_wall` method is broken down into smaller,
  single-responsibility helper functions for each creation mode.
- The `addDefault` method has been removed, with its logic
  integrated into the new structure.

* BIM: Add Draft Stretch support for baseless walls

This commit makes the new baseless Arch Walls graphically editable using
the `Draft_Stretch` tool.

- An API for stretching (`calc_endpoints` and `set_from_endpoints`)
  has been added to the `ArchWall` proxy.
- The `Draft_Stretch` tool is now aware of baseless walls and calls this
  new proxy API to perform the stretch operation, enabling users to
  stretch them.

Co-authored-by: Yorik van Havre <yorik@uncreated.net>

* [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

* BIM: address CodeQL warnings

* BIM: Fix wall alignment for GUI creation of baseless walls

Fixes an issue whereby creating a baseless wall from the GUI would
ignore the selected `Align` property, always resulting in a
center-aligned wall.

- The underlying geometry generation for baseless walls now correctly
  honors the `Align` property passed by the GUI and API.
- To ensure predictable behavior, the implementation uses the same
  geometric convention as walls built from a base object, making the
  `Align` property work uniformly for all wall types.
- This also corrects the behavior of the `Arch.makeWall` function for
  baseless walls.
- Update unit tests to test wall alignment.

* BIM: Refactor wall geometry generation for improved clarity and maintainability

Improves the internal logic for wall geometry creation, addressing CodeQL warnings and enhancing overall maintainability without changing external behavior.

- The `build_base_from_scratch` method is refactored to unify the separate logic paths for single- and multi-layer walls, reducing code duplication.
- A local helper function is introduced to create face geometry, for better modularity and readability.
- In the `_Wall.execute` method, the control flow that relied on implicit type checking is replaced with an explicit strategy pattern for fusing solids, making the logic more robust.
- Variable names are made more descriptive.
- A NumPy-style docstring is added to better document the function.

* Draft: fix stretching of rotated baseless walls

* BIM: add unit test for stretching baseless walls

* BIM: add regression tests for working-plane-relative coordinates and reuse of base sketches

* BIM: Fix baseless wall creation to respect the working plane

Corrects an issue where baseless walls were created using global
coordinates instead of being relative to the active Draft working plane.

The calculated local placement of the wall is now correctly transformed
into the global coordinate system by multiplying it with the working
plane's placement.

* BIM: Ensure unique baselines for subsequent wall creation

Fixes a bug where creating multiple walls with baselines would
incorrectly reuse the same underlying Sketch or Draft Line object.

The object retrieval logic after the `doCommand` call now correctly uses
`ActiveObject` to get a reliable reference to the new object instead of
relying on a hardcoded name.

* BIM: Make the wall's base object label translatable

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

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

* BIM: use singular for consistency with other labels

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

* Fix typo

* BIM: address reviewer's comments about improving object reference passing between Python and FreeCAD contexts, and functions

* BIM: remove defensive programming: the callback is only executed as a result of a user's GUI action

* BIM: use the params API to define WallBaseline parameter

* BIM: add Arch Wall tests for joining wall logic

* BIM: add joining logic

* BIM: re-add ArchSketch support

* BIM: re-add multimaterial support on wall creation

* BIM: address CodeQL warning, remove module duplication

* BIM: fix check for SketchArch module when creating sketch-based walls

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Yorik van Havre <yorik@uncreated.net>
Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2026-01-13 09:30:37 +01:00
tetektoza bb48de8265 Part: Fix Part_Extrude taper angle regression for internal faces (#26781)
* Part: Fix Part_Extrude taper angle regression for internal faces

The taper angle for holes (inner wires) in `Part_Extrude` was not being
negated after the toponaming refactor, causing internal faces to taper
in the wrong direction compared to v0.21.2.

The original makeDraft function correctly handled inner wires by:
- Negating taper for all inner wires in Part_Extrude
- Negating taper only for multi-edge inner wires in PartDesign
This logic was controlled via an isPartDesign function parameter.

When makeElementDraft was introduced for toponaming support, it was
designed to use innerTaperAngleFwd/innerTaperAngleRev fields that were
never ported from realthunder's branch. The cleanup (commit c31ebeeee6)
removed references to these non-existent fields, leaving makeElementDraft
with no inner wire taper handling at all.

So, this fix ports the makeDraft inner wire logic to makeElementDraft by
adding the flag, and counting wires and then triggering proper angle
flip depending on the flag/wire situation.

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2026-01-13 05:52:43 +00:00
PaddleStroke 5792b1173c Gui: Fix broken build in DlgAddProperty.cpp (#26877)
* Gui: Fix broken build in DlgAddProperty.cpp

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2026-01-13 00:01:17 +00:00
PaddleStroke 168cebd41f PartDesign: Extrude: Fix upToShape document not recomputing correctly (#26696)
* PartDesign: Extrude: Fix dir for upToShape

* Update FeatureExtrude.h

* Update FeatureExtrude.h

* Update FeatureExtrude.cpp

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

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

* Update FeatureExtrude.cpp

* Update FeatureExtrude.h

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-12 23:07:47 +00:00
Ajinkya Dahale 14280cdbf7 Sketcher: Add new constraints after running addSymmetric
Missed during refactor
2026-01-13 03:32:15 +05:30
Ajinkya Dahale e1a431d5ee Sketcher: Use new constraint element access in add/getSymmetric 2026-01-13 03:32:15 +05:30
dependabot[bot] 08a738a195 Bump github/issue-metrics from 3.25.4 to 3.25.5
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.25.4 to 3.25.5.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/55bb0b704982057a101ab7515fb72b2293927c8a...67526e7bd8100b870f10b1c120780a8375777b43)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.25.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-12 21:27:08 +01:00
Billy Huddleston 650ebf693e CAM: Add threshold for treating large-radius arcs as linear in simulator
Arc segments with extremely large radius compared to chord length can
cause floating-point precision issues in simulation. This change
introduces ARC_LINEARIZATION_THRESHOLD to treat such arcs as linear,
improving numerical stability in the simulator.

The following g-code was causing erractic behavior in the simulator due
to large-radius arcs:
```
G2 I88775.835760 J-1936991.545892 K0.000000 X102.063107 Y100.102815 Z12.700001
```

src/Mod/CAM/PathSimulator/AppGL/MillPathSegment.cpp:
- Added ARC_LINEARIZATION_THRESHOLD constant
- Updated arc motion detection to treat large-radius arcs as linear
- Improved handling of arc vs. linear segment classification
2026-01-12 10:52:06 -06:00
Gaël Écorchard 9aa1eb2b0c pixi: Add qt6-wayland dependency on Linux
Signed-off-by: Gaël Écorchard <gael@km-robotics.cz>
2026-01-12 10:50:19 -06:00
Roy-043 2019ff051e Draft: fix constrain error if there is no new point (#26868)
* Add None check before constraining new_point

* [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>
2026-01-12 16:12:13 +01:00
Yash Suthar 2a3dd9cfd6 BIM : Preserve Spreadsheet structure (#26736)
Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2026-01-12 16:09:56 +01:00
Pieter Hijma 0537bd6c36 Doc: Add a topic for element mapping 2026-01-12 10:36:11 +01:00
Pieter Hijma 171a14f542 Doc: Improve documentation element mapping 2026-01-12 10:36:09 +01:00
Pieter Hijma 88c2e9122e Doc: Improve the Expression Framework topic 2026-01-12 10:11:54 +01:00
Pieter Hijma 817c8e9dd3 Doc: Improve App::PropertyExpressionEngine docs 2026-01-12 10:11:54 +01:00
Pieter Hijma 8f110b59e7 Doc: Move doc comments in PropertyExpressionEngine
Several doc comments in App/PropertyExpressionEngine.cpp are moved to
header files.
2026-01-12 10:11:54 +01:00
Pieter Hijma 6afb6f7071 Doc: Improve the App::Expression documentation 2026-01-12 10:11:54 +01:00
Pieter Hijma 250b3790dd Doc: Move doc comments in App::Expression
Several doc comments in App/Expression.cpp are moved to header files.
2026-01-12 10:11:53 +01:00
Pieter Hijma fac384d677 Doc: Add a topic for App::link 2026-01-12 10:01:45 +01:00
Pieter Hijma 401400cbcd Doc: Apply cog to Link.h and Link.cpp
Cog is reapplied to create improved documentation for LinkParams.  See
LinkParams.py
2026-01-12 10:01:45 +01:00
Pieter Hijma 16592cae48 Doc: Improve the App::Link documentation 2026-01-12 10:01:43 +01:00
Pieter Hijma 393434026a Doc: Add a topic for App::Application 2026-01-12 09:38:45 +01:00
Pieter Hijma d4a115df06 [Doc] Improve the App::Application documentation 2026-01-12 09:38:42 +01:00
Pieter Hijma df85b59de9 Doc: Improve the topic for App::Document 2026-01-12 09:19:05 +01:00
Pieter Hijma bd3a7c1368 Doc: Improve App::Document documentation 2026-01-12 09:19:03 +01:00
Pieter Hijma c093fd484c Doc: Add a topic for App::DocumentObject 2026-01-12 08:39:53 +01:00
Pieter Hijma 788fe423e8 Doc: Improve App::DocumentObject documentation
It also improves documentation from other files for relevant dependent
functions.
2026-01-12 08:39:48 +01:00
Pieter Hijma d0b1191b2d Doc: Move App::DocumentObject documentation
App::DocumentObject had docstrings both in the cpp file and in the
header file.  All documentation has been moved to the header file. In
cases where documentation existed in both the header and cpp file, the
documentation has been reconciled.
2026-01-12 08:27:51 +01:00
Kacper Donat 47bd6ac99e PartDesign: Recompute preview only if enabled (#26805)
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2026-01-12 07:20:57 +00:00
Pieter Hijma b173365653 Gui: Add common types to Add Property dialog (#26765)
* Gui: Add common types to Add Property dialog

Add a preselection of commonly used types in the Add Property dialog.
The dialog supports now all properties that have an editor.  This
doesn't necessarily mean that the editor is shown in the Add Property
dialog; some properties should not show their editor in the Add Property
dialog, such as vector and placement.

* Gui: Make Add Property dialog Qt 6 compatible

This change stops using a Qt 6.10 feature and makes it compatible with
all of Qt 6.

* Update src/Gui/Dialogs/DlgAddProperty.cpp

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2026-01-12 07:02:11 +00:00
Rahul Paul a628391406 Test: Add copy button (#25979)
* added a copy button which copies all the errors and traceback to clipboard

* removed unused variable

* removed space at end of Copy string

* copied text notification in status bar

* removed unwanted header

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

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

* Test: Address review comments

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2026-01-12 06:35:23 +00:00
Roy-043 95b2a41e78 BIM: fix crazy edge issue with area calculation
Fixes #26777.

The code uses a TechDraw function that considers overly long edges (> ca. 10m) 'crazy'. We need to temporarily change a parameter.
2026-01-11 22:27:11 -06:00
dependabot[bot] 06d490fa4d Bump actions/setup-python from 6.0.0 to 6.1.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/e797f83bcb11b83ae66e0230d6156d7c80228e7c...83679a892e2d95755f2dac6acb0bfd1e9ac5d548)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-11 22:12:14 -06:00
Kacper Donat 4fae2b83f8 PartDesign: Apply pattern transform in Feature not VP
This is followup for https://github.com/FreeCAD/FreeCAD/pull/26563 which
fixed previews for a given file but broke it for others.

This approach should be more robust as it is applied in the Feature
itself and not on view provider level which should give us more precise
control and per feature transform ability.
2026-01-11 20:45:03 -06:00
Kacper Donat 800990bacd Part: Introduce PreviewUpdateScheduler
This commit introduces PreviewUpdateScheduler class that is responsible
to schedule the true recompute of the preview. View Providers (or other
components) can use this service to ask for the preview recompute to
happend at a time that is convinent for a program and that won't impact
performance.

The provided implementation uses Queued Connections in Qt to calculate
preview essentially on next run of the event loop. It allows business
logic in FreeCAD (like property propagation) to execute fully and then
recompute preview once. This greately reduces number of recompute calls
for previews.
2026-01-11 20:32:50 -06:00
Chris 12d1dba109 Build: cmake: fixes #26247 update cmake to work with new required dep lark for BIM (#26407) 2026-01-11 19:55:38 -06:00
Fabio Rossi 419e1822b8 fix hdf5 detection
avoid side-effects of reusing cached variables (defined PCHDF5_FOUND for
pkgconfig and HDF5_HEAD_FOUND for hdf5.h detections)
2026-01-11 19:50:59 -06:00
freecad-gh-actions-translation-bot 7ddee25ec9 Update translations from Crowdin 2026-01-11 19:42:50 -06:00
timpieces 50c22e10ce Macro: Fix shortcuts in macro editor #26807
- The initial commit to block shortcuts in text edit fields
  (particularly for MacOS, where those shortcuts would activate FreeCAD
  functionality rather than text edit functionality) made a wrong
  assumption.
- It assumed that there were no text edit fields where we would want to
  actually use application shortcuts. In retrospect, this was very
  wrong, and I completely missed the macro editor.
- For now, it should be fine to change the field to only cover
  'LineEdit'. I cannot imagine a case where you'd want to (e.g.) save
  text/document from a LineEdit, but if anyone knows of one then please
  let me know.
- This does mean there are some quirks. For example in the materials
  editor, the description is a TextEdit field. Some text editing
  shortcuts won't work in here now (similar to how they didn't before
  the original commit that I made).
- I've since learned that freecad also has a text editor functionality,
  I've tested that now Cmd+S works for save as it should.
2026-01-11 09:52:06 -06:00
luzpaz bfb911792e CAM: fix typo in Path/Main/Gui/Job.py
Fixes source comment typo
2026-01-11 16:22:05 +01:00
Billy Huddleston f071c5950c CAM: Remove file added by accident.
generate_machine_box.py was added to a PR by mistake.  This PR removes it.
2026-01-11 07:10:23 +01:00
sliptonic b5c289eff0 Merge pull request #26533 from Connor9220/Machine
CAM: Add Machine Library and Editor
2026-01-10 14:33:54 -06:00
Roy-043 bfb72a6925 Add files via upload 2026-01-10 12:30:35 +01:00
tarman3 eec27888bc CAM: Boundary Dressup Fix G0 2026-01-10 12:48:03 +02:00
tarman3 bc81a16eb4 CAM: Engrave - Fix regression in Task panel after #22304 2026-01-10 10:04:39 +02:00
Chris Hennes e8af1e42d1 Merge pull request #26811 from kadet1090/ci-fixes
CI: Disalbe ubuntu run temporarily
2026-01-10 00:16:21 -06:00
Billy Huddleston 7094424820 CAM: Refactor Machine Editor UI, replace QToolBox with tabs
Major refactor of the Machine Editor to use QTabWidget for section
navigation. Added tabbed spindle management with add/remove
functionality, split machine configuration into Output Options, G-Code
Blocks, and Processing Options tabs. Updated preferences UI to use tabs
instead of QToolBox.

src/Mod/CAM/Gui/Resources/preferences/PathJob.ui:
- Replace QToolBox with QTabWidget for preferences tabs

src/Mod/CAM/Path/Dressup/Gui/Preferences.py:
- Use QWidget with vertical layout instead of QToolBox for dressup
preferences

src/Mod/CAM/Path/Machine/ui/editor/machine_editor.py:
- Refactor to use QTabWidget for editor sections
- Implement tabbed spindle management with add/remove
- Split configuration into Output Options, G-Code Blocks, and Processing
 Options tabs
- Update post processor selection logic

src/Mod/CAM/Path/Main/Gui/PreferencesJob.py:
- Update to use tabWidget instead of toolBox

src/Mod/CAM/Path/Tool/assets/ui/preferences.py:
- Use QWidget and direct layout instead of QToolBox for asset
preferences
2026-01-09 22:13:16 -05:00
Roy-043 fe86abea92 TechDraw: fix-wrong sWhatsThis for align-commands
sWhatsThis should match the command name.
2026-01-10 00:48:40 +01:00
Kacper Donat ca1c5eb322 CI: Disable ubuntu run temporarily 2026-01-10 00:17:39 +01:00
Kacper Donat 77ee600544 CI: Change github.ref into github.head_ref
This actually allows us to check source branch
2026-01-10 00:13:02 +01:00
Louis Gombert c1b40e3dfc PartDesign: remove preview update on property changed (#26803)
This recompute seemed unnecessary, and caused slowdowns when opening the file and recomputing. This decreases the time necessary to both open and recompute files that use boolean operations, and should not change anything regarding preview computation when the dialog is open.
2026-01-09 23:05:23 +00:00
sliptonic af2d178e57 CAM: Adding retract annotation to drilling commands (#26584)
* Adding retract annotation to drilling commands

checkpoint

* [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>
2026-01-09 19:11:00 +01:00
Roy-043 1eb3742dc7 BIM: Improve ArchStairs Landings code
See https://github.com/FreeCAD/FreeCAD/pull/25278#discussion_r2531791450
2026-01-09 18:46:56 +01:00
sliptonic e9227a6c8a Merge pull request #23980 from davidgilkaufman/adaptive_auto_helix
[CAM] Adaptive automatically pick diameter of helix entrance
2026-01-09 11:46:27 -06:00
sliptonic e45ea4ed13 Merge pull request #25697 from tarman3/profile_numpasses
CAM: Profile - Limit value NumPasses
2026-01-09 11:45:15 -06:00
Louis Gombert 193a789354 CMake: only find Netgen when using internal smesh 2026-01-09 18:42:25 +01:00
Louis Gombert 96f8b3a43b CMake: require Netgen when BUILD_FEM_NETGEN is ON, don't fail silently 2026-01-09 18:42:25 +01:00
sliptonic b27eaa5387 Merge pull request #25842 from tarman3/slot_clearance
CAM: Slot - Remove duplication move to clearance height in the end
2026-01-09 11:42:15 -06:00
sliptonic 4b3353bcb9 Merge pull request #26127 from tarman3/tag_tol
CAM: Tag Dressup - Tolerance
2026-01-09 11:36:09 -06:00
sliptonic 1427969fbc Merge pull request #26128 from tarman3/engrave_tol
CAM: EngraveBase - Tolerance
2026-01-09 11:35:51 -06:00
sliptonic 4e008d04e5 Merge pull request #26321 from tarman3/job_setCenterOfRotation
CAM: Job - Fix setCenterOfRotation()
2026-01-09 11:34:49 -06:00
wmayer b180728b9d Assembly: Improve const correctness 2026-01-09 18:09:48 +01:00
wmayer 70d8187964 Assembly: Minor refactor in ViewProviderAssembly::findDragMode
Co-Developed-by: PaddleStroke <pierrelouis.boyer@gmail.com>
2026-01-09 18:09:48 +01:00
sliptonic d2d0e7e3e9 Merge pull request #26658 from Dimitris75/CAM---Experimental-Waterline-Minor-Fixs
CAM - Experimental Waterline Minor Fix
2026-01-09 10:49:41 -06:00
sliptonic 36349357ff Merge pull request #26695 from tarman3/rampentry_zmin
CAM: RampEntryDressup - Fix findMinZ()
2026-01-09 10:45:37 -06:00
sliptonic af1742c0db Merge pull request #26553 from Dimitris75/3D-Surface-Rotational-Scan
CAM: Fix 3D Surface Rotational Scan
2026-01-09 10:43:08 -06:00
petterreinholdtsen dd2ab0e9a1 CAM: Dropped trailing percent from fanuc post processor output. (#26617)
* CAM: Dropped trailing percent from fanuc post processor output.

A trailing percent cause one Fanuc controller to hang when the program
is completed when drip feeding G code, and the minicom ascii upload
was unable to complete the upload.

Had to use emergecy stop to get the machine out of the hang.

* CAM: Adjust Fanuc post processor test to no longer expect trailing percent.
2026-01-09 10:40:02 -06:00
Stanislav a5f66f7240 Draft Workbench: Patch for import DXF without CODE30 (Z for POINT) (#26778)
* Patch for DXF without CODE30 (Z for POINT)

Time to time I use DXF file from measurement microscope without Z for POINT.
This patch help me for download this files without errors.

* [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>
2026-01-09 11:00:36 +01:00
PaddleStroke 5339f415be Assembly: Explode radially: prevent click on item 2026-01-08 20:42:12 -06:00
sliptonic 67d280508b more machine cleanup 2026-01-08 19:26:26 -05:00
pre-commit-ci[bot] ef3bbfdc93 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2026-01-08 19:26:25 -05:00
sliptonic 7eb849f4c6 Revise machine 2026-01-08 19:26:25 -05:00
sliptonic 14c23be550 Code cleanup. 2026-01-08 19:26:25 -05:00
sliptonic 8653c25853 Rearranged some properties.
added back bcnc comment output
2026-01-08 19:26:25 -05:00
Billy Huddleston a2e2f5b518 CAM: Remove colons from labels, fix lint, and update imports
Removed explicit colons from all form labels.
Fixed lint warnings and replaced wildcard imports with explicit
imports for clarity and maintainability.

src/Mod/CAM/Path/Machine/ui/editor/machine_editor.py:
- Removed ':' from all form labels
- Fixed lint warnings (missing docstrings, empty except, etc.)
- Replaced wildcard imports with explicit imports

src/Mod/CAM/Path/Machine/models/__init__.py:
- Updated __all__ and imports for explicit API

src/Mod/CAM/Path/Tool/assets/ui/preferences.py:
- Updated imports to use package-level import

src/Mod/CAM/Path/Machine/models/machine.py:
- Added explanatory comments to empty except blocks
- Fixed duplicate variable assignment
- Added missing class docstrings

src/Mod/CAM/CAMTests/TestMachine.py:
- Fixed unused variable warning by using returned filepath
2026-01-08 19:26:25 -05:00
Billy Huddleston 9a23768983 CAM: Add Machine Library and Editor
This PR introduces a machine object and a machine library, along with a
new machine editor dialog for creating and editing *.fcm machine asset
files. The editor is integrated into the CAM preferences panel, with new
Python modules for the dialog and minimal model validation. Machine
management (add, edit, delete) is now available in the CAM asset
preferences panel.

Key Features:
- Machines now have a type and units property. The machine type can be
used to distinguish between different classes of machines (e.g., mill,
lathe, laser).
- Machine units are stored internally and in the .fcm JSON file as
metric. Note: This differs from how toolbits work (which store units in
their native units)
- Support for 2-5 axis machines.
- Support for multiple spindles (up to 9)
- Processor defaults
- JSON Text Editor with basic validation and line numbers.
2026-01-08 19:26:25 -05:00
Max Wilfinger 5fbd150b18 Part: Fix orientation of internal shells of a solid (#26717)
* Part: Fix orientation of internal shells of a solid

If a solid consists of multiple shells then it can happen that the
internal shells have incorrect orientation that leads to a broken solid.

This fixes issue https://github.com/FreeCAD/FreeCAD/issues/24994

* Part: Add method Feature::fixSolids

This method explicitly checks for solids with the error
'BRepCheck_EnclosedRegion' that means that internal shells of a solid
are wrong.

Using ShapeFix_Solid fixes the solid.

---------

Co-authored-by: wwmayer <wmayer@freecad.org>
2026-01-08 10:35:26 -06:00
Max Wilfinger 3616611ea3 Gui: Handle exception in showValidExpression (#26721)
* Gui: Handle exception in showValidExpression

If an exception is raised inside showValidExpression() because the
expression cannot be evaluated then handle the exception and show it as
invalid expression.

This fixes issue: https://github.com/FreeCAD/FreeCAD/issues/26501
---------

Co-authored-by: wwmayer <wmayer@freecad.org>
2026-01-08 10:34:12 -06:00
Max Wilfinger b0331ed979 PD: Handle reference edge in PolarPattern::getTransformations (#26722)
This fixes issue https://github.com/FreeCAD/FreeCAD/issues/24700

---------

Co-authored-by: wwmayer <wmayer@freecad.org>
2026-01-08 10:31:42 -06:00
Max Wilfinger 78dba6c4a9 Adds an automatic compare link to the weekly release notes. 2026-01-08 10:20:11 -06:00
tetektoza 887c8d3bdf Sketcher: Fix crash when applying constraints during selection batching
Currently, the selection batching optimization introduced in #26663
stores ElementItem/ConstraintItem pointers in a buffer to be processed
on the next event loop cycle via `QTimer::singleShot`.

When a constraint is applied,
`slotElementsChanged()/slotConstraintsChanged()`
rebuilds the list widget, destroying all items. However, the selection
buffer was not cleared, leaving dangling pointers. When
`processSelectionBuffer()`
executed, it attempted to call `QListWidget::row()` on deleted items,
causing a segmentation fault.

So, this patch fixes it by clearing `selectionBuffer` when the list is
rebuilt, since the buffered pointers are invalidated anyway.
2026-01-08 10:17:35 -06:00
PaddleStroke 830329f0fc Add files via upload 2026-01-08 14:46:06 +01:00
tetektoza 0baf444c3e Revert "PartDesign: Bake in geometry transform after boolean"
This reverts commit 527b2de560.

The `bakeInTransform()` call uses `transformGeometry()` which converts
planar faces to BSplineSurfaces. This prevents the refine algorithm
(BRepBuilderAPI_RefineModel) from detecting and merging coplanar faces,
breaking the Refine option for Boolean operations.

This matches Part WB's Boolean behavior which does not use
`bakeInTransform()` and has working refine functionality.
2026-01-08 13:40:52 +01:00
Kacper Donat 8dffa07978 Merge pull request #19132 from tritao/base-remove-boost-signals
Base: Remove Boost-based signals and switch to `FastSignals`.
2026-01-08 12:41:29 +01:00
Saksham Malhotra db8c90b788 Fix sketch redundancy warning (#26064) 2026-01-08 07:53:26 +00:00
PaddleStroke 73a021ca1a Assembly: Ground joint tooltip update (#25852) 2026-01-08 03:52:41 +00:00
tritao 69058376e6 Base: Remove Boost-based signals and switch to FastSignals. 2026-01-07 21:16:16 +00:00
PaddleStroke 11c709d4df Merge pull request #26720 from PaddleStroke/patch-971612
Measure: Fix build failure of new MeasureDiameter
2026-01-07 18:49:39 +00:00
Joao Matos 4ed69332c5 FastSignals: Remove custom C++17 and libc++ build flags. 2026-01-07 15:22:40 +00:00
Joao Matos dc16fe1163 FastSignals: Fix Clang Tidy issues. 2026-01-07 15:22:40 +00:00
Joao Matos d11beca852 FastSignals: Replace ATOMIC_VAR_INIT usages with C++ 20 brace init.
Fixes the following issue:

```
Warning:
/Users/runner/work/FreeCAD/FreeCAD/src/3rdParty/FastSignals/libfastsignals/include/fastsignals/connection.h:76:32:
warning: macro 'ATOMIC_VAR_INIT' has been marked as deprecated
[-Wdeprecated-pragma]
   76 |         std::atomic<bool> m_blocked = ATOMIC_VAR_INIT(false);
      |                                       ^
```
2026-01-07 15:22:40 +00:00
Joao Matos cb69623d1f FastSignals: Fix stress tests. 2026-01-07 15:22:40 +00:00
Joao Matos 9d9b17f972 FastSignals: Build as static library by default. 2026-01-07 15:22:40 +00:00
Joao Matos 95009abb1a FastSignals: Silence warning. 2026-01-07 15:22:40 +00:00
Joao Matos 3e9dbad671 FastSignals: Remove MSVC autolinking. 2026-01-07 15:22:40 +00:00
Joao Matos 4dbc9a8247 FastSignals: Normalize namespace to fastsignals. 2026-01-07 15:22:40 +00:00
Joao Matos 2e8ba02295 FastSignals: Update Catch2 to latest v2 version. 2026-01-07 15:22:40 +00:00
Joao Matos f09bf67217 FastSignals: Add missing <cstdef> include. 2026-01-07 15:22:40 +00:00
Joao Matos 158cf6616e FastSignals: Reorganize include and src folder. 2026-01-07 15:22:40 +00:00
Joao Matos dd24bd47e2 FastSignals: Normalize CMake files. 2026-01-07 15:22:40 +00:00
Joao Matos c045cd68c9 FastSignals: Remove unused build files. 2026-01-07 15:22:40 +00:00
Joao Matos af30d785bd 3rdParty: Add FastSignals library. 2026-01-07 15:22:40 +00:00
wmayer f9cbeb91b1 Simplify code using xerces namespace 2026-01-07 14:37:59 +01:00
Kacper Donat ad0ad85b77 CI: Limit backports to pixi only 2026-01-07 07:11:30 -06:00
jffmichi ae8412468a CAM: fix Radius Mill TipDiameter resetting 2026-01-07 11:53:35 +01:00
Krrish777 123a142292 Improve error message for empty transformed features 2026-01-07 10:20:24 +01:00
xtemp09 58b5820731 Merge pull request #23743 from xtemp09/fem-fix
[FEM] Modernize `QObject::connect` with the new syntax in FEM
2026-01-07 10:18:14 +01:00
aditya dubey a84c748b32 Merge pull request #26057 from TONY8779/fix-fem-existance-typo
Fix typo in FEM module: 'existance' -> 'existence'
2026-01-07 10:17:09 +01:00
Max Wilfinger 3cdc42fd58 Merge pull request #25897 from marioalexis84/fem-magnetic_flux_density 2026-01-07 10:15:20 +01:00
Louis Gombert ec7bbbfdd4 TechDraw: improve draw performance
call 'boundingRect' only after all items have been drawn, using a custom 'addToGroup' function that does not trigger an update.
2026-01-07 09:28:08 +01:00
Krish Sharma 850ad9e0fc Gui: Reorder Add Property dialog fields to Name-Value-Group-Type (#26567)
* Gui: Move Tooltip field after Value field in Add Property dialog

* Gui: Reorder Add Property dialog fields to Group-Type-Name-Value-Tooltip
2026-01-07 09:24:16 +01:00
Leandro Heck d0c7ab7d62 Sketcher: Support Bezier and Offset curves as external geometry (#25144)
* Sketcher: Support Bezier and Offset curves as external geometry

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

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

* Sketcher: Fix adding projection of external arc of circle

In processEdge() it's checked if first and last point of the projected arc of circle are almost equal. If yes then a full circle
is assumed but this conclusion is not necessarily correct because it's still possible that the external arc of circle is very
short. The better criterion is to check the parameter range of the arc of circle.

See also: https://github.com/FreeCAD/FreeCAD/pull/25144#issuecomment-3502916685

---------

Co-authored-by: wwmayer <wmayer@freecad.org>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-07 09:23:28 +01:00
Max Wilfinger e9a66713ef Merge pull request #22951 from AjinkyaDahale/sk-refactor-stage-5
[Sketcher] Stage 5 of refactors
2026-01-07 09:23:10 +01:00
mac-the-bike f548697603 FEM: Addition of "half cycle" animation (#24129)
* Animation of Results - addition of half cycle

* Delete src/Mod/Fem/Gui/Resources/ui/ResultShow.ui

* Delete src/Mod/Fem/femtaskpanels/task_result_mechanical.py

* Delete src/Mod/Fem/femviewprovider/view_result_mechanical.py

* Add files via upload

* Add files via upload

* Add files via upload

* Update view_result_mechanical.py

* Update task_result_mechanical.py

* Update task_result_mechanical.py

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

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

* Delete user_guide_animate.txt

* Delete results.png

---------

Co-authored-by: mac-the-bike <mac-the-bike@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-07 09:22:07 +01:00
PaddleStroke 8bfbeac40f PartDesign: Enable drag and drop of shapeBinders (#25264)
* PartDesign: Enable drag and drop of shapeBinders

* [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>
2026-01-07 09:21:58 +01:00
Kavin Teenakul 5e482a8310 [Std_Measure] Add diameter measurement (#24853)
* Add diameter measurement support

* change author name and change icon

* correct svg size to 64x64

* Update src/Mod/Measure/App/MeasureDiameter.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* somehow to icon color is undefine in inkscape, change to black

* Revert "somehow to icon color is undefine in inkscape, change to black"

This reverts commit 2277c1b9f4a7ab7519856986e2d6aec6e37ebf3e.

	modified:   src/Mod/Measure/Gui/Resources/icons/Measurement-Diameter.svg

* fix black color icon

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2026-01-07 09:16:24 +01:00
Kacper Donat 77a43c55ef Merge pull request #26703 from tetektoza/fix/25840_draw_parts_of_constraints_ontop_of_others
Gui: Render constraint text, arrowheads and constraint icons above geometry lines
2026-01-07 05:39:05 +01:00
tetektoza b1fdf659d8 Sketcher: Disable depth testing for constraint icons
Add `SoDepthBuffer` nodes around the constraint group to disable depth
testing for constraint icons. This ensures icons render on top of
geometry lines regardless of Z position, improving visibility and
selectability.
2026-01-06 20:08:35 +01:00
tetektoza 4aa4f2663e Gui: Render constraint text and arrowheads above geometry lines
Add Z offset for arrowheads and explicitly enable depth testing for
constraint lines in SoDatumLabel. This ensures constraint lines render
below geometry (respecting zConstr level) while text and arrowheads
render on top for better visibility and selection.
2026-01-06 20:07:25 +01:00
drwho495 9b64da827a TopoNaming: Improve ElementMapVersion definition. (#26691)
This change makes the program only mark an object's ElementMapVersion with the "1" prefix if the object has a hasher AND an element map.
2026-01-06 15:36:19 +00:00
tarman3 22f40741ee CAM: LeadInOut - ArcZ following profile 2026-01-06 14:59:25 +02:00
tarman3 2d33855432 CAM: RampEntryDressup - Fix findMinZ() 2026-01-06 10:11:40 +02:00
pre-commit-ci[bot] c19eb5c0e0 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2026-01-06 01:40:39 +00:00
Ajinkya Dahale 9791d3f6d5 Sketcher: Override clang-format for some readability
See https://github.com/FreeCAD/FreeCAD/pull/22951#discussion_r2314544159.
2026-01-06 07:08:17 +05:30
Ajinkya Dahale 9000dc3c70 Sketcher: Add test stubs for SketchObject::addCopy() 2026-01-06 05:59:10 +05:30
Ajinkya Dahale e9469d93cc [Sketcher] Use replaceGeometries() in join() 2026-01-06 05:59:10 +05:30
Ajinkya Dahale 50a091c0ca [Sketcher] Use auto where possible 2026-01-06 05:59:10 +05:30
Ajinkya Dahale c02969da9c [Sketcher] Refactor SketchObject::updateGeometryRefs() 2026-01-06 05:59:10 +05:30
Ajinkya Dahale 9993cc123c [Sketcher] Refactor SketchObject::onChanged()
Break into pieces depending on which property has been passed.
2026-01-06 05:59:10 +05:30
Ajinkya Dahale e34d6604d7 [Sketcher] Refactor removeAxesAlignment()
Use switch case for more readability, and move some if and for indentations
2026-01-06 05:59:10 +05:30
Ajinkya Dahale abc3c74abd [Sketcher] Refactor SketchObject::validateExpression() 2026-01-06 05:59:10 +05:30
Ajinkya Dahale 585ce5ec03 [Sketcher] Refactor SketchObject::migrateSketch()
Manipulate some if-else statements, for loops, and possibly replace them with
std algorithms.
2026-01-06 05:59:10 +05:30
Ajinkya Dahale 169a10c7d2 [Sketcher] Refactor some if-else statements in SketchObject 2026-01-06 05:59:10 +05:30
Ajinkya Dahale 0c2f4df8d5 [Sketcher] Refactor addSymmetric and getSymmetric
Rearrange some if-else and use `std::find_if` instead of looping.

[Sketcher][WIP] Refactor `getSymmetric` and `addSymmetric`
2026-01-06 05:59:10 +05:30
Ajinkya Dahale 78cdd8d59d [Sketcher] Refactor delExternalPrivate() 2026-01-06 05:59:10 +05:30
Ajinkya Dahale bf51899580 Sketcher: [test] Add test for addExternal and delExternal 2026-01-06 05:59:10 +05:30
Ajinkya Dahale 0ea4c7c280 [Sketcher] Move some checks to Constraint 2026-01-06 05:59:10 +05:30
Ajinkya Dahale 38a0443195 [Sketcher] Use range-for loop where straightforward 2026-01-06 05:59:04 +05:30
Ajinkya Dahale db5ffb4769 [Sketcher] Refactor SketchObject::addCopy()
if and for rearrangement for readability.
2026-01-06 05:42:44 +05:30
Ajinkya Dahale 43a257a1cb [Sketcher] Refactor SketchObject some more 2026-01-06 05:42:44 +05:30
Ajinkya Dahale 8e46e74ee5 [Sketcher] Refactor based on loops and extraction into functions
May contain some untested changes
2026-01-06 05:42:44 +05:30
Ajinkya Dahale a16be08159 [Sketcher] Refactor some loops for understandability
Changes include:
1. Modernize `for` loops with range whenever possible.
2. Flip `if` statements for a "flatter" flow.
3. Use internal functions for repeated identical tasks.
2026-01-06 05:42:44 +05:30
Ajinkya Dahale ca97889e47 [Sketcher] Refactor SketchObject:validateExternalLinks() 2026-01-06 05:42:44 +05:30
Ajinkya Dahale 9c87e26280 [Sketcher][test] Add tests for replaceGeometries() 2026-01-06 05:42:44 +05:30
Ajinkya Dahale 404482f48e [Sketcher] Fix issue in replaceGeometries when more old than new 2026-01-06 05:42:44 +05:30
Adrian Insaurralde Avalos ede7013f55 set BUILD_DYNAMIC_LINK_PYTHON=OFF for mac and linux release builds
fix regresion #25098
2026-01-05 15:59:05 -06:00
WandererFan cc707c98eb TechDraw: Axo Dimension Fixes (#26445)
* [TD]fix dim text on wrong side of dim line

- this fixes the problem when the dimension line is +/- vertical

* [TD]Avoid use of CosmeticVertex for Axo Dimension

* [TD]fix CI warnings re unused variable

* Update DrawViewPyImp.cpp per review comments.
2026-01-05 19:31:17 +00:00
Chris Hennes a985f63e25 Merge pull request #26554 from PaddleStroke/patch-106258
Sketcher: Reverse #25478 and #26033 and fix #13852
2026-01-05 08:50:47 -09:00
PaddleStroke 0fa707c523 Sketcher: Speed up large bulk Selection in edit (#26663)
* Sketcher: Speed up large bulk Selection in edit

* Update ViewProviderSketch.cpp

* Update src/Mod/Sketcher/Gui/TaskSketcherConstraints.cpp

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2026-01-05 17:41:45 +00:00
wandererfan f64408de2e [TD]prevent frames on exported/printed page 2026-01-05 17:28:04 +00:00
wandererfan fa8e81f0d6 [TD]restore view frame toggle in context menu
#This is the commit message #2:
2026-01-05 17:28:04 +00:00
wandererfan c95ce2c06d [TD]remove obsolete preference 2026-01-05 17:28:04 +00:00
Ryan Kembrey bfd3fc7268 TechDraw: Implemented View Frame Mode preference 2026-01-05 17:28:04 +00:00
PaddleStroke 21f0d44320 Sketcher: Fix selection & zoom lag in large sketches (#26671)
* Sketcher: Fix selection & zoom lag in large sketches

* Update src/Mod/Sketcher/Gui/EditModeConstraintCoinManager.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2026-01-05 17:22:10 +00:00
sliptonic 962db90dc7 Merge pull request #26647 from Connor9220/FixToolbitLabelAndControllerNaming
CAM: Fix duplicate label issues with toolbits
2026-01-05 11:15:02 -06:00
Roy-043 530aba61db BIM: remove v1.1 Sill Height code (#26641) 2026-01-05 18:09:49 +01:00
Yash Suthar 9e22524e11 Core: Fix premature merge of property in debug mode
Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2026-01-05 17:51:47 +01:00
wandererfan dc0901839e [TD]prevent crash on cosmetic element delete 2026-01-05 07:43:55 -09:00
Kacper Donat 2682d68809 Sketcher: Use correct namespace for tr functions in DSH
The `lupdate` tool from Qt used to extract translations from files was
not in sync with what the macros defined in the code. The mismatch came
from two places:

1. The DrawSketchHandeler used non fully-qualified name for the
   context whereas lupdate assumed the FQN.
2. Deriving DrawSketchHandlers did not override the translate method
   context to their own class names while lupdate assumed that they do.

While it's not fully clear if what `lupdate` does here is correct
(it's a lot of assumptions) it's way easier to fix our metadata than
fight with lupdate.
2026-01-05 07:42:59 -09:00
WandererFan 7abdbe0ce0 Surface: Provide geometry to Measure module (#26479)
* [Surf]provide geometry to Measure

* [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>
2026-01-05 17:39:06 +01:00
PaddleStroke dfbdb2005c Update CommandCreateJoint.py 2026-01-05 16:25:50 +01:00
PaddleStroke ae075c1a73 Assembly: RackPinion tooltip fix 2026-01-05 16:25:50 +01:00
PaddleStroke 450789e77b Sketcher: Fix text sometimes reversed when switching from one sketch edit to another.
Sometimes when user would switch from editing one sketch to edit to another sketch by double clicking on the new sketch, without living the previous sketch, it would then render the text of constraints backward. This was happening because the unsetEdit of the previous sketch was clearing the selection and adding the old sketch as selected. Then the new setEdit was failing to find the correct editing placement resulting in backward text.
2026-01-05 16:17:04 +01:00
PaddleStroke 26723cf209 Sketcher: Reverse #25478 and #26033 2026-01-05 16:17:04 +01:00
luzpaz 9fde6cbac0 BIM: Fix tooltip string in dialogLibrary.ui
Removes ellipsis from tooltip.  
Not eligible for backport.

Fixes https://github.com/FreeCAD/FreeCAD-translations/issues/344
2026-01-05 13:25:13 +01:00
Captain 2b97d553f9 PD: fix gizmo direction when the calculated point lies outside the face (#26616)
* PD: fix gizmo direction when the calculated point lies outside the face

* [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>
2026-01-05 12:44:01 +01:00
marioalexis 92529da3fc Fem: Add support for 2D geometries to SectionPrint 2026-01-05 08:57:07 +01:00
freecad-gh-actions-translation-bot 2592406b35 Update translations from Crowdin 2026-01-05 08:47:20 +01:00
luzpaz 1559e8a9cf BIM: Fix typo in ArchComponent.py documentation
Removes ellipsis to avoid confusion for translators.

Fixes https://github.com/FreeCAD/FreeCAD-translations/issues/341
2026-01-05 07:10:10 +01:00
luzpaz 0cf92f28c7 CAM: Fix typo in tooltip for ToolBitLibraryEdit.ui
Modifies 'tool bit' to 'toolbit'.

Fixes https://github.com/FreeCAD/FreeCAD-translations/issues/339
2026-01-05 07:08:39 +01:00
luzpaz cd221ba09d BIM: Update tooltips for row-related actions
Modifies tooltips that mention 'line(s)' and swaps them for the correct nomenclature, 'row(s)' 

Fixes https://github.com/FreeCAD/FreeCAD-translations/issues/343

cc @chennes
2026-01-05 07:08:19 +01:00
pre-commit-ci[bot] 60f76ede3e [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2026-01-05 00:46:36 +00:00
Dimitris75 af55805030 CAM - Experimental Waterline Minor Fix
- Offset and None cut Pattern error
-  Ensure the tool is directly above the entry point before plunging,
- Retract to SafeHeight instead of ClearanceHeight between transitions
2026-01-05 02:26:56 +02:00
PaddleStroke c8106982de Sketcher: Use DenseQR for small sketches to avoid SparseQR rank issues (#26559) 2026-01-04 14:57:13 -06:00
Chris Hennes 212350acb8 Merge pull request #26577 from Roy-043/Draft-fix-regression-in-Pattern-display
Draft: fix regression in Pattern display
2026-01-04 10:44:41 -09:00
Billy Huddleston a7c9cbee9e CAM: Add 0.05 um to V-bit tip diameter to prevent invalid sketch constraints
This commit applies a simple fix to the V-bit tool definition, adding a
small offset (+0.05 um) to the tip diameter. This prevents the sketch
from generating invalid constraints due to a zero or near-zero tip size.

src/Mod/CAM/Path/Op/SurfaceSupport.py:
- Add +0.05 um to tip diameter calculation to avoid constraint errors in
sketches
2026-01-04 10:42:06 -09:00
Chris Hennes 239567c03c Merge pull request #25009 from tetektoza/fix/24290_respect_selectable_option_if_nested_objs
Gui: Respect Selectable property for objects inside Part containers
2026-01-04 10:37:04 -09:00
Kacper Donat c938645843 Gui: Migrate to new styles
Since some time we have new stylesheets based on style parameters. For
compatibility reasons however old stylesheets were left in the project -
this commit removes them by reapplying the theme if old stylesheet is
detected.
2026-01-04 10:33:40 -09:00
Kacper Donat f819011d81 PartDesign: Fix misplaced preview for patterns
Previous solution did not take into account supporting shape transform
which should now be handled correctly.
2026-01-04 10:31:46 -09:00
Billy Huddleston 2a24a539e6 CAM: Fix duplicate label issues with toolbits
Addresses problems caused by the "Allow duplicate object labels in one
document" option. Toolbit sub-objects now always get unique labels by
temporarily disabling this option during copy, preventing expression and
property binding errors. Also ensures tool controllers always use the
"TC: " prefix for consistency.

src/Mod/CAM/Path/Tool/shape/models/base.py:
- Temporarily disable DuplicateLabels during shape copy to enforce
unique labels

src/Mod/CAM/Path/Main/Gui/Job.py:
- Add "TC: " prefix to tool controller names when adding from the Job
panel
2026-01-04 13:39:20 -05:00
tetektoza 3f49f3f059 Gui: Add hidden anchor object to root for transparency (#26590)
* Gui: Add hidden anchor object to the root for transparency

Image planes with transparency failed to render correctly in empty scenes
because OpenInventor's two-pass transparency rendering requires at least
one opaque object to properly initialize the depth buffer.

The fix adds a zero-scaled cube with no material node (making it use
OpenGL's default opaque material) to each image plane's scene graph.
This hidden object:
- Acts as a depth buffer anchor for transparent rendering
- Is invisible (scaled to 0,0,0)
- Has negligible performance impact

This matches the workaround already used in the rotation center indicator
and resolves the issue where image transparency only worked when the
rotation center, grid, or other opaque objects were visible.

* Gui: Exclude hidden anchor from bounding box calculations

Prevents the hidden anchor from affecting "fit all" and other bounding box
operations by wrapping it in `SoSkipBoundingGroup`.
2026-01-03 04:06:26 +00:00
Krrish777 d944df04e1 Fix: Update PartDesign Boolean dropdown immediately before recomputation 2026-01-03 02:41:28 +01:00
PaddleStroke 07756cc838 Part: Toposhape: fix regressions due to changes in getElementTypeAndIndex (#26596)
* Part: Toposhape: fix regressions due to changes in getElementTypeAndIndex

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

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

* Update TopoShape.cpp

* Update TopoShape.cpp

* Update TopoShape.cpp

* Update TopoShape.h

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-02 19:37:09 +01:00
chris 6df651b5c8 partdesign: fix issue #25811 while not breaking #14720 topo naming 2026-01-02 18:52:30 +01:00
PaddleStroke 9f2b0f910b Sketcher: Fix snap to axis not working (#26558)
When snapping to an axis, snapToObject returns false because we should also be able to snap to grid at the same time. Recent changes made the end return to be the initial unmodified position. Breaking snap to axis
2026-01-02 18:10:50 +01:00
Kacper Donat 1dc611fcc1 Gui: Prevent whole-object highlight when picked list is enabled (#26589)
* Gui: Prevent whole-object highlight when picked list is enabled

Removed the logic that forced `onTop=1` when `needPickedList()` is true
in View3DInventorSelection. This was causing the entire object to be
highlighted instead of just the selected sub-element when the "Picked
object list" option was enabled.

* Part: Remove `needPickedList` mat override to prevent rendering artifact

The `needPickedList` check in `SoBrepFaceSet` was triggering
unnecessary material override processing that caused face clipping
artifacts when the "Picked object list" option was enabled in Selection
View. This check has been removed as the picked list functionality works
independently of the rendering path.
2026-01-02 18:09:04 +01:00
PaddleStroke be6be63764 Sketcher: Fix large sketch being laggy (#26598)
* Sketcher: Remove old constraint positioning logic that was making sketcher laggy

* [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>
2026-01-02 16:36:49 +01:00
Roy-043 8e47327323 Part: update some GUI texts (title case mod) (#26591) 2026-01-02 08:25:37 +01:00
tetektoza c66aa58a60 Part: Remove needPickedList mat override to prevent rendering artifact
The `needPickedList` check in `SoBrepFaceSet` was triggering
unnecessary material override processing that caused face clipping
artifacts when the "Picked object list" option was enabled in Selection
View. This check has been removed as the picked list functionality works
independently of the rendering path.
2026-01-01 21:21:03 +01:00
tetektoza 4dcef14bd8 Gui: Prevent whole-object highlight when picked list is enabled
Removed the logic that forced `onTop=1` when `needPickedList()` is true
in View3DInventorSelection. This was causing the entire object to be
highlighted instead of just the selected sub-element when the "Picked
object list" option was enabled.
2026-01-01 21:20:55 +01:00
Roy-043 34441b8101 Draft: fix regression in Pattern display (Refactor texture handling in view_base.py) 2026-01-01 14:04:27 +01:00
Roy-043 21e7fa1e8b Draft: fix regression in Pattern display (add find_coin_node_by_name function)
Adapted existing code attribution and added a new function to find a node by name.
2026-01-01 14:01:34 +01:00
pre-commit-ci[bot] 61e053ffb9 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-31 02:40:09 +00:00
Dimitris75 5883bad32b Fix 3D Surface Rotational Scan
Retract to Clearance Height Before Transition Between Passes
2025-12-31 04:29:42 +02:00
Kacper Donat f5759e580b Merge pull request #26495 from tetektoza/fix/26441_fix_exported_html_file_is_not_valid
Gui: Fix XHTML and X3D export validation and rendering issues
2025-12-30 18:40:39 +01:00
tetektoza df25bd3cdb Part: Preserve child visibility when deleting compound copies (#26509)
* Part: Preserve child visibility when deleting compound copies

Currently, if we have a FC document two compounds, when one of them is a
copy of the other containing same children and we delete the copy
compound to keep the children, their visibility state changes.

The cause of that was a part of code in `onDelete()` method, which was
unconditionally calling `showViewProvider()` on every child object,
without checking if other compounds still claim those children or what
the current visibility should be.

So this patch adds parent-checking logic before changing visibility. The
visibility is only updated if the child is truly orphaned. So in the
scenario where we have the children referenced STILL by some compounds,
the visibility remains unchanged. It only changes when child has truly
no parents.

* Part: Use std::ranges::find for finding parent
2025-12-30 17:22:37 +00:00
tetektoza 80532b78e1 Gui: Add Selectable property to Part containers
Change `ViewProviderPart` to inherit from `ViewProviderGeometryObject`,
giving Part containers the Selectable property. This allows recursive
selectability checks to respect the entire container hierarchy.
2025-12-30 18:12:13 +01:00
tetektoza 57dd04f214 Gui: Use encodeAttribute when escaping XML attributes for XHTML 2025-12-30 17:22:00 +01:00
drwho495 e9ea3d0d25 TopoNaming: Enable migration code for 1.0.X -> 1.1 (#26538) 2025-12-30 13:24:09 +01:00
Roy-043 0ced25c6dc BIM: fix component VerticalArea calculation (#26254) 2025-12-30 09:02:30 +01:00
Alfredo Monclus ab29644276 Gui: fix skip wayland grabMouse since isn't supported 2025-12-29 18:10:28 -03:00
theo-vt cc60502708 Sketcher.scale: Scale label of modified constraints (#26442)
* Sketcher.scale: Scale label of modified constraints

* Sketcher.scale: Narrowing conversion on constraint index
2025-12-29 21:38:12 +01:00
Adrian Insaurralde Avalos 3dce4c831d FEM: sanitize NAN format on frd import
depending on c runtime lib and possibly locale calculix may format NAN differently so we need to sanitize when importing the results
2025-12-29 18:19:57 +01:00
Chris Hennes bb8d4a8095 CI: Update backport Action to use new secret token
When using the default GitHub token, no further Actions are triggered, which means a backport PR is not checked against the normal CI runs, and it should be. This switches to using a token generated by the freecad-ci-runner GitHub account.
2025-12-29 17:59:05 +01:00
Christoph Moench-Tegeder 57b970f795 add pybind11 include path in MeshPart CMakeLists
This could be a return of parts of commit d4feb51402
Without these, the rc1 build fails on FreeBSD with "pybind11/eigen.h not
found" - the layout of the pybind11 directories on the BSDs may differ
somewhat from your typical Linux distribution. But then, on Linux, this
additional include path will just point to an already-known location.
2025-12-29 17:56:31 +01:00
Chris Hennes e858a13a5f Gui: Add explicit find_package for Qt6::GuiPrivate 2025-12-29 17:51:47 +01:00
Roy-043 2292316f22 BIM: prevent crash when switching BIM_View Render Mode
Fixes #24929.

Disabled animations in viewer to prevent crashes.
2025-12-29 17:45:04 +01:00
Chris Hennes 8b9048a784 PD: Add case for when scripts set Midplane=False 2025-12-29 17:42:13 +01:00
Alfredo Monclus 24b9cdb4f9 PartDesign: fix transform removal causing an invalid base feature on the next solid if it was broken itself 2025-12-29 17:41:36 +01:00
Yash Suthar ee7d84bb03 Fix : added empty link check to prevent null entry in document link map (#26406)
Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2025-12-29 17:35:01 +01:00
Rahul Paul 1002bcb398 [MOD] Fix premature evaluation and recursive updates in Image Plane Settings (#26390)
* Fixed image editor

* decoupled the chnage height and width fns

* final fixes
2025-12-29 17:34:29 +01:00
PaddleStroke 20e45231c5 PartDesign: Fix upToFace not working with non-ASCII filenames (#26514)
* PartDesign: Fix upToFace not working with non-ASCII filenames

* Update TaskExtrudeParameters.cpp
2025-12-29 17:33:19 +01:00
freecad-gh-actions-translation-bot 7fe10f7436 Update translations from Crowdin 2025-12-29 11:31:39 +01:00
Roy-043 776b2f2d5a BIM: fix transparency of curtain walls in BIMExample.FCStd
Curtain walls in the BIM example file did not have transparent glass panels.
2025-12-28 07:53:28 +01:00
tetektoza 38bb34ab85 Gui: Clean up XHTML meta tags per Nu validator feedback
- Change http-equiv="Content-Type" to simpler charset="utf-8"
- Remove unnecessary type="text/javascript" from script tag
2025-12-27 19:38:34 +01:00
tetektoza 2ae054e470 Gui: DOCTYPE and structure improvements
Fix X3D standalone export (.x3d):
- Use proper X3D 3.3 DOCTYPE instead of XHTML DOCTYPE
- Remove problematic default namespace declaration
- Use xsd:noNamespaceSchemaLocation for better parser compatibility
- Remove invalid width/height attributes

Fix XHTML/X3DOM export (.xhtml):
- Wrap navigation buttons in <div> (required by XHTML Strict)
- Keep X3D elements unprefixed for X3DOM compatibility
- Add proper XHTML structure with XML declaration
2025-12-27 19:22:28 +01:00
tarman3 39eec0cfff CAM: Slot - Remove duplication move to clearance height in the end 2025-12-27 20:05:10 +02:00
tetektoza fe7bceeb79 Gui: Escape XML special characters in attributes for XHTML
Add escapeXmlAttribute() helper function to properly escape special
characters in XML attribute values:
- Double quotes (") --> &quot;
- Ampersands (&) --> &amp;
- Less-than (<) --> &lt;
- Greater-than (>) --> &gt;
- Single quotes (') --> &apos;
2025-12-27 18:51:52 +01:00
tetektoza 679d4c2397 Gui: Fix XHTML doc structure
- Add missing <title> element in <head> (required by XHTML Strict)
- Add <body> wrapper around content (required by XHTML)
- Add Content-Type meta tag for proper character encoding
- Fix indentation of buttons to be inside body element
2025-12-27 18:48:22 +01:00
sliptonic c5ce65cfb8 Merge pull request #25398 from tarman3/migrateRampDressups
CAM: _migrateRampDressups - fix #25391
2025-12-27 11:31:07 -06:00
Chris Hennes 51d2c88b02 PD: For Body get the color from the tip
Mostly affects STEP export.
2025-12-27 18:29:41 +01:00
Chris Hennes 7da646754a Import: Revert recent STEP file object naming work
After discussion in several recent PR review meetings the Maintainer
team has decided to roll back some recent work on object naming in STEP
files. Inadequate automated testing has led to a situation where every
change made to address one bug introduces another someplace else. It
is difficult to determine which, if any, of these fixes represent an
appropriate path forward, versus fixing a symptom rather than the
underlying problem.

---

Revert "[pre-commit.ci] auto fixes from pre-commit.com hooks"
This reverts commit 59715114f5.

Revert "core: fix various issues exporting step files, ie. #25540 #24962 #25567"
This reverts commit e226e9b06e.

Revert "export: step file preserve last feature when exporting step file, fix issue #25567"
This reverts commit 9c48c9a3e3.

Revert "core: preserve body name in step file when exporting part that contains body with feature, fixes #24962"
This reverts commit 246218b28b.

Revert "Import: STEP export preserve body names (#25042)"
This reverts commit f218c5f25c.

Revert "Import: Export tip when body is selected (#24678)"
This reverts commit 6fd6558040.
2025-12-27 18:29:41 +01:00
Chris Hennes a4bff812d7 PD: Modify tests to use SideType instead of Midplane 2025-12-27 18:28:01 +01:00
sliptonic 92d2e669f2 Merge pull request #26324 from tarman3/array_refactor_PathArray
CAM: Array - Refactor class PathArray
2025-12-27 11:26:48 -06:00
sliptonic 96bec2fd4d Merge pull request #26322 from tarman3/utils_splitArcs_deflection
CAM: Path.Post.Utils.splitArcs() - Fix zero deflection
2025-12-27 11:22:48 -06:00
sliptonic 83f74f32c2 Merge pull request #26422 from Dimitris75/CAM-Fix-Waterline-OCL-Adaptive
CAM: Waterline OCL Adaptive - Fix Linear and Angular Deflection Values
2025-12-27 11:22:21 -06:00
sliptonic ebeb7b50c3 Merge pull request #25841 from tarman3/slot_clearPath
CAM: Slot - Clear path if can not create slot
2025-12-27 11:21:40 -06:00
sliptonic 798ba4d9aa Merge pull request #25374 from tarman3/engrave_baseobject
CAM: Engrave - Remove useless property BaseObject
2025-12-27 11:21:23 -06:00
sliptonic 2d00530225 Merge pull request #22484 from tarman3/ramp
CAM: RampEntry Dressup - Remove X0Y0 from beginning
2025-12-27 11:20:06 -06:00
horseDeveloper 4892154faf Fixing Leftover references from migration from freecadweb.org (#26163) 2025-12-26 11:11:12 -06:00
tetektoza b44d75454f Gui: Respect parent container selectability in nested selections 2025-12-26 13:55:02 +01:00
tetektoza 17543ea69e Gui: Respect Selectable property for objects inside Part containers
Currently if user selects object with `Selectable=false` property which
is nested inside a Part container, for example `Part->Body->Pad`, parent
Part container will get highlighted in the 3D view, even though the user
clicked on a non-selectable child object.

Cause of that is that tree view's `getTopParent()` function resolves
nested objects selections to their top-level container. When a Pad
inside Part is selected, `SoFCUnifiedSelection` was only checking Part's
`isSelectable()` status, even though the target is `Pad`.

So the fix is to resolve subname to get the final target object and
checks its `isSelectable()` status before checking for highlighting.
2025-12-26 12:46:07 +01:00
David Kaufman cab487c27c Document derivation of the new value for MIN_STEP_CLIPPER 2025-12-25 23:41:16 -05:00
David Kaufman 11752b8280 fix warning that breaks the pixi build 2025-12-25 19:19:27 -05:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ f253f453d6 [ Show ]: Update SPDX License Identifiers 2025-12-25 12:07:49 -06:00
Chris Hennes 2fbc36d472 Tools: Add Surface to translations 2025-12-25 19:06:55 +01:00
PhoneDroid a7012e7bc4 [ Sandbox ]: Update SPDX License Identifiers 2025-12-25 12:02:25 -06:00
PhoneDroid 4d0348dd0f [ Robot ]: Update SPDX License Identifiers 2025-12-25 12:01:29 -06:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ 670da3d796 SPDX [ 41 ][ Src / Mod / Sketcher ] (#25135) 2025-12-25 12:00:22 -06:00
PhoneDroid 8abd25c999 [ App ]: Update SPDX License Identifiers 2025-12-25 11:55:37 -06:00
PhoneDroid f6acaa8d4c [ Build ]: Update SPDX License Identifiers 2025-12-25 11:51:30 -06:00
PhoneDroid eeda64c87b [ TemplatePyMod ]: Update SPDX License Identifiers 2025-12-25 11:49:35 -06:00
marioalexis 2d531cc21b Fem: Allow clipping plane in edit mode 2025-12-25 09:19:45 +01:00
marioalexis f44af0929f Fem: Add electrostatic concentrated load 2025-12-25 09:18:57 +01:00
Krzysztof 47d1913544 Core: Extend completer popup list in 'Expression editor', fix size and position adjustment (#25242)
* Core: Fix completer popup adjustment after 'Tab' pressing
Completer popup in Expression Editor is now positioned and sized after pressing 'Tab'. This was missing when feature was added.

* Core: Extend completer popup list to up 20 elements or up to screen edge
Completer popup will now show up to 20 elements or will be limited to screen edge; if limited < 3 rows, popup will be displayed over cursor.

* Core: Fix completer wrapping on secondary screens

* Core: Fix completer positioning when includes long entries

* Core: Fix linter complaints
2025-12-25 09:11:00 +01:00
captain0xff 5cc05a1ab2 Gui: fix linear dragger increments when the multFactor is set 2025-12-25 09:10:27 +01:00
PhoneDroid 86e38348fd [ Dialogs ]: Update SPDX License Identifiers 2025-12-24 22:07:01 -06:00
PhoneDroid 55452aa2ae [ Language ]: Update SPDX License Identifiers 2025-12-24 22:05:23 -06:00
PhoneDroid ca9d9a7a3d [ Inventor ]: Update SPDX License Identifiers 2025-12-24 22:05:07 -06:00
Dimitris75 99a4a98cb3 Fix Linear and Angular Deflection Values
Fix Linear and Angular Deflection Values
2025-12-25 00:16:21 +02:00
Roy-043 4fe0dff1bc Draft: array task panels: add workaround for Building US unit system
Fixes #26276.
2025-12-23 22:01:11 -06:00
Roy-043 5297493a65 BIM: fix AttributeError when snapping for window placement 2025-12-23 21:44:07 -06:00
Rodrigo Olaya Moreno 345a656125 Fix RGB rounding bug in material appearance editor (#26134)
* Fix RGB rounding bug in material appearance editor
* Update code to use color
* getColorHash no longer needs range
2025-12-23 20:20:16 -06:00
Chris eb61ee36a6 sketcher: fix issue #25992 keep snapped position when releasing mosue for updated sketch points (#26102)
* sketcher: fix issue #25992 keep snapped position when releasing mosue for updated sketch points

* Update src/Mod/Sketcher/Gui/ViewProviderSketch.cpp

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-12-23 20:06:51 -06:00
David Kaufman dc7f2c7bfd fix code accidentally reintroduced 2025-12-23 17:14:19 -05:00
David Kaufman 78254763c0 Remove debug code 2025-12-23 17:05:10 -05:00
David Kaufman c5dcacb6bc delete unused code to calculate cut area with clipper 2025-12-23 15:48:51 -05:00
David Kaufman 25ed8965ee clean up code 2025-12-23 15:46:05 -05:00
sliptonic 065fea473f CAM: Fix pure vertical linking move (#26195) 2025-12-23 12:19:32 -06:00
sliptonic a139cef80f Merge pull request #26316 from tarman3/millfacing_icon
CAM: MillFacing - Fix icon active state
2025-12-23 10:58:30 -06:00
sliptonic 2a6e3f8fbe Merge pull request #26413 from MTronics/issue_#26343_CAM_relation_to_stock_gets_lost
Issue #26343: CAM Tasks panel ignores selected Stock
2025-12-23 10:21:45 -06:00
timpieces a2dabd42e0 MacOS: Disable actions while file dialogs are open (#26169)
- Any action part of the application menu will trigger based on shortcut
  when a native file dialog is open
- Another way to fix this is to switch out the application menu, but
  afaict it requires writing native objective-c code. I think that's too
  much complexity just to get cmd+c/cmd+v in these file dialogs
- For now, just disable the actions so that select-all, rotate-left, etc
  don't trigger when pressed in these dialogs
- I've implemented an RAII wrapper to disable this. It should take
  pointers which should be fine because all of these dialog calls are
  blocking (so in principle nothing can change underneath).

I'm quite sure this won't have any adverse effects on other platforms,
but will need help from other developers to test in case.
2025-12-23 09:18:08 -06:00
sliptonic 5124ee33c6 CAM: fix tolerance issue with hole detection (#26404) 2025-12-23 09:12:52 -06:00
sliptonic 2d37220efb Merge pull request #26409 from Connor9220/ToolbitsUnitsMigration
CAM: Add migration for Toolbit Units property
2025-12-23 09:08:06 -06:00
Roy-043 d93da36b41 BIM: ifc_tools.py fix handling of IfcGridAxis
Fix errors found after this linter warning:
https://github.com/FreeCAD/FreeCAD/pull/26219/changes#diff-2f58fe8ffd31a6d9302296668f6280d27d696e1507b259cc42fde224ef10da0eL759
2025-12-23 14:04:46 +00:00
pre-commit-ci[bot] 1763f46abf [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-23 12:07:53 +00:00
MTronics 3a7177764e Issue #26343: CAM Tasks panel ignores selected Stock
The current code in \src\Mod\CAM\Path\Main\Gui\Job.py (line 719) ignores selected stock selections. In case of e.g. cloned stock objects it defaults to the first item in the combolist, showing a wrong stock selection.

The cause lies in comparing different strings to find a label match, but one string object is generic (short name) while the other one has a suffix created during the clone process. The strings never match and the ridgid string comparison fails. I recommend using a partial (needle in haystack) string comparison.
2025-12-23 12:48:14 +01:00
Billy Huddleston 88a28f64c5 CAM: Add migration for Toolbit Units property
This PR adds migration for toolbit units by automatically infering the
Units (Metric/Imperial) from toolbit parameter strings and sets the
Units property if missing. It adds a utility function to detect units
from JSON. This is done at the JSON level during migration to ensure
that all toolbits have the correct Units property set.

src/Mod/CAM/Path/Tool/toolbit/migration.py:
- Infer Units from parameter strings if not set during migration
- Set Units property and log inference
- Refactor migration logic for clarity and reliability

src/Mod/CAM/Path/Tool/toolbit/models/base.py:
- Use Path.Log.debug instead of print when adding Units property

src/Mod/CAM/Path/Tool/toolbit/util.py:
- Add units_from_json() to infer Metric/Imperial from parameter strings
2025-12-23 00:32:47 -05:00
PaddleStroke d15347d2ad Assembly: Fix deletion of joint references to bodies 2025-12-22 22:08:07 -06:00
timpieces 4567d04547 MacOS: Block shortcuts from overriding text input (#14869)
- It seems that on MacOS (vs other platforms), shortcuts for items in
  the application menu are given 'ultimate' priority, and will even take
  precedence over text inputs
- There is a mechanism in QT (I believe designed with mac in mind) to
  try to 'block' these shortcuts and send it to the focus instead. It's
  'Shortcut Override': https://wiki.qt.io/ShortcutOverride
- Initially I was going to only apply this check when it's a Command
  that overrides a known line-editing shortcut, but I figure it's
  simpler to just always apply it when editing text. I can't really
  imagine a user wanting to use an application shortcut while editing
  text, but if there's some compelling use-case for this then let me know
  and I'll add a further filter.

I'm quite optimistic that this won't have any ill-effects on other
platforms, but I'll need help from others to test this.
2025-12-22 21:39:00 -06:00
sliptonic d2daf0fc20 Merge pull request #22304 from tarman3/taskpanel
CAM: Task panel - Select shapes from several objects
2025-12-22 17:07:37 -06:00
sliptonic 8845c1e256 Merge pull request #23149 from Dimitris75/OCL-Adaptive
CAM: Add OCL Adaptive Algorithm to Waterline Operation
2025-12-22 16:47:54 -06:00
sliptonic 9b570424d1 Merge pull request #25049 from phaseloop/v-routing
CAM: improved VCarve routing using "virtual edge backtracking"
2025-12-22 16:44:13 -06:00
sliptonic 4a1b74cf86 Merge pull request #24819 from tarman3/copyOp
CAM: OperationCopy - Allow for all and Recursive copy Dressup
2025-12-22 16:41:36 -06:00
sliptonic 326d423501 Merge pull request #24872 from tarman3/toggle_operation
CAM: ToggleOperation - Allow for Job and Operations group
2025-12-22 16:41:05 -06:00
wandererfan 35d4a849ef [TD]fix handling of non-standard page sizes 2025-12-22 18:46:32 +01:00
marbocub 244282f855 Fix rotation expression errors in handleLegacyTangentPlaneOrientation() (#26058)
* Fix rotation expression handling

- Make added rotation angle unit the same as the original expression unit
- Keep rotated angle expressions within the accepted [-180, +180] range
2025-12-22 11:18:00 -06:00
Kacper Donat 8c399e1fd0 PartDesign: Revolution - add FuseOrder
In older versions of FreeCAD the boolean order was base + result. After
TNP mitigation the order was changed to be result + base. For the
resulting shape that does not matter, but order of edges can differ if
arguments are in a different order.

This can impact refine algorithm which may pick other face as the base
one and result in a differnt shape after refining. This commit restores
previous order. For most files it should not make any difference, but it
may fix some older files.

To support all cases we introduce FuseOrder compatibility property that
will be set to FeatureFirst for files saved with 1.0 to preserve
behavior.
2025-12-22 11:17:27 -06:00
wandererfan 04e2d631bb [TD]fix tearing of page edges 2025-12-22 11:16:15 -06:00
Roy-043 3a5f5d70ee Part: fix Part_EditAttachment unitless input error (#25923) 2025-12-22 11:12:46 -06:00
Florian Foinant-Willig 7b315e80a7 fix %r format spec 2025-12-22 11:04:47 -06:00
Kacper Donat febfd65e59 Gui: Ensure that QuantitySpiBox handles expression properly 2025-12-22 11:00:07 -06:00
Yash Suthar 60bd277d7a UI: Fix select all instances of an object in the tree
Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2025-12-22 15:01:24 +01:00
marbocub 176ef6da4e Sketcher: add reverse mapping correction to Carbon Copy (#25745)
* Sketcher: add reverse mapping correction to Carbon Copy

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

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

* Replace M_PI with std::numbers::pi

* Replace vector initialization with Base::Vector3d::UnitX/UnitY, apply suggestions from code review

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Fix guard clause logic, apply suggestions from code review

* Replace std::numbers::pi with pi via `using std::numbers`

* Fix issues reported by the linter

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-12-22 15:00:49 +01:00
chris 46066e1cca partdesign: pd: fix for issue #25794 2025-12-22 14:58:07 +01:00
Chris 452f9b2087 Part Design: Add sketch sub element names for refs in revolutions (#26227)
* part design: partdesign: pd: fix regression issue #26223 add sketch sub element names for refs in revolutions

* refractor code to remove else blocks as every condition has a return statement, make lsp happy
2025-12-22 14:56:53 +01:00
Alfredo Monclus d9e0fd6251 PartDesign: fix hole clearance not appearing in the taskpanel when switching type 2025-12-22 14:56:09 +01:00
Alfredo Monclus 6729540a78 PartDesign: fix thread depth not shown in taskpanel 2025-12-22 14:55:45 +01:00
Chris Hennes 76bd68e672 PD: Fix missing silent mode check in GetTopoShapeVerifiedFace
Also ensure that all calls to this method actually verify the result.
2025-12-22 14:34:25 +01:00
Furgo 7665675de9 BIM: incremental UX improvements, iteration 1 (#25147) 2025-12-22 13:34:56 +01:00
Kacper Donat 78a6891dae Gui: Remove shortcuts for overlay toggles
Using these commands by mistake can result in broken interface and the
shortcuts are way too easy to hit by mistake. The feature is rarely (if
at all) used - so there is no need to have easy to hit shortcuts.
2025-12-22 13:09:15 +01:00
Kacper Donat 4d712f44c2 PartDesign: Chamfer - migrate Size and Size2 for older files (#26137)
* PartDesign: Chamfer - migrate Size and Size2 for older files

* Apply suggestions from code review

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-12-22 11:52:55 +00:00
freecad-gh-actions-translation-bot 8b7ec488f0 Update translations from Crowdin 2025-12-22 12:40:21 +01:00
Louis Gombert 3601161d80 Part: clean mesh before adding triangulation in setupCoinGeometry
Calling BRepMesh_IncrementalMesh repeatedly would accumulate BRep_CurveRepresentation instances attached to the BRep_TEdges of the shape. We now clean added triangulations before adding a new one, which improves performance in the long run.

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-12-22 12:01:18 +01:00
Roy-043 0af22943b2 BIM: fix deletion of BuildingPart in strict IFC mode (#26219)
* BIM: fix deletion of BuildingPart in strict IFC mode

Add `sg = FreeCADGui.ActiveDocument.ActiveView.getSceneGraph()` to `onDelete`.

* BIM: fix deletion of BuildingPart in strict IFC mode

Explicitly call `obj.ViewObject.Proxy.attach(obj.ViewObject)`.

* BIM: fix deletion of BuildingPart in strict IFC mode

In `ifc_vp_buildingpart` call `attach` from `ArchBuildingPart.ViewProviderBuildingPart`.
2025-12-21 20:16:17 -06:00
Chris 4cd81136b6 Sketcher: Allow live preview of sketch placement (#26033)
along with unit tests
2025-12-21 17:34:30 +01:00
Furgo 0193b1776d BIM: Initialize SketchArch variable before use (#26336) 2025-12-21 10:36:35 +01:00
Furgo 69de78e22d BIM: fix lock removal of Sill property 2025-12-21 10:27:12 +01:00
Furgo bdea3d105f BIM: rename ArchWindow's Sill property to SillHeight and handle one-w… (#26277)
* BIM: rename ArchWindow's Sill property to SillHeight and handle one-way migration

* BIM: properly remove the locked "Sill" property
2025-12-20 22:26:52 +01:00
Louis Gombert cead907a57 SVG export: improve performance (#26149)
* SVG export: use a set to match edges instead of a list

Lookup in edge list becomes O(1), significantly improving SVG export speed

* [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-12-20 22:23:55 +01:00
tarman3 df3f311813 CAM: Array - Refactor class PathArray 2025-12-20 21:03:06 +02:00
tarman3 4f8ed3b1a0 CAM: Path.Post.Utils.splitArcs() - Fix zero deflection 2025-12-20 20:02:29 +02:00
tarman3 daf9b60f27 CAM: Job - Fix setCenterOfRotation() 2025-12-20 19:56:00 +02:00
sliptonic 1b4026ebf0 Merge pull request #26217 from tarman3/array_icon
CAM: Array - Fix ViewProviderArray and icons
2025-12-20 10:11:02 -06:00
tarman3 59aa295ec6 CAM: Array - Fix ViewProviderArray and icon 2025-12-20 10:45:20 +02:00
tarman3 efdabea4e0 CAM: MillFacing - Fix icon active state 2025-12-20 10:17:56 +02:00
Chris Hennes c423e8de08 Addon Manager: Update to 2025.12.19
Minor bug fixes and translation update.
2025-12-20 06:58:03 +01:00
Christoph Moench-Tegeder 4f4f4425aa Include sys/sysctl.h on FreeBSD when using sysctl()
The ApplicationDirectories::findHomePath() on BSD uses sysctl()
to find the path to the running executable. On FreeBSD, we need
to include sys/sysctl.h for that - and as it is not included anywhere
else, add it to the includes directly in front of this function,
with a suitable ifdef.
2025-12-19 20:55:52 -06:00
Roy-043 348eef644b Part: fix Part_EditAttachment nesting handling (#26298)
* Part: fix Part_EditAttachment nesting handling

Fixes #26264.

The previous 'fix' (#25887) did not consider that the object to-be-attached may not be in the global space.

The code in this PR has been tested on the forum:
https://forum.freecad.org/viewtopic.php?p=862968#p862968

* [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-12-19 20:40:37 -06:00
David Kaufman d32c14d1c5 WIP
- starts finishing pass farther down, to avoid looping back for it

This now has all the features to address #19768, but I think I want to
pick out just what is required for that PR
2025-12-19 20:28:20 -05:00
VM4Dim 7cd88534b5 Gui: Fix non-Latin groupName (#26285) 2025-12-19 18:53:16 -06:00
David Kaufman a2d4c7e494 WIP
- rewrote area calculation using floats; it works (compared against
  Clipper as ground truth)
- rewrote boundary approach code
- rewrote min cut/min engage code
2025-12-19 16:40:09 -05:00
Kacper Donat 87b257546f Gui: Wrap strings with QStringLiteral 2025-12-19 13:14:25 -06:00
chris 22552848fd sketcher: fixes issue #26167 no polygon distort when repositioning / constraining 2025-12-19 11:22:20 +01:00
Yash Suthar dbd2bade1e Part: added floating point fallback in PropertyLinks::_updateElementReference
Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2025-12-19 10:52:26 +01:00
sliptonic d48073fbbf Merge pull request #26260 from Connor9220/UpdateTSPSolver
CAM: Add open-route optimizations to point-based TSP solver
2025-12-18 16:11:32 -06:00
Syres916 26cc33ecfb [Core] Fix macro path append to sys.path 2025-12-18 13:19:21 -06:00
Kacper Donat b5d60baa68 Stylesheets: Fix separators appearance 2025-12-18 19:47:51 +01:00
Billy Huddleston a7b6078b1d CAM: Add open-route optimizations to point-based TSP solver
Improves the point-based TSP solver to match tunnel solver behavior
for open routes (no endpoint constraint). Now applies 2-opt and
relocation optimizations that allow reversing or relocating segments
to the end of the route, resulting in better path optimization when
the ending point is flexible. Now links tsp_solver with
Python3::Python and uses add_library for compatibility with FreeCAD
and Fedora packaging.

src/Mod/CAM/App/tsp_solver.cpp:
- Add optimization limit variables for controlled iteration
- Add 2-opt and relocation optimizations for open routes
- Use Base::Precision::Confusion() for epsilon values
- Track last improvement step for efficient loop control

src/Mod/CAM/App/CMakeLists.txt:
- Switch tsp_solver from pybind11_add_module to add_library
- Link tsp_solver with pybind11::module and Python3::Python
- Update include directories for consistency
2025-12-18 12:15:22 -05:00
PaddleStroke 0c1ef0c77f Measure: getPlacement const (#26216)
* Measure: getPlacement const

* Update MeasureBase.h

* Update MeasureBase.cpp

* Update MeasureArea.h

* Update MeasureArea.cpp

* Update MeasureLength.h

* Update MeasurePosition.cpp

* Update MeasureLength.cpp

* Update MeasureRadius.cpp

* Update MeasurePosition.cpp

* Update MeasurePosition.h

* Update MeasureRadius.h

* Update MeasurePosition.h
2025-12-18 14:04:32 +01:00
Kacper Donat fe3dc9f06a Compiler warning cleanup (#26229)
* App: Compiler warning cleanup

* Gui: Compiler warning cleanup

* Assembly: Compiler warning cleanup

* Measure: Compiler warning cleanup

* Sketcher: Compiler warning cleanup

* TechDraw: Compiler warning cleanup

* PartDesign: Compiler warning cleanup
2025-12-18 07:50:26 +01:00
freecad-gh-actions-translation-bot 6c6cff7322 Update translations from Crowdin 2025-12-17 21:10:10 -06:00
Chris Hennes 0ba75a7573 PartDesign: Compiler warning cleanup 2025-12-17 11:08:38 -06:00
Chris Hennes c7c4c6f0cc TechDraw: Compiler warning cleanup 2025-12-17 11:08:38 -06:00
Chris Hennes 50f029edd4 Sketcher: Compiler warning cleanup 2025-12-17 11:08:34 -06:00
Chris Hennes 36332bf9ca Measure: Compiler warning cleanup 2025-12-17 11:08:22 -06:00
Chris Hennes 04a9c1e7b0 Assembly: Compiler warning cleanup 2025-12-17 11:08:12 -06:00
Chris Hennes 0416a5bc0b Gui: Compiler warning cleanup 2025-12-17 11:07:55 -06:00
Chris Hennes 55a55725eb App: Compiler warning cleanup 2025-12-17 10:41:27 -06:00
Furgo e147e5a260 Refactor problem report template for improved previews
Reorder fields so that the problem description will be rendered first in previews.
2025-12-17 11:01:02 +01:00
pre-commit-ci[bot] be6c633d62 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-16 20:57:34 +00:00
Dimitris75 a840988ddb Refactor bounding box and tool path limit calculations
Refactor bounding box calculations for OCL Adaptive algorithm to improve clarity and maintainability.
2025-12-16 22:55:22 +02:00
pre-commit-ci[bot] 5b0cdb2b6d [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-16 20:23:12 +00:00
Dimitris75 93410b264a Override deflection values for OCL Adaptive algorithm
Added logic to override deflection values for OCL Adaptive algorithm to improve topology stability.
2025-12-16 22:18:47 +02:00
PaddleStroke 8fd81d4109 Assembly: Ball drag mode. (#26222) 2025-12-16 19:08:50 +01:00
marioalexis 0f148f6e63 Base: Add millitesla unit 2025-12-16 14:26:31 -03:00
marioalexis bfb0efd5f9 Base: Insert SPDX specifier in parser script 2025-12-16 14:26:31 -03:00
marioalexis e5e1729c35 Fem: Add magnetic shielding example 2025-12-16 14:26:31 -03:00
marioalexis ac878c5eeb Fem: Add magnetic flux density boundary condition 2025-12-16 14:26:31 -03:00
pre-commit-ci[bot] f9bb30217b [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-16 15:39:06 +00:00
Dimitris75 67df5bd709 Use dynamic LinearDeflection and AngularDeflection values
Remove Temporary values from Mesh
2025-12-16 17:37:04 +02:00
sliptonic a13502dccb Merge pull request #26205 from Connor9220/PreserveTSPTunnelExtraData
CAM: Update TSP tunnel solver
2025-12-16 09:31:14 -06:00
Dimitris75 b2ff8c5edc Merge branch 'OCL-Adaptive' of https://github.com/Dimitris75/FreeCAD into OCL-Adaptive 2025-12-16 14:27:21 +02:00
Dimitris75 a6bc504a2a Add OCL Adaptive in Tooltip
Add OCL Adaptive algorithm in UI Tooltip
2025-12-16 14:27:15 +02:00
Saksham Malhotra b7735044c4 PartDesign: move AllowCompound to Base property group (#26180) 2025-12-15 21:45:29 -06:00
Kacper Donat 68f2c6f864 chore: Add code quality problem report form 2025-12-15 21:18:34 -06:00
Kacper Donat a0356796ac Gui: Fix segfault in Safe Mode
This fixes segfault that was caused by changing settings in
FirstStartWidget that triggered change event on not fully intialized
StartView.

It is quick and dirty fix that just disables handling of the event
causing segfault until widget is fully ready. The correct solution would
be to remove the logic that changes settings from the widget (as it
should not be there) and instad move it to another place in pipeline.
This would be however much more work and segfault should be fixed ASAP.
2025-12-15 21:06:51 -06:00
Billy Huddleston 646b0f4492 CAM: Update TSP tunnel solver
Update TSP tunnel solver to match revised Pythonlogic, including
improved early exit, open-ended route handling, and performance tweaks.
Also ensure extra data in tunnel dictionaries is preserved through the
C++/Python interface and add a test for passthrough of extra keys.

src/Mod/CAM/App/tsp_solver.cpp:
- Refactor optimization loop to use lastImprovementAtStep and limit
variables
- Add special handling for open-ended routes (no end point)
- Change epsilon to 10e-6 for consistency with Python
- Cache distance calculations for relocation step

src/Mod/CAM/App/tsp_solver_pybind.cpp:
- Preserve extra keys from input tunnel dicts in output
- Set tunnel index for passthrough

src/Mod/CAM/CAMTests/TestTSPSolver.py:
- Add test to verify extra data in tunnel dicts is preserved through
TSP solver
- Print extra data for debugging
2025-12-15 21:50:51 -05:00
pre-commit-ci[bot] ccf0bdbce0 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-15 23:59:54 +00:00
Dimitris75 96c23f1968 Simplify code and UI
Simplify code and UI
2025-12-16 01:57:45 +02:00
Billy Huddleston 04df03cea1 CAM: Preserve extra tunnel data through TSP solver
Ensures that all extra keys in tunnel dictionaries are preserved after
TSP solving by copying the original input dict and updating solver
results. Adds a dedicated test to verify passthrough of extra data and
prints extra keys for debugging.

src/Mod/CAM/App/tsp_solver_pybind.cpp:
- Copy original tunnel dict and update with solver results to preserve extra keys

src/Mod/CAM/CAMTests/TestTSPSolver.py:
- Add test_09_tunnels_extra_data_passthrough to verify extra data preservation
- Print extra tunnel data in print_tunnels for easier debugging
2025-12-15 16:32:03 -05:00
sliptonic d116764dc3 CAM: Avoid bosses when pocketing. (#24723) 2025-12-15 12:29:28 -06:00
tarman3 3426672ccd CAM: Slot - Clear path if can not create slot 2025-12-15 20:21:16 +02:00
sliptonic 12355f37e9 Merge pull request #25826 from tarman3/pathcommands_qtcore
CAM: PathCommands - Remove unused import QtCore
2025-12-15 11:59:37 -06:00
sliptonic e1e8323dc1 Merge pull request #25839 from tarman3/slot_remove_0
CAM: Slot - Remove .0
2025-12-15 11:58:59 -06:00
sliptonic 44a5960d57 Merge pull request #26123 from Connor9220/AddCommandAnnotationsTests
CAM: Add comprehensive tests for Command constructor annotations
2025-12-15 11:57:28 -06:00
sliptonic bf3a471948 Merge pull request #24726 from Connor9220/TwoOptTSPSolver
CAM: 2-Opt TSP solver
2025-12-15 11:55:20 -06:00
Chris Hennes 10ed34bd4c Gui: Correct UTF-8 support for property names 2025-12-15 18:26:51 +01:00
Roy-043 2efd63614f BIM: ArchReference: fix coin node handling
Fixes #25772.
2025-12-15 17:24:00 +00:00
Chris Hennes 3208b6de5f PD: Don't warn about Midplane on document load 2025-12-15 18:22:31 +01:00
Roy-043 1c8df498f3 BIM: ArchReference: handle transparency-alpha switch
The 'old' DiffuseColor comes in 2 flavors. In v0.21.2 it stores transparency values. In v1.0.2 and v1.1 it stores alpha values. The ArchReference code should handle both. DiffuseColor is still used by BuildingParts in v1.0.2 and v1.1.

The solution is a bit hacky: if 100% transparency occurs we assume we are actually dealing with alpha values.
2025-12-15 17:21:29 +00:00
Chris Hennes 5ba7f207ab PD: Correct is-datum-in-body check 2025-12-15 18:20:04 +01:00
Roy-043 15bb0ee896 BIM: use optimalBoundingBox in getCutVolume 2025-12-15 17:19:56 +00:00
drwho495 88b5cde45f Implement Fix
Switch from checking child tag to checking the materTag
2025-12-15 11:17:42 -06:00
Roy-043 e6e285315c Draft: make Draft_AnnotationStyleEditor dialog wider
Increase AnnotationStyleEditorWidth from 450 to 600 to mitigate #25983.
2025-12-15 11:16:28 -06:00
Kacper Donat aefd2592a8 Gui: Respect both content size and minimum width for buttons
This is a hacky fix for https://github.com/FreeCAD/FreeCAD/issues/23607

Basically after widget is shown or polished we enforce it's minimum size to at
least cover the minimum size hint - something that QSS ignores if min-width is
specified.
2025-12-15 10:17:34 -06:00
Chris Hennes 16032ae34c Merge pull request #25914 from AjinkyaDahale/sk-fix-25281
Sketcher: Handle angle constraint on sketchobject changes
2025-12-15 10:15:13 -06:00
theo-vt 29eeab3624 Sketcher: Do not autoscale if there are blocked geometries 2025-12-15 09:20:20 -06:00
Kacper Donat fc93004c89 Gui: Improve transform UI responsivness
This introduces much faster CenterOfMassProvider#supports method that
can be used as cheap pre-check to see if the object supplied could have
the center of mass and so delay the domputation to a moment where it is
actually needed.
2025-12-15 09:18:27 -06:00
tarman3 7c941987a4 CAM: Profile - Limit value NumPasses 2025-12-15 14:41:22 +02:00
Billy Huddleston 095cdb14a7 CAM: Add comprehensive TSP tunnel solver tests and wrapper function
Added extensive test coverage for the TSP tunnel solver including linear
 tunnels, pentagram diagonals, and complex wire geometries with various
 constraint combinations. Introduced a Python wrapper function for
 tunnel sorting that integrates with the C++ solver.

src/Mod/CAM/CAMTests/TestTSPSolver.py:
- Renumbered existing tests to run in sequential order
(test_01_simple_tsp, test_02_start_point, etc.)
- Added print_tunnels() helper function for displaying tunnel
information with original indices
- Added test_06_tunnels_tsp: Tests 7 linear tunnels with varying
lengths, connectivity, and flipping behavior
- Added test_07_pentagram_tunnels_tsp: Tests pentagram diagonal tunnels
 with no constraints, start+end constraints, and start-only constraints
- Added test_08_open_wire_end_only: Tests end-only constraint on complex
 wire with 8 tunnels including crossings and diagonals

src/Mod/CAM/PathScripts/PathUtils.py:
- Added sort_tunnels_tsp() wrapper function that interfaces with the C++
tsp_solver.solveTunnels()
- Supports allowFlipping, routeStartPoint, and routeEndPoint parameters
2025-12-14 16:45:51 -05:00
chris 3476562dd7 fem: attempt to resolve issue #19798 2025-12-14 12:15:35 -06:00
Yash Suthar 8413922e52 Core: fix "Save Image" giving dark area as compare to viewport
Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2025-12-14 14:49:58 +01:00
Kacper Donat bf697ca710 Gui: Use largest possible marker if needed
This is a quick and dirty fix for https://github.com/FreeCAD/FreeCAD/issues/22010

Basically if we want to use a bigger marker size than available, we use the biggest one
available. This is not a good way to fix the issue - we should ensure that the marker
size that the user requests is actually available - this, however, requires more
significant changes to the code.
2025-12-13 16:23:59 -06:00
David Kaufman 20842778aa Revert "cleanup"
This reverts commit 62caf967c7.
2025-12-13 11:03:22 -05:00
Billy Huddleston d940c499b7 CAM: Add TSP tunnel solver with flipping and Python bindings
Introduce TSPTunnel struct and implement TSPSolver::solveTunnels
for optimizing tunnel order with support for flipping and start/end points.
Expose the new functionality to Python via pybind11, returning tunnel
dictionaries with flipped status.

src/Mod/CAM/App/tsp_solver.cpp:
- Add solveTunnels implementation for tunnel TSP with flipping and route endpoints

src/Mod/CAM/App/tsp_solver.h:
- Define TSPTunnel struct
- Declare solveTunnels static method in TSPSolver

src/Mod/CAM/App/tsp_solver_pybind.cpp:
- Add Python wrapper for solveTunnels
- Expose solveTunnels to Python with argument parsing and result conversion
2025-12-13 10:59:47 -05:00
xtemp09 df6d148a85 [GUI] Rename Cancel ‘Close’ in Add Property dialog 2025-12-13 15:19:41 +01:00
Furgo d55d8d1dac BIM: Report command MVP (#24078)
* BIM: BIM Report MVP

* BIM: add Arch.selectObjects() API call and tests

* BIM: adopted ArchSchedule spreadsheet update and linking patterns

* BIM: SELECT with dynamic headers and dynamic data population

* BIM: fix deletion, dependencies, and serialization issues

* BIM: transition from individual query to multiple-query statements

* BIM: Mostly fix serialization issues

* BIM: Report editor UI/UX improvements

- Make edits directly on table (Description field only, for now)
- Sync table edits with query editor (Description field only, for now)
- Fix Property group name for spreadsheet object
- Add tooltips for all task panel widgets
- Put Description input and label on the same row
- Edit statement is now a static title
- Open report editor upon creation
- Remove overview table's redundant edit button
- Put report query options in a box
- Open spreadsheet after accepting report changes

* BIM: Aggregarion and grouping - implement GROUP BY with COUNT(*)

* BIM: Aggregation and grouping - implement SUM, MIN, MAX functions

* BIM: Aggregation and grouping - implement validation

* BIM: add reporting presets support

* BIM: align description and query preset inputs vertically

* BIM: write units on their own spreadsheet cell

* BIM: update test suite to new SQL engine behaviour

* BIM: fix various bugs: return values should not be stringized, non-grouped query with mixed extractors, handle nested properties

* BIM: expand Report test suite, fix property count vs count all bug

* BIM: add report engine SQL's IN clause support

* BIM: enable running Report presets tests from the build directory

* BIM: make spreadsheet more useful for analysis, units on headers

* BIM: update BIM Report icons

* BIM: Add key option columns to report overview table

* BIM: add syntax highlighting support to report query editor

* BIM: Add lark build dependency for SQL parser generator

* BIM: Install the generated parser

* BIM: implement TYPE() function

* BIM: simplify function registry, make it OOP

* BIM: add CHILDREN function

* BIM: improve SQL engine error descriptions

* BIM: Implement ORDER BY clause

* BIM: Implement column aliasing (AS...)

* BIM: improve error reporting to pinpoint exact token names

* BIM: implement CONCAT, LOWER, UPPER functions. Improve exception handling

* BIM: refactor to improve initialization readability and maintenance

* BIM: Improve query editor syntax highlighting

* BIM: Address CodeQL warnings

* BIM: Enable scalar functions in WHERE clause and refactor transformer

- Enable the use of scalar functions (e.g., `LOWER`, `TYPE`) in `WHERE` clause comparisons.
- Refactor the Lark transformer to correctly handle `NUMBER`, `NULL`, and `ASTERISK` terminals using dedicated methods.
- Refactor error handling to raise a custom `BimSqlSyntaxError` exception instead of returning values on failure.
- Improve syntax error messages to be more specific and user-friendly by inspecting the failing token.
- Fix regressions in `AggregateFunction` and `TypeFunction` handling that were introduced during the refactoring.
- Update the test suite to assert for specific exceptions, aligning with the new error handling API.

* BIM: Implement arithmetic operations in SELECT clause

- Update grammar with `expr`, `term`, and `factor` rules to support operator precedence.
- Introduce `ArithmeticOperation` class to represent calculations as a recursive tree.
- Add transformer methods to build the calculation tree from the grammar rules.
- Implement recursive evaluation that correctly normalizes `Quantity` and `float` types before calculation.

* BIM: Add CONVERT() function for unit conversions

- Implement a new ConvertFunction class to handle unit conversions in the SELECT clause.
- Leverage the core Quantity.getValueAs() FreeCAD API method to perform the conversion logic.
- Add a unit test to verify both successful conversions and graceful failure on incompatible units.

* BIM: add self-documenting supported SQL syntax helper

* BIM: document internal and external API functions

* BIM: Finalize and rename public ArchSql API, update all consumers

- Rename public API functions for clarity and consistency
  (run_query_for_objects -> select, get_sql_keywords -> getSqlKeywords,
  etc.).
- Establish Arch.py as the official API facade by exposing all public
  SQL functions and exceptions via a safe wildcard import from ArchSql,
  governed by __all__.
- Refactor all consumers (ArchReport.py, bimtests/TestArchReport.py) to
  use the new function names and access the API exclusively through the
  Arch facade (e.g., Arch.select).
- Finalize the error handling architecture:
  - Arch.select now logs and re-raises exceptions for consumers to
    handle.
  - Arch.count remains "safe," catching exceptions and returning an
    error tuple for the UI.
- Refactor the test suite to correctly assert the behavior of the new
  "unsafe" (select) and "safe" (count) APIs, including verifying
  specific exception messages.

* BIM: add results preview on demand on the query editor

* BIM: add documentation quick reference button

* BIM: Handle query errors gracefully in Report preview UI

Refactor the SQL engine's error handling to improve the Report preview
UI. Invalid queries from the "Preview Results" button no longer print
tracebacks to the console. Instead, errors are now caught and displayed
contextually within the preview table, providing clear feedback without
console noise.

- `ArchSql.select()` no longer logs errors to the console; it now only
  raises a specific exception on failure, delegating handling to the
  caller.
- The `ReportTaskPanel`'s preview button handler now wraps its call to
  `Arch.select()` in a `try...except` block.
- Caught exceptions are formatted and displayed in the preview table
  widget.
- Add new unit test

* BIM: consolidate internal API into a more semantically and functionally meaningful function

* BIM: Implement two-phase execution for SQL engine performance

Refactors the ArchSql engine to improve performance and internal API
semantics. The `Arch.count()` function, used for UI validation, now
executes faster by avoiding unnecessary data extraction.

This is achieved by splitting query execution into two phases. The first
phase performs fast filtering and grouping (`FROM`/`WHERE`/`GROUP BY`).
The second, slower phase processes the `SELECT` columns. The
`Arch.count()` function now only runs the first phase, while
`Arch.select()` runs both.

- Introduces `_run_query(query_string, mode)` as the mode-driven
  internal entry point for the SQL engine
- The `SelectStatement` class is refactored with new internal methods:
  `_get_grouped_data()` (Phase 1) and `_process_select_columns()`
  (Phase 2).
- `Arch.count()` now uses a fast path that includes a "sample execution"
  on a single object to correctly validate the full query without
  performance loss.
- The internal `execute()` method of `SelectStatement` is now a
  coordinator for the two-phase process.

* BIM: Implement autocompletion in Report SQL editor

Introduces an autocompletion feature for the SQL query editor in the BIM
Report task panel. The completer suggests SQL keywords, functions, and
property names to improve query writing speed and accuracy.

- Adds a custom `SqlQueryEditor` subclass that manages all
  autocompletion logic within its `keyPressEvent`.
- The completion model is populated with static SQL keywords and
  functions, plus all unique top-level property names dynamically
  scanned from every object in the document.
- A blocklist is used to filter out common non-queryable properties
  (e.g., `Visibility`, `Proxy`) from the suggestions.
- The editor manually calculates the completer popup's width based on
  content (`sizeHintForColumn`) to resolve a Qt rendering issue and
  ensure suggestions are always visible.
- The first suggestion is now pre-selected, allowing a single `Tab`
  press to accept the completion.

* BIM: remove unused import

* BIM: support SQL comments in queries

* BIM: support non-ASCII characters in queries

* BIM: Allow ORDER BY to accept a comma-separated list of columns for multi-level sorting.

* BIM: fix two-way overview/editor sync

* BIM: refactor to simplify editor modification events

* BIM: add tooltips to overview table

* BIM: add tooltips to query editor, enrich syntax data with signature and snippets

* BIM: implement PARENT function

* BIM: Enable property access on SQL function results

Previously, the SQL engine could only access properties directly from
the main object in a given row. This made it impossible to query
attributes of objects returned by functions, such as getting the name of
a parent with PARENT(*). This commit evolves the SQL grammar to handle
chained member access (.) with correct operator precedence. The parser's
transformer and execution logic were updated to recursively resolve
these chains, enabling more intuitive queries like SELECT
PARENT(*).Label and standard nested property access like Shape.Volume.

* BIM: refactor function registration, internationalize API metadata

* BIM: remove outdated Report alias

* BIM: refactor selectObjects to use latest API, move implementation to ArchSql

* BIM: improve friendly token names for error reporting

* BIM: implement chained functions e.g. PARENT(*).PARENT(*)

* BIM: add further tests for property access, fix bug with non-literal AS clause argument

* BIM: Implement full expression support for GROUP BY

The SQL engine's GROUP BY clause was previously limited to simple
property names, failing on queries that used functions (e.g., `GROUP BY
TYPE(*)`). This has been fixed by allowing the SQL transformer and
validator to correctly process function expressions.

The `SelectStatement.validate()` method now uses a canonical signature
to compare SELECT columns against GROUP BY expressions, ensuring
correctness for both simple properties and complex functions.

New regression tests have also been added to validate `GROUP BY`
functionality with chained functions (PPA) and multiple columns.

* BIM: Make arithmetic engine robust against missing properties

Previously, a query containing an arithmetic expression in the `WHERE`
clause would cause a fatal error if it processed an object that was
missing one of the properties used in the calculation.

This has been fixed by making the `ArithmeticOperation` class NULL-safe.
The engine now correctly handles `None` values returned by property
lookups, propagating them through the calculation as per standard SQL
behavior.

As a result, the engine no longer crashes on such queries. It now
gracefully evaluates all objects, simply filtering out those for which
the arithmetic expression cannot be resolved to a valid number. This
significantly improves the robustness of the query engine.

* BIM: Finalize ORDER BY logic and fix query regressions

- The `ORDER BY` clause is now governed by a single, predictable rule:
  it can only refer to column names or aliases that exist in the final
  `SELECT` list. The engine's transformer and execution logic have been
  updated to enforce and correctly implement this, fixing several test
  failures related to sorting by aliases and expressions.
- Updated test suite to align with the new engine rules. Add new
  dedicated unit tests that explicitly document the supported (aliased
  expression) and unsupported (raw expression) syntax for the `ORDER BY`
  clause.

* BIM: Implement backend for pipelined report execution

Adds the backend architecture for multi-step, pipelined queries. The
core SQL engine can now execute a statement against the results of a
previous one, enabling complex sequential filtering.

- The internal `_run_query` function was refactored to be
  pipeline-aware, allowing it to operate on a pre-filtered list of
  source objects.
- A new `execute_pipeline` orchestrator was added to manage the data
  flow between statements, controlled by a new `is_pipelined` flag in
  the `ReportStatement` data model.
- The public API was extended with `selectObjectsFromPipeline` for
  scripting, and `count()` was enhanced to support contextual validation
  for the UI.

Pipelines phase 2

Pipelines phase 3

* BIM: refactor to avoid circular imports

* BIM: Address key CodeQl check errors/notes

* BIM: Refactor Task Panel UI/UX with explicit editing workflow

Refactor the report editor UI to improve usability and prevent data
loss. Editing a statement is now an explicit action, triggered by a new
"Edit Selected" button. This prevents accidental changes and enables a
new transactional workflow with "Save" and "Discard" buttons for each
edit session. A checkbox for "Apply & Next" has been added to streamline
editing multiple statements.

The results preview feature has been redesigned into a self-contained,
closable pane controlled by a "Show Preview" toggle. This pane includes
its own contextual "Refresh" button, reducing UI clutter. All action
button groups have been consistently right-aligned to improve layout and
workflow.

* BIM: Integrate pipeline execution and stabilize UI workflow

Completes the implementation of the pipelined statements feature by
integrating the new backend orchestrator with the ArchReport object. It
also includes a series of critical bug fixes that were discovered during
end-to-end testing, resulting in a more stable user experience.

The primary feature integration consists of refactoring the
_ArchReport.execute method. It now uses the ArchSql.execute_pipeline
generator, enabling the report to correctly process multi-step pipelines
and honor the user-configured data flow.

Severalbugs and regressions were fixed:

- Backend: A major flaw was fixed where FROM-clause functions (like
  CHILDREN) were not pipeline-aware. The engine's GROUP BY validator was
  also corrected to enforce its original, safer design of not supporting
  aliases.
- UI Workflow: A feedback loop that caused the editor cursor to reset
  was resolved. The transactional logic for the Save, Discard, and "Save
  & Add New" actions was corrected to prevent data loss and ensure
  predictable behavior. The Add and Duplicate actions no longer auto-open
  the editor, creating a more consistent workflow.
- UI State: Fixed regressions related to the explicit editing model,
  including incorrect statement loading (Edit Selected) and state
  management when a report is reloaded from a file.

* BIM: add presets manager

* BIM: Fix 'still touched after recompute' bug in some of the tests

* BIM: cleanup tests, fixed presets tests to new presets locations

* BIM: Move test model to its own module for reusability

* BIM: Move GUI tests to their own module

- Disable two of the tests: they pass, but cause a segmentation fault on
  teardown. They need to be investigated before enabling them on CI.

* BIM: fix bug in interpreting CONVERT string from GROUP BY

* BIM: Migrate signal connections from lambdas to Qt slots

Refactors all signal connections in the `ReportTaskPanel` to use the
`@QtCore.Slot()` decorator instead of lambda wrappers.

- Resolves CodeQL warning "Unnecessary lambda".
- Adheres to PySide/Qt best practices for signal/slot handling.
- Improves code clarity by using explicit, named methods for
  connections.
- Prevents potential runtime `TypeError` exceptions by correctly
  managing slot signatures for signals that emit arguments (e.g.,
  `clicked(bool)`).
- Introduces simple slot wrappers where necessary to cleanly separate UI
  event handling from core logic.

* BIM: Address CodeQl warnings

* BIM: Add CHILDREN_RECURSIVE(subquery, max_depth) SQL function to find all descendants of an object set.

- Create internal _get_bim_type and _is_bim_group helpers to remove all Draft module dependencies from the SQL engine.
- Implement a new _traverse_architectural_hierarchy function using a deque-based BFS algorithm to prevent infinite loops.
- The CHILDREN and CHILDREN_RECURSIVE functions now use the new traversal engine.
- The traversal engine now transparently navigates generic groups but excludes them from the results.
- Correct ParentFunction logic to validate containment by checking the parent's .Group list instead of the child's .InList.
- Add unit tests for recursive traversal, depth limiting, and transparent group handling.
- Update test_group_by_multiple_mixed_columns to match the corrected behavior of the TYPE(*) function.

* BIM: Add __repr__ and __str__ for the ArchReport proxy

* BIM: Align report quantity headers with internal units

- Change default `Quantity` headers to use the property's internal unit
  (e.g., `mm`) instead of the user's global preferred unit (e.g., `m`).
- Fixes inconsistency where the header unit (e.g., `m²`) did not match
  the raw data's unit (e.g., `mm²`), making the default behavior
  predictable.
- Implement by parsing `str(Quantity)` as a workaround for the C++
  `Unit::getString()` method not being exposed to the Python API.
- Add a unit test that temporarily changes the global schema to verify
  the fix is independent of user preferences.

* BIM: remove dual import ArchSql and from ArchSql import

* BIM: Fix IfcRole => IfcType

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

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

* CI: add Lark as a build dependency

* BIM: Replace QRegExp with QRegularExpression for regex patterns

QRegExp is no longer available in PySide6. Make the code compatible with
both PySide2/Qt5 and PySide6/Qt6.

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

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

* CI: move lark dependency to pixi's requirements.host

* BIM: Correct numeric comparisons in SQL WHERE clause

Refactor the `BooleanComparison.evaluate` method to handle numeric and
string-based comparisons separately. Previously, all comparisons were
being performed on string-converted values, causing numerically
incorrect results for `Quantity` objects formatted with "smart" units
(e.g., `"10.0 m"` was incorrectly evaluated as less than `"8000"`).

- The `evaluate` method now normalizes `Quantity` objects to their raw
  `.Value` first.
- If both operands are numeric, a direct numerical comparison is
  performed for all operators (`=`, `!=`, `>`, `<`, `>=`, `<=`).
- String-based comparisons (for `like`, or as a fallback for other
  types) are handled in a separate path.
- Add unit test to lock down this behavior.

* BIM: autocompleter improvements

- Add a trailing space when autocompleting the keywords that need it
- Autocomplete multi-word keywords as a unit

* BIM: Improve live validation user experience

- Do not throw syntax error when in the middle of autocompleting a
  keyword
- Introduce typing state and show incomplete query status

* BIM: change double-click action to edit in statements overview

Also allow quick editing the statement description with F2

* BIM: Improve user strings for consistency

* BIM: show count of returned objects in statements table

* BIM: disable preview on invalid queries

* BIM: define slot so that tests can run headless

* BIM: Update unit test to adapt to new behaviour

* [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-12-13 13:02:13 +00:00
tarman3 cd8ebe10bf CAM: EngraveBase - Tolerance 2025-12-13 10:25:17 +02:00
tarman3 ea7ef0b132 CAM: Tag Dressup - Tolerance 2025-12-13 09:49:31 +02:00
Billy Huddleston b2b9f03086 CAM: Add comprehensive tests for Command constructor annotations
Add detailed test coverage for the new Command constructor that accepts
annotations parameter, including positional and keyword arguments,
string and numeric annotations, empty annotations, and backward
compatibility. Split existing save/restore tests for better granularity.

src/Mod/CAM/CAMTests/TestPathCommandAnnotations.py:
- Added test14-test20 for Command constructor with annotations
- Split test12 into test12 (empty annotations) and test13
(complex annotations) for focused testing
2025-12-12 20:45:02 -05:00
Billy Huddleston 005cbb937d Rewrite TSP solver for improved path optimization and clarity
- Completely re-implemented the TSP algorithm in C++ for better path quality
- Added detailed comments and documentation to clarify each step
- Improved nearest neighbor, 2-opt, and relocation logic
- Enhanced handling of start/end point constraints
- Updated PathUtils.py docstring to accurately describe start point behavior
2025-12-12 19:39:29 -05:00
Billy Huddleston 428948699a Add startPoint and endPoint support to TSP solver and Python wrapper; add tests
- Enhanced the C++ TSP solver to accept optional start and end points, so the route can begin and/or end at the closest point to specified coordinates.
- Updated the Python pybind11 wrapper and PathUtils.sort_locations_tsp to support startPoint and endPoint as named parameters.
- Added a new Python test suite (TestTSPSolver.py) to verify correct handling of start/end points and integration with PathUtils.
- Registered the new test in TestCAMApp.py and CMakeLists.txt for automatic test discovery.
2025-12-12 19:39:28 -05:00
Billy Huddleston f9347c781b Add 2-Opt TSP solver
This update introduces a new C++ 2-Opt TSP solver with Python bindings.

src/Mod/CAM/App/CMakeLists.txt:
- Add build and install rules for the new pybind11-based tsp_solver Python module

src/Mod/CAM/App/tsp_solver.cpp:
- Add new C++ implementation of a 2-Opt TSP solver with nearest-neighbor initialization

src/Mod/CAM/App/tsp_solver.h:
- Add TSPPoint struct and TSPSolver class with 2-Opt solve method

src/Mod/CAM/App/tsp_solver_pybind.cpp:
- Add pybind11 wrapper exposing the TSP solver to Python as tsp_solver.solve

src/Mod/CAM/PathScripts/PathUtils.py:
- Add sort_locations_tsp Python wrapper for the C++ TSP solver
- Use tsp_solver.solve for TSP-based
2025-12-12 19:39:28 -05:00
David Kaufman 5c3e32a42c also use the % symbol for step over percent 2025-12-12 15:38:14 -05:00
David Kaufman f6daab5ed8 use % symbol in min/max helix diameter input fields, instead of the word 'percent' in the label 2025-12-12 15:33:00 -05:00
David Kaufman 5d877d1cc3 extract 'helix' header from property labels and make it the frame header 2025-12-12 15:33:00 -05:00
David Kaufman 07ed72fe16 rename HelixIdealDiameter to HelixMaxDiameter and update documentation 2025-12-12 15:33:00 -05:00
tarman3 ef0782c518 CAM: ToggleOperation - Allow for Job and Operations group 2025-12-12 21:07:53 +02:00
tarman3 fba419f6cb CAM: OperationCopy improve 2025-12-12 21:07:39 +02:00
sliptonic 442a36bea6 Merge pull request #25285 from tarman3/profile_restore
CAM: Profile - clean areaOpOnDocumentRestored()
2025-12-12 12:59:55 -06:00
sliptonic 293038762c Merge pull request #25960 from Connor9220/FixBoundaryDressup
CAM: Refactor stock used as boundary to be distinct from regular stock
2025-12-12 12:39:16 -06:00
tarman3 8fcecc97cb CAM: PathCommands - Remove unused import QtCore 2025-12-12 20:32:23 +02:00
sliptonic 7a0b613561 Merge pull request #25218 from tarman3/geom_tol
CAM: Path.Geom.cmdsForEdge() - add tolerance
2025-12-12 12:29:04 -06:00
sliptonic 0135bba534 Merge pull request #24297 from tarman3/simplecopy
CAM: SimpleCopy - Allow multiple selection
2025-12-12 12:23:35 -06:00
sliptonic b5185a0a22 Merge pull request #25827 from tarman3/pathcommands_looperror
CAM: PathCommands - Remove pop message about loop error
2025-12-12 12:19:38 -06:00
sliptonic 72bc4ef1bd Merge pull request #25938 from Connor9220/AddAnnotationsToCommand
CAM: Add annotations support to Command constructor and Python bindings
2025-12-12 12:17:09 -06:00
sliptonic c495890491 Merge pull request #25786 from Connor9220/FixLinuxCNCPostprocesor
CAM: Add rigid Tapping back to legacy LinuxCNC postprocessor
2025-12-12 11:44:36 -06:00
sliptonic 45386cdcb7 Merge pull request #25783 from Connor9220/AddUnitsPerToolbit
CAM: Add Units (Metric/Imperial) property to ToolBit
2025-12-12 10:46:42 -06:00
sliptonic 96d1084484 Merge pull request #25850 from petterreinholdtsen/cam-fanuc-post-fixes
CAM: Get Fanuc post processor working and implement several improvements
2025-12-12 10:41:51 -06:00
sliptonic 78102d294d Merge pull request #26008 from tarman3/editor_setText
CAM: CodeEditor - stub for setText()
2025-12-12 10:34:17 -06:00
luzpaz 5c0ff4bd8a Fix typos
Fixes various documentation/source-comment typos
2025-12-12 13:59:38 +01:00
PaddleStroke 893a9d19b6 Core: move getPlacementProperty to be more accessible (#26088)
* Core: move getPlacementProperty to be more accessible

* Update DocumentObject.h

* Update DocumentObject.cpp

* Update ViewProviderDragger.h

* Update ViewProviderDragger.cpp

* Update DocumentObject.h

* Update DocumentObject.cpp

* Update ViewProviderLink.cpp

* Update DocumentObject.h

* Update DocumentObject.cpp

* Update DocumentObject.h
2025-12-12 11:59:03 +00:00
Ajinkya Dahale 0800791a0f Sketcher: Only transfer angle to relevant segment on trim etc. 2025-12-12 11:23:00 +05:30
Ajinkya Dahale 78e5729520 Sketcher: Handle angle constraint on sketchobject changes
Primarily trim, but also expected to affect split, extend etc.
2025-12-12 09:17:05 +05:30
PaddleStroke 9625a71d8d Assembly: joint task: fix delete impossible of non-valid refs 2025-12-11 19:04:27 -06:00
Chris Hennes bb25a4efbc Merge pull request #26089 from Roy-043/Draft-fix-lag-when-snapping-to-face-intersections
Draft: fix lag when snapping to face intersections
2025-12-11 19:01:22 -06:00
Alfredo Monclus f92c8e126c PardDesign: fix hole task thread combos not translating 2025-12-11 18:56:10 -06:00
Kacper Donat c10f5d74d3 PartDesign: Recompute preview after forced recompute
This fixes some cases where Preview was stale and not recomputed after
changes done via code.
2025-12-11 18:55:10 -06:00
Roy-043 4b379c8e51 Draft: fix lag when snapping to face intersections
Fixes #25924.

The `snapToIntersection` function has been changed to an if-elif structure, and in case of face-edge intersection snap, only two sublements are checked. This ensures a reasonable speed, even if objects have many edges and faces. The change does mean you have to move the mouse over the correct face for it to be processed. But since face-edge intersection snap is new anyway, this is acceptable I think.
2025-12-11 17:32:44 +01:00
Roy-043 e1d77cc771 Remove maxSnapFaces parameter from params.py
Removed 'maxSnapFaces' parameter from settings.
2025-12-11 17:22:30 +01:00
timpieces de2f8a58a3 Add proper tooltips for Material properties #24434 (#25509) 2025-12-11 14:56:26 +00:00
tarman3 b567525768 CAM: RampEntry Dressup - Remove X0Y0 from beginning 2025-12-11 08:22:35 +02:00
Petter Reinholdtsen 9c78ced00c CAM: Made Fanuc post processor compatible with FreeCAD 1.1.
Use setPlainText() if available, otherwise use setText().
Workaround for a regression from #23862.
2025-12-11 00:57:21 +01:00
Petter Reinholdtsen 8386f1394e CAM: Adjusted Fanuc post processor to move Z to tool change position before M6
A "G28 G91 Z0" is needed according to testing and page 195 (6-1-2 Procedure for ATC operation) in
<URL: https://www.milco.bg/source/Technical%20Service/Documentation%20Dahlih/MCV%20510_1250B%20Operation%20and%20maintenance%20manual%20V2_2.pdf >
to get the spindle into the correct position for a tool change.
2025-12-11 00:57:21 +01:00
Petter Reinholdtsen e6c95dbb91 CAM: Added test of Fanuc post processor
Used TestMach3Mach4LegacyPost.py as the starting point with input from
other test scripts too.

The test demonstrate a fix for #25723, as the Fanuc post processor has not been not updated to the latest changes in
the Path module.

This is related to #24676, where thread tapping was added to LinuxCNC, but the equivalent code in the Fanuc
postprocessor were not adjusted to cope, and #25677 where it was observed that the Fanuc postprocessor was
broken in versions 0.20 and 1.0.

Added MockTool class to provide ShapeName to fanuc_post.py, used to
convert drill cycles to threading cycles if the tool has shapeid "tap".
2025-12-11 00:57:21 +01:00
Petter Reinholdtsen 38c3eebd7a CAM: Made Fanuc post processor compatible with FreeCAD 1.0.
Several methods introduced 2025-05-04 are preferred, but the methods
available in version 1.0 are used as fallback sources
for active status and coolent enabled.
2025-12-11 00:57:21 +01:00
Petter Reinholdtsen 34a5301862 CAM: Switched Fanuc post processor to end program with M30, not M2.
The difference according to the documentation is that M30 will rewind
the paper tape while M2 will not.  The effect on a CNC from 1994 is
that M30 turn on the indicator light marking that the program has
completed, while M2 do not, and the light is wanted to know when
the machine is done.
2025-12-11 00:57:21 +01:00
Petter Reinholdtsen 8b500ca9a3 CAM: Adjusted Fanuc post processor to use M05 consistently everywhere. 2025-12-11 00:57:21 +01:00
Petter Reinholdtsen 4c18ac6c54 CAM: Provide correct and more relevant header from Fanuc post processor
Fanuc only understand upper case letters, no point in providing the
file name in lower case letters.  The provided file name is always "-",
so drop it completely. The first comment is presented in the Fanuc user
interface, it should get more relevant content.

Dropped useless semicolon.
2025-12-11 00:57:21 +01:00
Petter Reinholdtsen e4862572ae CAM: Avoid Z overtravel error on Fanuc tool changes
Enabling tool height compensation will cause the axis to move up
the length of the tool, which will cause a Z overtravel error when
the tool change take place close to the top of the machine.  To
counter this move, ask the machine to move its commanded position
down the length of the tool height, which in effect causes no upward
movement after the tool change.  The #4120 variable contain the
current tool number, and #2000 - #20XX contain the tool heights.
2025-12-11 00:57:21 +01:00
Petter Reinholdtsen bcb569977d CAM: Avoid adding trailing space to all M6 lines.
The Fanuc post processor add a trailing space to all M6 lines.
This make it problematic to write test for the generated output,
when compiled with the automatic policy enforcer on github
removing trialing space from the expected output.  Avoid the
problem by removing the trailing space from the generated
output.
2025-12-11 00:57:21 +01:00
Petter Reinholdtsen 3c5f39c0ca CAM: Corrected Fanuc post processor M3 handling
The thread tapping implementation in the Fanuc post processor change
behaviour of M3, G81 and G82 when the tool ShapeID matches "tap".
but the code not not expect that the parse() method will be
called with two different classes as arguments.

Rewrite the M3 handling to handle ToolController arguments
instead of crashing with an AttributeError.

Issues:

Fixes #14016
Fixes #25723
2025-12-11 00:57:21 +01:00
Petter Reinholdtsen 06fe4b37ba CAM: Switch Fanuc post processor default for M6T0 to disable by default. 2025-12-11 00:57:21 +01:00
Petter Reinholdtsen 87185c8135 CAM: Made empty spindle at the end optional in Fanuc CAM post processing script
Some Fanuc machines do not understand the 'M6 T0' instructions in the
preamble.  Move it out of the preamble and controlled by a new
command line argument --no-end-spindle-empty for the machines
where running to cause a "Tool Number Alarm" and the program to crash
as tool zero is not a valid tool.

Fixes: #25677
2025-12-11 00:57:21 +01:00
Petter Reinholdtsen 0cdf9abc4b CAM: Adjusted Fanuc post processing script to always start with a percent
The percent signal to the machine that a program follows, and is not
part of the header but a required part when uploading programs into
the machine.
2025-12-11 00:57:21 +01:00
Petter Reinholdtsen ef794c31bd CAM: Adjusted Fanuc post processing script to not inherit behaviour between calls
Reset line number when using --line-numbers.  Restore all default values when a
command line argument is not used.

This helps the test scripts ensure that the arguments passed during one test is the only
one taking effect during this test.
2025-12-11 00:57:21 +01:00
Petter Reinholdtsen 533e957f80 CAM: Print "Show editor" status boolean as string, not integer
This get rid of a Python style warning and make the output easier
to understand.
2025-12-11 00:57:20 +01:00
PaddleStroke 7a8135d863 Core: Add getPlacementOf replacing previous getGlobalPlacement logic. (#26059)
* Core: Add getPlacementOf replacing previous getGlobalPlacement logic.

* Update src/App/DocumentObject.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update DocumentObject.cpp

* Fix error when called from python with targetObj == None

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-12-10 22:47:20 +01:00
Billy Huddleston 5085a286bd CAM: Add Units (Metric/Imperial) property to ToolBit
This PR allows each Toolbit to have its own Units property (Metric/Imperial) for better unit management.

Short Summary:
- Adds a Units property (Metric/Imperial) to ToolBit objects for better unit management.
- Ensures ToolBit schema is set and restored properly in the editor and utilities.
- Updates formatting and property handling to respect the selected units.
- Improves the ToolBit editor widget to refresh and sync schema/UI when units change.
- Uses FreeCAD.Units.setSchema and getSchema to switch between unit schemas.

NOTE: Toolbit dimensions are read from JSON in their native units  (as specified by the Units property),
converted to metric for all internal calculations, and displayed in the UI using the
toolbit's selected units. This ensures both accurate internal computation and user-friendly
display, while storing the correct units in the JSON. This can cause some rounding differences
when switching units. Example: 2 mm becomes 0.0787 inches. If you save that as imperial and then
switch back to metric, it will show 1.9999 mm

src/Mod/CAM/Path/Tool/toolbit/models/base.py:
- Add Units property to ToolBit and ensure it's set and synced with toolbit shape parameters.
- Update property creation and value formatting to use Units.

src/Mod/CAM/Path/Tool/toolbit/ui/editor.py:
- Use setToolBitSchema to set schema based on toolbit units.
- Add logic to refresh property editor widget when units change.
- Restore original schema on close.
- Improve docstrings and signal handling.

src/Mod/CAM/Path/Tool/toolbit/util.py:
- Add setToolBitSchema function for robust schema switching.
- Update format_value to use schema and units.
- Add docstrings and clarify formatting logic.

src/Mod/CAM/Path/Tool/library/ui/browser.py:
- Restore original schema after editing toolbit.

src/Mod/CAM/Path/Tool/library/ui/editor.py:
- Ensure correct schema is set for new toolbits.
2025-12-10 14:57:33 -05:00
Kacper Donat c12ca7b3ba Stylesheets: Fix toolbar button size change 2025-12-10 20:15:34 +01:00
Yash Suthar aed9b770f3 Link: Fixed Scale property behaviour when the object is moved
Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2025-12-10 20:13:56 +01:00
Chris Hennes 67948d60a2 PD: Add deprecation warning if Midplane is set 2025-12-10 12:42:13 +01:00
sliptonic 5ad6a1ba58 Merge pull request #26038 from jffmichi/cam_viewprovider_accidental_change
CAM: revert accidental icon name change from #25440
2025-12-09 07:53:17 -06:00
jffmichi 8058f824e2 CAM: revert accidental icon name change from #25440 2025-12-09 05:53:05 +01:00
freecad-gh-actions-translation-bot f7483a08b4 Update translations from Crowdin 2025-12-08 22:31:48 -06:00
Max Wilfinger ff36528155 Update stale issue and PR settings in workflow 2025-12-08 11:34:50 -06:00
PaddleStroke 3608c9f8c4 Part: TopoShape make getElementTypeAndIndex more robust (#25913)
* Part: TopoShape make getElementTypeAndIndex more robust
* Part: Add unit tests for new regex

---------

Co-authored-by: Chris Hennes <chennes@gmail.com>
2025-12-08 11:24:13 -06:00
Chris Hennes 6f511f7911 Merge pull request #25903 from WandererFan/CosVertexCrashInScript
TechDraw: Prevent crash on adding cosmetic feature before geometry created
2025-12-08 11:22:21 -06:00
Syres916 9375f579f0 Merge pull request #25809 from Syres916/HotFix_For_Win_and_Wayland_For_First_Run
[Gui] Hotfix for correcting main window position on first run and Safe Mode on Windows and Wayland
2025-12-08 11:18:58 -06:00
dependabot[bot] 7a493002ac Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.9 to 7.0.11.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/84ae59a2cdc2258d6fa0732dd66352dddae2a412...22a9089034f40e5a961c8808d113e2c98fb63676)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-version: 7.0.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-08 09:25:28 -06:00
tarman3 76d939c21f CAM: CodeEditor - stub for setText() 2025-12-07 20:23:14 +02:00
tetektoza 915b6f9901 Gui: Fix preferences search popup positioning on Wayland (#25675)
* Gui: Fix preferences search popup positioning on Wayland

Change window flag from `Qt::Tool` to `Qt::ToolTip` to fix popup
appearing in center of screen and closing immediately on Wayland desktop
envs. `Qt::ToolTip` uses xdg_popup protocol which provides proper
positioning relative to parent window on Wayland.

* Gui: Initialize ok check flag to default in prefs

* Gui: Use ranged for loop where possible in prefs

* Gui: Remove unused variable in preferences controller

* Gui: Use const where possible in prefs search dialog

* Gui: Use static where possible in search prefs dialog

* Gui: Use braced initializer list when returning type in search prefs

* Gui: Use auto in search prefs dialog where possible

* Gui: Do not use else if after return in search prefs dialog

* [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-12-07 11:43:09 +01:00
wandererfan b1cbcbd238 [TD]fix CI fail on Win 2025-12-05 18:33:16 -05:00
wandererfan 3f10abe11b [TD]fix CosmeticVertex fail in script 2025-12-05 18:33:16 -05:00
Chris Hennes 6ec9870d54 Merge pull request #25853 from 3x380V/reimplement_24749
TechDraw: Fix dimension formatter
2025-12-05 16:07:14 -06:00
Frank David Martínez M a70ec178b8 Gui: Fix 25974 freecad.gui alias regression (#25975) 2025-12-05 19:03:40 +00:00
Adrian Insaurralde Avalos fbb65a34fe Plot: protect matplotlib.pyplot import form PyQt6 too and remove lingering debug print 2025-12-05 10:15:02 -06:00
PaddleStroke a49d106807 Sketcher: Fix errors message when selecting circle seam point. (#25953) 2025-12-05 07:17:30 +00:00
Sebastian 945ba15e18 Match the string that gets sent to setCommand (#25964)
* Match the string that gets sent to setCommand

Correction of a not matching string that gets sent to setCommand. This results in a not translated menu item in the Sketcher menu.

* [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-12-05 06:38:17 +01:00
PaddleStroke 67234e98b7 Sketcher: Offset: Fix failure if 2+ closed wires with different orientations (#25941) 2025-12-04 23:06:01 -06:00
marioalexis 9d5f6c82be Fem: Fix undefined variable 2025-12-04 22:51:33 -06:00
Billy Huddleston 8e2dc8cd19 CAM: Refactor stock used as boundary to be distinct from regular stock
This commit makes boundary stock objects distinct from regular stock by
setting a boundary flag and label, and prevents editing of boundary
objects in the job view provider.

src/Mod/CAM/Path/Dressup/Boundary.py:
- Add promoteStockToBoundary method, set boundary properties, handle
missing stock/shape

src/Mod/CAM/Path/Main/Gui/Job.py:
- Block editing for objects flagged as boundary stock
2025-12-04 12:43:43 -05:00
Frank David Martínez M d7a7416398 [Core] FreeCADInit and FreeCADGuiInit refactoring (#23413) 2025-12-04 11:10:53 -06:00
Adrian Insaurralde Avalos af48da0dbf WindowsInstaller: more robust automatic version info from freecadcmd
otherwise it broke if freecad had other unrelated output
2025-12-03 15:24:55 -06:00
Billy Huddleston 047cd38c24 CAM: Add annotations support to Command constructor and Python bindings
This commit introduces support for passing an 'annotations' dictionary
to the Command class constructor and its Python bindings. The annotations
dictionary can contain string or numeric values for each key, allowing for
richer metadata on CAM commands. Each annotation must be provided as a
key-value pair within a dictionary.

Examples:

cmd = Command("G1", {"X": 10.0, "Y": 5.0}, {"note": "Rapid move"})

cmd = Command("G2", {"X": 20.0, "Y": 15.0}, {"priority": 1})

cmd = Command("G3", {"X": 30.0, "Y": 25.0}, {"note": "Arc move", "speed": 1500})

cmd = Command("G0", {"X": 0.0, "Y": 0.0}, {})

cmd = Command("G0", {"X": 0.0, "Y": 0.0})

cmd = Command("G1", {"X": 10.0, "Y": 5.0}, annotations={"note": "Rapid move"})

src/Mod/CAM/App/Command.cpp:
- Added new Command constructor accepting annotations

src/Mod/CAM/App/Command.h:
- Declared new Command constructor with annotations parameter

src/Mod/CAM/App/Command.pyi:
- Updated docstring to describe annotations argument

src/Mod/CAM/App/CommandPyImp.cpp:
- Extended Python init to parse and set annotations dictionary
2025-12-03 15:44:18 -05:00
Chris Hennes ee394d2e58 Merge pull request #25920 from PaddleStroke/patch-840798
Sketcher: Fix warning when using dimension tool
2025-12-03 13:09:40 -06:00
PaddleStroke 5f70c4390d Part: revert changes to ViewProviderExt::getDetails (#25912) 2025-12-03 12:12:27 -06:00
sliptonic 2b22873d66 Merge pull request #25908 from Connor9220/FixJobAssignment
CAM: Fix job assignment and model/stock initialization in ObjectOp
2025-12-03 11:57:49 -06:00
Ladislav Michl 90086d3e31 Revert "[Base]retrieve unit text"
This reverts both pointless and broken commit c9fffa6789.
2025-12-03 17:43:53 +01:00
Ladislav Michl 3252aaf618 TechDraw: Refactor use of Unit Schema values
Quantity's getUserString already returns both factor and unitText.
2025-12-03 17:43:53 +01:00
Ladislav Michl a509bc2ee9 TechDraw: Fix MultiValueSchema formatting
Multi Value schemas cannot be forced to use Format::FORMATTED.
2025-12-03 17:17:58 +01:00
PaddleStroke 0c34c93fe4 Sketcher: dimension tool, use VPSketch version of addSelection 2025-12-03 15:30:44 +01:00
PaddleStroke 1784be046f Sketcher: Make VPSketch::addSelection public 2025-12-03 15:29:01 +01:00
Billy Huddleston ab817f8dc5 CAM: Fix job assignment and model/stock initialization in ObjectOp
This PR fixes a bug introduced with PR #25800
It updates the ObjectOp class to correctly assign the job, model,
and stock properties from the parentJob object. Previously, only
PathUtils.addToJob was called, which did not set these attributes directly.

This change ensures that when creating a new operation, the job, model,
and stock fields are properly initialized from the parent job. This
fixes issues where operations did not inherit the correct job context,
leading to missing or incorrect references to the model and stock, and
potential errors in downstream processing.
2025-12-03 00:23:23 -05:00
Roy-043 4f4db09572 Part: make Part_EditAttachment nesting aware (#25887) 2025-12-02 22:44:55 -06:00
PaddleStroke 7c2dac1278 GUI: Fix broken build - splitbutton (#25892) 2025-12-02 20:24:57 -06:00
dependabot[bot] 280382ad3e Bump step-security/harden-runner from 2.13.2 to 2.13.3
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.13.2 to 2.13.3.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/95d9a5deda9de15063e7595e9719c11c38c90ae2...df199fb7be9f65074067a9eb93f12bb4c5547cf2)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.13.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-02 12:24:11 -06:00
sliptonic 20c2eee9db CAM: Suppress rendering of first rapids (#25440) 2025-12-02 12:20:07 -06:00
dependabot[bot] a0c9b2ecb9 Bump github/issue-metrics from 3.25.3 to 3.25.4
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.25.3 to 3.25.4.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/78b1d469a1b1c94945b15bd71dedcb1928667f49...55bb0b704982057a101ab7515fb72b2293927c8a)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.25.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-02 19:11:16 +01:00
PaddleStroke ac0685b841 Assembly CommandInsertNewPart : Make sure assembly file is saved (#25730)
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-12-02 04:30:20 +00:00
PaddleStroke 6ddb0165ff Sketcher: fix new external always construction (#25733) 2025-12-01 21:49:24 -06:00
Frank Martinez c057d0293a Build: Fix some trivial warnings 2025-12-01 20:57:09 -06:00
Billy Huddleston b5d97057be CAM: Introduce unified ToolBit parameter migration logic for Bullnose tools
- Added new migration system to handle legacy parameter conversion for ToolBit assets and objects.
- Implemented ParameterAccessor abstraction for consistent access to dicts and FreeCAD objects.
- Centralized migration logic for CornerRadius from TorusRadius or FlatRadius/Diameter, restricted to Bullnose shape-type.
- Updated asset and object initialization to use migration logic and filter Bullnose parameters.

src/Mod/CAM/Path/Tool/camassets.py:
- Integrate new migration logic for ToolBit assets using ParameterAccessor and migrate_parameters.
- Ensure shape-type is set before parameter migration; only write changes if migration occurred.

src/Mod/CAM/Path/Tool/toolbit/migration.py:
- Add ParameterAccessor class and migrate_parameters function for unified migration.
- Handle legacy parameter conversion for Bullnose tools.

src/Mod/CAM/Path/Tool/toolbit/models/base.py:
- Apply migration logic to ToolBit objects on restore.
- Filter Bullnose parameters to remove FlatRadius after migration.

src/Mod/CAM/Path/Tool/shape/models/bullnose.py:
- Add filter_parameters method to remove FlatRadius for Bullnose.

src/Mod/CAM/Path/Op/SurfaceSupport.py:
- Derive FlatRadius from CornerRadius and Diameter if both are present.

src/Mod/CAM/Path/Op/Surface.py:
- Remove obsolete setOclCutter method.
2025-12-01 11:30:00 -06:00
Chris Hennes 1b886ef961 Revert "GUI: fix "select all instances" (#25503)"
This reverts commit 6b60867368.
2025-12-01 18:24:25 +01:00
Chris Hennes f366b0e2a7 Utils: Don't save location of Python executable 2025-12-01 17:03:46 +00:00
Roy-043 4eb110e861 Draft: fix X-axis reference for Draft_Arc_3Points 2025-12-01 17:01:31 +00:00
PaddleStroke b603630d1f Assembly: Fix selection during joint edition (#25687) 2025-12-01 17:01:19 +00:00
Garfieldcmix 3aedb58e4b Fix Export/Save Mesh incorrect error message 2025-12-01 11:00:40 -06:00
sliptonic db65e44bca CAM: fixes bug with op creation/cancelation (#25800) 2025-12-01 10:59:49 -06:00
Syres916 cb9c0ccd7f [TechDraw] QCheckBox fix compiling warning of stateChanged deprecation 2025-12-01 10:59:25 -06:00
Roy-043 5e90dc86fb BIM: BIM_Material: only assign material object to component (#25823)
* Add MoveWithHost check for material assignment

* [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-12-01 16:59:13 +00:00
Roy-043 41c0621abb BIM: add parameter for BIM_Sketch view props (#25778)
* Add BIM parameters to param_dict

Add BIM parameters to param_dict for future use.

* BIM: add parameter for BIMSketch view props
2025-12-01 16:58:43 +00:00
Roy-043 5155906848 BIM: fix Arch_Reference update on doc restored (#25777)
* BIM: fix Arch_Reference update on doc restored

Fixes: #24943

* [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-12-01 16:58:01 +00:00
tetektoza 5f4fe75f5f Sketcher: Use constraint index instead of geoId as key in expr storage
`SketcherTransformationExpressionHelper` was using `geoId` as the map
key for storing expressions during geometry transformations. This is
incorrect since single geometry may have multiple constraints with
different expressions.

So, using `geoId` as the key causes `std::map` overwrites, resulting in
only the last expression being preserved per geometry.

So this patch changes key to be a constraint index, and adds
`ConstraintExpressionInfo` struct to store both expression and `geoId`.

Co-authored-by: PaddleStroke <pierrelouis.boyer@gmail.com>
2025-12-01 10:57:40 -06:00
Billy Huddleston 708717cee2 CAM: Turn off debugging in CAM Preferences
Debugging was left on by mistake. Also 'Setting asset path' log message was at info level. Changed to debug level.
2025-12-01 10:53:02 -06:00
Chris Hennes cbd9414684 Merge pull request #25713 from kadet1090/split-button
Gui: Use SplitButton for config migration modal
2025-12-01 10:52:19 -06:00
Roy-043 6a65b45242 Convert asset path to string in filePath function 2025-12-01 10:51:16 -06:00
marbocub 8ea5075385 Sketcher: Fix error when first constraint is DistanceX/DistanceY to vertex (#25813) 2025-12-01 10:50:31 -06:00
Syres916 15c99ecdb2 [TechDraw] Fixes for TaskFillTemplateFields finding Draft/Arch/Image views and keeping message boxes and dialogs on top (#25342)
* [TechDraw] fix dialog to be ontop, clear the keyLst and save mouse movement between messagebox and dialog

* [TechDraw] change from setWindowFlags to setWindowFlag

* [TechDraw] handle BIM and Draft as first available views...

.... also increase the possible scale values such as 5 : 2 or 7 : 3

* [TechDraw] fix 1:1 scale regression

* [TechDraw] remove unnecessary line of code

* TD: Simplify code

Address comments from review.

Co-authored-by: WandererFan <wandererfan@gmail.com>

* [TechDraw] enable use of Fraction for scale...

... conversion

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
Co-authored-by: WandererFan <wandererfan@gmail.com>
2025-12-01 10:45:02 -06:00
Syres916 2be7bbf141 [Gui] Fix AxisLetterColor on opening Preferences and correct LightSources parameter group
Also remove workaround as stated in the comments just before 1.1.0 Release.
2025-12-01 17:34:44 +01:00
Roy-043 b865c4625d BIM: Fix duplicate vertices in Wavefront OBJ export
Fixes: #13151.

The vertices derived from a face's outerwire could contain duplicates.

Fixed by switching to:
`f.OuterWire.OrderedVertexes`
2025-12-01 16:28:14 +00:00
PaddleStroke 6d48c51f4d Part: Fix addSelection failing for links to body. (#25702) 2025-12-01 09:34:08 -06:00
tarman3 eb703bfde7 CAM: Slot - Remove .0 2025-12-01 09:32:01 +02:00
PaddleStroke b249b9daeb Core: Close partially opened document when doc is closed. (#25659) 2025-11-30 23:33:43 -06:00
Captain a371231aea PartDesign: fix symmetric mode of draggers in revolution/groove (#25656) 2025-11-30 23:03:31 -06:00
sliptonic 98a2cb52c3 Merge pull request #25273 from Thom-de-Jong/main
CAM: Exporting G-code can be canceled from the editor dialog
2025-11-30 14:04:22 -06:00
tarman3 b6ae98fa0a CAM: PathCommands - Remove pop message about loop error 2025-11-30 20:08:12 +02:00
tarman3 0e85c53cfe CAM: Path.Geom.cmdsForEdge() - add tolerance 2025-11-30 18:19:17 +02:00
sliptonic 46f9cb0ac5 Merge pull request #25253 from tarman3/geom_usehelixforbspline
CAM: Path.Geom.cmdsForEdge() - remove useless 'useHelixForBSpline'
2025-11-30 09:59:03 -06:00
Thom de Jong bbb3bdd839 Merge remote-tracking branch 'upstream/HEAD' 2025-11-30 12:43:31 +01:00
Frank Martinez a8c7968c92 CAM: Fix pyi signature to match c++ 2025-11-30 00:56:44 -06:00
Chris Hennes dfb9baf678 Merge pull request #24262 from mnesarco/pyi-fixes-1 2025-11-29 20:23:37 -06:00
Frank Martinez be7c10aea4 [bindings] Added generic twin pointer accessor 2025-11-29 20:22:38 -06:00
sliptonic 28b9fa0151 Merge pull request #25553 from tarman3/leadinout_overtravel6
CAM: LeadInOut - Fix regression after #24829
2025-11-29 12:34:37 -06:00
Chris Hennes 6ad6a98881 Merge pull request #25674 from WandererFan/DimensionColorSizeOldDocuments2
TechDraw: fix handling of alpha channel in old documents
2025-11-28 18:04:30 -06:00
Billy Huddleston f3f601105e CAM: Add rigid Tapping back to legacy LinuxCNC postprocessor
This PR adds rigid tapping back to the legacy LinuxCNC postprocessor, which
was removed in commit cd1c29e3f23fde0a90980ffcf3e70406769f2d43 in PR 24771.

The changes include:
- Modifying the linuxcnc_legacy_post.py script to include logic for Rigid tapping
- Updating comments and documentation to reflect the addition of Rigid tapping
2025-11-28 18:30:28 -05:00
sliptonic eb8b2ddad2 [CAM] Reimplemented Mill facing operation (#24367) 2025-11-28 23:26:36 +00:00
tarman3 91fd699f2d CAM: Path.Geom.cmdsForEdge() - remove useless 'useHelixForBSpline' 2025-11-28 20:13:24 +02:00
sliptonic f18842114f Merge pull request #25205 from tarman3/isVertical
CAM: Path.Geom.isVertical() for BSpineSurface (simple face after scale)
2025-11-28 12:08:10 -06:00
sliptonic effe043019 Merge pull request #25635 from tarman3/oputil_1_linter
CAM: OpUtil - Fix linter errors
2025-11-28 12:03:06 -06:00
sliptonic 1ff6d15b64 Merge pull request #25023 from sebastianohl/main
CAM: fixing drill handling, as KinetiNC does not implement G81 etc. correctly
2025-11-28 11:54:08 -06:00
sliptonic c3068b2b66 Merge pull request #25022 from s-ohl-ostfalia-de/main
CAM: adding cooling feature to Kinetic post processor
2025-11-28 11:52:29 -06:00
sliptonic 83fc0385a3 Merge pull request #24807 from tarman3/inspect
CAM: Line numbers in Inspect window
2025-11-28 11:48:24 -06:00
sliptonic e20fd153ed Merge pull request #23862 from tarman3/gcode_editor_dialog
CAM: Show line numbers in export gcode dialog
2025-11-28 11:47:01 -06:00
sliptonic a2dc485c2b Merge pull request #23251 from sliptonic/adr-expand-command-semantics
[CAM] ADR on Path Command annotation semantics
2025-11-28 11:07:26 -06:00
sliptonic 0e1d87852e Merge pull request #25365 from sliptonic/adr-heights
CAM: ADR for normalizing Heights and depths terminology
2025-11-28 11:03:15 -06:00
sliptonic 57ba779ec8 Merge pull request #25732 from sliptonic/adr-material-allowance
CAM: ADR for "Stock to Leave" terminology
2025-11-28 10:50:58 -06:00
PaddleStroke 79f66b75f3 Datums: Prevent 'doesn't contain feature with role' error on load 2025-11-28 12:08:38 +01:00
Kacper Donat 0de9ffc439 Gui: Use SplitButton for config migration modal 2025-11-28 10:15:04 +01:00
Kacper Donat c500408a6d Gui: Add SplitButton widget
This adds SplitButton widget that has one primary action and possibly
more secondary ones accessible via menu.
2025-11-28 10:15:04 +01:00
Chris Hennes 4e74031e06 Build: Fix punctuation in Windows installer (English only) 2025-11-28 06:39:06 +01:00
PaddleStroke 5ae67ee2f9 PartDesign: Polar pattern: Accept negative angles (#25621) 2025-11-27 18:08:01 -06:00
PaddleStroke eaee0f759a TechDraw: DrawViewSpreadsheet do not create cyclic dependency 2025-11-27 18:07:03 -06:00
pre-commit-ci[bot] bdc3781b88 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-27 16:43:24 +00:00
sliptonic 03e7200f68 revise feed definition 2025-11-27 10:40:13 -06:00
pre-commit-ci[bot] 6cb1e8a9ce [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-27 16:18:33 +00:00
tarman3 dd3898aa39 CAM: Task panel - Shapes selection from several objects 2025-11-27 12:48:37 +02:00
PaddleStroke da717d4ca0 Assembly: Enable negative distance for rackpinion and screw 2025-11-26 23:53:11 +01:00
PaddleStroke cf40007bd0 Assembly: CommandInsertLink: handle manual deletions (#25651) 2025-11-26 16:22:12 -06:00
Pieter Hijma 63f739b2e4 Gui: Fix refresh on boolean property toggle 2025-11-26 14:42:38 -06:00
Chris Hennes 8604c26ce3 Merge pull request #25580 from kadet1090/fix-boolean-position
PartDesign: Fix boolean positioning
2025-11-26 14:22:59 -06:00
Chris 6b60867368 GUI: fix "select all instances" (#25503) 2025-11-26 14:20:23 -06:00
PaddleStroke 46a847c857 Gui: Do not lose thumbnail when saving partially loaded doc (#25458) 2025-11-26 13:53:11 -06:00
PaddleStroke 8533d23b07 DlgSettingsDocument : fix tooltip 2025-11-26 16:55:18 +01:00
Chris 5382ca4bbb PartDesign: Use c++ exception to prevent crash (#25671)
* part design: fix issue #25639 use c++ exception to prevent crash

* [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-11-26 15:43:47 +01:00
Eugene Zhukov e270d63e5c Change params variable to uppercase PARAMS (#25663)
Addresses #25565
2025-11-26 13:25:20 +00:00
github-actions 68cb0a3270 Update translations from Crowdin 2025-11-25 21:20:42 -06:00
wandererfan 475d46c3d0 [TD]guard against font size zero 2025-11-25 19:59:59 -05:00
wandererfan e2c5c643d8 [TD]convert transparency to alpha channel 2025-11-25 19:59:53 -05:00
wandererfan 64f2c5388b [TD]add preference re alpha/transparency conversion 2025-11-25 19:59:40 -05:00
Adrian Insaurralde Avalos de230cfaa7 fix broken copr config in fedora-daily action 2025-11-25 21:30:17 -03:00
Thom de Jong dc4f9c694d Change button text and disable OK when text unchanged 2025-11-25 22:10:32 +01:00
Chris Hennes 1f582e2504 Merge pull request #25655 from mnesarco/fix-pylint-py-version
Build: Update pylint minimum python version to 3.10
2025-11-25 10:48:23 -06:00
Frank Martinez 863d77562d Build: Remove deprecated pylint option 2025-11-25 10:41:29 -05:00
sliptonic 85ef37d606 Merge pull request #25638 from LarryWoestman/linuxcnc_preamble
CAM:  fix for linuxcnc ignoring --preamble argument, with test
2025-11-25 09:03:09 -06:00
dependabot[bot] 50f68f3bc9 Bump github/issue-metrics from 3.25.2 to 3.25.3
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.25.2 to 3.25.3.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/637a24e71b78bc10881e61972b19ea9ff736e14a...78b1d469a1b1c94945b15bd71dedcb1928667f49)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.25.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 15:06:09 +01:00
tetektoza b27c9640c8 Gui: Support searching for tooltips, comboboxes and groups in Prefs
As the title says. This patch adds support for finding tooltip text,
also extends widget types to QSpinBoxes/QDoubleSpinBoxes and also adds
support for finding combobox items from QComboBox dropdown. Also adds
support for QGroupBox titles.
2025-11-25 13:49:17 +01:00
Frank Martinez 2ef70f6094 Build: Update pylint minimum python version to 3.10 2025-11-25 07:34:03 -05:00
Louis Gombert 0fca304912 CMake: fix parsing error in Sandbox/Gui
Introduced by commit 755229d
2025-11-25 05:53:44 -06:00
Max Wilfinger 972ade948c Gui: Add command to create an AnnotationLabel (#23673)
* Gui: Add command to create an AnnotationLabel

* Update src/Gui/CommandStd.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update src/Gui/CommandStd.cpp

Co-authored-by: Florian Foinant-Willig <FlachyJoe@users.noreply.github.com>

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
Co-authored-by: Florian Foinant-Willig <FlachyJoe@users.noreply.github.com>
2025-11-25 11:47:05 +01:00
Max Wilfinger e70c516774 Gui: Add icon to Clarify Selection tool (#24844) 2025-11-25 11:35:28 +01:00
PaddleStroke 59f672eb94 Assembly: Bom: replace QtWidget by QtGui for Qt6 2025-11-24 21:18:16 -06:00
pre-commit-ci[bot] 6da7cb2f9f [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-24 23:12:28 +00:00
Lawrence Woestman f349336fc8 CAM: fix for linuxcnc ignoring --preamble argument, with test 2025-11-24 14:40:16 -08:00
FEA-eng d2f082c7bc FEM: add new cyclic symm centrif example 2025-11-24 22:55:38 +01:00
tarman3 06bc4f61e0 CAM: OpUtil - Fix linter errors 2025-11-24 23:21:36 +02:00
Billy Huddleston 9cab1f8f52 CAM: Make CAM tests and serialization robust to locale-dependent decimal separators
Updated CAM unit tests and LinuxCNC serializer to handle decimal separators consistently, ensuring tests pass regardless of system locale. Assertions now compare FreeCAD.Units.Quantity objects directly or normalize decimal separators in strings. LinuxCNC serializer output is forced to use periods for decimals.

src/Mod/CAM/CAMTests/TestPathToolBitListWidget.py:
- Normalize decimal separators in tool description assertions for locale robustness.

src/Mod/CAM/CAMTests/TestPathToolBitPropertyEditorWidget.py:
- Use FreeCAD.Units.Quantity for direct quantity comparisons in property editor tests.

src/Mod/CAM/CAMTests/TestPathToolBitSerializer.py:
- Compare deserialized and serialized quantities using FreeCAD.Units.Quantity for consistency.

src/Mod/CAM/CAMTests/TestPathToolShapeClasses.py:
- Compare parameter values and units directly instead of relying on string formatting.

src/Mod/CAM/Path/Tool/library/serializers/linuxcnc.py:
- Force period as decimal separator in LinuxCNC serializer output to avoid locale issues.
2025-11-24 18:53:32 +01:00
Chris Hennes e937063e41 Merge pull request #25555 from furgo16/assembly-exploded-points-equal-fix
Assembly: exploded points equal fix
2025-11-24 11:52:51 -06:00
PaddleStroke 8b1dce3437 Assembly: Joint task: Fix sel gate not being cleared if doc closed 2025-11-24 18:28:46 +01:00
Chris Hennes 56884b4c41 Merge pull request #25548 from Rexbas/fix-gesture-contextmenu-segfault
Gui: Fix Gesture style context menu segfault
2025-11-24 11:13:14 -06:00
PaddleStroke 629eff4a26 Assembly: Joint task: fix spinbox not being populated 2025-11-24 11:11:15 -06:00
Chris Hennes 54ba0a8a29 CI: Update GitHub Actions for Crowdin translation sync
Ensure the clone is also using the freecad-gh-actions-translation-bot account so that if it force-pushes to an existing PR, the CI will run.
2025-11-24 17:10:19 +00:00
Chris Hennes 4536a54f8f Gui: Switch to defusedxml for document recovery 2025-11-24 17:07:39 +00:00
Ajinkya Dahale bb0cd704fb Merge pull request #25536 from AjinkyaDahale/patch-8
Sketcher: Only draw finite conics
2025-11-24 11:03:08 -06:00
paul bcc30869b7 [ArchWall] Fix Bug: Center-Align with Centered Multi-Material (#25572)
* [ArchWall] Fix Bug: Center-Align with Centered Multi-Material

Fix #25485

* [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-11-24 18:01:38 +01:00
Chris Hennes 6b59672689 Merge pull request #25507 from adrianinsaval/ci-release
CI: improve release workflow
2025-11-24 10:59:58 -06:00
Chris Hennes 9e35172bea Measure: Translate measurement types 2025-11-24 16:51:35 +00:00
Kacper Donat 88543612e4 PartDesign: Use true tool positions for boolean preview
This fixes positioning of some previews for booleans that were misplaced
after #24750 was merged. It restores previous code that was correct for
most cases. The reason for some previews being misaligned is described
in the #25578 - the preview actually shows how the result should be but
due to some shortcuts taken in code the result is incorrect.
2025-11-24 10:48:32 -06:00
Chris Hennes 8acccf3194 Merge pull request #25526 from Syres916/Fix_Two_StyleSheet_Issues
[Gui] increase contrast of menu separators and down arrows in comboboxes
2025-11-24 10:48:12 -06:00
PaddleStroke 74aafcee75 Sketcher: External Face: decide between defining and construction (#25390) 2025-11-24 10:47:12 -06:00
Chris Hennes febcff1777 Merge pull request #25530 from ipatch/ipatch.tshoot.24962-preserve-body-name-in-part
core: preserve body name in step file when exporting part that contains body with feature, fixes #24962
2025-11-24 10:43:00 -06:00
chris 0fc96a1a6f part design: reimp feature to move datum objects using modal / dialogue box from right click menu in model tab 2025-11-24 10:39:13 -06:00
Max Wilfinger 53042a5c38 GitHub: Update issue template 2025-11-24 10:37:02 -06:00
marioalexis 2457715d84 Fem: Improve VTK import/export preference page 2025-11-24 16:34:48 +00:00
pre-commit-ci[bot] ada21269aa [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-24 16:34:48 +00:00
Chris Hennes 128dec534a FEM: Add missing translation in InOutVTK 2025-11-24 16:34:48 +00:00
marioalexis 7d218b3f9b Fem: Improve Gmsh preference page implementation 2025-11-24 16:33:39 +00:00
Chris Hennes 16eb18abb2 FEM: Translate log verbosity settings 2025-11-24 16:33:39 +00:00
Kacper Donat 3e356491e2 Attacher: Reduce unnecessary rotation around normal for midpoint 2025-11-24 10:33:02 -06:00
PaddleStroke e38154474a Sketcher: Prevent bad coincidences (#25304) 2025-11-24 10:32:22 -06:00
Furgo 2763bb962f Assembly: Prevent zero-length line creation in ExplodedView
Safeguards the generation of explosion trail lines to avoid creating
invalid geometry.

Previously, if a part displacement was zero (or effectively zero),
`Part.LineSegment` would attempt to create a line with identical start
and end points, causing OpenCascade to throw a `Part.OCCError`. This
resulted in failures during document restoration and recomputes.

This commit introduces a `_createSafeLine` helper method that checks the
distance against a `1e-7` (near-zero) tolerance before attempting to
generate the shape.
2025-11-24 17:26:46 +01:00
Furgo b571889ab5 App: Handle uncleared Python exceptions during object restoration
When a Python-based object throws an exception during the restoration
process (e.g. inside `onDocumentRestored`), the error is caught by a
generic `catch(...)` block in `Document::afterRestore`.

Previously, this block swallowed the C++ exception wrapper but failed to
clear the underlying Python error state. Leaving the interpreter in this
"dirty" state caused a segmentation fault or `SystemError` later in the
loading process when C++ attempted to interact with the Python API
(specifically in `App::Application::setActiveDocument`).

This commit adds a check for `PyErr_Occurred()` inside the catch block.
If an error is detected, the traceback is printed to the console for
debugging, and `PyErr_Clear()` is called to reset the interpreter state,
allowing the application to continue loading the document without
crashing.
2025-11-24 17:26:46 +01:00
pjcreath efb10e1b28 Sketcher: prevent undo/redo crash when selected geometry goes away.
Fixes #25497
2025-11-24 08:56:48 -06:00
pjcreath 16aff10544 Sketcher: prevent crash on undo/redo while dragging.
Fixes #25500
2025-11-24 08:54:50 -06:00
xtemp09 eb0c980c1d [GUI] Handle ampersand in windowTitle 2025-11-24 08:18:28 -06:00
Chris Hennes 93eb02b09f Merge pull request #25604 from FreeCAD/dependabot/github_actions/peter-evans/create-pull-request-7.0.9
Bump peter-evans/create-pull-request from 7.0.8 to 7.0.9
2025-11-24 08:10:45 -06:00
dependabot[bot] 890ce2bb29 Bump peter-evans/create-pull-request from 7.0.8 to 7.0.9
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.8 to 7.0.9.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/271a8d0340265f705b14b6d32b9829c1cb33d45e...84ae59a2cdc2258d6fa0732dd66352dddae2a412)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-version: 7.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 11:59:57 +00:00
Chris Hennes 748fe5121e Merge pull request #25479 from Syres916/Fix_DlgPropertyLink_Utf8_DocumentName
[Gui] Fix string encoding for document, object and subobject names in PropertyLink, SelectionSearch, PD Sketch Based Tasks, Part Primitives and Document handling.
2025-11-23 23:32:20 -06:00
PaddleStroke 1d30d079b0 Sketcher: Rotate: Fix line length ignored (#25434) 2025-11-23 22:40:04 -06:00
Roy-043 98240a6de5 Draft: fix number_length for imperial dimensions (#25369)
* The number_length function did not take imperial dimensions into account. For `9" + 7/8"` it would return 1.
* In ArchRoof reference number_length function from DraftGui.py to avoid duplicate code.
2025-11-23 22:30:09 -06:00
FEA-eng 44bf1c35d6 FEM: Add Thick Pipe Internal Pressure 2D example (#25191)
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-11-23 22:22:27 -06:00
PaddleStroke 40e4eb8770 Assembly: BOM: fix subassembly 2025-11-23 22:20:11 -06:00
Chris 72d021108f Sketcher: allow grid snapping while hovering mouse over axis (#25226) 2025-11-23 21:50:35 -06:00
pre-commit-ci[bot] 59715114f5 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-23 23:52:14 +00:00
chris e226e9b06e core: fix various issues exporting step files, ie. #25540 #24962 #25567 2025-11-23 17:50:04 -06:00
chris d806b4e5f3 sketcher: fix issue #13852 resolve issue with state not updating constraint text 2025-11-23 23:28:51 +01:00
Kacper Donat 527b2de560 PartDesign: Bake in geometry transform after boolean
This bakes in transform into geometry after boolean to ensure that
regardless of parameters the result of boolean operation is the same.
2025-11-23 23:10:25 +01:00
Kacper Donat 4cbf10f045 Part: Add bakeInTransform method for TopoShape
This method can be used to bake in transform directly into geometry.
Normally the setTransform or setPlacement methods only store additional
positional data within the shape without changing the actual geometry.
So if we have some geometry placed at 0,0,0 and we want to have few
copies of that shape the goemetry stays intact but additional transform
is stored. This method can be used to alter the gometry and reset the
transform to identity. It helps with model stability, as not every
method correctly handles that additional transform metadata.
2025-11-23 23:10:25 +01:00
Kacper Donat 1555f65075 PartDesign: Simplify FeatureBoolean
This commit removes a ton of dead code from FeatureBoolean. It might
been ported here from the Link branch but it is not used and it is
confusing. The reason for having that code here is also not really
obvious so there is no reason to keep it.
2025-11-23 23:10:25 +01:00
chris 9c48c9a3e3 export: step file preserve last feature when exporting step file, fix issue #25567 2025-11-23 15:26:57 -06:00
chris 246218b28b core: preserve body name in step file when exporting part that contains body with feature, fixes #24962 2025-11-23 15:26:31 -06:00
tarman3 94328259ee CAM: Engrave - Remove useless property BaseObject 2025-11-23 21:33:05 +02:00
sliptonic ebbddc97e2 Merge pull request #25570 from Connor9220/FixChipLoad
CAM: Ensure Chipload is restored and displayed with user-preferred units
2025-11-23 12:42:24 -06:00
sliptonic 42e6af4237 Merge pull request #25106 from davidgilkaufman/tool_migrations_custom_dir
[CAM] Offer automatic migration of tools in (old) custom working directory to the new tool system
2025-11-23 12:28:17 -06:00
sliptonic 971fd31068 Merge pull request #22738 from tarman3/bsplinesurface
CAM: Pocket BSplineSurface
2025-11-23 11:49:52 -06:00
sliptonic e9c3b13c04 Merge pull request #25372 from tarman3/engrave_fix22380
CAM: Engrave - Fix #22380 - duplicates
2025-11-23 11:41:03 -06:00
Billy Huddleston 4432575243 CAM: Ensure Chipload is restored and displayed with user-preferred units
Fixes an issue where Chipload and similar mixin-defined properties were added to
the schema but not reliably restored, because parameter restoration did not always
apply them to the toolbit object. This change ensures Chipload is restored from saved
data and displayed using the user's preferred unit schema, even when no document
is open. This update also ensures the toolbit editor respects the user’s unit schema
preference during editing, even outside an open document.

src/Mod/CAM/Path/Tool/toolbit/models/base.py:
- Restore Chipload (and other parameters) to toolbit.obj if the property exists.

src/Mod/CAM/Path/Tool/toolbit/ui/editor.py:
- Set units schema to user preference when opening the toolbit editor, so Chipload and other values display correctly.
2025-11-23 11:45:47 -05:00
Adrian Insaurralde Avalos 46f3cf2f19 CI: improve release workflow
adapt weekly build workflow to do normal releases too, rename accordingly
skip macos singning setup if certificate not available (useful to run on forks)
add missing dmgbuild dependency for badge icons on macos
build windows installer in workflow, add needed dependencies to pixi.toml
reorganize packaging scripts that can be useful outside rattler-build too
do some cleanup
add .gitignore to rattler-build
Properly configure appimage updating depending on release type and upload zsync file
2025-11-23 10:54:51 -03:00
Bas Ruigrok 6e5a318ceb Gui: Simplify QObject::connect in openPopupMenu
Co-authored-by: xtemp09 <9303235+xtemp09@users.noreply.github.com>
2025-11-23 14:30:51 +01:00
Andrew Burks bad2989b7b #25474 Added read-only warnings when saving documents (#25532)
* #25474 Added read-only warnings when saving documents

Block saving a file and notify user if windows is unable to save to the file for any reason, or the read-only attribute is checked. Also check std::filesystem::perms for write permission and other checks in FileInfo::isWritable(), although it doesn't seem to matter on windows.

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-11-23 05:09:32 +00:00
Adrián Insaurralde Avalos d466ba037b WindowsInstaller: multiple improvements and fixes
move windowsinstaller to /package
update artwork
adapt to conda builds
make msvc redist directory optional
automate version information definition
use relative directories for file locations definitions
improve/update readme
partially update Delete.bat for qt6 libpack
add .gitignore
update signing.bat and add hashing command

WindowsInstaller: use --safe-mode in freecadcmd commands [skip ci]

WindowsInstaller: make windows 8 the minimum version [skip ci]

WindowsInstaller: allow configuring some values via command line

windows installer update for qt6 build
2025-11-22 23:46:11 -03:00
Bas Ruigrok dec0ea238a Gui: Fix Gesture style context menu segfault 2025-11-22 15:39:32 +01:00
Chris Hennes e01063b3c4 Build: Remove blanket disabling of deprecation warnings
Also document other disabled warnings.
2025-11-21 17:02:11 -06:00
Adrian Insaurralde Avalos 3ab8dbe194 pixi: enable building reverse engineering 2025-11-21 16:35:53 -06:00
tarman3 a0876f8060 CAM: LeadInOut - Fix regression after #24829 2025-11-21 23:00:37 +02:00
Syres916 fc6a39658a [Gui] Reduce separator from 2px to 1px 2025-11-21 19:10:20 +00:00
sliptonic 17d27780ac Fixes #24959 Introduces ADR for "Stock to Leave" 2025-11-21 12:06:23 -06:00
sliptonic b254aa9815 Draft ADR-008 for normalizing Heights and depths terminology 2025-11-21 11:27:37 -06:00
Syres916 cda9a107aa [Gui] increase contrast of menu separators and down arrows in comboboxes 2025-11-21 17:07:03 +00:00
Roy-043 63c9b176e2 BIM: fix handling of BIM_Sketch view properties (#25339)
* BIM: fix handling of BIM_Sketch view properties

The handling of the sketch view properties was not correct:
* AutoColor was not set to `False`.
* PointSize was missing.
* PointColor was not set to the DefaultShapeVertexColor preference.
* Grid values were never applied. Sketches do not have a GridSnap property and gridSize is not the correct Draft preference.
* Sketch grid snap is a global setting that affects all sketches, the code should not change that setting IMO.

* Remove trailing white space
2025-11-21 10:12:33 +00:00
Logstor e802aa1821 Removed sys in 'from os import sys, path' 2025-11-20 20:13:16 -06:00
Adrian Insaurralde Avalos a847a794c4 CI: specify environment for fedora-daily workflow
otherwise it doesn't have access to the secrets it needs
2025-11-20 23:03:30 -03:00
Jacob Oursland f48db1f855 Enable Reverse Engineering WB.
The Reverse Engineering WB was temporarily disabled as it didn't support Qt6.As it now supports Qt6,
it is time to re-enable the WB.
2025-11-20 17:39:49 -06:00
Chris Hennes a0419f3874 CI: Remove labels from Crowdin update workflow
Adding labels requires admin privileges, which we don't want this account to have.
2025-11-21 00:20:07 +01:00
Syres916 a10fbf2e8c [Gui] Fix string coding on selection changed 2025-11-20 21:37:05 +00:00
Syres916 76071ffbeb [Part] Fix string encoding for document name and object name 2025-11-20 20:04:48 +00:00
Syres916 83c01fae68 [Gui] Fix string encoding for document name 2025-11-20 20:02:21 +00:00
pre-commit-ci[bot] 6d8c5bd2f9 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-20 19:55:20 +00:00
Syres916 eb08fe2a78 [Gui] Fix string encoding for preselect, select and deselect 2025-11-20 19:52:12 +00:00
pre-commit-ci[bot] 23df7e4cad [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-20 19:22:23 +00:00
Syres916 d19ab48231 [Gui] Fix string encoding for document, object and subojects 2025-11-20 19:19:45 +00:00
pre-commit-ci[bot] 78bb40c419 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-20 19:04:34 +00:00
Syres916 1e30362dd4 [PartDesign] Fix string encoding for document name and face reference 2025-11-20 19:02:25 +00:00
Syres916 61db439744 [Gui] Fix string encoding for document name 2025-11-20 18:37:50 +00:00
pre-commit-ci[bot] 4c8d140373 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-20 16:31:00 +00:00
Syres916 fcd487e0ad [Gui] Fix string encoding document name and object name 2025-11-20 16:28:04 +00:00
Syres916 093a070439 [Gui] Fix incorrect document name when updating PropertyLink 2025-11-19 23:43:52 +00:00
Chris Hennes deab0abf8e Gui: Translate 'Don't show me again' 2025-11-20 00:28:17 +01:00
PaddleStroke 2266a42009 Assembly: Make the 'ground first part' dialog closable 2025-11-20 00:27:06 +01:00
Kacper Donat 8995f43a15 Gui: Fix stylesheet loading order
For some platforms due to event loop and timer triggering being not
deterministic stylesheets could be loaded before style parameters were
fully loaded. This caused warnings about style parameters to appear
potentially confusing users.

This commit changes the stylesheet loading to happen much earlier in the
process so the stylesheet is applied before theme preselection has
chance to happen.
2025-11-19 13:00:14 -06:00
Kacper Donat d1a8f99509 Gui: Save defaults layout after first launch 2025-11-19 10:27:20 -06:00
PaddleStroke 1cf6f5f3a6 Assembly: Fix joint on Body-LCS not working 2025-11-19 12:23:59 +01:00
PaddleStroke 5009a4ddaf SoBrepEdgeSet : Fix color override crash 2025-11-19 12:22:59 +01:00
PaddleStroke be7d41dea7 Assembly/TechDraw: Fix exploded view views (#25426) 2025-11-18 15:54:51 -06:00
PaddleStroke 2a8d648ad3 Assembly: Fix crash on moving unconnected parts 2025-11-18 13:06:33 -06:00
Chris Hennes b2a1e2a6e1 Gui: Update About banner for 1.2-dev 2025-11-18 19:58:03 +01:00
tarman3 6ecc6f780c CAM: Remove dependency Path.Main.Job from Path.Dressup.Utils 2025-11-18 20:46:34 +02:00
Chris 3f42824ffa Part: fix splitting of a split that is a container / group (#25293) 2025-11-18 11:48:40 -06:00
Chris Hennes 4fa7dd76f0 Merge pull request #25244 from tetektoza/fix/25232_exp_editor_regressions
Gui: Differentiate completion activation modes in Expression Editor
2025-11-18 10:10:00 -06:00
PaddleStroke 6f90c5ea61 Sketcher: ConstraintList: prevent N transaction on box selection (#25254) 2025-11-18 09:15:03 -06:00
captain0xff 5d387ae014 PartDesign: fix the interactive controls for revolution/groove 2025-11-18 15:39:42 +01:00
Roy-043 45866b5f41 PartDesign: Update TaskFeaturePick.cpp text (Title Case mod) 2025-11-18 15:35:12 +01:00
Furgo 0b0d1ccc12 BIM: Smart removal of wall bases (#24550)
* BIM: Implement smart base removal for Walls

Previously, removing the Base object from an Arch Wall would cause the
wall to reset its position to the document origin and could lead to
unintended geometric changes for complex walls.

This commit introduces a "smart debasing" mechanism integrated into the
Component Task Panel's "Remove" button:

- For walls based on a single straight line, the operation now preserves
  the wall's global position and parametric `Length`, making it an
  independent object.
- For walls with complex bases (multi-segment, curved), a warning dialog
  is now presented to the user, explaining the consequences (shape
  alteration and position reset) before allowing the operation to
  proceed.

This is supported by new API functions `Arch.is_debasable()` and
`Arch.debaseWall()`, which contain the core logic for the feature.

Fixes: https://github.com/FreeCAD/FreeCAD/issues/24453

* BIM: Move wall debasing logic into ArchWall proxy

The logic for handling the removal of a wall's base object was previously
implemented directly within the generic `ComponentTaskPanel` in
`ArchComponent.py`. This created a tight coupling, forcing the generic
component UI to have specific knowledge about the `ArchWall` type.

This commit refactors the implementation to follow a more object-oriented
and polymorphic design:

1.  A new overridable method, `handleComponentRemoval(subobject)`, has been
    added to the base `ArchComponent` proxy class. Its default implementation
    maintains the standard removal behavior.

2.  The `_Wall` proxy class in `ArchWall.py` now overrides this method. All
    wall-specific debasing logic, including the eligibility check and the
    user-facing warning dialog, now resides entirely within this override.

3.  The `ComponentTaskPanel.removeElement` method has been simplified. It is
    now a generic dispatcher that calls `handleComponentRemoval` on the
    proxy of the object being edited, with no specific knowledge of object types.

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

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

* BIM: Correct user warning

The operation can indeed be undone.

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2025-11-18 13:58:59 +00:00
Chris Hennes 7980d82207 Merge pull request #25044 from WandererFan/CenterMarksNotShown3
TechDraw: Vertex creation, display and selection issues
2025-11-18 05:43:49 -06:00
pre-commit-ci[bot] 151e3a987e chore: Fix formatting for missing file 2025-11-18 03:15:09 -06:00
pre-commit-ci[bot] 0f4be480b1 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-18 04:30:12 +00:00
wandererfan 484c89818c [TD]enforce center mark print rule on print preview 2025-11-17 22:28:07 -06:00
wandererfan cf656ba77e [TD]fix center mark preferences not honored 2025-11-17 22:28:07 -06:00
wandererfan 110b4b0d95 [TD]fix lost mouse event in Projection Group 2025-11-17 22:28:07 -06:00
wandererfan 66a2dd984e [TD]fix cosmetic vertex outside frameRect is not selectable
- attempting to select a vertex outside the frameRect/boundingRect
  triggers hoverLeave event which hides the vertex.
2025-11-17 22:28:07 -06:00
wandererfan f6c75c7838 [TD]fix no vertex select in front view of projection group 2025-11-17 22:28:07 -06:00
wandererfan 2161e31328 [TD]fix fail to clear frame on selection change 2025-11-17 22:28:06 -06:00
wandererfan 73e4b296b1 [TD]fix fail to create vertex outside frame 2025-11-17 22:28:06 -06:00
wandererfan f0da095cf8 [TD]fix center marks not shown 2025-11-17 22:28:06 -06:00
wandererfan b918cac67a [TD]fix giant vertex from tracker 2025-11-17 22:28:06 -06:00
wandererfan d2bbd78c67 [TD]clear selection affects vertex display
- clearing the selection here causes the new vertex to not be displayed
2025-11-17 22:28:06 -06:00
wandererfan 4bb8f7e8eb [TD]add getExportingAny() 2025-11-17 22:28:06 -06:00
wandererfan 23290b8050 [TD]add preference methods for center marks 2025-11-17 22:28:06 -06:00
Chris f218c5f25c Import: STEP export preserve body names (#25042) 2025-11-17 22:23:21 -06:00
Chris Hennes 0a73f53990 Gui: Add translation to 'No style sheet' 2025-11-17 23:15:58 +01:00
pre-commit-ci[bot] 13adb1fb5c [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-17 19:16:28 +00:00
David Kaufman ad3119306b fix rebase error 2025-11-17 14:06:08 -05:00
David Kaufman f869295d03 update UI to label helix diameter as a percentage, reorganize 2025-11-17 14:06:08 -05:00
David Kaufman a6c7d7c0e7 fix units bug 2025-11-17 14:06:08 -05:00
David Kaufman b19eaff00e fix rebase errors 2025-11-17 14:06:08 -05:00
David Kaufman 09e984d1ce fix github warning 2025-11-17 14:06:08 -05:00
David Kaufman 9e830949a8 [CAM] add helix max stepdown parameter 2025-11-17 14:06:08 -05:00
David Kaufman 80d78efc6b [CAM] update/fix adaptive UI panel and parameter limits 2025-11-17 14:06:08 -05:00
David Kaufman 8aa7117af7 [CAM] initial implementation of automatic helix size selection for adaptive 2025-11-17 14:06:06 -05:00
tarman3 8cb87df0f2 CAM: _migrateRampDressups - fix #25391 2025-11-17 19:56:35 +02:00
tarman3 dc776de547 CAM: Line numbers in Inspect window 2025-11-17 19:55:54 +02:00
tarman3 0e0f948d71 CAM: Show line numbers in export gcode dialog 2025-11-17 19:55:15 +02:00
tarman3 889dc7059c CAM: Pocket BSplineSurface 2025-11-17 19:53:47 +02:00
pre-commit-ci[bot] c1b58d1e91 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-17 17:42:43 +00:00
tarman3 5dd3d3d8b1 CAM: Engrave - Fix #22380 - duplicates 2025-11-17 19:40:05 +02:00
sliptonic 8c8b26ee4b Merge pull request #25371 from tarman3/engrave_fix9114
CAM: Engrave - Fix #9114 - Unable to engrave an arc
2025-11-17 11:19:23 -06:00
sliptonic eb4231266e Merge pull request #25376 from chennes/translationStringContext
Gui: Fix context of translation strings
2025-11-17 11:15:57 -06:00
Gaël Écorchard c77e1d840c Remove functions that require Kuka files (#24984) 2025-11-17 11:15:18 -06:00
Billy Huddleston 900d5ae255 CAM: Fix crash when Path panel widgets are deleted
Prevent RuntimeError by safely handling missing or deleted geometry import
widgets in Path operation panels. This ensures the UI update code does not
fail if the underlying C++ objects are destroyed, improving stability when
panels are closed or the UI changes.

src/Mod/CAM/Path/Op/Base.py:
- Wrap geometry import widget access in try/except to avoid crashes
- Add error handling for panel widget deletion scenarios
2025-11-17 11:11:24 -06:00
Chris Hennes e0c5c89bd9 Build: Add network-failure fault tolerance to macOS signing (#25265) 2025-11-17 14:01:54 -03:00
PaddleStroke 551ab85076 Assembly: Sub-assembly: fix support for Part-wb objects (#25279)
* Assembly: Sub-assembly: fix support for Part-wb objects

* [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-11-17 17:59:40 +01:00
PaddleStroke 10cc4dea16 Assembly: Insert link: Handle partially loaded documents (#25275) 2025-11-17 10:55:48 -06:00
PaddleStroke 33d1d80555 Sketcher: Remove transaction from TaskSketcherConstraints::doSetVisible (#25255)
* Sketcher: Remove transaction from TaskSketcherConstraints::doSetVisible

* [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-11-17 17:54:55 +01:00
chris 1ec1f1506e sketcher wb: fix issue #25076, resolve grid snapping placement 2025-11-17 10:51:28 -06:00
tarman3 2e3a4d541c CAM: LeadInOut - Fix overtravel 2025-11-17 10:45:08 -06:00
David Carter f4e78e3163 Materials: Assigning material without appearance
Assigning a material without an appearance reset the appearance to the
default appearance.

There were two main problems. One was the comparison function for
App::Material objects. It would return false when the UUID or MatType
values were different although there are many circumstances where this
could be true and the appearance be the same. It also incorrectly
compared the imagePath.

The second problem was the logic for detecting if an object has already
been assigned an appearance by assigning a material or manually setting
the appearance. If assigned a material, the appearance should update but
not if it has been set manually. This logic has been corrected.
2025-11-17 17:43:14 +01:00
Chris Hennes 50392855bf CI: Update macOS Intel target version in workflow
GitHub is deprecating macOS 13 runners -- the only remaining Intel runner is now macOS 15, and it is scheduled for retirement in 2027, at which point we will no longer be able to provide Intel weeklies.
2025-11-17 17:33:25 +01:00
Chris Hennes 4d0c35dd2d Core: Convert transparency to alpha (#24891)
* Core: Convert transparency to alpha

Create new `Base::getVersion()` function for extracting a program
version enumeration given a version string.

Convert transparency to alpha value for old project files.

* Base/App: Address review comments

---------

Co-authored-by: wmayer <wmayer@freecad.org>
2025-11-17 17:15:19 +01:00
David Kaufman 767ee484ba Hopefully placate CodeQL 2025-11-17 09:18:30 -05:00
Connor9220 11eba3f25c Fix carriage returns in the Migrator Dialog Title. (#25379) 2025-11-16 22:48:09 -06:00
Jiří Pinkava 5fc650b2ff Tests: Fix value for Imperial pressure tests
The decimal was (wrongly) cahnged in 5379378626
2025-11-16 22:45:52 -06:00
Chris Hennes 0aec9c3b21 Gui: Fix context of translation strings 2025-11-16 17:12:57 -06:00
Florian Foinant-Willig 526f7f2550 TechDraw: fix "%.0w" format spec (#25367) 2025-11-16 18:51:28 +00:00
tarman3 a514cfdf4b CAM: Engrave - Fix #9114 - Unable to engrave an arc 2025-11-16 20:47:21 +02:00
Aqeel Labash a77f96ea86 Fix wording for On-view-parameters tool tip. (#24773)
* switch wording in tooltip-swap-wording

* switch wording in tooltip for On-View-Paramter
2025-11-15 19:27:03 +01:00
phaseloop ec3c8cf2bc Merge branch 'main' into v-routing 2025-11-15 17:24:45 +01:00
Phaseloop 33edb3812c Merge branch 'v-routing' of github.com:phaseloop/FreeCAD into v-routing 2025-11-15 17:23:10 +01:00
Phaseloop b7cf22c44f fix broken backtrack edge generation 2025-11-15 17:22:26 +01:00
PaddleStroke 5da1e3d899 TaskAttacher: Remove 'reset edit' causing trouble to assembly (#25277) 2025-11-15 10:13:56 -06:00
theo-vt 15d9e14851 Sketcher: Proceed to chamfer/fillet on a vertex if there are more than 2 lines but only two non-construction lines 2025-11-15 10:08:22 -06:00
theo-vt d4bfa82161 Sketcher.planegcs: solve reference constraints with lower priority (#25318) 2025-11-15 09:54:56 -06:00
sliptonic bb172e4a6b CAM: Renaming of postprocessors and cleanup (#24771)
* Post Processor cleanup and rename

remove unused files
Basic implementation of generic post
add blending mode support for linuxcnc
add mocking for postprocessor tests
Add tests for generic post
linuxcnc test only tests linuxcnc specific functionality

minor improvements
add arc splitting to refactored post processors
Refactor smoothie post
move posts to legacy.  Remove 'refactored'
lint cleanup
fixes #19417

* [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-11-15 09:46:34 -06:00
mosfet80 f8afa5ac72 Update CONTRIBUTORS
Adds my name to the CONTRIBUTORS file
2025-11-15 12:55:49 +01:00
paul 29d2285ed7 [ArchStairs] Fix Landing property disable At-Each-Corner (#25278)
* [ArchStairs] Fix Landing property disable At-Each-Corner

Fix #24384

* Update src/Mod/BIM/ArchStairs.py

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

* Update ArchStairs.py - Typo

---------

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2025-11-15 09:17:35 +00:00
tarman3 00a4de14e7 CAM: Slot operation - Tooltip - single slot (#25087)
* CAM: Slot tooltip

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

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

---------

Co-authored-by: sliptonic <shopinthewoods@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-11-14 23:25:14 +00:00
tarman3 0abfdf237a CAM: Profile - clean areaOpOnDocumentRestored() 2025-11-15 00:07:26 +02:00
tarman3 1ed08a2e43 CAM: Geom - isVertical for BSpineSurface 2025-11-14 23:22:09 +02:00
David Kaufman f22d0e2292 migrate silently, no prompts 2025-11-14 14:37:05 -05:00
Roy-043 c422404020 Core: workaround for Building US unit system bug (#25288)
* Core: workaround for Building US unit system bug

Fixes #11345

This workaround should hopefully fix the Building US unit system bug at the level of the InputField code. This is the most feasible solution given that we are currently in the v1.1 feature freeze.

I use the word "hopefully" because I have not compiled and tested the code. But replacing `+` with `--` works in Python examples.

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

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

* Fix typo in comment

* [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-11-14 12:58:24 -06:00
Pieter Hijma 0083364dbe Doc: Improve the documentation of transactions (#21494) 2025-11-14 12:52:13 -06:00
dependabot[bot] 4fd6dc5120 Bump actions/dependency-review-action from 4.8.0 to 4.8.2
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 4.8.0 to 4.8.2.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/56339e523c0409420f6c2c9a2f4292bbb3c07dd3...3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261)

---
updated-dependencies:
- dependency-name: actions/dependency-review-action
  dependency-version: 4.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-14 12:48:30 -06:00
dependabot[bot] ccc4e084aa Bump actions/download-artifact from 5.0.0 to 6.0.0
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 5.0.0 to 6.0.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/634f93cb2916e3fdff6788551b99b062d0335ce0...018cc2cf5baa6db3ef3c5f8a56943fffe632ef53)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-14 12:48:03 -06:00
sliptonic e212f2a175 Merge pull request #25212 from tarman3/geom_segm
CAM: Path.Geom.cmdsForEdge() - remove useless 'segm'
2025-11-14 12:32:38 -06:00
sliptonic df2774ac72 Merge pull request #24185 from tarman3/loop
CAM: SelectLoop improve
2025-11-14 12:26:11 -06:00
sliptonic 011a6d93bd Merge pull request #25215 from tarman3/geom_clean
CAM: Path.Geom - fix linter errors
2025-11-14 12:25:37 -06:00
sliptonic bd844b8273 Merge pull request #24852 from tarman3/inspect_mhs
CAM: Inspect - decrease default Max Highlighter Size
2025-11-14 12:23:27 -06:00
sliptonic f9c05d18af Merge pull request #25074 from tarman3/slot_face
CAM: Slot - Reject incorrect faces selection
2025-11-14 12:15:53 -06:00
sliptonic 86037a1462 Merge pull request #23285 from davidgilkaufman/feed_rate_percentage
[CAM] Feed rate percentage for ramp and lead in/out moves
2025-11-14 12:07:49 -06:00
sliptonic 2a79543c79 Merge pull request #22598 from emmanuel-ferdman/main
CAM: Fix path dressup array test case
2025-11-14 12:05:57 -06:00
Alfred a283855697 Sketcher: Vertical dimension tooltip fix (#24839)
* Corrected all Veritical Dimension Tooltips

* Fixed error in Sketcher_de

* Fixed rest of translation file errors

* Revert "Fixed rest of translation file errors"

This reverts commit 7f3a50ac4f5de9045236668cc669bd26e1206094.

* Revert "Fixed error in Sketcher_de"

This reverts commit 49d617384e2666a245746e5c599d2962abd678d6.

* Revert "Corrected all Veritical Dimension Tooltips"

This reverts commit 4494b18cdc8d6653b441754cbf8a19d0af6ec46d.

* Corrected Vertical Dimension Tooltip
2025-11-14 17:45:16 +00:00
sliptonic c041671a1b Merge pull request #24044 from davidgilkaufman/adaptive_stepover
[CAM] Improve Adaptive operation to successfully generate for small stepover
2025-11-14 11:43:34 -06:00
sliptonic 4dd03be0dc Merge pull request #24676 from Connor9220/TappingWithAnnotations
CAM: Add rigid tapping support to linuxcnc_post.py via Annotations
2025-11-14 11:39:59 -06:00
sliptonic 587bb9179e Merge pull request #24675 from Connor9220/PathCommandAnnotations
CAM: Path command annotations
2025-11-14 11:39:31 -06:00
sliptonic 4005b78e6d Merge pull request #22764 from tarman3/postprocess
CAM: Post Process only selected Operations
2025-11-14 11:35:27 -06:00
Thom de Jong cca733810f Merge branch 'main' into main 2025-11-14 17:52:07 +01:00
sliptonic 5211400cae Merge pull request #25101 from tarman3/array_dressup_translate
CAM: DressupArray - Fix python import
2025-11-14 10:46:18 -06:00
Roy-043 cc7706ec6f Core: 'Stop macro recording' menu text to Title Case (#24302)
* Core: 'Stop-macro-recording' menu text to Title Case

The modified text appears in the menu during a recording session.

* Rebase
2025-11-14 15:33:12 +01:00
Max Wilfinger fd45dc1721 Merge branch 'main' into main 2025-11-14 15:16:11 +01:00
revaarathore11 2903f480ae Fix tooltip text mismatch for 'Dimensions only' in Sketcher Preferences (#24825) 2025-11-14 15:10:03 +01:00
FEA-eng 3aaa225145 Spreadsheet: Update SheetTableView.cpp 2025-11-14 15:03:23 +01:00
Roy-043 dbf1f00c01 GUI: DlgParameterImp.cpp more dialog titles to Title Case (#24258) 2025-11-14 13:07:25 +00:00
Roy-043 84dfab257f GUI: CommandDoc.cpp more dialog titles to Title Case (#24250)
* GUI: CommandDoc.cpp more dialog titles to Title Case

* Rebase
2025-11-14 12:49:01 +00:00
Roy-043 26615ea5d8 GUI: Restore view items and some dialog titles to Title Case (#24222) 2025-11-14 12:31:26 +00:00
Roy-043 4417f501a5 GUI: DrawStyle submenu to Title Case (#24220) 2025-11-14 12:12:41 +00:00
Roy-043 04279e27dd Rebase (#23621) 2025-11-14 11:56:24 +00:00
Furgo 93868d54b7 Define DlgScale task panel's tab order (#25300)
* Define DlgScale task panel's tab order

To improve keyboard navigation.

Fixes: https://github.com/FreeCAD/FreeCAD/issues/23772

* [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-11-14 10:18:29 +00:00
Stephan T. Lavavej 9e6509a3a4 Avoid using non-Standard std::locale::empty() for MSVC 2025-11-14 00:22:18 -06:00
Chris Hennes a19db66c8b CI: Add GitHub token for Crowdin sync 2025-11-14 05:08:23 +01:00
tarman3 b0a79a6f2c CAM: DressupArray - Fix python import 2025-11-14 00:11:44 +02:00
tarman3 0dc28c57d7 CAM: Path.Geom - fix linter errors 2025-11-14 00:07:05 +02:00
tarman3 e4ec4cb0df CAM: Path.Geom.cmdsForEdge() - remove useless 'segm' 2025-11-14 00:06:38 +02:00
tarman3 9d25f6f53d CAM: Inspect - decrease default Max Highlighter Size 2025-11-14 00:02:46 +02:00
tarman3 ec5b9a808d CAM: SelectLoop improve 2025-11-13 23:29:17 +02:00
tarman3 092ba973f2 CAM: Post Process only selected Operations 2025-11-13 23:25:53 +02:00
tarman3 dc2a3d0d60 CAM: SimpleCopy - Allow for all operations 2025-11-13 23:10:35 +02:00
tarman3 c0ebb8e88d CAM: Slot - Reject incorrect faces selection 2025-11-13 23:09:27 +02:00
Chris Hennes cdc798ec12 CI: Update CrowdIn action to use 1.1 release branch 2025-11-13 21:43:30 +01:00
tetektoza ca1528e2a9 Gui: Use UTF-8 string instead of UTF-16 for Reset in Expression Editor
Currently `ExpLineEdit::apply()` passes `QString::constData()` to a
printf-style format string with %s. `QString::constData() returns a
const QChar* (UTF-16, 2 bytes per char), but %s expects a const char*
(UTF-8/ASCII with 1 byte per char).

This results in a string being interpreted as in "Container":
Byte 0: 'C'
Byte 1: 0x00 (high byte of UTF-16 'C', which gets interpreted as null
terminator)

So this patch uses proper conversion to null-terminated C-String before
passing it further.
2025-11-13 21:39:54 +01:00
Rehan Ahmed a704ac301d Fix case inconsistencies (#24812)
* Fix case inconsistency - Input Hints

* Fix case inconsistency - Quick Measure

* Fix case inconsistency - Navigation Indicator

* Fix case inconsistency - BIM Status Widget

* Remove .ts translation file changes

---------

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2025-11-13 20:19:19 +00:00
Rahul Paul 888ba973a5 Fix(TechDraw): Capitalize OK button in TemplateFields (#24866) 2025-11-13 20:58:21 +01:00
FEA-eng a18f45914b FEM: Update constraint_tie.py 2025-11-13 20:57:22 +01:00
luzpaz 10709bd467 Fix typos and grammar (#24827)
* Fix typos and grammar
Fixes typos and grammar in several files.

* fix missed typo

* Remove unnecessary line in LeadInOut.py

---------

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2025-11-13 19:53:35 +00:00
Chris Hennes e8f826d0ed Build: Bump minor version of main branch from 1.1 to 1.2 (#25274) 2025-11-13 20:35:28 +01:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ bb37dfda0e [ BIM ]: Refactor - Save Preset Stringify (#25140)
* [ BIM ]: Refactor Save Preset Stringify

* [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-11-13 19:53:54 +01:00
Furgo 9c22fc55f9 BIM: Update search box text for material search (#24754)
* BIM: Update search box text for material search

* BIM: change Material Manager title to title case

* BIM: change Material Manager search placeholder text to sentence case

* BIM: reword reference to tree to avoid confusion with the Tree View

* BIM: Rename button text for creating Multi-Material for consistency
2025-11-13 19:46:38 +01:00
Ryan K 32840628ae BIM: Update sketch command name to be consistent with other workbenches (#24278)
Co-authored-by: Ryan Kembrey <ryan.kembrey@student.uts>
2025-11-13 19:45:05 +01:00
Thom de Jong dc4f2733e6 Keep old buttons for old post processors 2025-11-13 17:38:31 +01:00
Thom de Jong c15faf9918 Initialise editor_result 2025-11-13 15:25:22 +01:00
Thom de Jong 896443a8ec Merge branch 'FreeCAD:main' into main 2025-11-13 15:22:33 +01:00
Marcell Pardavi af2d42a4aa CAM: Simulator — fix model centering when HiDPI scaling is active 2025-11-13 14:34:29 +01:00
Thom de Jong 3e2ace89e9 Merge branch 'FreeCAD:main' into main 2025-11-13 13:23:18 +01:00
Thom de Jong d82f09081a Fix editor_result check 2025-11-13 13:22:52 +01:00
PaddleStroke da4ebb56cb Assembly: no dragger for connected parts (#25270)
* Assembly: no dragger for connected parts

* [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-11-13 12:07:20 +00:00
Thom de Jong 5e971d1f91 Merge branch 'FreeCAD:main' into main 2025-11-13 12:44:33 +01:00
PaddleStroke e2bab72bb5 Assembly: BOM: fix settings not applied (#25269) 2025-11-13 12:05:17 +01:00
Kacper Donat eb1e0d7f11 Gui: Save previous default for overlay widgets
For some reason the empty layout was not saved for users with existing
config. To ensure that the change does not affect existing users and is
persistent for current ones we need to save value with older default
before using it. Previous solution did not work correctly as the widgets
were not persisted correctly.
2025-11-12 19:57:23 -06:00
paddle d3cb7baa3a Assembly: Highlight joint elements on joint selection 2025-11-12 21:41:01 +01:00
David Kaufman 4f33d66fb3 re-fix early exit condition for repeat integer points 2025-11-12 21:36:13 +01:00
David Kaufman f4f8bd2c81 fix cam tests
tbh the test seems kind of unstable
2025-11-12 21:36:13 +01:00
David Kaufman 62caf967c7 cleanup 2025-11-12 21:36:13 +01:00
David Kaufman ad1724550e fix adaptive early exit condition for testing repeat integer points 2025-11-12 21:36:10 +01:00
David Kaufman edce05d992 avoid retrying same integer points in optimization routine 2025-11-12 21:36:10 +01:00
David Kaufman 920a2363a7 rename resolution_factor to min_step_clipper 2025-11-12 21:36:08 +01:00
David Kaufman 183e82607a Fix units/extract RESOLUTION_FACTOR from area constants
Most of the code treats RESOLUTION_FACTOR as "number of clipper units in
a single step" -- a linear distance unit. However, there are a few
locations in which it is treated as unitless, multiplied by area
constants. This commit folds the current value of RESOLUTION_FACTOR into
these other contents in preparation for declaring it to have distance
units and increasing its value.
2025-11-12 21:36:05 +01:00
David Kaufman 2f91f74ac9 refinements 2025-11-12 21:36:02 +01:00
David Kaufman 04a9579561 [CAM] WIP fix adaptive stepover bug, many debug statements remain 2025-11-12 21:36:02 +01:00
Thom de Jong d08659eafc Change G-code editor buttons 2025-11-12 21:11:06 +01:00
PaddleStroke 4b50d72769 Sketcher: Fix origin showing on sketch edit 2025-11-12 19:40:25 +01:00
FEA-eng 5f8f2c5bd2 FEM: Correct categories of two FEM examples (#25246)
* FEM: Update equation_electrostatics_capacitance_two_balls_ccx.py

* FEM: Update ccx_cantilever_ele_tetra4.py
2025-11-12 19:02:55 +01:00
github-actions 8432fab0a9 Update translations from Crowdin 2025-11-11 23:44:18 -06:00
tetektoza 3f6a0ee78b Gui: Differentiate completion activation modes in Expression Editor
Currently if user tries to press TAB during Expression Editor, it
inserts both the entry and its first subentry. Also, if user browses the
dropdown with arrows keys, it inserts it's values.

Root cause of that is the regression made in latest changes to chaining
completion logic which is triggered for all completion modes including
TAB, which already has its own refresh mechanism. Also,
ExpressionTextEdit connected both activated (Enter/click) and highlight
signals to the same slot, resulting in arrow key navigation inserting
completions.

So, this adds separate slots for ExpressionTextEdit to differentiate
completion modes. And also updates tab handling to pass
ActivationMode::Highlighted to prevent double chaining.
2025-11-12 00:23:04 +01:00
pre-commit-ci[bot] 5e0dd60ee5 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-11 19:34:32 +00:00
Frank Martinez 3561d25c2d [License] Fix pyi license headers. 2025-11-11 13:26:18 -05:00
Frank Martinez d026c6f708 [bindings] remove redundant signatures. batch3 2025-11-11 13:26:18 -05:00
Frank Martinez 93e4858b01 [bindings] remove redundant signatures. batch2 2025-11-11 13:23:10 -05:00
Frank Martinez 7fe379e5ea [bindings] remove redundant signatures. batch1 2025-11-11 13:23:10 -05:00
Frank Martinez 73e67fefd1 [bindings] Automatic export of function signatures with annotations to runtime. (PyMethodDef.ml_doc) 2025-11-11 13:23:10 -05:00
Frank Martinez 1cf57d6e11 [bindings] Format with yapf (precommit will reformat) 2025-11-11 13:23:10 -05:00
Frank Martinez 1b0c0399e9 [bindings] Fix overload order 2025-11-11 13:23:10 -05:00
Frank Martinez 2eedbce181 Rebase on main and fix ViewProviderAssembly.pyi 2025-11-11 13:23:10 -05:00
Frank Martinez dd15887568 [bindings] Fix undefined symbols in pti files 2025-11-11 13:23:10 -05:00
Frank Martinez 2ada443c18 Clean unused imports in .pyi files 2025-11-11 13:23:10 -05:00
Frank Martinez a3232103d5 Fixed docstrings 2025-11-11 13:23:10 -05:00
Frank Martinez 39d15c011e black formatting 2025-11-11 13:23:10 -05:00
Frank Martinez 47e3162dcb [bindings] re-shape some keyword-only signatures 2025-11-11 13:23:09 -05:00
Frank Martinez 6b0b15f687 [bindings] Code cleanup 2025-11-11 13:23:09 -05:00
Frank Martinez 0eae00b9a1 [bindings] Code formatting 2025-11-11 13:23:09 -05:00
Frank Martinez 748004b4e4 [bindings] fix signatures in pyi files 2025-11-11 13:16:26 -05:00
Frank Martinez 8c7f381416 [bindings] Document 2025-11-11 13:08:06 -05:00
Frank Martinez 33f605a125 [bindings] ComplexGeoData 2025-11-11 13:08:05 -05:00
Frank Martinez f1248c2418 [bindings] ApplicationDirectories 2025-11-11 13:08:05 -05:00
Chris Hennes 4fbb389ce1 Merge pull request #21019 from kadet1090/update-formatting-style 2025-11-11 10:45:10 -06:00
Kacper Donat cf2e3026a2 chore: Add formatting to .git-blame-ignore-revs 2025-11-11 13:50:35 +01:00
pre-commit-ci[bot] 25c3ba7338 All: Reformat according to new standard 2025-11-11 13:49:01 +01:00
Kacper Donat eafd18dac0 Part,PartDesign,Gui: Add to pre-commit formatting 2025-11-11 13:45:27 +01:00
Kacper Donat b70b31226b All: Update formatting style 2025-11-11 13:45:27 +01:00
pre-commit-ci[bot] 28a5bcdf8e [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/psf/black-pre-commit-mirror: fe95161893684893d68b1225356702ca71f8d388 → 2892f1f81088477370d4fbc56545c05d33d2493f](https://github.com/psf/black-pre-commit-mirror/compare/fe95161893684893d68b1225356702ca71f8d388...2892f1f81088477370d4fbc56545c05d33d2493f)
- [github.com/pre-commit/mirrors-clang-format: 719856d56a62953b8d2839fb9e851f25c3cfeef8 → 317810f3c6a0ad3572367dc86cb6e41863e16e08](https://github.com/pre-commit/mirrors-clang-format/compare/719856d56a62953b8d2839fb9e851f25c3cfeef8...317810f3c6a0ad3572367dc86cb6e41863e16e08)
2025-11-11 09:47:59 +01:00
Billy Huddleston ec2a41b86b CAM: Fix ReferenceError when accessing deleted toolbit object
Prevent crash (CAMTests) in ToolBitRecomputeObserver when the toolbit object has been deleted/missing
by catching ReferenceError before accessing its Document attribute. This ensures slotRecomputedDocument
exits gracefully if the object is no longer valid.

src/Mod/CAM/Path/Tool/toolbit/models/base.py
- Wrapped access to self.toolbit_proxy.obj.Document in try/except to handle ReferenceError
if object is deleted/missing, preventing crash during document recompute.
2025-11-10 18:44:02 -06:00
Kacper Donat 5556821e7e Gui: Add special handling for too small overlay side panel
This basically is due to how OverlayTabWidget::setRect is implemented. If it faces width (or
height) of 0 it forces the width to be minimumOverlayWidth * 3, which in the default config
appears to be 90. 90 is obviously way too small of a value to display any widget in the side
panel, so we need to basically need to treat anything smaller or equal to that as an
incorrect value for width. We use here 100 just to be safe.

For the height value of 100 may be reasonable, so we leave it as is.
2025-11-10 18:40:17 -06:00
pre-commit-ci[bot] 801e9fa6e5 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-10 23:43:54 +00:00
Phaseloop 440fda29e5 fix job editor crashing 2025-11-11 00:42:14 +01:00
Chris Hennes 44c73fdd5b Gui: Restore 'Exit' menu text for Linux/Windows
Only macOS appears to set the text based on the menu item's role.
2025-11-11 00:17:00 +01:00
Chris Hennes 80080d9fde Merge pull request #25216 from kadet1090/fix-overlay-task-panel
Gui: Enable Overlay only for new users
2025-11-10 16:46:16 -06:00
pjcreath 280addd21c Gui: Fix crash in placement window after closing a document. (#25110)
Fixes #18156
2025-11-10 11:03:05 -06:00
Chris Hennes 483d0ef6fe Gui: Ensure Quit menu item is QAction::QuitRole 2025-11-10 17:52:31 +01:00
PaddleStroke 0ff0359524 PartDesign: Fix 'UpToShape' not saving correctly 2025-11-10 10:49:50 -06:00
FEA-eng b038f4130c FEM: Add ccx capacitance two spheres example (#25117)
* FEM: Update CMakeLists.txt

* FEM: add new ccx electrostatics example

* FEM: Update equation_electrostatics_capacitance_two_balls.py

* FEM: Update equation_electrostatics_capacitance_two_balls_ccx.py
2025-11-10 10:47:33 -06:00
Billy Huddleston 2d83e86f07 CAM: Improve Z retract reliability in rotational scan after geometry recompute
Introduced FLOAT_EPSILON for robust floating point comparisons, resolving cases
where Z axis retract moves were missing after geometry recompute in 3D Surface
rotational scan operations. This prevents precision errors from causing the
cutter to skip intended lifts between rings or scan lines.

src/Mod/CAM/Path/Op/Surface.py
 - Added FLOAT_EPSILON constant
 - Updated Z move comparison logic to use tolerance
2025-11-10 10:45:58 -06:00
Billy Huddleston 871ab6df64 CAM: Fix infinite recompute loop when ToolBit properties use expressions
A bug in the ToolBit model caused an infinite recompute loop and UI freeze when properties such as Diameter, Flutes, or CuttingEdgeHeight were set to expressions. The visual representation update was being triggered during document recompute, which could recursively trigger further recomputes. This fix defers visual updates by queuing them and processing only after the document recompute completes, using a document observer. The observer is cleaned up after use and on object deletion, preventing memory leaks and repeated recompute cycles.

src/Mod/CAM/Path/Tool/toolbit/models/base.py:
- ToolBitRecomputeObserver: Document observer class that triggers queued visual updates after recompute completes via slotRecomputedDocument.
- _queue_visual_update: Queues a visual update to be processed after document recompute.
- _setup_recompute_observer: Registers the document observer for recompute completion.
- _process_queued_visual_update: Processes the queued visual update and cleans up the observer.
- onChanged: Now queues visual updates instead of calling them directly.
- onDelete: Cleans up any pending document observer before object removal.
2025-11-10 10:43:15 -06:00
neurallambda df7ee72171 Fix CAM job "no attribute Proxy" (#25034) 2025-11-10 10:42:32 -06:00
tarman3 2e37667371 CAM: Slot - Fix references enumeration 2025-11-10 10:41:58 -06:00
marbocub b5b00f7aff Fix legacy mmTangentPlane orientation in 1.1.0dev (resolves #24254) (#24529)
* Add legacy TangentPlane orientation compatibility layer

* Refactor: extract lambda for object identifier construction

* Refactor: axis calculation using std::ranges::max_element and std::distance

* Apply suggestions from code review

Co-authored-by: Pieter Hijma <pieterhijma@users.noreply.github.com>

* Part: Add regression test for issue 24254

---------

Co-authored-by: Pieter Hijma <pieterhijma@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@gmail.com>
2025-11-10 10:36:42 -06:00
Kacper Donat f7908335e5 Gui: Make overlay dragger respect palette
This changes Overlay Dragger to not have hardcoded color but instead
respect the palette from theme.
2025-11-10 17:05:25 +01:00
Kacper Donat f43c6906ff Gui: Enable Overlay only for new users
This change tries to detect invalid state where overlay was
half-initialized that resulted in overlay being enabled for more users
that we initially aimed for.
2025-11-10 17:05:25 +01:00
Billy Huddleston bbfd84d7b1 Add rigid tapping support to linuxcnc_post.py and annotate tapping commands in Tapping.py
- Added --rigid-tap argument to linuxcnc_post.py to enable G33.1 rigid tapping cycle output.
- Implemented logic to skip G80, G98, G99 commands with tapping annotation when rigid tapping is enabled.
- Enhanced handling of G84/G74 tapping cycles for rigid tapping, including pitch (K), depth (Z), dwell (G04 P), spindle reversal (M3/M4/M5), and reverse-out moves.
- Updated Tapping.py to annotate G98/G99 and G80 commands with {"operation": "tapping"} for improved post processor handling.
2025-11-10 02:48:27 -05:00
pjcreath 3071cc847c Gui: Fix crash in measuring tool after an undo. (#25129)
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-11-09 20:04:22 -06:00
Steven James 5c464e0746 Fix setting Bool value in VarSet add properties dialog. (#24873)
* Connect Bool checkbox checkStateChanged to the editor callback so changes will actually happen.
Make the change compatible with Qt versions <6.7.0

* Remove delayed singleshot-value changed from the event filter for Checkbox as suggested by @pieterhijma

* Remove no longer relevent comment
2025-11-09 17:45:57 -06:00
theo-vt 484c724ac6 Techdraw: Assign AutoDistribute when creating a projection group (#25103) 2025-11-09 17:41:50 -06:00
tetektoza 6bed2e663e Sketcher: Clear selection on selected geometry when hiding
When a geometry element is selected and then hidden using the visibility
checkbox in the Elements panel, it remains in the selection.
Subsequently, if another geometry element is selected and deleted, both
the visible element AND the hidden element are deleted.

Root cause of that is basically that `changeLayer()` functions change
the geometry's visual layer, but never clear the geometry from
`Gui::Selection()`.

So, this patch adds the handling to collect every sub-element name of
the hidden geometry and then formats it and calls remove selection on
the geometry during layer change transaction.
2025-11-09 17:40:08 -06:00
chris ffea3da872 freecad issue #25069 fix issue with selecting the plot tab / window from the menu bar 2025-11-09 17:20:15 -06:00
Florian Foinant-Willig ee34d09f7a Core: add a check on object deletion 2025-11-09 16:44:40 -06:00
Chris Hennes 948f284472 Merge pull request #25186 from Roy-043/BIM-fix-human-figure
BIM: Fix human figure
2025-11-09 16:36:52 -06:00
pjcreath b92b54de0e Gui: prevent native macOS color picker crash.
Fixes #25153
2025-11-09 16:23:17 -06:00
paul 50d22e2bb7 [ArchStairs] Fix StringerOverlap with Base at Angle (#25167)
* [ArchStairs] Fix StringerOverlap Base at Angle

Github Issue Discussion
- https://github.com/FreeCAD/FreeCAD/issues/24321#issuecomment-3492459309

"... error when Stringer Overlap is set above certain threshold combined with a non-baseless stair which does not have orthogonal direction - this means that the base line or sketch is rotated to a degree, which is not 0, 90, 180 or 270 degrees."

Further
Fix #24321

* [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-11-09 18:59:14 +01:00
Roy-043 071e7f3dfa Remove HumanFigure.brep from Arch.qrc resources 2025-11-09 18:49:00 +01:00
Roy-043 ce0a3dd526 BIM: Fix human figure
Fixes #25084.

Instead of a brep file a point list is now used to generate the figure.

Additionally:
Two points have been added to make the head of the figure less 'pointy'.

It would make sense to move the `get_human_figure` function to a different file in the future.

With 1.7m the figure is not very tall BTW.
2025-11-09 16:49:37 +01:00
marioalexis 9e7b5f6444 Fem: Fix CapacitanceBody default value 2025-11-08 14:15:42 -06:00
Chris Hennes ca5d22ebca Merge pull request #25162 from Rexbas/sketcher-cleanup-grid-icon
Sketcher: Remove unused icons and fix SIGSEGV
2025-11-08 14:13:49 -06:00
Bas Ruigrok 3d0db63193 TechDraw: Fix ignored "Zoom at Cursor" for TouchPad style 2025-11-08 11:37:37 -06:00
Chris Hennes 924dfe29c8 CI: Update Python version to 3.13 in fetch-crowdin (#25149) 2025-11-08 18:23:17 +01:00
Bas Ruigrok d95f56b39b Sketcher: Remove unused rendering order icons 2025-11-08 14:12:33 +01:00
Bas Ruigrok a479197f0b Sketcher: Remove unused snap icons and fix SIGSEGV 2025-11-08 14:08:32 +01:00
Bas Ruigrok c828c5d1d1 Sketcher: Remove unused grid toggle icons and fix SIGSEGV 2025-11-08 13:42:39 +01:00
David Kaufman e2b4ea58b8 remove unused import 2025-11-07 14:46:02 -05:00
pjcreath be93298afd Gui: process remaining deferredDelete events before stopping event loop 2025-11-07 13:18:47 +01:00
David Kaufman 7fb93c5a50 retrigger tests 2025-11-06 13:59:04 -05:00
marioalexis 06131ce8b5 Base: Restore schema spec for electromagnetic potential unit - fix #25093 2025-11-06 15:05:25 +01:00
FEA-eng 66600f9f1f Gui: Fix unreadable Choose Folder button in the macro recording panel 2025-11-06 15:04:04 +01:00
Florian Foinant-Willig 3ae8f3d57a OCC usage: fix deprecated Handle_* 2025-11-06 10:43:52 +01:00
pre-commit-ci[bot] 0976fdb0fa [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-05 23:03:33 +00:00
David Kaufman e7643dc929 fix codeql warning 2025-11-05 17:47:27 -05:00
David Kaufman 114b679f64 fix lint warnings 2025-11-05 17:47:27 -05:00
David Kaufman 6f62d69b9f fix bugs, clean up 2025-11-05 17:47:26 -05:00
David Kaufman e464cdb73d WIP update tool controller UI 2025-11-05 17:46:03 -05:00
David Kaufman d699d080e0 Fix warning about new Profile properties NumPasses and StepOver being created automatically 2025-11-05 17:46:03 -05:00
David Kaufman d1d6846af0 [CAM] migrate ramp and lead in/out feed rates to the tool controller 2025-11-05 17:46:03 -05:00
David Kaufman f7dc85ef29 update lead in/out to use feed rate from tool controller 2025-11-05 17:46:01 -05:00
David Kaufman 093152b1dc [CAM] separate controls for feed rate percent entrance vs exit 2025-11-05 17:41:32 -05:00
David Kaufman 9c5e8f8340 [CAM] Add feed rate percent to lead in/out dressup 2025-11-05 17:23:03 -05:00
David Kaufman 9ad22dcc0e [CAM] Add feed rate percent to ramp dressup 2025-11-05 17:09:40 -05:00
Chris Hennes af41a9dcef Merge pull request #24317 from kpemartin/Issue24314
Update unit test to use new storage for DXF import settings
2025-11-05 14:25:58 -06:00
David Kaufman 21319f95d2 automatically offer migration for tool libraries in custom working dir 2025-11-05 15:18:43 -05:00
dependabot[bot] 7ecdb0236b Bump prefix-dev/setup-pixi from 0.9.2 to 0.9.3
Bumps [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi) from 0.9.2 to 0.9.3.
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](https://github.com/prefix-dev/setup-pixi/compare/28eb668aafebd9dede9d97c4ba1cd9989a4d0004...82d477f15f3a381dbcc8adc1206ce643fe110fb7)

---
updated-dependencies:
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.9.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 13:19:26 -06:00
marioalexis 6c7187b54f Fem: Fix magnetodynamic2D boundary condition 2025-11-05 13:06:53 -06:00
Pieter Hijma 011b6cdfbf Gui: Fix supporting xlinks in add property dialog 2025-11-05 12:49:47 -06:00
Ajinkya Dahale 857190a20a Sketcher: Only transfer equality in specific cases in trim
The transfer on should apply to (arcs of) conics.

Fixes #25008.
2025-11-05 12:48:05 -06:00
wandererfan 37af704998 [TD]fix angle dim in detail view 2025-11-05 12:46:35 -06:00
PhoneDroid f2d60d7abe [ Plot ]: Update SPDX License Identifiers 2025-11-05 12:45:42 -06:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ 54948b441d SPDX [ 34 ][ Src / Mod / Points ] (#25073) 2025-11-05 12:44:17 -06:00
PhoneDroid 28d5539fc7 [ Reverse ]: Update SPDX License Identifier 2025-11-05 12:42:10 -06:00
PhoneDroid bde82f19cb [ MacAppBundle ]: Update SPDX License Identifiers 2025-11-05 12:40:53 -06:00
marioalexis 123aee6b1b Fem: Fix CalculiX body heat source writer for 2D case 2025-11-05 12:37:52 -06:00
PhoneDroid 4e9fe02b9a [ Ext ]: Update SPDX License Identifiers 2025-11-05 12:37:18 -06:00
PaddleStroke cb108249f2 Sketcher: Fix offset of open profile (#25091)
* Sketcher: Fix offset of open profile

* [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-11-05 12:35:45 -06:00
David Kaufman bb9ae3540e [CAM] bugfix tools not imported properly during library import 2025-11-05 13:29:54 -05:00
dependabot[bot] a8ce12f2b4 Bump step-security/harden-runner from 2.13.1 to 2.13.2
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.13.1 to 2.13.2.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a...95d9a5deda9de15063e7595e9719c11c38c90ae2)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.13.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 11:20:34 -06:00
pre-commit-ci[bot] 8ddecd21a1 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-05 13:32:09 +00:00
Kevin Martin 520dd7b2b7 Remove test from old location 2025-11-05 08:28:35 -05:00
Kevin Martin 5afe1e64f8 Transplant the test code from the old location
For some reason the app hangs after the test GUI is run
2025-11-05 08:28:34 -05:00
Kevin Martin 2d5bb51734 Add the sample input file 2025-11-05 08:28:34 -05:00
Kevin Martin 44bb16cae7 Enable Python Draft import tests
A failing test was added to Draft tests to ensure CI catches it
2025-11-05 08:28:17 -05:00
pre-commit-ci[bot] d2fd87cecf [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-05 11:24:52 +00:00
phaseloop 7684f5a97f Merge remote-tracking branch 'refs/remotes/origin/v-routing' into v-routing 2025-11-05 11:22:29 +00:00
phaseloop 61872a9003 fix linting issues 2025-11-05 11:21:34 +00:00
Furgo 2d2684cc3d BIM: remove BIM Project command from toolbar (#25086)
- The BIM_Project command is removed from the toolbar and relocated to
  the Utils menu
- The default when creating a new project has been changed to
  non-IFC-native
- The BIM_Project and IFC_MakeProject command menu text have been
  reworded to remove ambiguity
2025-11-05 09:56:46 +01:00
PaddleStroke af014a1bb4 Sketcher: Restore ExprBasedConstrDimColor (#25055)
* Sketcher: Restore ExprBasedConstrDimColor

* [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-11-04 20:07:44 +01:00
Chris Hennes 75151b2987 Addon Manager: Update to 2025-11-04 2025-11-04 20:04:03 +01:00
pre-commit-ci[bot] 48964ed4e1 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-04 16:21:17 +00:00
PhaseLoop 0cca441fba Improve VCarve edge routing speed 2025-11-04 16:18:44 +00:00
Chris Hennes 736ffd0140 Merge pull request #25015 from PhoneDroid/SPDX-Src-Mod-Spreadsheet
SPDX [ 33 ][ Src / Mod / Spreadsheet ]
2025-11-03 15:28:46 -06:00
Chris Hennes acb3f4a8f9 Merge pull request #24912 from marioalexis84/fem-elmer_solver 2025-11-03 12:40:06 -06:00
Kacper Donat 54d25bcabc Merge pull request #24904 from tetektoza/fix/23459_fix_locked_ovp_allowing_change_geom
Sketcher: Remember cursor angle for OVPs after OVP is set
2025-11-03 19:25:56 +01:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ f0e70e68e0 [ Draft ]: Update SPDX License Identifiers (#24965) 2025-11-03 11:58:14 -06:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ 0df300cee6 [ Import ]: Update SPDX License Identifiers (#24976) 2025-11-03 11:57:57 -06:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ df142c35aa SPDX [ 25 ][ Src / Mod / Material ] (#24979)
* [ Material ]: Update SPDX License Identifiers

* [ Material ]: Correct Test Material License

---------

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2025-11-03 11:57:40 -06:00
PhoneDroid 00887c4f3a [ Web ]: Update SPDX License Identifiers 2025-11-03 11:57:21 -06:00
PhoneDroid a26610b315 [ Tux ]: Update SPDX License Identifiers 2025-11-03 11:57:14 -06:00
PhoneDroid 5400e01651 [ Start ]: Update SPDX License Identifiers 2025-11-03 11:57:06 -06:00
Adrian Insaurralde Avalos c783f818a8 [weeklies] fix #22989, missing ThirdPartyLibraries.html on windows bundles 2025-11-03 11:48:49 -06:00
Chris Hennes 5ea8399ada Spreadsheet: Correct accidental license change
In formatting commit 5bd5f3a963 a
contributor mistakenly changed the license of importXLSX.py
from LGPL to GPL. The original code contributed by @ulrich1a included an
LGPL license block in it, and that license should have been retained.
This commit changes the license block to the originally-intended LGPL
block, and updates the SPDX header to match.
2025-11-03 11:47:45 -06:00
Chris Hennes 0bc707ad34 CI: Silence expected error message for shallow repo 2025-11-03 14:14:43 -03:00
sliptonic 22309af65c Merge pull request #24732 from tarman3/dressup_icon
CAM: Fix Dressups icon Active state
2025-11-03 11:14:15 -06:00
paul 2c7e0f044b [BimWindow] Fix SymbolPlan position (#25001)
* [BimWindow] Fix SymbolPlan position

Fix #24903

* [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-11-03 18:08:56 +01:00
sliptonic cd5209f264 Merge pull request #25003 from chennes/contributingPRTitle
Project: Revise PR message guidelines for clarity
2025-11-03 10:44:36 -06:00
pre-commit-ci[bot] 8d0878e34e [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-03 14:11:42 +00:00
Sebastian Ohl 15e24bb8cc fixing drill handling, as KinetiNC does not implement G81 etc. correctly 2025-11-03 15:02:14 +01:00
pre-commit-ci[bot] 1514e9b32c [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-11-03 13:53:32 +00:00
Sebastian Ohl e4b03f69f0 adding cooling feature to Kinetic post processor 2025-11-03 14:45:12 +01:00
Chris Hennes 098f19f706 Merge pull request #24890 from mosfet80/upSubmodules
Update git submodules
2025-11-03 07:39:03 -06:00
tetektoza 08e4191e5a Gui: Force Expression Completer to show drop-down upon clicking on item (#25011)
As the title says - currently if user clicks "Box" from the autocomplete
dropdown, it adds "Box.", but the property drop-down is never resolved
further, so user has to delete the separator and write it by hand.

When a completion ends with '.' or '#' and is being selected by
clicking, code sets `block=true` and calls `slotTextChanged()` which
prevents the `textChanged2` signal from being emitted. This results in
completer being blocked from updating next level of properties.

So, this patch adds a direct call to `completer->slotUpdate()`, which
triggers completer to parse the expression and show the drop-down.
2025-11-03 11:11:55 +01:00
Chris Hennes 79412d205b Merge pull request #24970 from maxwxyz/cp_18075 2025-11-02 21:38:58 -06:00
PhoneDroid 27f6c9081c [ Spreadsheet ]: Update SPDX License Identifiers 2025-11-02 21:36:25 -05:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ cdb990e810 [ JtReader ]: Update SPDX License Identifiers (#24977)
Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2025-11-02 16:27:55 -06:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ 489e429b5c SPDX [ 29 ][ Src / Tools ] (#24999)
* [ Tools ]: Update SPDX License Identifiers

* [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-11-02 16:21:34 -06:00
PhoneDroid d80cd13d41 [ Part ]: Update SPDX License Identifiers 2025-11-02 16:16:07 -06:00
Joao Matos 41395f2051 Add PartDesign build dependency to Import.
Import now depends on PartDesign, so ensure CMake configure-time
dependency enforcement requires PartDesign alongside Part.

Fixes build regression from
https://github.com/FreeCAD/FreeCAD/commit/6fd6558040bb61cc1a9d35fd360cb1a169276cd3.
2025-11-02 15:59:06 -06:00
Roy-043 08cf89d1c9 Fix path for ContinueMode parameter retrieval 2025-11-02 15:50:26 -06:00
PhoneDroid 90a4f9ecb0 [ Mesh ]: Update SPDX License Identifiers 2025-11-02 15:49:56 -06:00
PhoneDroid 53ba534677 [ Measure ]: Update SPDX License Identifiers 2025-11-02 15:22:11 -06:00
Chris Hennes 8504bc8988 Points: Remove unimplemented CmdPointsTransform 2025-11-02 22:17:01 +01:00
PhoneDroid 69674d706f [ Inspection ]: Update SPDX License Identifiers 2025-11-02 15:06:47 -06:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ ca1a25d6d6 SPDX [ 21 ][ Src / Mod / Assembly ] (#24974)
* [ Assembly ]: Update SPDX License Identifiers

* [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-11-02 15:06:03 -06:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ 46909c6fb8 [ IDF ]: Update SPDX License Identifiers (#24967) 2025-11-02 15:05:15 -06:00
PhoneDroid 6a1929a6d6 [ Help ]: Update SPDX License Identifiers 2025-11-02 14:58:06 -06:00
Roy-043 5b872b59a1 BIM/Draft: fix paths related to example files
* My mod (#23284) of CMakeLists.txt did not create the desired subfolder. Therefore the TTF and PAT files have now been put in the main example folder.
* draft_test_objects.FCStd has been update for the new path of the mentioned files.
* BIMExample.FCStd has been updated to use the PAT file from the example folder instead of acad.pat from a local folder.
2025-11-02 14:51:27 -06:00
Chris Hennes fe4a734a9d Merge pull request #24764 from WandererFan/FillTemplate2
[TD]defend against deleted object error
2025-11-02 14:49:34 -06:00
Chris Hennes 4d201c8f0e Merge pull request #24856 from tetektoza/fix/21547_respect_treat_ellipses_opt_in_prefs
Import: Use proper location for DXF prefs
2025-11-02 14:23:35 -06:00
Chris Hennes c8eefab345 Project: Revise PR message guidelines for clarity 2025-11-02 12:53:43 -06:00
Max Wilfinger aeb83b3c05 App: Apply code review suggestions 2025-11-02 17:38:06 +01:00
PaddleStroke 45ca23d074 Update JointObject.py 2025-11-02 17:03:37 +01:00
Leandro Heck e4f36afcb3 Gui: Use system dialogs by default (#24882)
* Fix the selector of the FileDialog and add the same default settings for the ColorDialog.

* Add option to set the default ColorDialog

* Use system dialog by default

* Remove new env var

* Fix the native file dialog selector

* Adjust env variable name

* Adjust env variable name
2025-11-02 16:50:48 +01:00
PaddleStroke 0b2268a921 Sketcher: Constraint rendering (#24534)
* Sketcher: Constraint rendering

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

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

* Update EditModeConstraintCoinManager.h

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

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

* Update EditModeConstraintCoinManager.cpp

* Update SoDatumLabel.cpp

* Update SoDatumLabel.cpp

* Update EditModeConstraintCoinManager.cpp

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

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

* Update EditModeConstraintCoinManager.cpp

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

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

* revert changes drawing the box around fx

* Update EditModeConstraintCoinManager.cpp

* [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-11-02 15:51:14 +01:00
Joao Matos 36d432e2cc Gui: Use C99 _Exit instead of not as portable POSIX _exit.
The actual fix here is for a compile error which started appearing as an
error due to `unistd.h` include being included implicitly from
`boost::signals`, which FastSignals does not do anymore.

```
Error:
/Users/runner/work/FreeCAD/FreeCAD/src/Gui/Dialogs/DlgVersionMigrator.cpp:366:5:
error: use of undeclared identifier '_exit'
```
2025-11-01 21:49:24 +01:00
Chris Hennes c5489e0f0a Gui: Fix allocation of posted ESC event 2025-11-01 21:47:00 +01:00
tetektoza ad2e866332 Gui: Fix window restoration after Edit->Alignment completion
After completing Edit->Alignment, main window remains small instead of
maximized. It looks like this is Qt 6 regression as the automatic
maximization behavior was somehow changed. Previously it didn't need
explicit handling to restore the maximisation.

So, this patch preserves the previous window state before entering
Alignment editor and restores window being maximized/minimized or normal
upon finishing the operation.
2025-11-01 21:17:24 +01:00
tetektoza ced9c0dd4f Sketcher: Remember cursor angle for Rectangle OVPs after OVP is set
As the title says. Currently user is able to change geometry if OVP is
set on labels. This is because `doEnforceControlParameters` reads mouse
position every mouse move and calculates angle from it, resulting in a
new angle every time mouse is moved.

So, this patch basically reads the position before it was set, and once
it is set, locks the position of the mouse and calculates angle from it
which will be maintained until user cleans the OVP or makes a new
primitive.
2025-11-01 20:43:12 +01:00
tetektoza 1f78dac7b5 Sketcher: Remember cursor angle for Line OVPs after OVP is set
As the title says. Currently user is able to change geometry if OVP is
set on labels. This is because `doEnforceControlParameters` reads mouse
position every mouse move and calculates angle from it, resulting in a
new angle every time mouse is moved.

So, this patch basically reads the position before it was set, and once
it is set, locks the position of the mouse and calculates angle from it
which will be maintained until user cleans the OVP or makes a new
primitive.
2025-11-01 20:43:12 +01:00
tetektoza e2a141785f Sketcher: Remember cursor angle for Slot OVPs after OVP is set
As the title says. Currently user is able to change geometry if OVP is
set on labels. This is because `doEnforceControlParameters` reads mouse
position every mouse move and calculates angle from it, resulting in a
new angle every time mouse is moved.

So, this patch basically reads the position before it was set, and once
it is set, locks the position of the mouse and calculates angle from it
which will be maintained until user cleans the OVP or makes a new
primitive.
2025-11-01 20:43:12 +01:00
wandererfan 97ca7d9818 [TD]use local language for ProjectionType 2025-11-01 20:34:44 +01:00
Roy-043 48d91d6dd8 BIM: no longer use DraftVecUtils.precision()
Fixes #24928

Use `Draft.precision()` instead of `DraftVecUtils.precision()`.
2025-11-01 20:25:41 +01:00
Chris Hennes 0b1b7ccc62 Tools: Add Measure to translation download 2025-11-01 20:15:59 +01:00
PaddleStroke 0d75ff1542 Assembly: ExplodedViews: fix their use in techdraw (#24769)
* Assembly: ExplodedViews: Add getExplodedShape for techdraw to use

* TechDraw: ShapeExtractor fix assembly exploded views

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

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

* Assembly: Fix variable casing in CommandCreateView.py

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-11-01 20:02:48 +01:00
Kacper Donat 3b83367c4a Merge pull request #24936 from chennes/femTestTweaks
Fem test tweaks
2025-11-01 20:01:58 +01:00
tetektoza 9b2e4b4975 Draft: Do not set Make Face property when importing with DXF (#24857)
* Draft: Do not set Make Face property when importing with DXF

As the title says - this option was taken from last Draft setting, so
this disables it to always preserve only wire during import, instead of
adding faces on.

* Draft: Do not make faces when importing dxf primitives for legacy import
2025-11-01 13:26:13 +01:00
Max Wilfinger 7106c697d0 GUI: no minimum width for status bar buttons 2025-11-01 11:41:15 +01:00
wwmayer 1844fdd443 PD: Toggling transparency doesn't reset colors 2025-11-01 09:05:03 +01:00
sliptonic 0257c40bc4 Merge pull request #24964 from PhoneDroid/SPDX-Src-Mod-CAM
SPDX [ 17 ][ Src / Mod / CAM ]
2025-10-31 17:14:28 -05:00
pre-commit-ci[bot] f413a569b3 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-10-31 21:06:39 +00:00
PhoneDroid ba99bc5da4 [ CAM ]: Update SPDX License Identifiers 2025-10-31 17:00:32 -04:00
sliptonic 05b7ad0e9c Merge pull request #24875 from tarman3/simsubmenu
CAM: Simulators - Drop down menu in toolbar
2025-10-31 11:11:34 -05:00
Chris Hennes f7689115ae FEM: Disable FEM GUI unit tests 2025-10-30 23:13:14 -05:00
Jacob Oursland c270a8ac66 CI: upgrade pixi to prevent CI-breaking version mismatch. 2025-10-30 22:23:50 -05:00
Chris Hennes c93db04d9e FEM/Tests: Ensure deletion of test files 2025-10-30 22:14:33 -05:00
sliptonic 4227a6d11b Merge pull request #24935 from chennes/updateImperialPressureUnitTest
Tests: Update values for Imperial pressure tests
2025-10-30 20:41:46 -05:00
marioalexis 428340a974 Fem: Migrate old Elmer solver object 2025-10-30 10:47:10 -03:00
marioalexis c7e74a68a7 Fem: Update Elmer test files 2025-10-30 10:47:10 -03:00
marioalexis 6c583d82f2 Fem: Use FileChooser widget in CalculiX task panel 2025-10-30 10:47:10 -03:00
marioalexis 243b42f4cb Fem: Rework Elmer solver - fixes #21479 2025-10-30 10:47:10 -03:00
marioalexis 275ece0bb2 Fem: Create element groups with gmsh 2025-10-30 10:47:10 -03:00
marioalexis d018b3f8fb Fem: Add method to rename mesh group 2025-10-30 10:47:10 -03:00
marioalexis 5e42f6a48d Fem: Add ParaView .pvd file importer 2025-10-30 10:47:09 -03:00
paul 6ab89664c6 [ArchStairs] Fix structure: when RiserThickness set & ConnectionDown not HorizontalCut (#24917)
* [ArchStairs]  Fix Structure: when RiserThickness is set & ConnectionDown is not HorizontalCut

Fix #24409

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

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

* Update src/Mod/BIM/ArchStairs.py - typo correction

Co-authored-by: João Matos <joao@tritao.eu>

* Update ArchStairs.py - typo correction

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: João Matos <joao@tritao.eu>
2025-10-30 11:41:58 +01:00
Chris Hennes 5379378626 Tests: Update values for Imperial pressure tests 2025-10-29 21:36:52 -05:00
Billy Huddleston 5b2987bd07 CAM: Fix expression editor so that widgets refresh after closing
src/Gui/QuantitySpinBox.cpp:
- Call updateExpression() after setExpression() in QuantitySpinBox

src/Gui/SpinBox.cpp:
- Call updateExpression() after setExpression() in ExpressionSpinBox

src/Gui/Widgets.cpp:
- Call onChange() after setExpression() in ExpLineEdit

src/Mod/CAM/Path/Base/Gui/Util.py:
- Connect to showFormulaDialog signal and refresh CAM QuantitySpinBox Python wrapper when dialog closes
2025-10-28 15:29:01 -05:00
dependabot[bot] 67cdd23918 Bump github/issue-metrics from 3.25.1 to 3.25.2
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.25.1 to 3.25.2.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/c640329f02bd24b12b91d51cd385f0b1c25cefb9...637a24e71b78bc10881e61972b19ea9ff736e14a)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.25.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-28 13:27:59 +01:00
github-actions 11fecb1558 Update translations from Crowdin 2025-10-27 21:06:54 -05:00
mosfet80 c2bd7d3543 Updated submodule src/3rdParty/GSL 2025-10-28 02:45:42 +01:00
mosfet80 f8de1c60b4 Updated submodule src/3rdParty/OndselSolver 2025-10-28 02:45:33 +01:00
mosfet80 0a2362dd57 Updated submodule src/Mod/AddonManager 2025-10-28 02:43:52 +01:00
dependabot[bot] 25e3cb0144 Bump actions/upload-artifact from 4 to 5
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 19:10:43 -05:00
wandererfan f507ee449b [TD]use scale from view to fill template 2025-10-27 18:19:19 -04:00
wandererfan c72a707fca [TD]restore undo/redo function in FillTemplates 2025-10-27 18:19:19 -04:00
wandererfan 2709d2a595 [TD]defend against deleted object error
- App.ActiveDocument.Objects was returning a deleted object
  Most likely due to shenanigans with DrawViewPart/DrawProjGroup item
  in TaskProjGroup.
2025-10-27 18:19:19 -04:00
tarman3 478f8a0c76 CAM: Fix Dressups icon Active state 2025-10-27 20:21:45 +02:00
Max Wilfinger cf9bb8bb16 Merge pull request #23471 from hyarion/change/tasks-at-right 2025-10-27 19:01:03 +01:00
Roy-043 6eafca89e3 Draft: fix relative path issue when editing existing hatch
Something that was missed in #23294
2025-10-27 18:34:36 +01:00
PaddleStroke 676a3c3d0d Update Tree.cpp 2025-10-27 12:16:50 -05:00
sliptonic 3a5b565bd8 Merge pull request #24809 from sebastianohl/main
Zero-4 machine controller don't like two M-commands in one line
2025-10-27 12:11:27 -05:00
Billy Huddleston 478292b9ec CAM: Refactor LeadInOut task panel to use QuantitySpinBox and improve migration/visibility logic
- Replace QDoubleSpinBox widgets with Gui::QuantitySpinBox in DressUpLeadInOutEdit.ui for all lead-in/out numeric fields, enabling unit/expressions support.
- Register QuantitySpinBox as a custom widget in the .ui file.
- Refactor TaskDressupLeadInOut panel setup:
  - Add setupSpinBoxes, setupGroupBoxes, setupDynamicVisibility for cleaner UI initialization.
  - Use PathGuiUtil.QuantitySpinBox for all numeric fields and ensure updateWidget() is called for each.
  - Centralize signal registration and field updates using getSignalsForUpdate and pageGetFields.
  - Move group box signal handler to a class method.
  - Share hideModes dictionary for field visibility logic.
  - Add dynamic label switching for "Radius"/"Length" with translation placeholders.
  - Remove the Include layers Check Box
- Improve ObjectDressup migration:
  - Use shared hideModes from TaskDressupLeadInOut.
  - Set default angles to 90 instead of 45.
  - Preserve previous style values when migrating StyleOn/StyleOff.
  - Ensure field visibility is updated after migration.
- Add Perpendicular and Tangent to lead_styles in correct order.
2025-10-27 12:10:06 -05:00
FilippoR 9cf380810a Use packit to build rpm and add it as check on pull request (#21063)
* Update spec file

use custom macro to package the source file

reformat freecad.spec

add script for build from source archive

use bcond macro

use standard builddir and don't delete it to fast local rebuild

configure cmake correctly to avoid moving file later

add tests

remove python bytecompile is default

build in RelWithDebInfo to generate correctly the debuginfo package (debug info will be stripped from standard package and a debuginfo package will be generated

export dev package for ondselsolver

export libondselsolver

use new macro for filtering requires provides

simplify regexp.
remove delete unused source
enable gui tests
other fix

Disabile gui test to avoid timeout

add timeout to tests

remove rpkg macro for archive extraction

refactor prepare for packit

small fix

Update package/fedora/freecad.spec

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

small fix

change packit configuration

fix format

fix packit

/packit build

authomatic build on commit

remove libkdtree++-devel missing in rawhide

* add packit configuration

escape changelog for spec file

add new build on release

simplify configuration to use only packit
remove script used to have only a spec file and build with 3 system
rpkg
custom bash script
packit

* add tests in test-farm

add test that read build time tests result

use default build type for pr build and always print buiild time tests result

fix and disable option without bundled_gtest

Update package/fedora/freecad.spec

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

Update package/fedora/freecad.spec

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

* add github action

Update fedora-daily.yml

Potential fix for code scanning alert no. 203: Workflow does not contain permissions

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Update spec file

use custom macro to package the source file

reformat freecad.spec

add script for build from source archive

use bcond macro

use standard builddir and don't delete it to fast local rebuild

configure cmake correctly to avoid moving file later

add tests

remove python bytecompile is default

build in RelWithDebInfo to generate correctly the debuginfo package (debug info will be stripped from standard package and a debuginfo package will be generated

export dev package for ondselsolver

export libondselsolver

use new macro for filtering requires provides

simplify regexp.
remove delete unused source
enable gui tests
other fix

Disabile gui test to avoid timeout

add timeout to tests

remove rpkg macro for archive extraction

refactor prepare for packit

small fix

Update package/fedora/freecad.spec

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

small fix

change packit configuration

fix format

fix packit

/packit build

authomatic build on commit

remove libkdtree++-devel missing in rawhide

* add packit configuration

escape changelog for spec file

add new build on release

simplify configuration to use only packit
remove script used to have only a spec file and build with 3 system
rpkg
custom bash script
packit

* add tests in test-farm

add test that read build time tests result

use default build type for pr build and always print buiild time tests result

fix and disable option without bundled_gtest

Update package/fedora/freecad.spec

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

Update package/fedora/freecad.spec

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

* add github action

Update fedora-daily.yml

Potential fix for code scanning alert no. 203: Workflow does not contain permissions

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* tentative fix test

* add verbose failed tests

* fix ctest

* Remove error file if 2 time is successful

* Update plan.fmf add IfcOpenShell-python3

* Update .packit.yaml

Update freecad.spec

Update plan.fmf

Update .packit.yaml

Update plan.fmf

* Update freecad.spec

* restore version

* add rpm cmake preset

* update tests

* add qt6-assistant deps

* use xvfb-run for QuantitySpinBox test

* fix ctest command

* clean

* restore Addon Manager: Add defusedxml dependency

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-10-27 12:06:38 -05:00
sliptonic 1111f8da7c Merge pull request #24851 from FreeCAD/removeLiberaPayFromFunding
Remove Liberapay entry from FUNDING.yml
2025-10-27 11:55:06 -05:00
theo-vt 87d21a643d Sketcher: Reassign virtual space flag to constraints after modifying them through a default DHS 2025-10-27 11:53:26 -05:00
Chris Hennes 9a12579cb9 Merge pull request #24277 from ryankembrey/werner_fix_23504
Gui: Do not accept changes when pressing ESC key in 3D view
2025-10-27 11:49:46 -05:00
Roy-043 ee512ebc00 BIM: BIM_ProjectManager: add missing self.project check 2025-10-27 11:48:06 -05:00
Chris Hennes 8fe33581e6 Build: Use date as revision when using a shallow clone 2025-10-27 17:47:41 +01:00
Steven James 909d581265 Add Dockerfile and script to create an Ubuntu Qt6 based build image for docker. 2025-10-27 11:37:16 -05:00
wandererfan 09f3e6738c [TD]shrink selection frame 2025-10-27 11:36:31 -05:00
Kacper Donat 9e6e2f474f Gui: Enable overlay for the Tasks panel by default 2025-10-27 17:32:06 +01:00
tarman3 9a81201b24 CAM: Simulator submenu in toolbar 2025-10-27 12:46:06 +02:00
paul 3084c48c8e [ArchStairs] Fix Wrong Height when toSlabThickness & Landings AtCenter are set (#24864)
* [ArchStairs] Fix Wrong Height when toSlabThickness & Landings AtCenter are set

Fix #24408

This fix both Stairs Flight set as Straight and HalfTurnLeft/Right

* [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-10-27 11:10:48 +01:00
NepEgor 5409b12e6e Gui: Fix FreeTurntable orbit style not constraining vertical axis (#24861)
* Gui: Fix FreeTurntable orbit style not constraining vertical axis

* Apply suggestions from code review

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-10-26 22:41:45 +00:00
Syres916 e95d3cbdc9 [TechDraw] Fix the projection type combobox and align all references to First angle and Third angle (#24762) 2025-10-26 17:31:44 -05:00
tetektoza 4718c46170 TechDraw: Fix centerlines being double Y-axis transformed
As the title says. Currently when user exports to DXF, centerlines and
cosmetic edges appeared offset below their correct positions. The offset
was visible when opening exported DXF file in CAD software - centerlines
were displaced downward where they should be.

The issue was that cosmetic edges are already stored with the correct Y
orientation and should not be mirrored during export, so this caused
centerlines to be mirrored when they shouldn't be, resulting in
incorrect Y position.

So this is just a small modification to cosmetic edge export to skip the
Y-axis mirroring step.
2025-10-26 17:24:58 -05:00
tetektoza b65451c2b4 Import: Make sure to not convert text height from draw units to points
When importing DXF files using the C++ importer, TEXT and MTEXT entities
had incorrect heights. For example:
- text with height 100mm in the DXF file was imported as 35.28mm in FC.
The scaling factor was consistent to be 0.3528.

The issue was that we were applying a point-to-millimeter conversion to
the text height , but that seems to be incorrect since according to DXF
spec, TEXT and MTEXT entity heights are always specified in drawing
units, not in points, so just remove that code.
2025-10-26 16:47:43 -05:00
Florian Foinant-Willig 501c6273a3 PartDesign: only warn on refine failure 2025-10-26 22:16:04 +01:00
Benjamin Nauck 5aa00ca0ad Gui: Move tasks to the right side for easier defaults 2025-10-26 21:21:46 +01:00
tetektoza 0cfa5ba5fe Fix: Closed polylines import duplicate vertices
Similar case to the previous commit related to closed polylines having
coincident vertices, but this time for import. Basically if importing
DXF files containing closed polylines, FC would throw an exception.

This was because `BuildWireFromPolyline()` function in the DXF importer
attempted to create a closing edge for closed polylines by connecting
the last vertex back to first vertex.

So, this patch adds a skip for the closing edge if the vertices are
coincident.
2025-10-26 15:17:00 +01:00
Roy-043 b433350aff Change keyboard shortcut from 'I, P' to 'I, S' 2025-10-26 15:01:08 +01:00
tetektoza 01777cb320 Fix: Closed polylines export duplicate vertices
AS the title says - when exporting closed curves (ellipses for example)
as polylines with the "Treat ellipses and splines as polylines" option,
the generated DXF file contained duplicate vertices. For example, an
ellipse polyline would have vertex1 and vertex40 which are identical in
terms of coordinates. This has caused exception upon importing.

Cause of that was that discretizer was blindly iterating through all
discretized points without checking if the first and last points are
coincident.

So, this patch adds a check for that to detect and skip the last
coincident point if it is in fact coincident during Export.
2025-10-26 14:45:10 +01:00
tetektoza e221cfd47a Import: Export number of vertices in polylines as int instead of double 2025-10-26 14:29:24 +01:00
tetektoza 34eafe127e Import: Use proper location for DXF prefs
Currently if users enabled the "Treat ellipses and splines as polylines"
option in DXF export preferences and exported them, they were still
being exported as native primitives.

This was because we were reading from a wrong preferences location, UI
stored it in `BaseApp/Preferences/Mod/Draft`, but it was read from
`BaseApp/Preferences/Mod/Import`. Since the pref didn't exist, we were
taking default value which was set to `false`.

So the solution is obvious - just set it to the correct path.
2025-10-26 14:26:02 +01:00
Chris Hennes 4daf8d3b38 Remove Liberapay badge from README 2025-10-25 14:37:36 -05:00
Chris Hennes 99dee32e84 Remove Liberapay entry from FUNDING.yml
Removed Liberapay funding entry and updated formatting.
2025-10-25 14:29:14 -05:00
Roy-043 e366824b74 BIM: fix update of material tree icon 2025-10-25 20:04:12 +02:00
tetektoza 9e58650477 BIM: Fix beam rotation when Base property is cleared (#24831)
When a profile-based beam had its Base property cleared and the model
was recomputed, the beam would rotate 90 degrees, changing its direction
completely.

Profile objects are always created in the XY plane with Width along X,
height along Y and normal along Z. However, if Base is cleared, fallback
code always used YZ plane orientation for beams. This resulted in a
different orientation during cleaned Base property.

Fix is to check if we are profile-based or not and if yes, use XY plane
orientation, while we don't have this property then just use YZ plane
orientation (preserving traditional horizontal behavior).
2025-10-25 14:10:37 +02:00
Roy-043 4ef209cabe BIM: fix strict IFC drag and drop 2025-10-24 10:21:42 +02:00
Chris Hennes f6f919d229 Gui: Use postEvent instead of sendEvent for Esc handling
See https://github.com/FreeCAD/FreeCAD/pull/24277#issuecomment-3342091132

Co-authored-by: wwmayer <wmayer@freecad.org>
2025-10-23 14:39:31 -05:00
wwmayer 503ef79cea Gui: Do not accept changes when pressing ESC key in 3D view
Forward the ESC key event to the Task view to reject changes if needed. This fixes issue https://github.com/FreeCAD/FreeCAD/issues/23504
2025-10-23 14:35:40 -05:00
sliptonic c7c068be6e Merge pull request #24810 from tarman3/leadinout_fix_isActive
CAM: LeadInOut - Fix isActive()
2025-10-23 13:05:14 -05:00
tarman3 06e0fb4c19 CAM: LeadInOut - Fix isActive() 2025-10-23 15:16:02 +03:00
sliptonic 4b0259b57f Merge pull request #24666 from tarman3/leadinout_no_leadin
CAM: LeadInOut - Fix LeadIn off
2025-10-23 06:59:04 -05:00
Sebastian Ohl 70be188426 adding newline, as the Zero-4 machine controller don't like two M-commands in one line 2025-10-23 13:54:22 +02:00
PaddleStroke fce385dd73 Assembly: Fix Iisolate issue when obj and link both in assembly (#24781)
* Assembly: Fix Iisolate issue when obj and link both in assembly

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

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

* Update src/Mod/Assembly/Gui/ViewProviderAssembly.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* [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>
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-10-23 10:04:46 +00:00
tarman3 3ea894029f CAM: LeadInOut - Fix LeadIn off 2025-10-23 06:48:14 +03:00
sliptonic 70a7480601 Merge pull request #24471 from tarman3/leadinout_perp_tan
CAM: LeadInOut - Revert Perpendicular and Tangent styles
2025-10-22 19:23:02 -05:00
Leandro Heck 873fa449ce PD: Show custom direction settings on Pad/Pocket only when necessary. (#24642)
* PD: Show custom direction settings on Pad/Pocket only when necessary.

* Update the visibility of parameters.
2025-10-23 00:00:11 +02:00
PaddleStroke 498968b89c Sketcher: Do not open command if one is pending in doSetVisible (#24778)
* Sketcher: Do not open command if one is pending in doSetVisible

* [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-10-22 23:58:30 +02:00
tetektoza 1683f271c6 Import: Fix crash in glTF importer when removeSplitter() fails
Currently `removeSplitter()` function attempts to merge coplanar faces
by using `ModelRefine::FaceUniter`, which internally uses
`BRepBuilderAPI_Sewing`. This can fail in several scenarios, like
inability to produce a valid shell, failing in face unification due
to geometry incompatibilities, or when we have tolerance issue in the
reconstructed geometry from glTF triangulation that prevent us from face
merging.

That leads to the exception, which we are not handling correctly where
it's being handled the same way as this patch introduces in other parts
of FreeCAD.

So, this patch adds a try-catch block around `removeSplitter()` to
gracefully handle `Standard_Failure` exception and return the sewn shape
instead of crashing. Imported model will contain more individual faces
than necessary (since coplanar won't be merged), resulting in a more
complex topology in the places of those fails, but geometry and visual
appearance will be preserved.
2025-10-22 16:43:25 -05:00
tarman3 f8662d75eb CAM: LeadInOut - Revert Perpendicular and Tangent styles 2025-10-22 20:22:49 +03:00
sliptonic f1c7d91a74 Merge pull request #24433 from tarman3/leadinout_radius
CAM: LeadInOut - Radius and ToolController
2025-10-22 11:55:09 -05:00
Furgo 2096d0bd86 BIM: Implement double-click event for materials group (#24767)
* BIM: Implement double-click event for materials group

Add double-click handling for materials group in Tree View.

Fixes: https://github.com/FreeCAD/FreeCAD/issues/24766

* [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-10-21 14:07:13 +02:00
PaddleStroke 529aae0238 Assembly: Prevent crash when toggling rigid of grounded sub assembly (#24761)
* Assembly: Prevent crash when toggling rigid of grounded sub assembly

* to squash

* to squash

* Update AssemblyLink.cpp
2025-10-21 07:51:15 +00:00
Chris Hennes d97c7cc95c Core: Switch away from deprecated wstring_convert and codecvt_utf8 2025-10-21 09:01:59 +02:00
Kacper Donat 3a6c75f5bd Merge pull request #24751 from tetektoza/fix/24009_clarify_selection_LMB_activated_by_accident
Gui: Add additional handling for Clarify Selection's long press
2025-10-20 23:22:17 +02:00
tetektoza 93f1cf717b Gui: Use assignment to auto in if statement
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-10-20 20:21:02 +02:00
tetektoza 58d319511a Gui: Add navigation modes to distinguish which nav mode requires CTRL 2025-10-20 20:18:28 +02:00
tetektoza 6a597a9277 Gui: Add additional handling for Clarify Selection's long press
This patch adds handling for different contexts that Clarify Selection's
long press may occur in. For example, different navigation styles,
transform tool, or dragger presence.

This way we are sure that the context menu for Clarify Selection won't
be popping up for the user when using one of the above-mentioned
contexts.

Also, this adds handling for different navigation styles, to accept
CTRL+LMB as the long press mouse-key combos, instead of just
long-pressing LMB, as in those navigation styles LMB is mostly used as
rotation.
2025-10-20 20:18:28 +02:00
tetektoza 5686d0a713 Gui: Add additional preferences for Clarify Select's long press to Prefs
As the title says. Two preferences, that reflect what has been added previously
- now the users can disable LMB at all, or increase the timeout through prefs.
2025-10-20 20:18:24 +02:00
Chris Hennes 5e63985fa7 Merge pull request #24749 from FreeCAD/BuildingEuroAreaDim2
Base, TechDraw: Use Unit Schema Values in Area Dimension
2025-10-20 11:37:55 -05:00
Petter Reinholdtsen 88d21ce70e Fixed inconsistent return types between several salomemesh methods and propotypes.
The prototypes in the header file did not match the implementation in the
C source.

These issues were discovered when enabling link time optimization.  There are
more LTO issues left to fix before it can be enabled, but these involve
mixing a C++ class and a pointer to floating point values and is a lot
more intrusive to fix.

This change is related to issue #13173, bringing LTO one step closer.
2025-10-20 11:09:56 -05:00
PaddleStroke 55d0e2b3ac Image: enable pasting image data directly (#24711)
* Image: enable pasting image data directly

* Update MainWindow.cpp
2025-10-20 17:59:49 +02:00
Chris 6fd6558040 Import: Export tip when body is selected (#24678) 2025-10-20 10:59:18 -05:00
Florian Foinant-Willig 7f6c39c358 PartDesign: fix MultiTransform from existant Transform 2025-10-20 17:55:01 +02:00
PaddleStroke 06c46bd352 Sketcher: Fix issue of reversed arcs input for polar pattern (#24351)
* Sketcher: Fix issue of reversed arcs input for polar pattern

* DrawSketchHandlerRotate: remove getRotatedPoint that is no longer needed

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

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

* Update Geometry.cpp

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-10-20 10:45:18 -05:00
Syres916 5ba4feac59 [PartDesign] create a new Gui Unit Test for the creation of a sketch … (#23601)
* [PartDesign] create a new Gui Unit Test for the creation of a sketch and...

...improve the Selection Filter syntax error to show where it's being generated from.

* [PartDesign] address Lint feedback

* PD/Tests: Ensure test file does not exist before SaveAs

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-10-20 10:34:05 -05:00
Roy-043 fa67c65da9 BIM: fix site error when creating project with default structure
Fixes #24543.
2025-10-20 17:21:56 +02:00
Kevin Martin 0334c145d0 Do not use the object's Name as a Label if that Label already exists 2025-10-20 17:07:42 +02:00
github-actions 50d1dec4e0 Update translations from Crowdin 2025-10-20 09:57:05 -05:00
Chris Hennes e806592d92 Merge pull request #24734 from Syres916/CAM_Fix_SetupSheet_Table_MinHeight
[Gui] fix Arch Grid QTableview height and buttons width...
2025-10-20 09:41:51 -05:00
Chris 129d64dd87 Sketcher: Resolve aggressive snapping (#24730)
Fixes #24690
2025-10-20 09:37:51 -05:00
sliptonic adb327d98e Merge pull request #24397 from LarryWoestman/epic
CAM:  Add proposed Epic for improving postprocessors
2025-10-20 09:31:11 -05:00
PaddleStroke 7023e83843 Sketcher: Add support for tangent singularity when concentric circles (#24227) 2025-10-20 09:28:37 -05:00
Kacper Donat a09de19764 Gui: Fix order of stylesheet applying 2025-10-20 09:26:22 -05:00
Roy-043 08aeb5d65b BIM: remove 'show this dialog' checkbox from IFC Import and IFC Export prefs (#24728)
Fixes #24551
2025-10-20 09:15:43 -05:00
Roy-043 4b1ce402ff Rebased 2025-10-20 09:00:22 -05:00
dependabot[bot] 31ed7d2b67 Bump prefix-dev/setup-pixi from 0.9.1 to 0.9.2
Bumps [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi) from 0.9.1 to 0.9.2.
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](https://github.com/prefix-dev/setup-pixi/compare/194d461b21b6c5717c722ffc597fa91ed2ff29fa...28eb668aafebd9dede9d97c4ba1cd9989a4d0004)

---
updated-dependencies:
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.9.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 08:57:14 -05:00
wandererfan 0e7460496e [TD]use unit and text from schema 2025-10-20 08:55:44 -05:00
wandererfan c9fffa6789 [Base]retrieve unit text
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-10-20 08:54:52 -05:00
Kacper Donat e8aeffc096 PartDesign: Fix misplaced preview for Boolean operation 2025-10-20 08:46:28 -05:00
Chris Hennes 54535e072e Merge pull request #24752 from kadet1090/fix-various-stylesheet-issues
Stylesheets: Fix various stylesheet issues
2025-10-20 08:45:34 -05:00
Roy-043 2386ff1abc BIM: fix multi-material transparency IFC export issue (#24643)
* BIM: fix multi-material transparency IFC export issue

Fixes #22896.
2025-10-20 08:44:37 -05:00
Chris Hennes 98c9bca45a Merge pull request #24263 from captain0xff/gizmo4
Gui: Fix dependency issues with the interactive draggers
2025-10-19 23:47:45 -05:00
Roy-043 02d31f0457 BIM: fix Arch_RemoveShape attribute error
Fixes #24610.

Note that the command (after this PR) does not work properly (as was the case in v0.21).
2025-10-19 22:23:35 -05:00
Roy-043 f4bfbb47fa BIM: fix several dialog regressions (#24590)
* BIM: fix BIM_Classification dialog regression

* Fixed issues with more scenarios
2025-10-19 22:23:05 -05:00
captain0xff d08a7f1c0d Gui: change the group for the gizmo preferences 2025-10-19 22:19:21 -05:00
captain0xff 529c624afc Part: move GizmoHelper.h to src/Mod/Part/App 2025-10-19 22:19:11 -05:00
Steven James 5abf4da75e Building: Ubuntu environment needs python3-pyside2.qtnetwork for testing (#24493) 2025-10-19 21:41:50 -05:00
wandererfan 2172e82f23 [TD]fix area anno positioning 2025-10-19 21:40:25 -05:00
Chris d7b735ff95 GUI: Check correct parameter for pop-up notifications (#24727) 2025-10-19 21:04:06 -05:00
Lawrence Woestman fd2e4b1397 CAM: Incorporated the first round of feedback 2025-10-19 16:24:41 -07:00
Lawrence Woestman b8c6d59ab6 CAM: Add proposed Epic for improving postprocessors 2025-10-19 15:19:57 -07:00
Kacper Donat 06a9c56656 Stylesheets: Fix checked QToolButton style 2025-10-20 00:10:57 +02:00
Kacper Donat 777726f093 Stylesheets: Add styling for QPlainTextEdit 2025-10-20 00:10:57 +02:00
Kacper Donat c5ff1b4550 Stylesheets: Resreve space for right arrow 2025-10-19 23:09:21 +02:00
opgl fdd7dac561 CI (crowdin synchronization): Removed committing unneeded log file 2025-10-19 15:46:03 -05:00
tetektoza d5f9059199 Gui: Fix stack-use-after-return in DlgSettingsLightSources lambdas
Randomly discovered during some other bug hunt, only with
AddressSanitizer on. Basically, ASAN detected stack-use-after-return
when playing with spinboxes in the Light Sources preferences when Qt
signal handlers tried to invoke lambda callbacks that referenced
deallocated stack memory.

The main problem is that those lambda functions in the constructor
were captruing by reference. When they were connected to Qt signals
and invoked after constructor completed, they accessed stack vars that
have gone out of scope.

So fixed that by changing lambda captures from `[&]` to explicit captures:
- [this] for lambdas needing only class member access
- [this, updateLight] for lambdas that need both class members and the
`updateLight` lambda.
2025-10-19 22:23:36 +02:00
theo-vt a431ccc156 Quickmeasure: Allow measuring the length of a parabola 2025-10-19 12:31:47 -05:00
Furgo 2796296a24 BIM: Fix widget value setting in ArchMaterial (#24710)
ArchMaterial's view provider has a setTaskValue helper to set values of widgets inside a task panel. While specific to ArchMaterial, the real place where the helper is called is at BIM_Classification. It appears it's not a general but more like an ad-hoc API for a specific purpose and for a specific object.

In any case, this fix allows widgets that expect a numerical value to have their value set. Before, their value was set as text, unexpectedly.
2025-10-19 09:13:51 +00:00
opgl ac21faf35e CI (automated crowding synchronization): fix commiting additional log file 2025-10-18 14:37:10 -05:00
tarman3 68084b64c9 CAM: LeadInOut - Radius and ToolController 2025-10-18 18:37:37 +03:00
sliptonic a94382dd07 Merge pull request #24725 from davidgilkaufman/adaptive_model_aware_checkbox
[CAM] fix bug opening job ui panel
2025-10-18 10:07:23 -05:00
paul 4ff8998198 [ArchStairs] Fix StringerOverlap & StructureOffset (#24608)
1. Fix #24321
2. Fix - The 'Structure Offset' property does not allow to insert negative values

(Forum Discussion
- https://forum.freecad.org/viewtopic.php?t=100060 contains discussion on the above 2 issues)
2025-10-18 14:44:21 +00:00
Furgo e28f54f598 BIM: Prevent editing label on double-click (#24712)
Before this fix, double-clicking on an ArchMultimaterial object opened its task panel as expected. Unexpectedly, its label was selected and set for edit.

- The tree view's double-click handling expects the view-provider to declare whether it handled the double-click.
- The ViewProvider API's doubleClicked() is documented to return bool (True if handled).
- If a view provider's doubleClicked method returns None/False, the tree falls back to the default Qt behavior (which is beginning inline editing of the item label).
- In ArchMaterial.py the view provider calls self.edit() (or FreeCADGui.ActiveDocument.setEdit(...)) but the method that the tree actually calls (the view provider's doubleClicked) does not return True. Because the method returns None, the tree continues and starts inline label-editing.

In summary: setEdit returning True is fine, but doubleClicked is the method the tree checks; it must return True to suppress the default inline rename.
2025-10-18 15:34:10 +02:00
Syres916 879c083abf Merge branch 'FreeCAD:main' into CAM_Fix_SetupSheet_Table_MinHeight 2025-10-18 11:27:03 +01:00
Syres916 36b263a906 [Gui] change global QPushbutton min-width from 64px to 80px 2025-10-18 11:26:50 +01:00
ebswift bbea8ace72 Fix compilation error in TaskFeatureParameters.cpp 2025-10-17 22:35:44 -05:00
theo-vt 171389d9d3 Measure: allow length measurement for ellipse, hyperbola and parabola (#24659) 2025-10-17 21:34:07 +00:00
Chris 65d166f356 PD: Fix uninfomative error message box (#24705) 2025-10-17 19:48:31 +00:00
David Kaufman 909cd46a9f fix bug opening job ui panel 2025-10-17 15:08:10 -04:00
sliptonic f3186f4dc0 remove old supplemental fixture 2025-10-17 12:10:22 -05:00
David Kaufman e3874a1973 [CAM] make the adaptive model aware feature optional (#24553)
* [CAM] make the adaptive model aware feature optional

* fix CAM tests

* placate github codql

* remove model-aware-only properties from the adaptive task ui panel
2025-10-17 10:42:15 -05:00
sliptonic 8df09d92c0 Merge pull request #24661 from tarman3/icon
CAM: Fix icon while changing Active state for class ObjectOp
2025-10-17 10:41:20 -05:00
sliptonic b72f83136c Merge pull request #24606 from tarman3/toggle
CAM: Toggle Operation improve
2025-10-17 10:41:00 -05:00
sliptonic 7bb4bacc11 Merge pull request #24674 from Connor9220/EmbeddedToolMigrationFix
CAM: Fix embedded toolbits showing up as custom.
2025-10-17 10:40:40 -05:00
Chris Hennes 855d76bb40 Addon Manager: Synchronize with 2025.10.16 version 2025-10-17 05:25:19 +02:00
Chris Hennes e4b6b32f11 Merge pull request #24684 from furgo16/patch-34
BIM: remove obsolete Python 2 urllib2 import
2025-10-16 15:48:43 -05:00
Furgo ae0946ac9d BIM: replace obsolete urllib2 in BimTutorial 2025-10-16 21:21:40 +02:00
Furgo da4832fb50 BIM: remove obsolete Python 2 urllib2 import
Python 3 combined the former `urllib`, `urllib2`, `urlparse` Python 2 modules into subpackages of `urllib`. FreeCAD is written in Python 3, thus the `urllib2` import fallback will not work and needs to be removed.
2025-10-16 21:21:40 +02:00
tetektoza 0e6d4aa1d7 Gui: Restore focus to tree upon deletion and move selection to next obj (#24679) 2025-10-16 13:13:08 -05:00
PaddleStroke e278d22d42 Sketcher: Fix ctrlA with filter vertex index issue (#24665)
* Sketcher: Fix ctrlA with filter vertex index issue

* [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-10-16 13:01:30 -05:00
Chris Hennes 5e75a3ece9 Merge pull request #24692 from Roy-043/BIM-improve-MultiMaterial-task-panel
BIM: improve MultiMaterial task panel
2025-10-16 12:56:20 -05:00
captain0xff 8496d25279 Gui: fix null handling logic in Application::setEditDocument 2025-10-16 12:54:20 -05:00
Furgo a89c7eedcf BIM: add missing DraftGeomUtils import (#24683)
Added import for DraftGeomUtils to ArchCommands.makeFace to prevent crash.
2025-10-16 18:00:32 +02:00
Roy-043 bdb817a6a1 BIM: improve MultiMaterial task panel
Update MultiMaterialColumnWidth values to 120
2025-10-16 15:00:35 +02:00
Roy-043 0bfc4ac41e BIM: improve MultiMaterial task panel
Remove extra left margin from the first column in the tree view.
2025-10-16 14:58:59 +02:00
marcuspollio aef287cbb6 Update .git-blame-ignore-revs for BIM and Draft .pre-commit and Black format 2025-10-15 21:39:09 -05:00
Billy Huddleston 906edf7078 Promote embedded toolbits to correct shape type during migration
- Enhance _promote_toolbit to handle embedded toolbits that still have a "Custom" shape type.
- If ShapeType is "Custom" but ShapeID is present, attempt to promote to the correct shape class using ShapeID.
- Log promotion for traceability.
- This improves migration of legacy embedded toolbits and ensures proper shape assignment.
2025-10-15 18:04:40 -04:00
Billy Huddleston bcefebca5f CAM: Simplify annotation handling in GCode and improve annotation parsing
src/Mod/CAM/App/Command.cpp:
- Removed requirement for annotations= prefix; now all text after ; is treated as annotation data.
- Updated Command::toGCode to output annotations as key-value pairs in comments.
- Improved setFromGCode to extract annotations from any comment after ;.
- Enhanced annotation parsing to handle quoted strings and floating-point numbers.
- Simplified XML serialization and restoration logic for annotations.

src/Mod/CAM/App/Path.cpp:
- Added addCommandNoRecalc, allowing bulk loading of commands without repeated recalculation.
- Refactored RestoreDocFile to read GCode files line-by-line, parse each command, and call recalculate() only once after all commands are loaded.
- Added explanatory comment above the old implementation.

src/Mod/CAM/App/Path.h:
- Declared addCommandNoRecalc in the Toolpath class.

src/Mod/CAM/CAMTests/TestPathCommandAnnotations.py:
- Adjusted unit test for scientific notation annotation to check only 6 decimal places.
- Adjusted unit test 10 to properly handle assertions with the toGCode method

src/Mod/CAM/PathSimulator/AppGL/GCodeParser.cpp:
- GCodeParser::ParseLine: Truncate at first semicolon (annotations / comment)
2025-10-15 14:43:40 -04:00
Billy Huddleston a970235484 CAM: Enhance Path.Command annotations with variant type, type-safe API, and robust persistence
- Refactored `Annotations` member to use `std::variant<std::string, double>` for type-safe storage of both string and numeric values.
- Implemented C++ methods:
	- `setAnnotation(key, value)`: overloaded for string and double types.
	- `getAnnotation(key)`: returns annotation value as string.
	- `getAnnotationString(key)`: returns string annotation.
	- `getAnnotationDouble(key, fallback)`: returns numeric annotation.
	- `getAnnotationValue(key)`: returns raw variant value.
	- `hasAnnotation(key)`: checks for annotation existence.
	- `setAnnotations(annotationString)`: parses and stores values as double if possible, otherwise as string.
- Improved XML serialization (`Save`) and deserialization (`Restore`) to persist annotation types and values, including annotation count for robust restoration.
- Updated Python bindings:
	- `Annotations` property now supports mixed-type values (str/float).
	- Values are returned as native Python types.
	- Type errors are raised for invalid assignments.
- Expanded tests in `TestPathCommandAnnotations.py`:
	- Added cases for mixed-type annotations, edge cases, and in-memory persistence using `dumpContent`/`restoreContent`.
	- Verified type preservation and correct restoration.
- Ensured backward compatibility for string-only annotations and improved error handling.

**How to use annotations in Python:**

```import Path

c = Path.Command('G1', {'X': 10.0, 'Y': 20.0, 'F': 1000.0})
c.Annotations = {
	'tool_name': '6mm_endmill',      # string
	'spindle_speed': 12000.0,        # float
	'feed_rate': 1500,               # int (stored as float)
	'operation': 'pocket',           # string
	'depth_of_cut': -2.5,            # negative float
}
print(c.Annotations)  # {'tool_name': '6mm_endmill', 'spindle_speed': 12000.0, ...}
print(type(c.Annotations['spindle_speed']))  # <class 'float'>
print(type(c.Annotations['tool_name']))      # <class 'str'>

xml = c.dumpContent()
c2 = Path.Command()
c2.restoreContent(xml)
print(c2.Annotations)  # Restored with correct types

c.addAnnotations('speed:1000 operation:drill')
print(c.Annotations['speed'])        # 1000.0 (float)
print(c.Annotations['operation'])    # 'drill' (str)
```
2025-10-15 14:26:13 -04:00
marcuspollio 50e4864efb Add Draft workbench to .pre-commit-config (#24664)
* Add Draft workbench to .pre-commit-config

* [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-10-15 11:21:09 +02:00
tetektoza 87f88bba30 BIM: Remove icon after unclone (#24654)
As the title says - upon unclone icon is not being removed, but the
cloned item stops mirroring original item which is correct, so this just
aligns the icon removal logic with the correct behavior.
2025-10-15 10:21:38 +02:00
tarman3 c995a331b6 CAM: Fix icon and Active state for class ObjectOp 2025-10-15 07:39:02 +03:00
Chris Hennes 41ce37233d Merge pull request #22696 from schmidtw/assembly-crash-fix
Fix: Prevent attempting to access non-existant nodes.
2025-10-14 10:14:51 -05:00
Kacper Donat 2b90740855 PartDesign: Fix boolean fuse without tools
This fixes issue where exception was thrown when no tools were selected
preventing the task dialog from being opened.
2025-10-14 10:05:24 -05:00
Kacper Donat 96b76b4e41 PartDesign: Ignore errors due to object misconfiguration in previews
This adds ignoring catch to the updatePreview method of
ViewProviderTransformed so it does not report issues that happen because
recompute takes place on object that is not yet fully configured.
2025-10-14 10:04:28 -05:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ 3f918a5d35 [ Surface ]: Updated SPDX (#24560) 2025-10-14 10:02:53 -05:00
PhoneDroid 7595a83f36 [ OpenSCAD ]: Updated SPDX 2025-10-14 10:01:41 -05:00
PhoneDroid d9cf2b65b5 [ MeshPart ]: Update SPDX 2025-10-14 10:01:02 -05:00
PhoneDroid 2a56489feb [ Base ]: Updated SPDX 2025-10-14 10:00:04 -05:00
dependabot[bot] 325dd3b701 Bump github/issue-metrics from 3.25.0 to 3.25.1
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.25.0 to 3.25.1.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/17c6bd18e923c2ec4161c6911f9b075908f7f090...c640329f02bd24b12b91d51cd385f0b1c25cefb9)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-14 15:53:53 +02:00
Chris Hennes 7bc525f885 Merge pull request #23592 from ryankembrey/td-vertices
TechDraw: Fix vertices regressions
2025-10-14 08:26:50 -05:00
Adrian Insaurralde Avalos 667b841de1 [Base] fix some unit tests that where dependent on user config
redundant and faulty test `imperial_decimal_1_mm_default_precision` removed, it is already covered by `imperial_decimal_1_mm_precision_2`
2025-10-14 12:42:24 +02:00
PaddleStroke 8275916601 Sketcher: Fix deactivated Block bug (#24548)
* Sketcher: Fix deactivated Block bug

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

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

* Update Sketch.cpp

* [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-10-14 11:58:22 +02:00
Pieter Hijma 9462c7bfb3 Gui: Fix supporting links in add property dialog 2025-10-14 11:56:47 +02:00
PaddleStroke 981daca351 Sketcher: bspline tool: fix error message (#24566)
* Sketcher: bspline tool: fix error message

* [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-10-14 11:53:54 +02:00
Roy-043 1e56392c5c Tux: remove obsolete pythonToolbars function 2025-10-14 11:50:19 +02:00
PaddleStroke 6e090a2dad Assembly: Fix lengths cannot be negative (#24625)
* Assembly: Fix lengths cannot be negative

* Update PropertyUnits.cpp

* Update PropertyUnits.h

* Update JointObject.py
2025-10-14 11:40:10 +02:00
marcuspollio d0c7b427ff BIM: Prevent crash when removing a wall's base component (#24633)
* BIM: Prevent crash when removing a wall's base component

When a user selected a wall's base object in the Tree View and used the
`Arch_Remove` command, a traceback occurred due to an `AttributeError`.

The `removeComponents` function was incorrectly checking for the `.Base`
attribute on a list of subtractions (`s.Base`) instead of on the parent
host object (`h.Base`).

This commit corrects the reference to check against the parent object,
resolving the crash and allowing the component to be removed.

Fixes: https://github.com/FreeCAD/FreeCAD/issues/24532

Authored-by:  furgo16 <148809153+furgo16@users.noreply.github.com>

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

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

---------

Co-authored-by: Furgo <148809153+furgo16@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-10-14 11:19:43 +02:00
Florian Foinant-Willig 9fad915d0e Core: fix Std_Placement for multiple objects 2025-10-13 22:54:31 +02:00
PaddleStroke b82505e86c PartDesign: Linear pattern, add checkbox for dir2 (#24378)
* PartDesign: Linear pattern, add checkbox for dir2

* Update PatternParametersWidget.ui

* Update PatternParametersWidget.h

* Update PatternParametersWidget.cpp
2025-10-13 21:34:38 +02:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ 546a43b8b8 Removed outdated UTF8 declaration [ Other ] (#24528)
* Removed outdated UTF8 declaration

* [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-10-13 18:34:43 +02:00
WandererFan 558659d117 TechDraw: fix leader positioning (snapping) (#24468)
* [TD]specialize leader snap handling

* [TD]fix leader live update regression

* [TD]QGTracker code clean-up
2025-10-13 18:21:31 +02:00
matthiasdanner 62c222c211 Sketcher: Fix Angle Constraint jumping to opposite side on movement (#24150)
* Sketcher: Fix Angle Constraint jumping to opposite side on movement

* implement way to dynamically disable snapping where not needed

---------

Co-authored-by: Matthias Danner <28687794+matthiasdanner@users.noreply.github.com>
2025-10-13 18:07:09 +02:00
Chris Hennes 45401513b4 Robot: Remove unlicensed files
Users must obtain these files directly from Kuka, no license has been
granted to distribute them.
2025-10-13 18:02:37 +02:00
Florian Foinant-Willig f4fe303829 Sketcher: rename DeriVector2::crossProdNorm to DeriVector2::crossProdZ 2025-10-13 17:57:51 +02:00
Chris Hennes f7b4372108 Gui: Fix string encoding for drag-and-drop 2025-10-13 17:34:59 +02:00
Furgo b23d580941 Add BIM workbench to .pre-commit-config.yaml (#21591)
* Add BIM workbench to .pre-commit-config.yaml

* pre-commit: ignore translations

* pre-commit: add additional ignore pattern

* [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-10-13 13:07:48 +02:00
Billy Huddleston 51b5870953 Added myself to CONTRIBUTORS 2025-10-13 00:21:06 -05:00
schmidtw 33aeb38f0c Add unit tests for CommandInsertLink fix
Add comprehensive unit tests to verify the fix prevents AttributeError
  when accessing non-existent nodes.
2025-10-12 14:50:03 -07:00
schmidtw 4b2131f501 Fix: Prevent attempting to access non-existent nodes
This is defensive code that protects against attempting to dereference
  nodes that are not present, preventing the python code from throwing an
  AttributeError.
2025-10-12 14:49:28 -07:00
Syres916 806e3e9eb0 [Gui] revert PR23067 and apply table height...
...directly in the Python code
2025-10-12 18:41:05 +01:00
Syres916 8d3a2e93fd Merge branch 'FreeCAD:main' into CAM_Fix_SetupSheet_Table_MinHeight 2025-10-12 18:38:46 +01:00
tarman3 f17c46f8ec CAM: Toggle Operation improve 2025-10-12 15:22:35 +03:00
Chris Hennes 7d811f2ab2 CI: Update CrowdIn Push to use pinned versions 2025-10-12 14:16:22 +02:00
Chris Hennes e89fcf29f7 CI: Update CrowdIn Fetch workflow to use pinned versions 2025-10-12 14:16:22 +02:00
DONGGEUN YOO 911d82f99b BIM: Fix IFC import options dialog not showing until Preferences are opened (#24574) 2025-10-11 18:22:55 +02:00
PaddleStroke 557f45587f TechDraw: fix setMask error in mrichtextedit.cpp 2025-10-09 21:16:50 -05:00
Pieter Hijma 90f9996fdb Gui: Fix too enthusiastic auto-collapse 2025-10-09 16:11:24 -05:00
PaddleStroke 8f3d9d9cdf Part: Offset tools: do not copy sketch colors. 2025-10-09 14:43:12 -05:00
PaddleStroke 98d64f9939 Sketcher: Element Task : clear selection when list selection is cleared 2025-10-09 14:06:10 -05:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ 084003e361 Tests: Add/update SPDX header (#24547) 2025-10-09 13:50:17 -05:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ cab1261a42 CAM: Remove UTF-8 coding declarations (#24527)
These declarations are no longer needed for Python 3+.
2025-10-09 13:49:18 -05:00
dependabot[bot] b460e85abe Bump github/issue-metrics from 3.24.0 to 3.25.0
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.24.0 to 3.25.0.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/45a6cb314ddaa4c12eed570eb2739435d712d480...17c6bd18e923c2ec4161c6911f9b075908f7f090)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 20:03:16 +02:00
PaddleStroke ca8bfc6180 Sketcher: Make ctrlA work with filter (#24541) 2025-10-09 12:37:54 -05:00
PaddleStroke 331e51cdfc Sketcher: Fix toggle construction not undoable (#24539)
* Sketcher: Fix toggle construction not undoable

* [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-10-09 12:31:50 -05:00
Chris Hennes 02df83e19d Merge pull request #24446 from pieterhijma/fix-add-prop-dialog-py-console
Gui: Fix Python Console messages Add Property dialog
2025-10-09 10:29:37 -05:00
Pieter Hijma 9a09e8e321 Gui: Fix console messages Add Property dialog 2025-10-09 16:01:05 +02:00
Pieter Hijma 6af8e0b380 Gui: Add a possibility to redirect macro commands 2025-10-09 16:00:12 +02:00
Benjamin Nauck f3c043195f Gui: Enable quick measure and input hints by default 2025-10-09 15:56:43 +02:00
PhoneDroid e2e75f1039 Updated SPDX License Identifiers 2025-10-08 21:58:26 -05:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ 78f29138bc CAM: Updated SPDX License Identifiers (#24525) 2025-10-09 00:36:39 +00:00
PhoneDroid b5b9913293 Updated SPDX License Identifiers 2025-10-08 19:11:11 -05:00
PhoneDroid 78447d9800 Updated SPDX License Identifiers 2025-10-08 19:10:28 -05:00
johndoe2323 23297f5045 fix for #18165
calculation changed to incorporate scale for distanceDim.X and distanceDim.Y
2025-10-08 17:38:35 -05:00
PhoneDroid 1b16eeeeb9 Updated SPDX License Identifiers 2025-10-08 16:39:12 -05:00
wandererfan 46f4014647 [TD]fix subscript out of range on bad selection 2025-10-08 16:08:13 -05:00
marcuspollio 17c8da0244 BIM: add formatting off comments (#24502) 2025-10-08 21:48:08 +02:00
marcuspollio 4323840e8e Draft: add formatting off comments (#24503) 2025-10-08 21:43:38 +02:00
PhoneDroid 8912dfd7e1 Updated SPDX License Identifiers 2025-10-08 10:56:23 -05:00
PhoneDroid 661bdd999a Updated SPDX License Identifiers 2025-10-08 10:53:08 -05:00
PhoneDroid 372959ddee Updated SPDX License Identifiers 2025-10-08 10:51:06 -05:00
PhoneDroid ca4a8cd200 Updated SPDX License Identifiers 2025-10-08 10:49:52 -05:00
PhoneDroid c78b483dd5 Updated SPDX License Identifiers 2025-10-08 10:28:46 -05:00
PhoneDroid d33b4b38f7 Updated SPDX License Identifiers 2025-10-08 10:27:10 -05:00
dependabot[bot] 5467173e01 Bump ossf/scorecard-action from 2.4.2 to 2.4.3
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.2 to 2.4.3.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](https://github.com/ossf/scorecard-action/compare/05b42c624433fc40578a4040d5cf5e36ddca8cde...4eaacf0543bb3f2c246792bd56e8cdeffafb205a)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  dependency-version: 2.4.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-07 19:43:41 -05:00
PaddleStroke 94fb19d9be Assembly: Fix dragger when assembly is transformed 2025-10-07 19:41:55 -05:00
opgl 68f083a6d1 CI: Automatically synchronize translations with CrowdIn 2025-10-07 17:49:55 -05:00
Syres916 3a8de56ee5 [Gui] fix the Preferences tree font 2025-10-07 12:47:29 -05:00
Chris Hennes 9780cf931f Update translations 2025-10-05 2025-10-07 19:21:58 +02:00
PaddleStroke 6282dd48bb Assembly: Make pre-solve and reverse move all the downstream parts (#24193) 2025-10-07 11:44:11 -05:00
dependabot[bot] c64f06c3ad Bump actions/stale from 10.0.0 to 10.1.0
Bumps [actions/stale](https://github.com/actions/stale) from 10.0.0 to 10.1.0.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/3a9db7e6a41a89f618792c92c0e97cc736e1b13f...5f858e3efba33a5ca4407a664cc011ad407f2008)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: 10.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 13:02:48 -05:00
PaddleStroke 96ca8a43a6 Assembly: Add tolerance to detect ground part movement 2025-10-06 13:02:24 -05:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ 01da3ddd35 Fix & update license to LGPLv2.1 2025-10-06 11:43:26 -05:00
IFo Hancroft e187e696b5 Added GPL-3.0-or-later to the list of licenses (#24447)
* Added GPL-3.0-or-later to the list of licenses

* Incremented number of licenses
2025-10-06 11:33:07 -05:00
PaddleStroke cb38761213 Assembly: replace properties float by propertylength & propertyangle (#24403)
* Assembly: replace properties float by propertylength & propertyangle

* [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-10-06 11:18:22 -05:00
sliptonic 6817ec7a78 Merge pull request #24374 from chennes/fix23777userEditMide
Part/PD: Send user edit mode to cmdSetEdit
2025-10-06 11:05:58 -05:00
sliptonic b93b67f1b6 Merge pull request #24014 from chennes/fixCopyMenuMisplaced23769
Gui: Ensure menus don't get moved inadvertently
2025-10-06 11:05:04 -05:00
PaddleStroke 365af33fc6 Sketcher: Symmetric arc when center is on symmetry line. (#24228)
* Sketcher: Symmetric arc when center is on symmetry line.

* [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-10-06 11:02:42 -05:00
Markus Reitböck 85776dd66b Gui: Fix unreadable button in Customize Dialog (#24285)
* Gui: Fix unreadable button in Customize Dialog

Also renamed Pixmap to Icon

Fixes: https://github.com/FreeCAD/FreeCAD/issues/24260

* Update src/Gui/Dialogs/DlgActions.ui

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-10-06 10:59:29 -05:00
sliptonic 432583bb20 Merge pull request #24069 from tarman3/leadinout_fix2
CAM: LeadInOut - Fix SafeHeight
2025-10-06 10:58:21 -05:00
sliptonic b3f3bf5c0a Merge pull request #24177 from chennes/migrateLibE57ToSubtree
Migrate libE57Format to subtree
2025-10-06 10:56:18 -05:00
Sami Liedes 0a50bad4c0 Gui: Request 24-bit color depth if available
In some configurations, Qt apparently defaults to giving the "first
acceptable" buffer format. This often ends up being RGB565, which
gives us little color resolution.

Request 8-bit RGB samples to fix this.

This tends to happen easiest with
`QT_WAYLAND_DISABLE_WINDOWDECORATION=1` and `QT_QPA_PLATFORM=wayland`.
2025-10-06 10:48:30 -05:00
sliptonic 5e06ae1b4d Merge pull request #24179 from tarman3/oldsim
CAM: Old simulator - Fix z for G2,G3
2025-10-06 10:45:42 -05:00
sliptonic bc696ad89b Merge pull request #24016 from chennes/fixIgnoredFontPreference
Gui: Fix ignored font preference
2025-10-06 10:35:51 -05:00
sliptonic 1c816da43b Merge pull request #24114 from chennes/addDirectoryIsWritable
Base: Refine directory permissions test
2025-10-06 10:35:21 -05:00
Aqeel Labash 8fe4d67abe TechDraw: Make TaskWeldingSymbol buttons resizeable (#24395) 2025-10-05 21:09:26 -05:00
Furgo ffc6f840bd Core: FreeCadMacros.cmake:fc_copy_sources ensure parent directory is created before copy or symlink creation
Fixes: #24432
2025-10-05 21:08:34 -05:00
Pieter Hijma 532354c2a4 Gui: Exclude base type in Add Property dialog 2025-10-05 21:08:06 -05:00
wandererfan 9bae342c0d [TD]fix zero value on multi-face dimension 2025-10-05 21:06:03 -05:00
Chris Hennes 072f0b0fa3 Merge pull request #24438 from Rexbas/fix-openscad-transform-conflict
Gui: Fix transform tool conflict with OpenSCAD navigation style
2025-10-05 21:05:19 -05:00
Roy-043 6395af4113 BIM: fix BimMaterial dialog regression
Fixes #24381
2025-10-05 19:12:46 -05:00
PaddleStroke c2592271e8 Sketcher: remove edit tools from toolbar (#24229)
* Sketcher: remove edit tools from toolbar

* Update Workbench.h

* [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-10-05 19:11:46 -05:00
Syres916 ce8584c728 [Gui] Fix spreadsheet alias cells not being correctly set to the user's preference 2025-10-05 19:07:14 -05:00
Chris d2c306ce6a Packaging: Fix mac app bundling with homebrew (#24286) 2025-10-05 19:06:23 -05:00
Roy-043 abc8bb9849 BIM: fix update behavior of BIM views panel (#24273)
* BIM: fix update behavior of BIM views panel

Fixes #17415
Fixes #17868

To avoid unnecessarily updating the trees an `oldData` list is used.
2025-10-05 19:05:37 -05:00
Kacper Donat 8398ac7a81 Merge pull request #23620 from hyarion/fix/qm
Gui: Toggle quick measure and input hints from status bar context menu
2025-10-05 12:16:57 +02:00
Furgo 8e202d6aaf BIM: Fix ArchSite View Provider lifecycle, property constraints and defaults (#23844)
* BIM: Fix Site view provider initialization and constraints

This commit fixes bugs in the `_ViewProviderSite` lifecycle, ensuring
that sun path properties are correctly initialized with valid defaults
and that their constraints are reliably restored when a document is
opened.

Previously, two main problems existed:
1. New Objects: When a new `Site` object was created, its sun path
   properties (e.g., `SunDateMonth`) would default to 0, which is an
   invalid value. The property editor in the GUI would also lack the
   appropriate min/max constraints.
2. Restored Objects: When a document containing a `Site` was opened, the
   property constraints were not reapplied. This happened because the
   view provider's initialization logic was not being reliably triggered
   due to race conditions during the document deserialization process.

These issues are addressed now by a deferred initialization sequence:

- For New Objects: In `_ViewProviderSite.__init__`, constraint and
  default value setup is deferred using `QTimer.singleShot(0)`. The
  `restoreConstraints` method also now sets sensible defaults (e.g.,
  month 6, day 21) when it detects a new object.
- For Restored Objects: The data object's `_Site.onDocumentRestored`
  hook is now used as a trigger to start the view provider's
  initialization. This is a necessary workaround, as the `ViewProvider`
  lacks its own restoration hook. This method now ensures the view
  provider's properties are present and then schedules
  `restoreConstraints` to run via `QTimer`.

* BIM: add ArchSite GUI tests and fixtures

- Additionally clean up and document the CMakeLists.txt file for better
  maintainability and readability

* BIM: Enable GUI tests on CI

- The line to enable the BIM workbench has been commented out, as
  previously it occasioned a timeout error on CI
- The BIM GUI tests have been uncommented out to enable them
2025-10-05 11:47:56 +02:00
paul 960434f7e5 [ArchStairs] Fix Blondel Ratio and Winders (#24350)
* [ArchStairs] Fix Blondel Ratio and Winders

Fix #24065
Fix #24051

1. Blondel Ratio is not calculated, this if fixed now.  Blondel Ratio property is changed to Length following wiki's descripition.
2. Winders is not implemented as commented in wiki.  The property is not added at the moment until it is implemented.

* [ArchStairs] Fix Blondel Ratio and Winders - Remove old Property

For existing Stairs object, remove old property which is Float and add new propety which is Length.
2025-10-05 09:29:40 +02:00
Benjamin Nauck c4213b21ad Gui: Store visibility of status labels (quick measure and input hints) 2025-10-04 21:48:48 +02:00
Benjamin Nauck 99c24f1c2b Measure: Remove from menu + transfer ownership back
As discussed in 23399, discoverability is really poor as users doesn't know what Quick Measure is,
neither is it easy to find out as there's no visual feedback when toggling this feature.
The intension was to keep the command and only remove it from the menu, but that wasn't possible
due to ownership of quick measure object was inside the command. In addition the parameter had to
be renamed as well as mashing the qm button made them end up in an unknown state.

As the measurement can be disabled now by simply hiding the info text from context menu, we don't
need to keep the old toggling functionality.
2025-10-04 21:48:48 +02:00
Benjamin Nauck 6aff735482 Gui: Only measure with Quick Measure if showing in status bar 2025-10-04 21:48:48 +02:00
Benjamin Nauck e82b81c8c0 Gui: Make it possible to hide/show info labels in status bar 2025-10-04 21:48:23 +02:00
Bas Ruigrok 5e6fd1aeda Gui: Fix transform tool conflict with OpenSCAD navigation style 2025-10-04 13:50:53 +02:00
Bas Ruigrok 090a5a6995 Gui: Move isDraggerUnderCursor from Gesture to NavigationStyle 2025-10-03 20:01:29 +02:00
sliptonic eba0450647 Merge pull request #24392 from Connor9220/FixToolbitTopo
CAM: Fix Topo recomputation by only updating when values change in Toolbits
2025-10-03 12:20:10 -05:00
sliptonic 10f5cb7479 Merge pull request #24323 from tarman3/leadinout_fix6
CAM: LeadInOut - Fix ZeroDivisionError for LineZ
2025-10-03 11:30:24 -05:00
sliptonic ec0a78280b Merge pull request #24216 from tarman3/leadinout_threshold
CAM: LeadInOut - Fix RetractThreshold in Task panel
2025-10-03 11:28:59 -05:00
PaddleStroke 9c1454385e Assembly: Isolate joint components during selection and edit. (#23680)
* Core: Add signalBeforeOpenTransaction

* Assembly: Isolate

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

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

* Update src/App/AutoTransaction.cpp

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-10-02 21:07:06 -05:00
Chris Hennes c0c561d6b1 Merge pull request #24376 from pyro9/ReprFix
Improve the string representation of a few key FreeCAD Python objects.
2025-10-02 20:58:52 -05:00
dependabot[bot] 6c2a2116f7 Bump peter-evans/create-issue-from-file from 5.0.1 to 6.0.0
Bumps [peter-evans/create-issue-from-file](https://github.com/peter-evans/create-issue-from-file) from 5.0.1 to 6.0.0.
- [Release notes](https://github.com/peter-evans/create-issue-from-file/releases)
- [Commits](https://github.com/peter-evans/create-issue-from-file/compare/e8ef132d6df98ed982188e460ebb3b5d4ef3a9cd...fca9117c27cdc29c6c4db3b86c48e4115a786710)

---
updated-dependencies:
- dependency-name: peter-evans/create-issue-from-file
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-02 20:54:43 -05:00
Billy Huddleston 4a6991b771 CAM: Fix Topo recomputation by only updating when values change in Toolbits
- Use PathUtil.setProperty instead of direct setattr for schema properties to ensure proper FreeCAD notifications.
- Only update custom shape properties if the value has changed, reducing unnecessary recomputation.
- For SpindleDirection and Material, only update the property if the new value differs from the current value, and use PathUtil.setProperty for consistency.
- This prevents overwriting existing values with defaults and avoids triggering unwanted recomputation.
2025-10-02 18:56:53 -04:00
Chris Hennes f34f15dc60 Part/PD: Send current edit mode to cmdSetEdit 2025-10-02 17:49:24 -05:00
dependabot[bot] bae76a4dc0 Bump korthout/backport-action from 3.3.0 to 3.4.1
Bumps [korthout/backport-action](https://github.com/korthout/backport-action) from 3.3.0 to 3.4.1.
- [Release notes](https://github.com/korthout/backport-action/releases)
- [Commits](https://github.com/korthout/backport-action/compare/ca4972adce8039ff995e618f5fc02d1b7961f27a...d07416681cab29bf2661702f925f020aaa962997)

---
updated-dependencies:
- dependency-name: korthout/backport-action
  dependency-version: 3.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-02 11:38:37 -05:00
sliptonic 51ffac77cf Merge pull request #24372 from FreeCAD/speedUpPreCommitRun
Change black repo to black-pre-commit-mirror
2025-10-02 08:49:57 -05:00
Steven James 17e8092643 Make repr for a TaskDialog indicate the associated document. 2025-10-02 04:27:59 -04:00
Steven James 9ff4a40bc2 Fixing repr for App/Document and Gui/Document 2025-10-02 04:22:24 -04:00
Chris Hennes 04c466260c Gui: Ensure menus don't get moved inadvertently
Co-authored-by: depthoffocus <depthoffocus@users.noreply.github.com>
2025-10-01 21:46:39 -05:00
Chris Hennes 5cc7d1a869 Change black repo to black-pre-commit-mirror
Updated the pre-commit configuration to use the black-pre-commit-mirror repository instead of the original black repository. Also omit scanning the Fem examples directory.
2025-10-01 20:58:39 -05:00
Chris Hennes b08a0f87d6 Merge pull request #24108 from WandererFan/DxfDimensionExport
[TD]fix no dimension in DXF export
2025-09-30 18:55:55 -05:00
Chris Hennes 9d232222df Addon Manager: Add defusedxml dependency 2025-09-30 19:59:12 -03:00
Chris Hennes 1f57d10bdd Merge pull request #22894 from tetektoza/fix/22545_fix_ovp_being_validated_too_early
Sketcher: Unset labels that are below confusion point before enforcing
2025-09-30 16:07:32 -05:00
wandererfan 3d7db8fb83 [TD] Use isProjectGroupItem() in remaining cases
- isDerivedFrom<DrawProjGroupItem>() is no longer reliable due to smart
  view creation changes.
2025-09-30 13:56:45 -05:00
wandererfan bbb15ea940 [TD]fix dimension not exported to dxf 2025-09-30 13:36:30 -05:00
Chris Hennes 33dd8e2f45 Build: Don't remove the doc directory
It contains the ThirdPartyLibraries.html file.
2025-09-30 15:31:16 -03:00
paddle f90e73f64b Sketcher: Force OVP visibility for offset and scale. 2025-09-30 13:27:18 -05:00
Roy-043 fc5e6dcf8b PartDesign: iso10642-fine.json wrong M5 diameter
Compare iso10642.json:
https://github.com/FreeCAD/FreeCAD/blob/efbe579e25b993a9a26ef45491387a19b14d1f59/src/Mod/PartDesign/Resources/Hole/iso10642.json#L11
2025-09-30 13:25:20 -05:00
Chris Hennes b215adf723 Addon Manager: Sync with upstream 2025-09-23 2025-09-30 20:09:26 +02:00
PaddleStroke db00a9b8e2 Merge pull request #24162 from PaddleStroke/asm_linkgroup_asmlink
Assembly: Add support to Link groups in sub-assemblies.
2025-09-30 13:02:47 -05:00
Chris Hennes 60c8c51d49 Merge pull request #24178 from FlachyJoe/non-recursive-freeze
Core: Freeze state enhancement
2025-09-30 13:01:15 -05:00
wandererfan e8e5fc79ea [TD]prevent area dim crash on multiple faces 2025-09-30 12:59:17 -05:00
Chris Hennes efbe579e25 Merge pull request #24333 from PaddleStroke/patch-83
PartDesign: Pocket Through all: Taper should be writable and offset hidden
2025-09-30 11:51:52 -05:00
PaddleStroke 5264cb1f9e PartDesign: Pattern: Fix occurences not taken into account when pressing enter 2025-09-30 11:44:33 -05:00
PaddleStroke ef10f20351 Sketcher: Prevent non-edit toolbars from showing up when switching tab (#24202)
* Sketcher: Prevent non-edit toolbars from showing up when switching tab

* [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-09-30 11:36:27 -05:00
Michael Marais cbe93b3b56 Merge pull request #23915 from Mikestriken/project_utility_fix
Fixed createDocument() utility importing phantom '\.' files with 0 bytes
2025-09-30 11:04:08 -05:00
dependabot[bot] 32712dcd8e Bump github/issue-metrics from 3.23.3 to 3.24.0 (#24338)
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.23.3 to 3.24.0.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/c2ad23cdf3192065f868ff0ece4e91e4077a4f73...45a6cb314ddaa4c12eed570eb2739435d712d480)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.24.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2025-09-30 16:02:32 +00:00
Chris Hennes 703d9ebd12 Merge pull request #23735 from longrackslabs/feature/sketcher-hints-comprehensive-coverage-22282
Feature/sketcher hints comprehensive coverage 22282
2025-09-30 09:51:50 -05:00
Chris Hennes 2b1a3aedbe Merge pull request #23770 from PaddleStroke/patch-59
PartDesign: FeatureExtrude fix symmetric + custom dir
2025-09-30 08:55:18 -05:00
longrackslabs 99f27f1a56 Add 'or click to finish' to Sketcher_Dimension hints
After selecting first geometry, users can now see that they can
click empty space to finish the dimension and set its value,
rather than having to pick additional geometry.

Added PICK_SECOND_POINT_OR_EDGE_OR_CLICK_TO_FINISH constant and
updated all selection cases in DrawSketchHandlerDimension::getToolHints().
2025-09-30 08:47:43 -05:00
longrackslabs a940181998 Fix ConstrainSymmetric hint for point→edge→point workflow
Change 'pick symmetry point' to 'pick point' when the workflow is
point → symmetry line → point, since the final selection is a
regular point, not a special 'symmetry point'.
2025-09-30 08:47:43 -05:00
George Peden 1ac117f1c8 Add MODE_HINT to dimension tool
- Add MODE_HINT constant to DrawSketchHandlerDimension class
- Shows 'switch mode' hint for M key in dimension tool
- Addresses reviewer feedback for missing M key hint
2025-09-30 08:47:43 -05:00
George Peden abf9762abb Fix ConstrainSymmetric two points + symmetry point workflow
- Fix hint text to say 'pick symmetry line or symmetry point' for two points + symmetry point workflow
- Add missing sequence {SelVertexOrRoot, SelVertexOrRoot, SelVertexOrRoot} to allowedSelSequences
- Add case 8 to handle two points + symmetry point constraint creation
- Fix duplicate constraint creation by adding return statement in case 8
- Add getSelection().clearSelection() for consistency

Fixes reviewer comment #2 from PR #22282
2025-09-30 08:47:43 -05:00
George Peden b82408c545 Fix Sketcher Dimension hints - add context-aware hints based on selection
- Add PICK_POINT_OR_EDGE constant to DrawSketchHandlerDimension class
- Implement nuanced hints for Dimension tool based on selected geometry:
  - Empty selection: 'pick point or edge'
  - Single point/line/circle: 'pick second point or edge'
  - Multiple selections: 'pick second point or edge'
- Remove stray character causing build error
- Addresses feedback on issue #22282 for comprehensive Sketcher hints coverage
2025-09-30 08:47:43 -05:00
George Peden dbd72f9c60 Improve context-aware hints for Sketcher constraints
- ConstrainDistanceX/Y: Fix hints to show 'pick second point' instead of 'pick second point or edge' when first selection is a point
- ConstrainPerpendicular: Add context-aware hints for edge+point+edge workflow
- ConstrainTangent: Add context-aware hints for edge+point+edge workflow
- ConstrainSymmetric: Fix hints to show 'pick edge or second point' instead of 'pick edge or first point' when first selection is a point
- ConstrainSymmetric: Fix hints to show 'pick symmetry line' instead of 'pick symmetry line or point' for point+point+edge workflow

All changes are hint improvements only - no functionality changes to existing workflows.
2025-09-30 08:47:43 -05:00
George Peden 584472f779 Refactor: Replace all literal hint strings with constants
- Added class-level static constexpr constants for all hint strings
- Replaced all QObject::tr("%1 pick...") with constants in both DrawSketchHandlerGenConstraint and DrawSketchHandlerDimension classes
- Eliminates string duplication and improves maintainability
- Addresses Copilot's PR feedback on string refactoring
2025-09-30 08:47:43 -05:00
George Peden 8b36da6782 Refactor hint strings to use constants
- Add class-level constants for all hint texts
- Replace all hardcoded strings in static table and context-aware hints
- Eliminate duplication and improve maintainability
- Addresses Copilot PR review feedback on code duplication

All hint strings are now defined once and reused consistently.
2025-09-30 08:47:43 -05:00
George Peden 17533deb50 Add context-aware hints for remaining constraint tools
- Add context-aware hints for ConstrainPerpendicular
- Add context-aware hints for ConstrainTangent
- Add context-aware hints for ConstrainSymmetric
- All hints now remember user selections to provide appropriate guidance
- Covers all workflows mentioned in issue #22282 feedback
- Completes comprehensive coverage of missing constraint hints
2025-09-30 08:47:43 -05:00
George Peden 871ee4ca32 Add context-aware hints for ConstrainAngle tool
- Add special case for Sketcher_ConstrainAngle in getToolHints()
- Hints now remember what user has selected to provide appropriate guidance
- Step 0: 'pick edge or first point' (covers all workflows)
- Step 1: Context-aware based on first selection:
  - If point first: 'pick first edge' (point+edge+edge workflow)
  - If line first: 'pick second line or point' (line+line or edge+point+edge)
- Step 2: Context-aware based on selection history:
  - Point+edge+edge: 'pick second edge'
  - Edge+point+edge: 'pick second edge'
- Fixes part of issue #22282 - missing angle constraint hints
2025-09-30 08:47:43 -05:00
George Peden 582eae5ba3 Add missing hints for ConstrainRadiam tool
- Add hints entry for Sketcher_ConstrainRadiam in hints array
- ConstrainRadiam now shows 'pick circle or arc' hint like other radius/diameter tools
- Fixes part of issue #22282 - missing radius constraint hints
2025-09-30 08:47:43 -05:00
PaddleStroke 6d238a93e1 PartDesign: TaskExtrudeParameters : offset should not be visible for throughall 2025-09-30 10:19:26 +02:00
PaddleStroke d52260b2f4 PartDesign: FeatureExtrude: Taper should not be read-only when throughall. 2025-09-30 10:17:36 +02:00
pre-commit-ci[bot] 65b7b5d4bd [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/psf/black: 8a737e727ac5ab2f1d4cf5876720ed276dc8dc4b → af0ba72a73598c76189d6dd1b21d8532255d5942](https://github.com/psf/black/compare/8a737e727ac5ab2f1d4cf5876720ed276dc8dc4b...af0ba72a73598c76189d6dd1b21d8532255d5942)
- [github.com/pre-commit/mirrors-clang-format: 86fdcc9bd34d6afbbd29358b97436c8ffe3aa3b2 → 719856d56a62953b8d2839fb9e851f25c3cfeef8](https://github.com/pre-commit/mirrors-clang-format/compare/86fdcc9bd34d6afbbd29358b97436c8ffe3aa3b2...719856d56a62953b8d2839fb9e851f25c3cfeef8)
2025-09-29 19:31:32 -05:00
Sami Liedes b3e8ed7814 Gui/Application, QuarterWidget: request OpenGL compatibility profile (#23768)
On Wayland with Qt, the default OpenGL context often ends up being
OpenGL ES. ES is a stricter API based on the "core" profile and lacks
many legacy functions (e.g. glEnd). FreeCAD relies on some of these
functions, which work under Mesa’s permissive stack but fail outright
with NVIDIA’s proprietary drivers, resulting in a blank 3D view.

Fix this by explicitly requesting a desktop OpenGL compatibility
profile both before QApplication creation and in QuarterWidget. This
ensures the presence of the legacy entry points required by Coin/SoQt.

(NB: both requests appear to be necessary; a single change was not
sufficient in testing.)
2025-09-29 19:22:29 -05:00
tetektoza f2af5b7e7f Sketcher: Remove isSet checks that were replaced by hasFinishedEditing 2025-09-29 20:41:53 +02:00
dependabot[bot] e38a8d8eeb Bump actions/dependency-review-action from 4.7.3 to 4.8.0
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 4.7.3 to 4.8.0.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/595b5aeba73380359d98a5e087f648dbb0edce1b...56339e523c0409420f6c2c9a2f4292bbb3c07dd3)

---
updated-dependencies:
- dependency-name: actions/dependency-review-action
  dependency-version: 4.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-29 12:57:10 -05:00
PaddleStroke f67b854aad Assembly: Fix errors on solve when limits 2025-09-29 12:46:19 -05:00
sliptonic f45408053c CAM: Fixes #11163
Changes default scale from 2.0 to 3.0  Adds a parameter. DefaultArrowScale
to control.
2025-09-29 11:37:06 -05:00
Chris Hennes 8b759af395 Part: Fix 'Copy' item text 2025-09-29 18:17:12 +02:00
Ryan Kembrey e26a47d96c TechDraw: Fix selections not clearing when subelements are also selected 2025-09-29 11:11:34 -05:00
tarman3 4d5ad23cce CAM: LeadInOut - Fix ZeroDivisionError for LineZ 2025-09-29 19:09:15 +03:00
sliptonic 5349b819b0 Merge pull request #24046 from Connor9220/FixCAMSanityReport
CAM: Fix CAM Sanity Report
2025-09-29 11:09:06 -05:00
Kacper Donat 9d61aeb04b Compiler warning cleanup (#22997)
* Part: Remove unused arguments from isLinearEdge

* Gui: For Qt 6.5 and later, use ParseOptions in xml

* Gui: Remove unused variable from fuzzyMatch()

* Sketcher: Remove unused parameter from *ReferenceSelection

* PD: Remove unused parameter from *ReferenceSelection

* Part: Rename layout to avoid conflict

* FEM: remove unused variable from handlePropertyChange

* CAM: Eliminate C++11 compiler warning by explicitly defaulting copy
2025-09-29 18:05:58 +02:00
sliptonic b18a3b3536 Merge pull request #24148 from Connor9220/ConvertTappingOpToExperimental
CAM: Convert tapping operation to experimental feature, Add tap pitch / spindle speed, Fix toolbit schema bugs, update legacy linuxcnc post
2025-09-29 11:03:13 -05:00
sliptonic 68bb3b2af7 Merge pull request #24234 from Connor9220/FixTooLibrarySpindleDirection
CAM: Fix SpindleDirection and Material not updating from toolbit files; reduce log noise
2025-09-29 11:02:58 -05:00
Chris Hennes f7e6b94aba Merge pull request #21713 from 3x380V/pd_fixes
PartDesign: Random fixes
2025-09-29 10:54:46 -05:00
Chris Hennes 0b14e8e24b Assembly: Fix translatable strings (#24243)
* Assembly: Fix translatable strings

* [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-09-29 17:48:01 +02:00
Krzysztof 861470c6ac FEM: Restore and harmonize FEM Task selection hints (#23678)
* FEM: Add hint about selectable geometry types in 'Geometry reference selector'

* FEM: Harmonize selection hint in FEM Task dialogs

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

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

FEM: Add translation support, correct selectable geometry

FEM: Harmonize selection hint in FEM Task dialogs

* [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-09-29 10:43:23 -05:00
Roy-043 e1a3b1cbe7 BIM: Arch_MergeWalls: issue message when walls are not the same
Fixes #21228.
2025-09-29 17:28:53 +02:00
Chris Hennes 274cd094d8 Merge pull request #23230 from tetektoza/fix/22070_fix_deleting_compound_not_deleting_children
Core: Allow users deleting objects under group recursively
2025-09-29 10:14:11 -05:00
luzpaz 42cf50cc57 FEM: fix source comment typos
Fix various source comment typos introduced recently.
2025-09-29 08:47:20 -05:00
PaddleStroke 94750baa6b PartDesign: FeatureExtrude: single prism for modes that can 2025-09-29 13:24:55 +02:00
PaddleStroke a01cab21cc PartDesign: FeatureExtrude: Make single prism if both modes are length and no taper 2025-09-29 09:33:53 +02:00
captain0xff d8d32c1b3a Gui: set focus to the corresponding property when a gizmo is released 2025-09-28 21:39:34 -05:00
Kacper Donat dc2aec50d4 Sketcher: Do not force visibility of planes on edit
This updates the logic that had special handling for planes for the
temporary visibility feature of sketcher which was mishandled after move
to core datums.
2025-09-28 18:59:37 -05:00
Bas Ruigrok df2df0905d Don't inform Coin to use EGL for Coin 4.0.6+
Coin figures it out automatically starting from 4.0.6. Only for Coin 4.0.4 and 4.0.5 it is needed to explicitly tell Coin to use EGL.
2025-09-28 18:57:18 -05:00
marioalexis 633817ceac Fem: Add tensor components to calculator variables 2025-09-28 18:55:48 -05:00
tetektoza 9be5c97fcf Sketcher: Unset labels that are invalid only after user finished editing
As the title says, currently if user tries to type "0", nothing gets
typed because the OVP automatically invalidates the "0" as an invalid
value in most of the cases.

The solution to that is to only validate it if user has finished editing
OVP, not earlier when they are only typing.
2025-09-28 19:50:16 +02:00
marcuspollio 4393f3bd72 Draft: update Group icons (#23771)
* Draft: update Group icons

* Draft: update Group icons after feedback
2025-09-28 15:10:00 +02:00
Chris Hennes 75c8749189 GUI: Fix some translatable text (#24289) 2025-09-28 10:47:16 +02:00
tetektoza 247e725ad3 Part: Allow deleting children recursively
Add feature to allow deletion of all children of compounds and booleans.
2025-09-27 19:10:42 -05:00
tetektoza 8e00addabf Core: Allow deleting objects in group recursively
Add a special marker that will signal to VPs that they should delete
their children recursively under the group.
2025-09-27 19:09:55 -05:00
Kacper Donat d712537638 PartDesign: Fix crash on editing feature outside of body 2025-09-27 15:21:59 -05:00
Ladislav Michl 7a266b1d78 PartDesign: Microoptimize updateSpacings()
This also fixes "comparison of integer expressions of different
signedness: ‘int’ and ‘size_t’" warning.

Fixes: 5d2037c820 ("PartDesign: Transform rework")
2025-09-27 11:40:07 -05:00
Syres916 e77f181393 [Part] Fix Part Boolean operations Refine incorrectly set for new users (#24256)
* [Part] Fix Part Boolean operations Refine incorrectly set for new users

* [Part] update tests to specify Refine to be...

...false where necessary
2025-09-27 00:33:57 -05:00
luzpaz cfb1810d92 Docs: update stylesheet doc (fixes #22717) (#23056)
* Docs: update stylesheet doc (fixes #22717)
Fixes #22717

* Refined instructions to be more OS agnostic

* Update src/Gui/Stylesheets/FreeCAD.qss

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
Co-authored-by: Beep6581 <Beep6581@noreply.users.github.com>
2025-09-27 02:52:13 +00:00
Tiago-Almeida007 0d48351c9e Gui: Organize tree view preferences (#21867)
* feat #18649: Organize tree options in one single preference page
-Removed tree view related code from all DlgSettingsAdvanced files
-Added Font size and Item Background Padding to DlgSettingsUI

Co-authored-by: Tiago Cardoso <tiagomiguelcardoso@tecnico.ulisboa.pt>

* fix #18649: Organize tree options in one single preference page
-Added new line at the end of file DlgSettingsAdvanced.cpp
-Added new line at the end of file DlgSettingsAdvanced.py
-Added new line at the end of file DlgSettingsUI.ui
-Delete trailing space on file DlgSettingsAdvanced.py
-Delete extra line on file DlgSettingsAdvanced.h

Co-authored-by: Tiago Almeida <tiago.c.almeida@tecnico.ulisboa.pt>

* Gui: Remove over-advanced UI prefs

---------

Co-authored-by: Tiago Cardoso <tiagomiguelcardoso@tecnico.ulisboa.pt>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-09-27 02:33:04 +00:00
wandererfan 919f5fd265 [TD]fix uncommanded leader position change 2025-09-26 21:24:49 -05:00
Chris Hennes 140de440cc Merge pull request #21541 from furgo16/bim-refactor-arch-iter-2
BIM: Arch module refactor, Arch.makeWindow documentation and tests - iteration 2
2025-09-26 19:58:49 -05:00
Roy-043 17f01bb88c BIM: fix linked document of BIM_Library task panel (#24169)
* BIM: fix linked document of BIM_Library task panel

Fixes #22437.

The task panel of the BIM_Library command would be linked to the active document, which would to be the temporary Viewer document if that option was checked. Closing that document in the `Insert` function would therefore also close the task panel resulting in errors for following code.

Additionally:
The code to close the temporary Viewer document was moved to the `Reject` function. Otherwise that document would stay open if the task panel was closed without inserting.
2025-09-27 00:54:31 +00:00
marioalexis 406c3ba42c PartDesign: Use AllowCompound user parameter along the workbench - fixes #23596 2025-09-26 19:50:21 -05:00
tetektoza 68b754effd Gui: Fix clarify selection menu HiDPI positioning issues
On HiDPI screens, the Clarify Selection context menu appears
far to the right of the intended position when triggered via
right-click, which was making it really problematic to select entities.

So the easiest solution is to apply `devicePixeLRatio` scaling when
converting the stored right-click postiion from device pixels to Qt
logical coordinates before calling `mapToGlobal()`.
2025-09-26 19:19:04 -05:00
Kacper Donat b3fd31b108 Gui: Render profile preview in proper coordinate space 2025-09-26 17:00:53 -05:00
wmayer 20a4dc3839 PD: Restore GUI commands for PartDesign datum objects
With PR 19114 the commands to create PD datum objects are replaced with
the counterparts of Part. However, PD datum objects are much more powerful
than the Part datum objects.
(see e.g. https://forum.freecad.org/viewtopic.php?p=806960)

So, this change brings these commands back to the task panel.
2025-09-26 23:46:27 +02:00
wmayer ab60695ef9 PD: Show commands in task panel when selecting (sub) shape binders
This fixes issue 19098
2025-09-26 23:46:27 +02:00
wmayer df5c75d6b0 PD: Improve groove feature
The only difference between groove and revolution is that for the former
the revolved face is removed from the base shape instead of added.

Thus, the code of the Revolution and Groove classes should be almost
identical. This allows it in a further step to refactor the code and
make a common base class.

This fixes issue 18842.
2025-09-26 23:46:25 +02:00
wmayer 4d80f3ec28 PD: Improve revolution feature
* Allow a minimum angle of 0.0 as this is needed in 'Two Angles' mode
* Set the default value of Angle2 to 0.0
* Check for valid input in 'Angle' and 'Two Angles' mode
* Replace the confusing enum labels 'Dimension' and 'TwoDimensions'
2025-09-26 23:45:53 +02:00
wmayer 5a3fafcc55 PD: Remove unneeded class member 'isApplying' from 'TaskHoleParameters' 2025-09-26 23:45:23 +02:00
wmayer cf0412b7e2 PD: Support of plane in linear pattern feature 2025-09-26 23:45:23 +02:00
wmayer a539e5e460 PD: Fix support of datum lines in draft 2025-09-26 23:45:23 +02:00
wmayer a2c5788a98 PD: SubtractivePipe Fails
Fixes issue 18003
2025-09-26 23:45:20 +02:00
wmayer 796f5b1cfd PD: Positive offset on a binder shouldn't turn holes into squares
Fixes issue 18776
2025-09-26 23:44:28 +02:00
Frank David Martínez M 05707c61fb Fix Refine in Cut Compound test 2025-09-26 16:12:56 -05:00
theo-vt a41159a043 Sketcher.Scale: Add case for distance of a single curve 2025-09-26 15:45:22 -05:00
Frank Martinez c3348bc823 Fix #24257: findSubShapesWithSharedVertex signature parsing 2025-09-26 15:38:19 -05:00
Chris Hennes 9f25cb9d40 Merge pull request #24201 from marioalexis84/fem-fix_plane_function
Fem:Fix plane manipulator - fixes #14523
2025-09-26 15:13:24 -05:00
Roy-043 5d26e2f0f6 BIM: prevent dialogs being opened twice
Fixes #20403
Partly fixes issue #17983

I have basically copied Yorik's solution (#22446), but have added a call to `raise_()`.
2025-09-26 15:09:38 -05:00
PaddleStroke 91017606aa Sketcher: Fix crash on Sketcher.Constraint (#24269)
* Sketcher: Fix crash on Sketcher.Constraint

* [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-09-26 20:08:08 +00:00
PaddleStroke af4ed78c01 Sketcher: Slot tool: fix redundant horizontal (#24248)
* Sketcher: Slot tool: clean vertical/horizontal mess.

* Update DrawSketchHandlerSlot.h

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

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

* Update DrawSketchHandlerSlot.h

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

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

* Clean removeRedundantHorizontalVertical

* [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-09-26 15:05:55 -05:00
marioalexis b9ab71e606 Fem: Fix memory leaks and error handling 2025-09-26 14:41:43 -05:00
Chris Hennes 16906e93db Merge pull request #24240 from mrpilot2/cmake_pch_mods_part_2
Mods: use CMake to generate precompiled headers on all platforms
2025-09-26 09:46:26 -05:00
Furgo b3147b6b11 BIM: DEBUG, disable part of the Gui tests 2025-09-26 12:07:23 +02:00
Furgo 09944fde79 BIM: set up TestArchGui, clean up CLI/GUI tests
- Also update TechDraw templates path after reorganization from https://github.com/FreeCAD/FreeCAD/pull/23719
2025-09-26 00:46:16 +02:00
Furgo 7994e411b7 BIM: ArchWindow, add unit tests
TODO: check comments on test_create_with_width_height_no_baseobj_initially
2025-09-26 00:46:01 +02:00
marioalexis84 3db74dee60 Fem: Remove pipeline from analysis highlighter - fixes #23466 (#23984)
* Fem: Remove pipeline from analysis highlighter - fixes #23466

* FEM: Clean up lint

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-09-25 22:06:51 +00:00
dependabot[bot] 370c9bc1c7 Bump actions/cache from 4.2.4 to 4.3.0
Bumps [actions/cache](https://github.com/actions/cache) from 4.2.4 to 4.3.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/0400d5f644dc74513175e3cd8d07132dd4860809...0057852bfaa89a56745cba8c7296529d2fc39830)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-25 16:14:51 -05:00
captain0xff a678d8ec7f Gui: hide the gizmos in case of any errors 2025-09-25 16:14:09 -05:00
marioalexis 014edacf1b App: Fix GroupExtension finding wrong group for objects 2025-09-25 15:52:43 -05:00
Billy Huddleston cbeb67b509 CAM: Convert tapping operation to experimental feature, Add tap pitch support, improve tapping logic, and update toolbit schema and legacy linuxcnc post
CAM/App/PathSegmentWalker.cpp
- Add G74 to drill/tap/bore G-code recognition for tapping cycles

CAM/InitGui.py
- Move CAM_Tapping command behind experimental feature flag
- Only group drilling/tapping commands if both are enabled

CAM/Path/Base/Generator/tapping.py
- Add pitch and spindle_speed parameters to tapping.generate
- Output S (spindle speed) and F (pitch) in generated G-code

CAM/Path/Op/Tapping.py
- Require Pitch property for tap tools and SpindleSpeed for tool controllers
- Pass pitch and spindle speed to tapping.generate
- Use SpindleDirection to determine right/left hand tap

CAM/Path/Post/scripts/linuxcnc_post.py
- Handle G84/G74 tapping cycles: convert pitch and spindle speed to feed rate
- Remove F and S from output and recalculate F as needed

CAM/Path/Tool/shape/models/tap.py
- Add Pitch property to ToolBitShapeTap schema
- CAM/Path/Tool/toolbit/models/tap.py
- Show pitch and rotation in tap tool summary
- Use is_imperial_pitch to format pitch as TPI or mm

CAM/Path/Tool/toolbit/util.py
- Add is_imperial_pitch utility to classify pitch as imperial or metric

CAM/Tools/Bit/375-16_Tap.fctb
- Remove unused parameters (Coating, Rotation, TPI, Type)
- Keep only relevant tap parameters for new schema
2025-09-25 16:26:03 -04:00
Kacper Donat 5bf0e30676 Gui: Check for every VP expiration in TaskAttacher 2025-09-25 14:09:07 -05:00
Billy Huddleston 695cb49345 CAM: Fix SpindleDirection and Material not updating from toolbit files; reduce log noise
- Change missing property log in shape/doc.py from warning to debug
- Ensure SpindleDirection property exists and is set, defaulting to "Forward"
- Ensure Material property exists and is set, defaulting to "HSS"
- Update SpindleDirection and Material from toolbit file parameters if provided
2025-09-25 13:21:57 -04:00
Furgo a9f8993237 BIM: Arch.makeWindow, expand docstring, add examples 2025-09-25 18:51:33 +02:00
Furgo 3e37cbcfc0 BIM: Arch.makeWindow, add type hinting 2025-09-25 18:51:33 +02:00
Chris Hennes 39d39f34c3 Update translations 2025-09-25 2025-09-25 17:25:13 +02:00
FEA-eng 702eb9f5af FEM: Update commands.py 2025-09-25 08:46:41 -05:00
Chris Hennes 864cde5aed Gui: Improve file corruption checks 2025-09-25 14:37:38 +02:00
Gaël Écorchard c32628c61c BIM: fix regression in DAE import, support for polylists (#24031)
* BIM: fix regression in DAE import, support for polylists

The support for non-triangular faces was remove in
commit 346c7581d4.
Now, the support for them is restored, by triangulating them
during the import (with a warning and changing the object name).

Signed-off-by: Gaël Écorchard <gael@km-robotics.cz>

* BIM: Remove translation calls console

Use raw strings for console messages, as they are usually not
translated.

---------

Signed-off-by: Gaël Écorchard <gael@km-robotics.cz>
Co-authored-by: Gaël Écorchard <gael@km-robotics.cz>
2025-09-25 14:28:05 +02:00
Furgo e4881dd92f Apply wording suggestions from code review
Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2025-09-25 14:26:54 +02:00
Furgo 948916b888 BIM: enable live updates of the cut when changing placement 2025-09-25 14:26:54 +02:00
Furgo edf1c82b9f BIM: redesign rotation, center and resize controls 2025-09-25 14:26:54 +02:00
Furgo c60dadf147 BIM: separate scope and placement & visuals in Task panel 2025-09-25 14:26:54 +02:00
Furgo 1a2cd1befc BIM: Fix inverted cut direction for rotated SectionPlane
Rotating an ArchSectionPlane object caused its cutting effect to flip,
affecting both the live `CutView` and 2D projections. The
`_SectionPlane.execute()` method incorrectly tried to auto-correct the
orientation of a temporary plane before applying the object's final
placement. The fix refactors this to a "transform-then-verify" pattern:
the object's full `Placement` is now applied to the temporary plane
first, and only then is the resulting face's actual normal validated
against the intended normal from the `Placement`. This ensures the
`Shape` is always geometrically consistent with the `Placement`, making
the cut direction predictable at all angles.
2025-09-25 14:26:54 +02:00
Furgo 0c71c05c06 BIM: make cut view a toggle button 2025-09-25 14:26:54 +02:00
Furgo c64ed630cd BIM: Use correct icon for SectionPlane 2025-09-25 14:26:54 +02:00
Furgo 673f6664bd BIM: Change SectionPlane task panel button from OK to Close 2025-09-25 14:26:54 +02:00
Furgo 94d893bbe6 BIM: Fix SectionPlane's label being editable on double-click 2025-09-25 14:26:54 +02:00
Furgo 9b4f336eba BIM: add Cut View toggle on SectionPlane task panel 2025-09-25 14:26:54 +02:00
Roy-043 1d38352607 Draft: Update Draft example file (#23284)
* Draft: Update Draft example file

Fixes #23198

I have added osifont-lgpl3fe.ttf to the example folder. The ShapeString in draft_test_objects.FCStd references it using a
relative path. I am not sure if including the font here is allowed though.

Additionally: The example file showed up an error in view_wire.py. It is also used for fillets (which do not have a Points property).

* Updated

* Also use a relative path for the PAT file.
* Subfolder for the PAT and TTF files.

* Update CMakeLists.txt

* Update CMakeLists.txt

* Update CMakeLists.txt

* Update CMakeLists.txt

* Update CMakeLists.txt

* Update CMakeLists.txt
2025-09-25 14:21:12 +02:00
tarman3 aa7b8f977c CAM: LeadInOut - Fix RetractThreshold in Task panel 2025-09-25 11:37:39 +03:00
Furgo 26995b7f67 Theme: bring back visual feedback on toolbar button press
And also on toolbar button hover.
Fixes: https://github.com/FreeCAD/FreeCAD/issues/22747
2025-09-24 22:48:34 -05:00
PaddleStroke 001bab4439 Core: Add signalAboutToOpenTransaction (#24049)
* Core: Add signalAboutToOpenTransaction

* change name to squash

* Update AutoTransaction.cpp

* Update Application.h

* reorder

* Update AutoTransaction.cpp

* Update Application.h
2025-09-24 22:45:57 -05:00
Chris Hennes 80449715c6 Merge pull request #23729 from marioalexis84/fem-loggin_error
Fem: Better error handling in task panels with logging
2025-09-24 22:44:44 -05:00
Furgo 5a6af2e41f Assembly: fix delete shortcut parameter mismatch
Fixes: https://github.com/FreeCAD/FreeCAD/issues/23792
2025-09-24 22:19:00 -05:00
Chris Hennes 02bbc77f3c Merge pull request #23823 from marioalexis84/fem-remove_elmer_filter_parameter
Fem: Remove dependency of the ViewProviderFemPostObject class on user parameters
2025-09-24 22:18:19 -05:00
Chris Hennes 9fdbbe44ee Merge pull request #23803 from 3x380V/py
Py3.13: fix warnings
2025-09-24 22:16:30 -05:00
chris 0f6d00d2a5 fix issue #23829 build with boost v1.89 and greater 2025-09-24 22:12:47 -05:00
matt-git 06ad520851 Fix shortcuts for grouped Python commands
- Add shortcut setting for individual actions in PythonGroupCommand::createAction()
- Update PythonGroupCommand::languageChange() to include default command shortcut in group tooltip
- Fix variable redefinition error in languageChange() function
- Ensure shortcuts work and display in tooltips for grouped commands like Arch_Nest
2025-09-24 22:12:04 -05:00
marioalexis 8547e798fb CMake: Fix Eigen3 version search 2025-09-24 21:56:56 -05:00
Markus Reitböck 2ce0323b8f cleanup remaining implementations of precompiled headers 2025-09-24 20:08:57 +02:00
Markus Reitböck abc6b9e7d0 Test: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-24 20:08:57 +02:00
Markus Reitböck 2150afc470 Sandbox: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-24 20:08:57 +02:00
Markus Reitböck b864ccda60 CAM: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-24 20:08:56 +02:00
Markus Reitböck b15f3c1155 Robot: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-24 20:08:56 +02:00
Markus Reitböck 8fa48b25b4 Part: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-24 20:08:56 +02:00
Markus Reitböck ba03cf1ed6 JtReader: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-24 20:08:55 +02:00
Markus Reitböck 499742eea2 Draft: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-24 20:08:54 +02:00
Markus Reitböck 550786e6b0 Cloud: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-24 20:08:54 +02:00
PaddleStroke 5194dfc18a Assembly: fix onChanged crash 2025-09-24 10:59:41 -05:00
sliptonic 902079af20 Merge pull request #24167 from pmjdebruijn/cam-clearingpattern
CAM: fix PocketShape OffsetPattern broken by #23649
2025-09-24 10:48:30 -05:00
marioalexis ca286fb5be Fem: Set autoscale to false in Plane function and remove unnecessary code 2025-09-24 12:26:10 -03:00
marioalexis b23491901f Fem: Align plane translator to Z-axis 2025-09-24 12:26:10 -03:00
PaddleStroke 2aa8f133f3 Sketcher: Fix crash on constraint selection 2025-09-24 10:21:22 -05:00
PaddleStroke c384a52fa5 Feature Extrude: Make Length mode act as it did before. 2025-09-24 09:22:05 +02:00
PaddleStroke 155edc0f53 Sketcher: Fix is active. (#24124)
* Sketcher: Fix is active.

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

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

* Sketcher: Delint and compiler warning cleanup

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@gmail.com>
2025-09-23 19:10:44 -05:00
PaddleStroke 27806651b4 Assembly: Fix subassembly linkgroups not moving with dragger 2025-09-23 19:07:25 -05:00
Chris Hennes b06bafe3cd libE57Format: Check for IPO before enabling 2025-09-23 17:46:18 -05:00
tarman3 7205191f81 CAM: Old simulator - Fix z for G2,G3 2025-09-24 00:34:52 +03:00
Chris Hennes 4b98ebe4f2 libE57Format: Remove gtest submodule 2025-09-23 16:20:44 -05:00
Florian Foinant-Willig 09ab65ce1a Core: freeze is no more recursive on children 2025-09-23 22:42:56 +02:00
Florian Foinant-Willig d15d9948bc Core: set properties of frozen object read-only 2025-09-23 22:42:14 +02:00
Markus Reitböck 015896f4e4 MeshPart: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-23 22:39:36 +02:00
Markus Reitböck 5b6a0b1852 PartDesign: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-23 22:39:36 +02:00
Markus Reitböck cfe0d9ffac Surface: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-23 22:39:36 +02:00
Markus Reitböck 914f6bec44 ReverseEngineering: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-23 22:39:35 +02:00
Markus Reitböck 93830929ae Measure: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-23 22:39:35 +02:00
Markus Reitböck 4bc92384b7 Inspection: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-23 22:39:35 +02:00
Markus Reitböck 7051848d10 Import: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-23 22:39:35 +02:00
Markus Reitböck 59724846e3 Assembly: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-23 22:39:34 +02:00
Chris Hennes 86048e7482 libE57Format: Accumulated FreeCAD changes before subtree 2025-09-23 14:50:19 -05:00
Chris Hennes 82927817b8 Squashed 'src/3rdParty/libE57Format/' content from commit d51a32d6ab7
git-subtree-dir: src/3rdParty/libE57Format
git-subtree-split: d51a32d6ab7c5dde5e1c68d0ec8ec61d980f06a3
2025-09-23 14:20:50 -05:00
Chris Hennes 0da017a6f9 Merge commit '82927817b878295060edd8fc57b3e384404dc277' as 'src/3rdParty/libE57Format' 2025-09-23 14:20:50 -05:00
Chris Hennes 11f6f498ab 3rdParty: Remove original libE57Format 2025-09-23 14:17:47 -05:00
Ryan Kembrey e9ce06155d TechDraw: Fix double drag in projection groups 2025-09-23 13:47:15 -05:00
luzpaz d092a94902 Techdraw: fix dialog text in Gui/Command.cpp (#24165) 2025-09-23 18:47:02 +00:00
dependabot[bot] 520dafa03c Bump prefix-dev/setup-pixi from 0.9.0 to 0.9.1
Bumps [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi) from 0.9.0 to 0.9.1.
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](https://github.com/prefix-dev/setup-pixi/compare/fef5c9568ca6c4ff7707bf840ab0692ba3f08293...194d461b21b6c5717c722ffc597fa91ed2ff29fa)

---
updated-dependencies:
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.9.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-23 13:43:39 -05:00
Pascal de Bruijn 3e6eacbf76 TechDraw: reorganize Templates (#23719) 2025-09-23 13:40:13 -05:00
wandererfan 22af5df757 [TD]fix FileChooser mode in preferences 2025-09-23 13:00:44 -05:00
theo-vt c6c084f22c Sketcher: fix split breaking sketch (#23711)
* Sketcher: Scale: Reorder operations and delete original modified constraints to ensure validity

* Sketcher: replace boolean parameters for deletion with enum and expose solver override on some deletion functions in the python API

* Use correct flag in ::delGeometry

* Set default value of false to noSolve

* Sketcher: autoscale: use deleteAllGeometry

* Sketcher: Scale: revert to checking constraints for geoId validity and handle horizontal&vertical

* Sketcher.Split: Avoid early solve that can break sketch

* Avoid reintroducing a typo

* [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-09-23 12:00:36 -05:00
matthiasdanner 5961651547 Sketcher: Display non-empty Sketch when having external geometry (#23660) 2025-09-23 11:58:26 -05:00
Roy-043 ae29b67041 Part: fix copy_visual_attributes in BOPFeatures.py
Fixes #23900.

The ShapeAppearance related code should be removed. It is atypical that the result of a boolean operation has the same number of faces as one of its source objects, therefore simply applying its ShapeAppearance to the new object does not make sense in most cases.

The ShapeAppearance of Fusion objects gets overwritten by other code. For Cut objects this does not happen anymore (Used to happen in V0.21).
2025-09-23 11:30:08 -05:00
PaddleStroke ff1bde69fc Assembly: Prevent crash when link to linkgroup in subassembly (#24125)
* Assembly: Prevent crash when link to linkgroup in subassembly

* ViewProviderAssembly: Additional crash failsafe.
2025-09-23 11:06:01 -05:00
PaddleStroke e72834b94c Assembly: Fix LinkElement dragger 2025-09-23 10:39:28 -05:00
Pascal de Bruijn a3ebead67f CAM: fix PocketShape OffsetPattern broken by #23649 2025-09-23 17:25:44 +02:00
sliptonic 66c7f82f4a Merge pull request #22336 from dbtayl/fix_22177
[CAM] Correctly process Adaptive extensions
2025-09-23 09:24:01 -05:00
sliptonic a7abaaef23 Merge pull request #23575 from tarman3/stock1mm
CAM: Fix stock create for flat objects
2025-09-23 09:22:30 -05:00
sliptonic 4c04586d1e Merge pull request #21756 from papaathome/CAM-fix-for-3Dsurface,-rotational-path,-#21556
CAM: Update PathUtils.py
2025-09-23 09:21:41 -05:00
sliptonic fc71a76f50 Merge pull request #24070 from tarman3/leadinout_fix3
CAM: LeadInOut - Remove useless var
2025-09-23 09:20:59 -05:00
sliptonic 91489bcf18 Merge pull request #24138 from pmjdebruijn/cam-stepover
CAM: Pocket sensible default StepOver
2025-09-23 09:20:17 -05:00
sliptonic 73bbaac919 Merge pull request #24141 from Connor9220/FixPropertyBagEnum
CAM: Fix group dropdown showing individual letters by ensuring groups is a list
2025-09-23 09:19:30 -05:00
Chris Hennes d1ca523ca7 Merge pull request #24107 from mrpilot2/cmake_pch_mods
Mods (Part 1): use CMake to generate precompiled headers on all platforms
2025-09-23 08:35:43 -05:00
PaddleStroke c3707cc4a5 PartDesign: Enable child reorder
Enable dragging a sketch within a body.
2025-09-23 00:03:49 -05:00
marioalexis def22ad234 Fem: Better VTK version check 2025-09-22 22:46:20 -05:00
wandererfan c75bb47bff [TD]fix balloon auto-placement 2025-09-22 22:10:55 -05:00
PaddleStroke d5db01d3d4 Assembly: Simulation: Fix motion double click (#23778)
* Assembly: Simulation: Fix motion double click

* [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-09-22 21:22:29 -05:00
Markus Reitböck c3805ecf4a fix duplicate include guards in precompiled headers 2025-09-23 00:51:00 +02:00
Markus Reitböck c1be416c7f Fem: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-23 00:51:00 +02:00
Markus Reitböck ef670e7880 Sketcher: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-23 00:51:00 +02:00
Markus Reitböck 0019739095 TechDraw: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-23 00:50:59 +02:00
Markus Reitböck 62b915ee7b Spreadsheet: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-23 00:50:59 +02:00
PaddleStroke b905c0dd95 Link: make OverrideMaterial use the per-face override. (#23544)
* Link: make OverrideMaterial use the per-face override.

* Fix small issue on per face transparency

* update names

* Update ViewProviderExt.cpp
2025-09-22 22:47:12 +00:00
marioalexis 0c5746fe7a Fem: Remove dependency of the ViewProviderFemPostObject class on user parameters 2025-09-22 18:27:18 -03:00
marioalexis b9129f4453 Fem: Add upstream vtkCleanUnstructuredGrid class source files 2025-09-22 18:27:18 -03:00
marioalexis 3e1741dfea Fem: Move FemFrameSourceAlgorithm class to its own source files 2025-09-22 18:27:18 -03:00
Markus Reitböck f323323e8b Web: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
should be considered an optimization, not a requirement. In particular, do not explicitly include a
precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
generated precompile header on the compiler command line instead. This is more portable across
the major compilers and is likely to be easier to maintain. It will also avoid warnings being
generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-22 23:17:40 +02:00
Markus Reitböck 13c8b52a6a Mesh: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
should be considered an optimization, not a requirement. In particular, do not explicitly include a
precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
generated precompile header on the compiler command line instead. This is more portable across
the major compilers and is likely to be easier to maintain. It will also avoid warnings being
generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-22 23:17:40 +02:00
Markus Reitböck a6f7cb950a Points: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
should be considered an optimization, not a requirement. In particular, do not explicitly include a
precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
generated precompile header on the compiler command line instead. This is more portable across
the major compilers and is likely to be easier to maintain. It will also avoid warnings being
generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-22 23:17:40 +02:00
Markus Reitböck 412b72d8d6 Start: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
should be considered an optimization, not a requirement. In particular, do not explicitly include a
precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
generated precompile header on the compiler command line instead. This is more portable across
the major compilers and is likely to be easier to maintain. It will also avoid warnings being
generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-22 23:17:39 +02:00
Markus Reitböck 05a706697b Material: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
should be considered an optimization, not a requirement. In particular, do not explicitly include a
precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
generated precompile header on the compiler command line instead. This is more portable across
the major compilers and is likely to be easier to maintain. It will also avoid warnings being
generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-22 23:17:39 +02:00
Billy Huddleston c2d8077d96 CAM: Fix CAM Sanity Report
Fix base template substitution and improve tool/op formatting in sanity report, also update HTML/CSS and image handling.

- Major HTML/CSS refactor for CAM Sanity Report template:
  - Rewrote HTMLTemplate.py with modern, responsive CSS, semantic HTML, and accessibility improvements.
  - Added CSS reset, responsive image handling, and improved table/list styling.
  - Introduced .heading-container and .top-link for right-aligned "Top" navigation links on all major sections and tool headers (hidden in print).
  - Updated all section and tool headers to use new navigation and layout.
  - Cleaned up legacy markup, removed inline styles, and standardized variable substitution using string.Template syntax (${key}, ${val}).
  - Updated base_template in HTMLTemplate.py to use string.Template syntax (${key}, ${val}) instead of %{key}, %{val} for correct variable substitution.

- Enhanced image generation and embedding:
  - Updated ImageBuilder to support high-DPI (800x800) images and direct byte output for embedding.
  - All report images (base, stock, datum, tool) now use in-memory bytes for embedding when possible.
  - Tool images support a toggle for using toolbit thumbnails or fallback head-on renders.
  - ReportGenerator now embeds images as base64 when requested, with correct HTML tags.

- Improved squawk, tool, and operation data formatting:
  - Squawk dates now use localized string formatting.
  - Tool diameter and feedrate now use .UserString for better display.
  - Spindle speed now formatted as integer with "rpm" suffix.
  - Operation feed and speed values also use .UserString and "rpm" formatting.
  - Fixed _format_bases in ReportGenerator.py to iterate over base_data.items() and pass {"key": key, "val": val} to the template, ensuring all bases are listed correctly.
  - General code cleanup and improved maintainability throughout the CAM Sanity reporting stack.
2025-09-22 13:44:53 -04:00
Billy Huddleston 69ba0d2241 CAM: Fix group dropdown showing individual letters by ensuring groups is a list
- Add type check in PropertyCreate to wrap CustomPropertyGroups as a list if not already
- Prevents dropdown from displaying each character of a string as a separate group option
2025-09-22 12:59:26 -04:00
tarman3 544605bde7 CAM: LeadInOut - Remove useless var 2025-09-22 19:50:11 +03:00
sliptonic 3ffb861d11 Merge pull request #23892 from alihantadal/feature_23649_update_confusing_nomenclature_offset_pattern
CAM: Improve confusing nomenclature: Offset Pattern (#23649)
2025-09-22 11:42:31 -05:00
sliptonic 873210d190 Merge pull request #23957 from tarman3/leadinout_fix
CAM: LeadInOut - Fix for rapid move in end
2025-09-22 11:33:12 -05:00
PaddleStroke 2e5b02e52c Link: Fix Selectable (#23567)
* Link: Fix Selectable

* to squash

* squash

* squash
2025-09-22 18:25:16 +02:00
xtemp09 aeddcaec27 Remove unused file 2025-09-22 11:20:26 -05:00
Chris Hennes a23bd23159 Gui: Remove references to the Addon Manager if no Std_AddonMgr (#23167)
* Gui: Remove references to the Addon Manager if no Std_AddonMgr

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

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

* Gui: Switch to disabling controls rather than hiding

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-22 18:20:07 +02:00
Kacper Donat 707ee60d64 Gui: Fix transform of link sub-elements 2025-09-22 11:17:04 -05:00
Chris Hennes 29c18019ae Merge pull request #23710 from kadet1090/fix-transform-basefeature-outside-body
Gui: Add handling for BaseFeatures outside of Body edge case
2025-09-22 11:15:53 -05:00
André Althaus 1b799ad355 PartDesign: Fix mirror Add/remove buttons 2025-09-22 11:12:31 -05:00
MisterMakerNL 26863fe895 Remove default close icon from OverlayToolButton styles
Eliminates the default and hover close icon image assignments for Gui--OverlayToolButton in all theme and overlay QSS files. This change likely delegates icon handling to a different mechanism or improves theme consistency.
2025-09-22 11:11:40 -05:00
Alfredo Monclus 0dc6cbd16f PD: hole prefer finding closest diameter if pitch is 0 2025-09-22 11:10:54 -05:00
Alfredo Monclus 7faf899b8d PD: fix hole thread depth being reset when changing to through all
the property is correctly updated by the updateThreadDepthParam below
2025-09-22 11:09:27 -05:00
Chris Hennes f6128e5fab Merge pull request #24113 from sliptonic/versions
[CAM]: Asset versions and Various Fixes
2025-09-22 11:04:09 -05:00
matthiasdanner 46ec53f4da Fix "Show only Visible Constraints" option (#23187)
Co-authored-by: Matthias Danner <28687794+matthiasdanner@users.noreply.github.com>
2025-09-22 10:54:24 -05:00
Pieter Hijma 9d11551972 Merge pull request #23648 from pieterhijma/fix-enabled-ok-expr-editor
Gui: Fix issues with Expr dialog with VarSets
2025-09-22 10:51:35 -05:00
theo-vt 7a672a3207 PartDesign: Hole: Print error when no axis was found (#23659)
* PartDesign: Hole: Print error when no axis was found

* Remove unrelated string update
2025-09-22 10:47:20 -05:00
Pascal de Bruijn 2ce559834b CAM: Pocket sensible default StepOver 2025-09-22 17:46:16 +02:00
Chris Hennes 90e9533df3 Merge pull request #23709 from marioalexis84/fem-solver_file_chooser
Fem: Fix use of file chooser Qt signals in solvers preferences.
2025-09-22 10:41:42 -05:00
Chris Hennes da380d8b64 Merge pull request #24017 from sliptonic/betterunitschema
[CAM] change dialog to allow directly switching unit schema
2025-09-22 10:40:24 -05:00
marioalexis df82e7b71c Fem: Do not allow selection of external objects for analysis objects - fixes #23834 2025-09-22 10:38:01 -05:00
David Kaufman a85f53d0bb [CAM] reorder job tabs to put Setup first 2025-09-22 10:37:27 -05:00
drwho495 9f2d212b12 Toponaming: Don't add empty tags past the threshold 2025-09-22 10:35:13 -05:00
Roy-043 99812e3ed8 Draft: fix snapper lagging (#24081)
* Draft: fix snapper lagging

The `WorkingPlane.get_working_plane()` function is too slow to be called repeatedly by `_get_wp`. That function has been reverted to what it was before #19728.

* Draft: fix snapper lagging

Using WorkingPlane.get_working_plane(update=False) instead of reverting.
2025-09-22 17:31:24 +02:00
Paul Lee 3569e77172 [ArchCurtainWall] Regression Curve Support
Fix https://github.com/FreeCAD/FreeCAD/issues/23945

"Arch_CurtainWall results in an error when trying to create it based on a sketch consisting of spline or arc."

This fixes the regression introduced in -
https://github.com/FreeCAD/FreeCAD/commit/147e97d40740230e59f17397652cc8811ed98344#diff-b4849bbc0941a0f60f25d13c40d4bfeca94171f55bd78a6196362343c3fdcf6fR287
2025-09-22 17:30:35 +02:00
Roy-043 d666e8db11 BIM: fix material handling of equipment 2025-09-22 17:26:58 +02:00
Chris Hennes 4ff209197f Merge pull request #23535 from pieterhijma/prop-view-expansion
Gui: Property View Expand/Collapse
2025-09-22 09:20:49 -05:00
PaddleStroke 3872d0682d Sketcher: Improve circle constraint position (#23569)
* Make prevCursorPosition protected so tools can use it

* DrawSketchHandlerCircle : Position constraint on prevCursorPosition

* [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-09-22 09:01:29 -05:00
pre-commit-ci[bot] af592924b6 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-09-22 13:51:05 +00:00
sliptonic 21fa5facbf codeQl and suggestions from discussion. 2025-09-22 08:47:48 -05:00
sliptonic 9c81c71728 fix default library name on import 2025-09-21 13:32:31 -05:00
Chris Hennes 465bd7ef5c Base: Refine directory permissions test 2025-09-21 13:16:35 -05:00
sliptonic 260aa3abf1 refactor migration 2025-09-21 13:14:13 -05:00
sliptonic fbd81cf4f8 Versioning directories 2025-09-21 12:01:27 -05:00
sliptonic f65a826b08 library and bit import improvements 2025-09-21 12:01:27 -05:00
sliptonic 2dee048f0e template directory to camassets 2025-09-21 12:01:27 -05:00
Ryan Kembrey eb58e2e343 TechDraw: Fix vertices hiding on cosmetic object removal 2025-09-22 01:01:33 +10:00
Furgo 7640a03cc8 Sketcher: improve Make Internals property tooltip (#23636)
* Sketcher: improve Make Internals property tooltip

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

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

* Sketcher: reword final MakeInternals tooltip

* Sketcher: apply final code review suggestion

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2025-09-21 08:24:30 +00:00
sliptonic f51893fbc6 Merge pull request #24087 from chennes/fixIsVersionedPathPythonWrapper
App: Fix the Python wrapper for isVersionedPath
2025-09-20 14:17:29 -05:00
Chris Hennes 6a8cfed1d6 App: Fix the Python wrapper for isVersionedPath 2025-09-20 11:46:11 -05:00
sliptonic 636bd90d4d Merge pull request #23585 from chennes/extractVersionMigrator
Gui: Improve version migration UX
2025-09-20 10:01:40 -05:00
captain0xff 5be668b696 Gui: fix a lifetime issue with the draggers 2025-09-20 14:03:33 +02:00
tarman3 4f955a8b2a CAM: LeadInOut - Fix SafeHeight 2025-09-19 23:06:01 +03:00
tarman3 37eefde380 CAM: LeadInOut - Fix for path without rapid move in the end 2025-09-19 22:59:10 +03:00
sliptonic 4911c23d1f Merge pull request #23718 from pmjdebruijn/cam-pocketshape-offset
CAM: PocketShape defaults to Offset and 50% StepOver
2025-09-19 14:27:02 -05:00
pre-commit-ci[bot] dfb3ae2ef4 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-09-19 19:17:09 +00:00
sliptonic b7153e12e0 [CAM] Robustly test schemas to find the ones that work.
Robustly test current schema.

Fixes #22549
2025-09-19 14:14:08 -05:00
sliptonic 5f909452d2 [CAM] change dialog to allow directly switching unit schema 2025-09-19 14:12:50 -05:00
sliptonic 31d609eec8 Merge pull request #23720 from davidgilkaufman/leadinout_migration
[CAM] add missing migration from intermediate version for lead in/out dressup
2025-09-19 11:29:38 -05:00
sliptonic 8df2a54ccd Merge pull request #21578 from lagnat/main
CAM: Dragknife dressup adds unnecessary maneuvers
2025-09-19 11:24:43 -05:00
matt-taylor-git 38785ddd96 Fix: Update tooltip for grouped commands (#24043)
When a command is part of a toolbar group, the tooltip for the group's button was not correctly updated with the shortcut of the selected command. This was happening because the tooltip generation was using the shortcut of the group itself, not the selected child command.

This commit fixes the issue by ensuring that the tooltip of the group action is updated with the full tooltip of the child action, which already contains the correct shortcut information. This is done in both 'ActionGroup::onActivated' (for when a new tool is selected) and 'ActionGroup::setCheckedAction' (for the initial default tool).
2025-09-19 15:20:39 +00:00
Roy-043 6ce59d2475 Draft: fix working plane tooltip (#24040)
* Draft: fix working plane tooltip

Related to #24033.

* Update WorkingPlane.py: remove trailing blank line
2025-09-19 09:17:45 -05:00
paddle 9ba65136d1 Core: Add beforeDelete python interface. 2025-09-19 09:13:20 -05:00
PaddleStroke 750c2a0c4d Sketcher: Offset: fix bad arcs (#24053) 2025-09-19 09:09:22 -05:00
PaddleStroke 6e4d2a94d5 Core: GeoFeature::getPlacementFromProp prevent potential crash 2025-09-19 08:40:06 -05:00
luzpaz ea08cb6776 BIM: Pin upstream pyshp shapefile.py URL to version 2.4.1
This is the safest solution for now until someone can vet the upstream breaking changes (https://github.com/GeospatialPython/pyshp/blob/master/README.md#breaking-changes)
2025-09-19 09:58:43 +02:00
luzpaz d9124497d3 BIM: Update shapefile import URL to latest version
Fixes #23911
2025-09-19 09:58:43 +02:00
Chris Hennes 929bd5090b App: Sanitize all paths for null characters (#23821)
* App: Sanitize all paths for null characters

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

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

* Apply suggestions from code review

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-09-18 17:37:33 +00:00
Chris Hennes a63cbd7057 Gui: Fix ignored font preference 2025-09-18 11:45:45 -05:00
dependabot[bot] dd08f6c845 Bump github/issue-metrics from 3.23.2 to 3.23.3
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.23.2 to 3.23.3.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/e8f19041d9996b64cd5eebd653f065adb6d0e195...c2ad23cdf3192065f868ff0ece4e91e4077a4f73)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-18 16:00:14 +02:00
Furgo 0bea8ac10d CI: run exclusively GUI tests in the GUI test steps (#23933)
* CI: run exclusively GUI tests in the GUI test steps

* Fix linter error

Fix the unsupported operand type(s) for | (unsupported-binary-operation) linter error. It appears the linter uses or assumes Python <3.10.

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

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

* CI: move __future__ import to the top of the module...

... to fix linter error.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-18 14:39:58 +02:00
jffmichi f31bd4a1c0 PartDesign: fix crash when creating new sketch 2025-09-17 22:34:00 -05:00
sliptonic c9e7da359a Fixes #23015
The standard in FreeCAD is that workbench preference pages get loaded when the module gets loaded.
That behavior was altered by PR 21981 which attempted to load CAM preference pages at startup even if CAM was not loaded.
The result was that pages were only partially loaded and the result was a confusing mess.

There is some discussion about future enhancements to allow workbench preferences to be loaded early.
When that is implemented, CAM will adjust to be compliant with FreeCAD standard.

This effectively revertts PR #21981
2025-09-17 18:21:16 -05:00
sliptonic 79640fd18a Merge pull request #23885 from chennes/pythonInterfaceToApplicationDirectories
App: Add Python interface to ApplicationDirectories
2025-09-17 18:11:41 -05:00
Chris Hennes 8f128f21f9 Tests: Update to match new behavior 2025-09-17 17:02:35 -05:00
Pieter Hijma ec6cadc01d Gui: Fix segfault DlgPropertyLink
In some cases FreeCAD can segfault when signals to the selection model
aren't blocked.
2025-09-17 16:50:24 -05:00
theo-vt fa2e5cd5fe Sketcher: Use the right delete flag for delConstraints 2025-09-17 16:42:40 -05:00
sliptonic 12a7151806 Merge pull request #23724 from davidgilkaufman/adaptive_reenable_profile
[CAM] regression fix: re-enable adaptive profile mode
2025-09-17 16:41:51 -05:00
Chris Hennes a6c5e9f08e App: Remove manual PCH entries 2025-09-17 16:18:10 -05:00
Chris Hennes b64b0f528b App: Address reviewer comments 2025-09-17 16:08:07 -05:00
Chris Hennes cdb4da3cc7 Gui: Address review comments 2025-09-17 15:45:07 -05:00
sliptonic a8c1c2f9dd Merge pull request #23902 from deimi/fix-import-snapmaker-post
CAM: fix library import in snapmaker postprocessor
2025-09-17 15:43:50 -05:00
Pascal de Bruijn d1f5437002 Material PMMA generic (#24006)
* Materials: Add PMMA-Generic

* Materials: Add PMMA-Generic to CMakeLists

* Materials: Fix PMMA-Generic Description
2025-09-17 18:54:32 +00:00
Pascal de Bruijn 255aaabf7b Materials: Update Aluminum-6061-T6 (#23977)
* Materials: Update Aluminum-6061-T6

* Materials: Update Aluminum-6061-T6 fixups
2025-09-17 12:54:47 -05:00
Chris Hennes eed3e09792 Gui: Migration complete wording tweak 2025-09-17 12:16:24 -05:00
Kacper Donat bc01dc17a4 Gui: Support for default and flat buttons in QSS 2025-09-17 12:08:26 -05:00
Chris Hennes 909464c17b Gui: Add window title 2025-09-17 12:07:00 -05:00
Chris Hennes 26ba6969f6 Gui: Migration UI take 2 2025-09-17 10:43:16 -05:00
Chris Hennes 3dd12e5da1 Gui: Improve version migration UX 2025-09-17 10:43:16 -05:00
captain0xff 2cab5e7b64 Gui: refactor gizmo attachment code 2025-09-17 15:46:35 +02:00
Pascal de Bruijn fcd9a416d2 Materials: Add Aluminum-7075-T6 (#23976) 2025-09-17 08:37:07 -05:00
Roy-043 1c591cd43a Sketcher: fix some prefs texts (#23992)
* Sketcher: fix some prefs texts

* Sketcher: fix some prefs texts
2025-09-17 14:50:26 +02:00
Ryan Kembrey e91751bceb TechDraw: Update missed UI strings to Title Case 2025-09-17 14:50:17 +02:00
Roy-043 bac49e4659 Sketcher: context menu of Elements section in task panel to Title Case 2025-09-16 22:38:23 +02:00
Roy-043 4bb387dd0b Sketcher: titles of parameter sections to Title Case (#23936)
* Sketcher: titles of parameter sections to Title Case

* Update src/Mod/Sketcher/Gui/DrawSketchHandlerBSpline.h

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

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

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

---------

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-16 21:03:16 +02:00
Pieter Hijma ade4e4d96a Gui: Enable single click expand property editor 2025-09-16 11:47:40 +02:00
Pieter Hijma 8e1f983e37 Gui: Create a Property View submenu for expansion
The Property View's context menu has a submenu for property expansion
that allows you set the property expansion to default (remembers state),
to expand all and to collapse all.  Then there are toggles for
default/auto expand/auto collapse that always collapses or expands or
remembers the state.
2025-09-16 11:47:22 +02:00
Alex Tran 76e43efdc6 Read auto collapse user preferences 2025-09-16 11:29:49 +02:00
Alex Tran 2c9056255a Expand/Collapse Property Editor 2025-09-16 11:29:48 +02:00
Chris Hennes 29c69a4689 Update translations 2025-09-15 2025-09-16 09:55:13 +02:00
FEA-eng 29dc9ebcdb Fix typos in the strings reported in Crowdin (#23956)
* BIM: Update dialogWelcome.ui

* BIM: Update dialogWelcome.ui

* Mesh: Update Command.cpp

* MeshPart: Update Tessellation.cpp

* Mesh: Update Selection.ui

* Robot: Update TaskTrajectoryDressUpParameter.ui

* Core: Update MayaGestureNavigationStyle.cpp

* [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-09-15 21:51:56 -05:00
sliptonic e2ca3cce4b Merge pull request #23916 from davidgilkaufman/remove_qsignalblocker
[CAM] bugfix: replace python uses of QSignalBlocker
2025-09-15 14:10:54 -05:00
sliptonic 15eeb8ab1f Merge pull request #23776 from davidgilkaufman/fix_missing_tool_proxy
[CAM] regression fix: migrate old tools to new system
2025-09-15 14:08:47 -05:00
Roy-043 9c4bafc28f Sketcher: Add 'Toggle' to 'Construction Geometry' menu texts (#23944)
* Sketcher: Add 'Toggle' to 'Construction Geometry' menu texts

* Sketcher: Add 'Toggle' to 'Construction Geometry' menu texts

* Update TaskSketcherElements.cpp

* Update CommandAlterGeometry.cpp
2025-09-15 19:38:13 +02:00
Roy-043 010e7fc45f Sketcher: Change "By control points" and "By knots" texts (#23943)
* Sketcher: Change "By control points" and "By knots" texts

Elsewhere in the Sketcher GUI texts, "By" has been replaced by "From". For example "Arc From Center". It makes sense to also do that for the B-spline modes "By control points" and "By knots".

* [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-09-15 17:12:58 +00:00
Pieter Hijma 11ec98ede3 Gui: Remove internal prop types Add Prop dialog
This commit removes types from the list that have no editor and are
meant for internal use.
2025-09-15 19:00:10 +02:00
sliptonic c7936ddcf4 Merge pull request #22500 from jffmichi/drilling_select_line
CAM: select rows instead of cells in drilling panel
2025-09-15 10:46:52 -05:00
sliptonic 768cbbc85b Merge pull request #23856 from Connor9220/library-editor
CAM: Replace the main library editor dialog and add copy & paste & drag & drop support
2025-09-15 10:37:19 -05:00
Roy-043 eec6f4ec0d BIM: fix material handling of component 2025-09-15 15:29:55 +02:00
Furgo c4b2dad89a BIM: fix double click both editing label and opening task panel 2025-09-15 15:28:58 +02:00
Roy-043 68f4a30a1b BIM: fix issues with T-slot profile (#23813)
* BIM: fix issue with T-slot profile

* BIM: fix issue with T-slot profile

* BIM: fix issue with T-slot profile

* Update ArchProfile.py: remove temp print
2025-09-15 15:28:16 +02:00
Furgo a0787e988a BIM: fix double click both editing label and opening task panel 2025-09-15 15:24:11 +02:00
Paul Lee b10fa7fb34 [Arch] Fix makeStairs Move & Addition Behaviour Consistency
Consistent Addition

1. Additions are hidden by onChanged()
2. makeStairs() previously made 1st segment of a Complex Stairs went to Base and the rest segments went to Additions
3. For consistency in grouping and visibility, all segments in go to Additions with this commit

Consistent Move With Host

1. A Complex Stairs has multiple segment (in Additions) and railings (in RailingLeft/Right), they should move togther.
2. All segments and Railing set MoveWithHost to True upon creation, and thus move together, regardless system setting default with this commit

Other Associated Inconsistency

    Other visibility default behaviour as discussed in https://forum.freecad.org/viewtopic.php?p=844965#p844920 would be added in subsequent PR

Last associated PR/commits :
2025-09-15 15:19:49 +02:00
Ryan Kembrey 5642620281 TechDraw: Fix projection groups not recursively deleting 2025-09-15 09:36:42 +02:00
David Kaufman 2cb86f259e also add qt5 compatibility for checkbox state change signal 2025-09-14 14:59:21 -04:00
Ryan K 6bed5b4255 TechDraw: Add number decimals and reference dimension options to dimension task panel (#23501)
* TechDraw: Add num decimals option to task panel

* TechDraw: Add Reference option for dimensions

* Update src/Mod/TechDraw/Gui/TaskDimension.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update src/Mod/TechDraw/Gui/TaskDimension.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

---------

Co-authored-by: Ryan Kembrey <ryan.kembrey@student.uts>
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-09-14 18:14:10 +02:00
Chris Hennes a6ab6f510e Merge pull request #23906 from mrpilot2/cmake_pch_core
Core: use CMake to generate precompiled headers on all platforms
2025-09-14 09:24:40 -05:00
Pascal de Bruijn 651c2d500c Materials: Add POM-(Homopolymer|Copolymer)-Generic followup (#23922)
* Materials: Add POM-(Homopolymer|Copolymer)-Generic

* Materials: Adjust CMakeLists for POM-(Homopolymer|Copolymer)-Generic

* Materials: fixups for POM-(Homopolymer|Copolymer)-Generic

* Materials: Fix POM-(Homopolymer|Copolymer)-Generic UUID
2025-09-14 09:17:50 -05:00
Pascal de Bruijn d09b632cf5 Materials: Add PEEK-Generic (#23779) 2025-09-14 09:16:49 -05:00
Ryan Kembrey 34173f5d3a TechDraw: Fix selections not clearing 2025-09-14 09:15:49 -05:00
Roy-043 f7f3c18e52 Sketcher: QMessageBox titles to Title Case (#23925)
* Sketcher: QMessageBox titles to Title Case

* Sketcher: QMessageBox titles to Title Case

* Sketcher: QMessageBox titles to Title Case

* Update Command.cpp

* [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-09-14 11:59:20 +00:00
Roy-043 4dbdd1031d Sketcher change "don't attach" (#23924)
* Update Command.cpp

* Update Command.cpp
2025-09-14 11:31:11 +00:00
Roy-043 5b59d94d55 Sketcher: Update text in prefs (Title Case related) 2025-09-14 12:31:52 +02:00
Roy-043 57ee6870b4 Sketcher: QInputDialog titles to Title Case (#23920)
* Sketcher: QInputDialog titles to Title Case

* Remove 2nd trailing blank line
2025-09-14 10:21:33 +00:00
Markus Reitböck 6ef07bb358 Gui: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
should be considered an optimization, not a requirement. In particular, do not explicitly include a
precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
generated precompile header on the compiler command line instead. This is more portable across
the major compilers and is likely to be easier to maintain. It will also avoid warnings being
generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-14 09:47:03 +02:00
Markus Reitböck d05e2a0431 App: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
should be considered an optimization, not a requirement. In particular, do not explicitly include a
precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
generated precompile header on the compiler command line instead. This is more portable across
the major compilers and is likely to be easier to maintain. It will also avoid warnings being
generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-14 09:47:02 +02:00
Markus Reitböck f0eca551b3 Base: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
should be considered an optimization, not a requirement. In particular, do not explicitly include a
precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
generated precompile header on the compiler command line instead. This is more portable across
the major compilers and is likely to be easier to maintain. It will also avoid warnings being
generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-14 09:47:01 +02:00
David Kaufman 9ce9c6b99a [CAM] replace python uses of QSignalBlocker 2025-09-13 22:13:55 -04:00
Matthias Deimbacher c0c9212c97 CAM: fix library import in postprocessor 2025-09-13 21:33:31 +02:00
Pascal de Bruijn 2458f47550 Materials: Add POM-(Homopolymer|Copolymer)-Generic (#23820)
* Materials: Add POM-(Homopolymer|Copolymer)-Generic

* Materials: Adjust CMakeLists for POM-(Homopolymer|Copolymer)-Generic

* Materials: fixups for POM-(Homopolymer|Copolymer)-Generic
2025-09-13 14:27:47 -05:00
Markus Reitböck b2c8f4b084 CMake: fix disable msvc warning on wrong target 2025-09-13 12:35:43 -05:00
tetektoza 817ffc5782 Gui: Make Report View properly claim Select All (Ctrl+A) shortcut
Currently if user tries to use CTRL+A on Report View while having
document opened, it rejects the action and nothing happens.

This happened during the introduction of Select All (CTRL+A) behavior in
Sketcher. Basically, before Report View was not catching the event, but
neither any widget, resulting in QTextEdit catching it at the end of the
chain. Now, after enabling it for the whole document,
Report View rejected it, but we have registered it throughout the
document, so another widget was intercepting the event.

So, fix for that is simple - add a check for Select All shortcut on
Report View level, so the event will get consumed instead of being
rejected and propagated to further widgets.
2025-09-13 13:39:09 +02:00
PaddleStroke 37b4560893 Sketcher: Coin resize when screen change. Fix #23267 (#23865)
* Sketcher: Coin resize when screen change. Fix #23267

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

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

* Update ViewProviderSketch.cpp

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-13 12:03:39 +02:00
PaddleStroke 37de4ce264 PartDesign: remove duplicate scale during sketch creation with attach task 2025-09-13 11:43:17 +02:00
Kacper Donat 470ad2a874 Merge pull request #23426 from pieterhijma/reconcile-add-prop-dialogs
Gui: Reconcile Add Property Dialogs
2025-09-13 11:26:52 +02:00
Alihan Tadal 6bb3a39e39 CAM: Let old files adapt OffsetPattern property changes 2025-09-13 11:53:39 +03:00
Alihan Tadal c9001c103c Merge branch 'main' into feature_23649_update_confusing_nomenclature_offset_pattern 2025-09-13 08:42:34 +03:00
Alihan Tadal afff03c38b CAM: Improve confusing nomenclature: Offset Pattern (#23649) 2025-09-13 08:35:29 +03:00
Billy 60bcf64a01 CAM: Consistently rename "Tool" to "Toolbit" in UI and code
- Updated all user-facing strings from "Tool" to "Toolbit" for clarity and consistency.
- Changed combo box filtering logic to use index for "All Toolbit Types" (localization-safe).
- Improved visual distinction for "All Toolbits" in library editor (bold/italic).
- Reduced default SVG icon size in ShapeWidget for a more compact display.
- Updated window titles, labels, tooltips, and placeholder texts to use "Toolbit".
- Removed obsolete string comparisons in filtering logic.
- Change the Menu item from "Toolbit Library Editor" to "Toolbit Library Manager"
2025-09-12 18:04:57 -04:00
Pieter Hijma f0a9b5ea01 Part: Add deprecation warning for import/export 2025-09-12 16:30:25 -05:00
PaddleStroke 061e185e7f Sketcher: Fix ctrl A (#23866) 2025-09-12 15:40:24 -05:00
Chris Hennes 0dcbac7b30 App: Add Python interface to ApplicationDirectories
The Python version of this class is entirely static: no instance is
required. Internally it accesses th pre-constructed instance of the C++
ApplicationDirectories class that is instantiated at program startup by
the Application class.
2025-09-12 15:25:47 -05:00
sliptonic 4ae36283d0 Ensure Qt5 compatibility with enums
Correct LGPL headers

rework bullnose  Fixes #19050
2025-09-12 15:24:16 -04:00
George Peden f2803283b8 Fix B-spline keyboard focus issue (#23859) (#23860)
* Fix B-spline keyboard focus issue (#23859)

- Restore keyboard focus after command restart in changeConstructionMethode()
- Fixes M key mode switching and R toggle periodic functionality
- Uses direct MDI view focus restoration instead of private ensureFocus() method

Fixes issue where keyboard shortcuts stop working after first mode switch.

* Address Copilot feedback: Add null check for activeDocument()

- Use ternary operator for cleaner null safety
- Prevents potential crash if activeDocument() returns null
- More idiomatic C++ code style

* Improve variable scope per @chennes feedback

- Use if-with-initialization to scope doc and mdi variables
- Variables now only exist where needed instead of leaking into function scope
- More idiomatic C++ code style
2025-09-12 18:26:39 +00:00
sliptonic db5117e1ae Update src/Mod/CAM/Gui/Resources/panels/LibraryProperties.ui
Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

Update src/Mod/CAM/Gui/Resources/panels/ToolBitLibraryEdit.ui

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

Update src/Mod/CAM/Gui/Resources/panels/ToolBitLibraryEdit.ui

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

Update src/Mod/CAM/Gui/Resources/panels/ToolBitLibraryEdit.ui

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

Update src/Mod/CAM/Gui/Resources/panels/ToolBitLibraryEdit.ui

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

Update src/Mod/CAM/Gui/Resources/panels/ToolBitLibraryEdit.ui

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

Update src/Mod/CAM/Gui/Resources/panels/ToolBitLibraryEdit.ui

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

Update src/Mod/CAM/Gui/Resources/panels/ToolBitLibraryEdit.ui

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

Update src/Mod/CAM/Gui/Resources/panels/ToolBitLibraryEdit.ui

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

Update src/Mod/CAM/Gui/Resources/panels/ToolBitLibraryEdit.ui

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2025-09-12 14:19:30 -04:00
sliptonic 78bd46f815 fixes
fix duplicate toolbits
add tools to 'all tools'
context menus and deletion
/CamAssets/Tool/  directory structure
Assets and preferences
2025-09-12 14:19:30 -04:00
Billy 81faf7727c CAM: Remove hardcoded style for Tool Number, Fix TestPathToolBitSerializer
Fix issue with toolshapes
Renamed fillet to radius
Added Tool Type Filter to library
Fix units so that they honor user preference
Remove the QToolBox widget from the Shape Selector page and combine into a single page.
Fix issue with PropertyBag so that CustomPropertyGroups as a string is converted to enum and enums are handled correctly.
Update TestPathPropertyBag test for enum changes.
Update TestPathToolBitListWidget
Update TestPathToolLibrarySerializer to match new LinuxCNC output
Fix LinuxCNC export too handle ALL tool types, use user preferences for units, and include all lcnc fields
2025-09-12 14:18:33 -04:00
Matthias Danner 95840a79d3 Sketcher: Fix Select all with BSplines and clean up selection logic 2025-09-12 12:56:41 -05:00
PaddleStroke ee44d265c8 Sketcher: Bspline tool: prevent double click failure (#23872)
* Sketcher: Bspline tool: prevent double click failure

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

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

* Update DrawSketchHandlerBSpline.h

* [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-09-12 16:51:31 +00:00
PaddleStroke 547c97fc79 Sketcher: Fix arc double click bug (#23873) 2025-09-12 11:20:43 -05:00
Pieter Hijma 1a9247d393 Gui: Fix disabling editing Property View
This commit fixes an issue that blocks editing values after pressing F2.
2025-09-12 11:05:33 -05:00
matthiasdanner 5d76be01e1 Sketcher: Fix Freeze in Offset with too large negative value (#23467)
* Sketcher: Fix Freeze in Offset with too large negative value

* Remove ErrorMessages when offsetting circles with too large negative value

* fix linting comment

* Add Error feedback

---------

Co-authored-by: Matthias Danner <28687794+matthiasdanner@users.noreply.github.com>
2025-09-12 10:52:33 -05:00
tarman3 34f4f16383 CAM: Clean DogboneDressup after PR#22250 (#23752) 2025-09-12 09:43:18 -05:00
tarman3 0336185ec1 CAM: Improve SelectLoop (#23275) 2025-09-12 09:42:20 -05:00
Connor9220 fff2e2daf9 CAM: Reorder the Clearance height and Safe Height spinners in task panel (#23727)
Co-authored-by: Billy <billy.huddleston@preparis.com>
2025-09-12 09:40:08 -05:00
matthiasdanner 34747719fb Sketcher: Fix use after free Bug when commiting value with enter in OVP (#23853)
* Sketcher: Fix use after free Bug when commiting value with enter

* Fix new use after free bug

---------

Co-authored-by: Matthias Danner <28687794+matthiasdanner@users.noreply.github.com>
2025-09-12 09:18:09 -05:00
dependabot[bot] b66d44ac49 Bump github/issue-metrics from 3.23.1 to 3.23.2
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.23.1 to 3.23.2.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/6fa9041b3ea7b6a9dafbdc388d25d86d06b2b6af...e8f19041d9996b64cd5eebd653f065adb6d0e195)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.23.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-12 08:54:47 -05:00
Pieter Hijma 1edacbf508 Gui: Small refactor of Tree.cpp selecting docs
Based on review comment, a small refactoring of code that was duplicated
when adding functionality to select documents.  The duplication has been
removed in this commit.
2025-09-12 10:59:17 +02:00
Pieter Hijma 12b7699800 Gui: Process minor review comments
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-09-12 10:58:34 +02:00
Markus Reitböck 952bff5b63 Mesh: give evaluation panel a title (#23423)
* Mesh: give evaluation panel a title

Fixes: https://github.com/FreeCAD/FreeCAD/issues/23395

* Mesh: Evaluation panel - move refresh button beside selection box

as per request in pull request #23423

* Mesh: replace ampersand with 'and' in Evaluate and Repair dialog
2025-09-11 22:41:38 -05:00
Chris Hennes 112e22b639 Merge pull request #23837 from longrackslabs/feature/sketcher-keyboard-shortcuts-hints-23815
Feature/sketcher keyboard shortcuts hints 23815
2025-09-11 22:37:55 -05:00
Markus Reitböck 749ac36615 do not use precompiled header for setting global compiler definitions and to disable compiler warnings
only 4 of these warnings are still relevant, CMake shall be used to disable them

Compiler definitions:

  NOMINMAX:
    * is already globally defined in SetGlobalCompilerAndLinkerSettings.cmake

  WIN32_LEAN_AND_MEAN:
    * use CMake target_compile_options on relevant targets

Warnings that still occur:

  C4251, C4273, C4275: all related to dllimport / export
    * use CMake target_compile_options on relevant targets

  C4661: no suitable definition provied for explicit template instantiation request
    * triggered in Mesh because of Vector3D in Base - not all functions are defined in header
    * use CMake target_compile_options on relevant targets

Warnings that are Currently not triggered (fix code if they appear again):

  C4005: macro redefinition

  C4244: argument conversion, possible loss of data

  C4267: conversion from size_t to type, possible loss of data

  C4305: truncation from type1 to type2
    * only occurrence disabled in Reader.cpp

  C4522: multiple assignment operator specified

  C5208: unnamed class in typedef name

Obsolete Compiler warnings:

  C4181: not mentioned in Microsoft docs anymore

  C4290: C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
    * throw(optional_type_list)  deprecated in C++17

  C4482: nonstandard extension used: enum 'enumeration' used in qualified name
    * not generated for compilers that support C++11

  C4503: 'identifier': decorated name length exceeded, name was truncated
    * obsolete since Visual Studio 2017

  C4786: not mentioned in Microsoft docs anymore
2025-09-11 20:21:04 -05:00
Markus Reitböck 965109dd73 missing includes in Base, App and Gui headers (#23854)
* missing includes in Base, App and Gui headers

header should be self contained

* use cstddef header instead of stddef.h

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-09-11 18:58:44 -05:00
marioalexis 7387fc2210 Fem: Force utf8 encoding for Netgen Python process 2025-09-11 18:28:17 -03:00
marioalexis 7d1e05f21d Fem: Better error handling in task panels with logging 2025-09-11 18:28:08 -03:00
sliptonic 10d1031e9b Make default postprocessor empty string. (#23706)
* Make default postprocessor empty string.

Default post when creating a job is now not set.  This will cause the user to be prompted for a post instead
This PR also cleans up some unit tests to avoid loading from disk

* [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-09-11 16:07:38 -05:00
captain0xff 603e0bc6e5 Gui: update gizmo state based on new property 2025-09-11 22:54:47 +02:00
Kacper Donat 1f96b30832 Merge pull request #23510 from pieterhijma/modify-property-tooltip
Gui: Add editing a property tooltip in Property View
2025-09-11 22:14:08 +02:00
Ryan K f7a85081e8 TechDraw: Fix tree view selection not showing on page (#23593) 2025-09-11 12:35:19 -05:00
Ryan Kembrey caa009036a TechDraw: Fix selection regressions 2025-09-11 12:34:37 -05:00
Roy-043 1bbc1c805d Spreadsheet: fix Split Cell name in context menu 2025-09-11 12:32:23 -05:00
Samuel Abels 2168e3cd99 CAM: Add AssetManager.copy() and .deepcopy()
CAM: Add copy/paste support for the ToolBitBrowser

CAM: Move library dropdown and sort order combo to dedicated row to give them more space

CAM: Fix: PathAssetManagerTest failed

CAM: Add YamlSerializer

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

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

CAM: Fix CodeQL complaints

CAM: add LibraryProperties dialog

CAM: Replace the LibraryEditor

CAM: allow for editing tool number in the tool editor dialog

CAM: Remember last selected library and sort order in preferences

CAM: support natural sort order in tool and library lists

CAM: Fix CodeQL complaints

CAM: Fix: not all attributes included in YAML serialization

CAM: Fix: UTF8 chars not included in LinuxCNC export

Fix: tool library not displayed when loading it for the first time

CAM: Fix: custom shape class not found

CAM: Check dependencies on import for friendlier error messages

CAM: Open file dialogs in home by default

CAM: Show "All Tools" entry in library list in the library editor

CAM: fix: error on sorting tools with no tool number

CAM: Fix: traceback if library contained tool number as string

CAM: Fix: Linter errors in manager.py

CAM: Fix: separator between library and tool buttons

CAM: Add drag & drop support to the library editor

CAM: Fix numerous linter errors on the AssetManager

CAM: Show current library in library editor window title

CAM: Add dedicated icons for library add + remove

CAM: Support F2 key in library editor

CAM: library editor handles delete key when library list is in focus; focus search field by default

CAM: fix: tool list in dock initially not loading

CAM: Fix: library editor did not open from "all tools" list

CAM: Increase precision of parameters in tool summary to 3 digits

fix TestToolBitListWidget
2025-09-11 10:45:41 -05:00
marioalexis a4ca9a0526 Fem: Fix regression in netgentools 2025-09-11 10:21:08 -05:00
PaddleStroke d5929bcdbf PartDesign: NewSketch: fix crash when no body 2025-09-11 16:23:48 +02:00
Roy-043 a4b659fcbf Spreadsheet: message box titles to Title Case (#23842) 2025-09-11 14:45:37 +02:00
George Peden ed444318e4 Fix inconsistent keyboard shortcut hints in Rectangle tool
- Add missing U (rounded corners) and J (frame) hints to ThreePoints method
- Add missing U (rounded corners) and J (frame) hints to CenterAnd3Points method
- Now all four construction methods show consistent keyboard shortcut hints
- Addresses Copilot feedback on PR
2025-09-10 20:40:18 -10:00
George Peden 343bd6c77c Add keyboard shortcuts to fillet/chamfer hints
- M key for switching between Fillet and Chamfer modes
- U key for toggling preserve corner option
- Hints are shown in all states (SeekFirst, SeekSecond, End)
- Addresses issue #23815 for missing keyboard shortcuts in hints
2025-09-10 19:59:49 -10:00
George Peden 80290baaf6 Add mode-aware keyboard shortcuts to B-spline hints
- Control Points mode: U/J for degree control (+ degree, - degree)
- Knots mode: R for periodic toggle
- Hints are now context-aware based on construction method
- Addresses issue #23815 for missing keyboard shortcuts in hints
2025-09-10 19:34:53 -10:00
George Peden d524b9ceef Add M (Mode) keyboard shortcut to arc slot hints
- Add switchModeHint constant with M key
- Include mode shortcut in all arc slot states (SeekFirst through SeekFourth)
- Addresses issue #23815 for missing keyboard shortcuts in hints
2025-09-10 19:13:15 -10:00
George Peden 23ea8ce37b Add U (rounded corners) and J (frame) keyboard shortcuts to rectangle hints
- Add roundedCornersHint and frameHint constants
- Include U and J shortcuts in all rectangle construction method states
- Addresses issue #23815 for missing keyboard shortcuts in hints
2025-09-10 19:08:59 -10:00
Roy-043 770f769b1f Draft: fix issue with ContinueMode 2025-09-10 22:30:26 -05:00
Ryan Kembrey 7a0b93cabe TechDraw: Fix spreadsheet incorrect render due to cell merges 2025-09-10 22:28:20 -05:00
Chris Hennes 3d65ae46d5 Merge pull request #23746 from 3x380V/cmake
CMake: Use scoped include and library directories
2025-09-10 21:54:51 -05:00
PaddleStroke d8640019e5 Assembly: Fix simulation crash with limits 2025-09-10 21:54:20 -05:00
FEA-eng 3df7bb34bf Update CommandFilter.cpp 2025-09-10 21:52:50 -05:00
wandererfan f2ac9e2baa [TD]fix TheoreticalExact frame color 2025-09-10 21:50:59 -05:00
FEA-eng 689740d3d3 Sketcher: Remove redundant title case from task panel option of the Mirror tool (#23822)
* Sketcher: Update DrawSketchHandlerSymmetry.h

* [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-09-10 18:07:42 +00:00
dependabot[bot] 0b5552f375 Bump github/issue-metrics from 3.23.0 to 3.23.1
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.23.0 to 3.23.1.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/63da87a2ab16c720cf9199a73c11f56a42f39cd4...6fa9041b3ea7b6a9dafbdc388d25d86d06b2b6af)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.23.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 12:40:14 -05:00
dependabot[bot] 6483675405 Bump step-security/harden-runner from 2.13.0 to 2.13.1
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.13.0 to 2.13.1.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/ec9f2d5744a09debf3a187a3f4f675c53b671911...f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.13.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 12:39:56 -05:00
PaddleStroke aef10a1bc8 PartDesign: Extrude: Fix twoLength/uptoshape broken (#23812)
* PartDesign: Extrude: Fix twoLength/uptoshape broken

* Update FeaturePocket.cpp

* Update FeatureExtrude.cpp

* fix test
2025-09-10 19:12:02 +02:00
PaddleStroke 8aa527119b Core: Add btn_rotate.svg (#23781)
* Core: Add btn_rotate.svg

* Add files via upload

* Update resource.qrc
2025-09-10 15:35:35 +02:00
FEA-eng 2073ccf8e2 Update DlgSettings3DView.ui 2025-09-10 10:43:48 +02:00
Ladislav Michl 8e7e9c4bbc Gui: check for null document name
Make the check for null document name more obvious.
2025-09-10 10:08:04 +02:00
Chris Hennes 58a8d589a7 Update translations 2025-09-09 2025-09-10 08:53:41 +02:00
Ladislav Michl ea9cdfd962 Py3.13: Initialize field tp_versions_used 2025-09-10 08:49:31 +02:00
wmayer 692d40916a Py3.13: Disable Py_UNICODE support in PyCXX 2025-09-10 08:49:30 +02:00
Kacper Donat 0677982c8b Gui: Fix segfault in ViewProviderPlane::getRole 2025-09-10 06:16:02 +02:00
David Kaufman 874fe54053 [CAM] migrate old tools to new system 2025-09-09 11:49:55 -04:00
PaddleStroke 02479a1528 PartDesign: FeatureExtrude fix symmetric + custom dir 2025-09-09 15:25:00 +02:00
marioalexis d1dae5af1c Fem: Fix Gmsh preferences file chooser 2025-09-09 07:30:10 -03:00
marioalexis 1ee3992436 Fem: Fix Elmer preferences file chooser 2025-09-09 07:30:01 -03:00
marioalexis 31ff4124f2 Fem: Fix Mystran preferences file chooser 2025-09-09 07:29:56 -03:00
marioalexis 9efc0d77a0 Fem: Fix Z88 preferences file chooser 2025-09-09 07:29:51 -03:00
Benjamin Nauck c1dd116e1e Revert "Part: Remove mode from Offset, keep in Offset2D"
This reverts commit b13b78b2e1.
2025-09-09 08:43:51 +02:00
Benjamin Nauck b400cdcec7 Merge pull request #23274 from kadet1090/enlarge-planes
Gui: Enlarge planes on mouse over and selection
2025-09-09 06:20:15 +02:00
marioalexis 344f93c2da Fem: Fix CalculiX preferences file chooser 2025-09-08 23:47:20 -03:00
PaddleStroke dc22fb4b9b Sketcher: Constraint symbol size follow-up (#23590)
* Sketcher: Constraint symbol size follow-up

* Update SketcherSettings.cpp

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

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

* Update SketcherSettingsDisplay.ui

* Update EditModeCoinManager.cpp

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

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

* remove enabled property

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-09 01:00:26 +02:00
Kacper Donat 50865e3ee9 CI: Disable implicit bool conversion linter warning
Implicit conversion from integer to boolean and vice versa is very
common in FreeCAD due to SbBool (from coin) being defined as int. This
creates a lot of false positives that should not be addressed in code
reviews. We also use such implicit coversions in FreeCAD often in
general so that warning is usually ignored.
2025-09-08 17:18:51 -05:00
Kacper Donat b942275957 Gui: Make datum planes bigger 2025-09-08 23:16:29 +02:00
captain0xff 341f352864 Gui: add theming abilities to interactive gizmos 2025-09-08 20:59:16 +02:00
wmayer b1a37aebbb CMake: Replace link_directories with target_link_directories 2025-09-08 19:04:38 +02:00
wmayer 93db4c7d8a CMake: Replace include_directories with target_include_directories 2025-09-08 19:04:34 +02:00
PaddleStroke 7e57b6e7b0 PartDesign: FeatureLinearPattern fix Axis-Y not working (#23637)
* PartDesign: FeatureLinearPattern prevent error message

* To squash
2025-09-08 18:26:30 +02:00
Kacper Donat 51650e7bcc Gui: Fix segfault in TaskAttacher on cancel 2025-09-08 11:20:43 -05:00
zophon 1f32565819 Update KineticNCBeamicon2_post.py (#23602)
Added a return in the postamble to separate M05 and M09 GCode as beamicon2-basic doesn't like having both M-code on the same line.
2025-09-08 11:07:01 -05:00
Chris Hennes 84c810dc4a Merge pull request #23521 from z0r0/python-interface-bindings-final
Core: Python interface bindings cleanup
2025-09-08 10:58:15 -05:00
tarman3 d87fe5084a CAM: Dogbone - fix for Pocket (#22250) 2025-09-08 10:52:03 -05:00
PaddleStroke c3a6d0b03a Part: Remove transparency cap at 50% for face color override 2025-09-08 10:49:56 -05:00
Kacper Donat f0d43b0ca9 PartDesign: Reorder fields in Hole dialog
This makes order of fields in Hole Parameters more natural with typical
input flow of the parameters, i.e. moves the size of the hole more to
the top as it is the most important parameter.
2025-09-08 10:48:13 -05:00
PaddleStroke ff86b537e0 Core: Fix alpha-transparency issue in face color override. (#23532)
* Core: Fix alpha-transparency issue in face color override.

* Fix color picker opening wrongly with alpha reversed
2025-09-08 17:46:05 +02:00
Benjamin Nauck b13b78b2e1 Part: Remove mode from Offset, keep in Offset2D 2025-09-08 10:42:15 -05:00
Chris Hennes 39f37fde17 TD: Finish removal of Link and Landmark from GUI 2025-09-08 17:38:00 +02:00
Roy-043 45629f7599 Draft: Remove relative to WP option from Draft_Scale (#23716)
* Draft: Remove relative to WP option from Draft_Scale

* Draft: Remove relative to WP option from Draft_Scale
2025-09-08 14:38:38 +02:00
Roy-043 e63819ca4c BIM: fix transparency of windows 2025-09-08 14:36:18 +02:00
Roy-043 b8f5e6848c Draft: fix display of Building US dim text (#23674)
* Draft: fix display of Building US dim text

* Fix UnitSystem check
2025-09-08 14:35:21 +02:00
Paul Lee 41358863f6 [ArchStairs] Fix-hideSubobjects
Arch Objects usually has hideSubobjects to hide children.

ArchStairs does not have this and children (e.g. Additions, Subtraction [Railing to be added]) does not hide; this fix the problem.

Other Associated Inconsistency
- Other movable childre and visibility behaviour (like Railing of Stairs should be children) as discussed in https://forum.freecad.org/viewtopic.php?p=844965#p844920 would be added in subsequent PR
2025-09-08 14:34:33 +02:00
Roy-043 0d431ae628 Draft: fix focus on Length input behavior 2025-09-08 14:33:23 +02:00
Paul Lee d54db8c223 [ArchComponent] Fix 1st Addition Placment & MovableChildren Includes Railings
I.  Fix 1st Addition Placement

1. Arch Object can have no Base.
2. ArchComponent.processSubShapes() would keep the placement of Additions by treating with inverse placement when the parent Arch Object placemnet is changed.
3. However, when there is not base/Base, 1st Addition becomes 'base' and the placement is not treated by inverse placement and the displacement is doubled
4. This commit identify the above case and apply same inverse placment

II.  MovableChildren Includes Railings

1. getMovableChildren() does not includes Railing (on top of Additions/Subtraction)
2. This commit fix the behaviour to make it consisteny

Other Associated Inconsistency
- Other visibility default behaviour as discussed in https://forum.freecad.org/viewtopic.php?p=844965#p844920 would be added in subsequent PR

Last associated PR/commit -  https://github.com/FreeCAD/FreeCAD/pull/23556
2025-09-08 14:32:16 +02:00
Roy-043 d58f9c56e9 BIM: fix Arch_Reference colors 2025-09-08 14:30:40 +02:00
Roy-043 4677bfef79 BIM+Draft: change object related version info to log messages
To inform the user warnings are shown if an object has new or modified properties in the current version. These warnings can however be confusing, especially if there are many. With this PR they are turned into log messages. They are also moved out of translation, and instead of the object Label the object Name is displayed.

Additionally:
Zero path length warnings for path arrays are now only displayed if the Align property is True.

See: #21180.
2025-09-08 10:58:28 +02:00
Roy-043 999a6d2631 Draft: Improve ShapeString execute function 2025-09-08 10:58:06 +02:00
Furgo e767e932b7 BIM: Fix sun ray creation in Arch Site solar study, suppress ladybug log messages (#23524)
* BIM: disable root logger propagation to imported modules

Prevents noisy log messages from third-party modules, such as ladybug,
from appearing in the console. A context manager temporarily sets the
root logging level to WARNING during the import process, which avoids
altering the application's permanent logging configuration. Ultimately,
this is a workaround: FreeCAD seems to set the root logging level to
INFO at least, which propagates to all loaded modules. It should set it
to WARNING or ERROR at least, but changes outside the BIM module were
out of scope for this PR.

* BIM: make module import error explicit, do not mask exceptions

* BIM: adapt code to the new Draft.Line properties (PR #11941)

Adapts the code to a Draft.Line API change. Property names for the sun
ray object are updated (e.g., from ArrowType to ArrowTypeEnd) to align
with the new definitions, which prevents errors and ensures the sun
ray's arrow displays correctly.

* BIM: do not update sun position until all properties are initialized

Prevents an AttributeError error when loading files. During the loading
sequence, the onChanged callback is triggered for related properties
until they all have been initialized. A hasattr guard is added to ensure
the dependent logic is not executed until the object is in a consistent
state.

* BIM: restore property constraints at the right time

Fixes an unconstrained properties issue when loading files. Constraint
metadata is not saved in files, and the UI is built before the Python
code can re-apply it. The fix defers the constraint restoration using
QTimer.singleShot(0) to run after the file has fully loaded. The
restoration logic also correctly preserves user-saved values by reading
them from the object before re-applying the non-persistent constraints.
2025-09-08 10:57:50 +02:00
luzpaz d9da6c8def Fix various typos
Found via codespell
2025-09-08 00:21:16 -05:00
Chris Hennes 1f05f5eda4 Merge pull request #23351 from 3x380V/fileinfo
Core: Modernize Fileinfo
2025-09-07 21:28:11 -05:00
wandererfan 3f84a7695a [TD]fix horizontal/vertical test for dimensions 2025-09-07 20:42:09 -05:00
drwho495 55b3ab0489 Toponaming: Remove updateElementReferences call in getLinks methods. (#23525)
* remove calls to updateElementReferences in getLinks

* add description of the bug for future developers' sake
2025-09-07 20:40:47 -05:00
marioalexis 414943f4f9 Fem: Add default solver to new analysis - fixes #23043 2025-09-07 20:33:17 -05:00
marioalexis cf61dfab38 Fem: Update old ElementGeometry*D with new properties 2025-09-07 20:32:42 -05:00
Adrian Insaurralde Avalos 8a73146311 FEM: improve gmsh binary lookup logic
fixes https://github.com/flathub/org.freecad.FreeCAD/issues/28
also remove unnnecessary/redundant UseStandardGmshLocation preference
2025-09-07 20:32:07 -05:00
marioalexis cd0502a155 Fem: Use Netgen bindings entirely in external program 2025-09-07 20:31:53 -05:00
FEA-eng f18cff3b27 FEM: Fix the shell to shell contact example (#23533)
* FEM: Update constraint_contact_shell_shell.py

* FEM: Update constraint_contact_shell_shell.inp
2025-09-07 20:31:38 -05:00
FEA-eng 40011e8f7e FEM: Better defaults for mesh export (#23553)
* FEM: Update mesh_gmsh.py

* FEM: Update DlgSettingsFemExportAbaqus.ui

* FEM: Update DlgSettingsFemExportAbaqus.ui

* FEM: Update DlgSettingsFemExportAbaqusImp.cpp

* FEM: Update AppFemPy.cpp
2025-09-07 20:31:20 -05:00
Chris Hennes aee2226d60 Merge pull request #23494 from marioalexis84/fem-calculix_default_time_increment
Fem: Use default CalculiX time increments for thermo-mechanical steady state analysis
2025-09-07 20:31:06 -05:00
Chris Hennes 325730dd9c Merge pull request #23384 from 3x380V/units
Base: Units update
2025-09-07 20:22:54 -05:00
Chris Hennes 2d17ed4fb5 Merge pull request #22340 from maxwxyz/3d-nav-cursors
Gui: Change navigation cursors to SVG
2025-09-07 19:11:14 -05:00
marioalexis 4d25baf1ee Fem: Add support for 2D geometries to Centrif constraint 2025-09-08 00:25:55 +02:00
theo-vt eab485656f Sketcher: fix invalid constraint on first dimension (#23024)
* Sketcher: Scale: Reorder operations and delete original modified constraints to ensure validity

* Sketcher: replace boolean parameters for deletion with enum and expose solver override on some deletion functions in the python API

* Use correct flag in ::delGeometry

* Set default value of false to noSolve

* Sketcher: autoscale: use deleteAllGeometry

* Sketcher: Scale: revert to checking constraints for geoId validity and handle horizontal&vertical
2025-09-07 18:03:15 +02:00
Kacper Donat 6c5469560b Merge pull request #22964 from B0cho/bugfix/CORE-Expression-dialog-widgets
Core: Enhance 'Expression editor' input and resize behavior
2025-09-07 17:35:29 +02:00
PaddleStroke dad181b8e1 Fix Link MaterialOverride 0.0 transparency bug 2025-09-07 17:33:52 +02:00
Kacper Donat 465ca23cd3 Merge pull request #22029 from tetektoza/realthunder_multiselect_without_pie
Gui: Add a context menu to select obstructed items (from RT's fork Pick Geometry)
2025-09-07 17:27:18 +02:00
David Kaufman 24c382232a [CAM] re-enable adaptive profile mode 2025-09-07 10:55:24 -04:00
Kacper Donat 2bcfe3f2b1 Gui: Add generic getViewProvider<T> 2025-09-07 16:17:44 +02:00
David Kaufman 1182e38fd1 [CAM] add missing migration from intermediate version for lead in/out dressup 2025-09-07 09:38:36 -04:00
Ryan Kembrey 415fa0a415 TechDraw: Fix center marks not showing 2025-09-07 23:15:32 +10:00
Pascal de Bruijn 839ccb5e3a CAM: PocketShape defaults to Offset and 50% StepOver 2025-09-07 14:35:50 +02:00
Kacper Donat 288255f074 Gui: Disallow dragging features outside of body 2025-09-07 01:26:14 +02:00
Kacper Donat 5fbe1b66a8 Gui: Add handling for BaseFeatures outside of Body edge case 2025-09-07 01:25:24 +02:00
tetektoza 06f0a6a428 Gui: Correct linter problems 2025-09-06 17:13:05 +02:00
David Kaufman 2aac5f6b33 [CAM] fix to ensure tool change command is issued forsame tool number, new spindle speed (#23691) 2025-09-06 10:00:37 -05:00
David Kaufman e5e1732896 [CAM] change default TC name to 5mm endmill (#23692) 2025-09-06 09:56:52 -05:00
tetektoza a4f851c501 Gui: Handle proper naming for Link objects in Clarify Selection 2025-09-06 15:55:39 +02:00
tetektoza 1d4d7303c7 Gui: Skip creating submenu for Object and Other types in Clarify Select 2025-09-06 15:55:39 +02:00
tetektoza f44bb78faa Gui: Remember right click position before menu pop-up for ClarifySelect 2025-09-06 15:55:35 +02:00
tetektoza c191e256b6 Gui: Move Clarify Selection higher in Tools submenu hierarchy 2025-09-06 13:55:17 +02:00
tetektoza 214e68db99 Gui: Add Clarify Selection radius multiplier option 2025-09-06 12:09:36 +02:00
Kacper Donat 8f96856019 Gui: Fix preview rendering issues 2025-09-06 01:27:06 +02:00
B0cho 21c58687d3 Core: Fix 'Expression editor' handling with keyboard 2025-09-05 21:59:08 +02:00
Weston Schmidt 140c9febc4 Add test causing crash and fix map sorting function. (#22889)
* Add test causing crash and fix map sorting function.

When opening a model from FreeCAD 0.7, the model would crash when I
changed some of the parameters.  This turned out to be due to the
ElementNameComparator::operator() not correctly sorting the items going
into the map, which caused the map to be invalid.

This change adds a test that represented the exact names causing the
crash as well as a fix for the problem.  Names are now sorted:

1. Empty names first
2. Identifier based names second.
3. Hex based names last.

Identifiers are sorted lexicographically for the name portion and
numerically for the number portion, smallest to largest.

Hex based names are sorted by the value of the hex number, smallest to
largest.

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

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

* Fix lint issues.

* Add another test form to the mix.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-05 14:07:02 -05:00
David Kaufman 6d71a564d5 [CAM] create adaptive epic (#23414)
* [CAM] create adaptive epic

* update adaptive epic
2025-09-05 11:49:51 -05:00
David Kaufman 51f49d92d4 [CAM] LeadInOut new features (#22669)
* CAM: Improve LeadInOut

* rebuild/fix task panel UI

* migrate old LeadInOut parameters to the new properties

* Keep original Lead-in and/or Lead-out

* LeadInOut Rename None/Original to No Retract/None

* merge in changes from tarman/leadovertravel

* LeadInOut update names to No Change/Suppress Retraction

* Remove IncludeLayers option from LeadInOut (always true)

* [CAM] Fix offset entrance UI string

* [CAM] improve handling of step angle on lead in/out ArcZ

* resolve merge conflicts

* finish pulling in tarman's updates

* switch back from 'No Change' style to enable checkbox

* 'Suppress Retraction' -> 'No Retract'

* fix documentation string for lead in/out dressup

---------

Co-authored-by: tarman3 <joice501790018@tutamail.com>
2025-09-05 11:24:42 -05:00
J-Dunn 97c41149ba CAM: fix G0 regression in drilling (#22602)
* CAM: fix G0 regression in drilling

At some point the initial rapid to Safe Height got dropped from drilling cycles. 
This leads to excessive air drilling.
It also alters "OLD_Z" which sets the Retraction plane under G98.

The defect is causing much confusion and time wasting in the roadmap discussions

This PR fixes the G0 regression.

* [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-09-05 11:14:58 -05:00
Ladislav Michl 88f76f3605 Base: UnitsSchema: use basic imperial conversion constants
Use well defined basic constants for conversion of imperial units.
This makes code hopefully easily readable and verificable.
2025-09-05 17:31:55 +02:00
Ladislav Michl 1cd47c2dd4 Base: add back Imperial for Civil Engineering unit conversions
Fixes: 1155f0d752 ("Base: simplify UnitsSchemas management")
2025-09-05 17:31:54 +02:00
Ladislav Michl 02e02b56a9 Base: pass format specifiers to UnitsSchemasData::runSpecial
Make toFractional() aware of desired fractional inch denominator.

Fixes: 1155f0d752 ("Base: simplify UnitsSchemas management")
2025-09-05 17:31:54 +02:00
Ladislav Michl 01b547912f Base: QuantityFormat: avoid storing formatting defaults
User defined precision and fractional inch are stored on QuantityFormat
construction making changes persistent to object life time.
Change that so until not explicitely overriden, user defined values
are always returned.

Co-authored-by: Matthias Danner <28687794+matthiasdanner@users.noreply.github.com>
2025-09-05 17:31:54 +02:00
Ladislav Michl e7cd72b2e0 Base: refactor unit formatting defaults
Defaults for both precision (number of digits after decimal point)
and denominator (number of fractions) are defined on various places
making difficult to find which default is used for various tasks.
Store these values at one central place: UnitsApi. Unless overriden
by user, default values are defined by unitSchemasDataPack.
2025-09-05 17:31:54 +02:00
Ladislav Michl 28c256ba07 Gui: fix 'Minimum fractional inch' preference visibility
Default Unit Schema is not yet changed in onUnitSystemIndexChanged
callback handler, so index needs to be used to request currently
selected one.

Fixes: 1155f0d752 ("Base: simplify UnitsSchemas management")
2025-09-05 17:31:54 +02:00
Ladislav Michl afa5be6ff5 Base: Quantity: attribute pressure quantities to pressure unit
Although CompressiveStrength is of the same dimension as Pressure,
make it more straightforward and use base unit.
2025-09-05 17:31:54 +02:00
Ladislav Michl 2d6a946949 Base: Quantity: remove redundant 'this' 2025-09-05 17:31:54 +02:00
Ladislav Michl a067083a0b Base: UnitsApi: remove nowhere called init() 2025-09-05 17:31:54 +02:00
Ladislav Michl 8eea79fe05 Base: make UnitsApi::toNumber method of Quantity
This static method takes Quantity as a parameter, so make it
method of Quantity directly.
2025-09-05 17:31:54 +02:00
Ladislav Michl e3852f7732 Base: make UnitsApi::toString method of Quantity
This static method takes Quantity as a parameter, so make it
method of Quantity directly.
2025-09-05 17:31:54 +02:00
Ladislav Michl 9cfd5c7f48 Gui: do not misuse UnitApi to format numbers in property editor 2025-09-05 17:31:54 +02:00
Kacper Donat 1d597a789b Merge pull request #23677 from PaddleStroke/patch-58
Part: do not copy visual of sketch
2025-09-05 16:54:55 +02:00
PaddleStroke de607c1c30 Part: Revolution: do not copy style of sketches 2025-09-05 15:37:55 +02:00
PaddleStroke a32466fc40 Part: do not copy visual of sketch 2025-09-05 15:29:21 +02:00
Roy-043 b3ac2ec070 Update gui_groups.py 2025-09-05 14:49:11 +02:00
dependabot[bot] 29bac92bad Bump actions/labeler from 6.0.0 to 6.0.1
Bumps [actions/labeler](https://github.com/actions/labeler) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/f1a63e87db0c6baf19c5713083f8d00d789ca184...634933edcd8ababfe52f92936142cc22ac488b1b)

---
updated-dependencies:
- dependency-name: actions/labeler
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-05 07:28:27 -05:00
tetektoza b55de1f9c1 Tests: Correct testcases after scene graph reordering in Clarify Select 2025-09-05 10:42:02 +02:00
tetektoza adb6d63f9c Gui: Add solid selection spport for top-lvl objects in pick menu 2025-09-05 02:24:53 +02:00
tetektoza 789b782b68 Gui: Break up condition for Clarify Selection to separate variables 2025-09-05 02:13:13 +02:00
tetektoza 745629d000 Gui: Allow long press timeout for Clarify Selection to be configurable 2025-09-05 02:05:52 +02:00
tetektoza 7dd0a90bea Gui: Align to use translated strings in SelectionView 2025-09-05 01:52:16 +02:00
tetektoza ccb42780c2 Gui: Add variable names for grouping thresholds in SelectionView 2025-09-05 01:41:51 +02:00
tetektoza 529f5be4a4 Gui: Replace usage of dynamic_cast with freecad_cast in SelectionView 2025-09-05 01:03:50 +02:00
tetektoza a99b6f9f41 Gui: Use cleaner variable naming for menu items in SelectionView 2025-09-05 01:00:37 +02:00
tetektoza 13f00488cb Gui: Use assignment in if statement for menus iterator 2025-09-05 00:49:24 +02:00
tetektoza 96dc1b7162 Gui: Convert Clarify Selection usage in SelectionSingleton to instance 2025-09-05 00:48:02 +02:00
tetektoza 572db4db80 Gui: Merge standard delayed paths with delayed priority paths 2025-09-04 23:42:11 +02:00
PaddleStroke 09128636ad PartDesign: Fix pattern Add/remove buttons #23626 2025-09-04 22:24:37 +02:00
Max Wilfinger 9815682b8d Part: Make dragger attach to the midpoint / axis for circular edges and faces 2025-09-04 22:23:46 +02:00
marcuspollio b543993a1b BIM: update Views Panel and Status Bar icons and some more (#23561)
* BIM: update View Panel and Status Bar icons and some more

* BIM: update icons - address review

* Update src/Mod/BIM/bimcommands/BimViews.py

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

* Update src/Mod/BIM/bimcommands/BimViews.py

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

---------

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2025-09-04 19:37:45 +02:00
dependabot[bot] e3a9045c0b Bump actions/labeler from 5.0.0 to 6.0.0
Bumps [actions/labeler](https://github.com/actions/labeler) from 5.0.0 to 6.0.0.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/8558fd74291d67161a8a78ce36a881fa63b766a9...f1a63e87db0c6baf19c5713083f8d00d789ca184)

---
updated-dependencies:
- dependency-name: actions/labeler
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 12:01:02 -05:00
dependabot[bot] 42557f2772 Bump actions/stale from 9.1.0 to 10.0.0
Bumps [actions/stale](https://github.com/actions/stale) from 9.1.0 to 10.0.0.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/5bef64f19d7facfb25b37b414482c7164d639639...3a9db7e6a41a89f618792c92c0e97cc736e1b13f)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: 10.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 18:23:55 +02:00
FEA-eng b9efb481a2 PartDesign: Correct typo in multiple solids error (#23642)
* PartDesign: Update FeatureFillet.cpp

* PartDesign: Update FeaturePipe.cpp

* PartDesign: Update FeatureLoft.cpp

* PartDesign: Update FeatureExtrude.cpp

* PartDesign: Update FeatureGroove.cpp

* PartDesign: Update FeatureBoolean.cpp

* PartDesign: Update FeatureChamfer.cpp

* PartDesign: Update FeatureHole.cpp

* PartDesign: Update FeatureDraft.cpp

* PartDesign: Update FeatureRevolution.cpp

* PartDesign: Remove empty lines added by GitHub editor

* PartDesign: Remove empty lines added by GitHub editor

* PartDesign: Remove empty lines added by GitHub editor

* PartDesign: Remove empty lines added by GitHub editor

* PartDesign: Remove empty lines added by GitHub editor

* PartDesign: Remove empty lines added by GitHub editor

* PartDesign: Remove empty lines added by GitHub editor

* PartDesign: Remove empty lines added by GitHub editor

* PartDesign: Remove empty lines added by GitHub editor
2025-09-04 14:36:15 +00:00
FEA-eng 583dd38e08 FEM: Add property to disable PaStiX mixed precision for the ccx solver (#23539)
* FEM: Update solver_calculix.py

* FEM: Update solver.py

* FEM: Update calculixtools.py

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

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

* FEM: Update calculixtools.py

* FEM: Update task_solver_ccxtools.py

* FEM: Update task_solver_ccxtools.py

* FEM: Update solver_calculix.py

* FEM: Update solver.py

* FEM: Update calculixtools.py

* FEM: Update task_solver_ccxtools.py

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-04 09:23:08 -05:00
PaddleStroke 0f07a936d9 PartDesign: Polar pattern: Spacings off by one. 2025-09-04 13:56:06 +02:00
Chris Hennes fd20bdd6d8 Update translations 2025-09-03 2025-09-04 11:37:11 +02:00
FEA-eng f00aa86afc FEM: Amplitude support for final temperature field (#23530)
* FEM: Update FemConstraintInitialTemperature.cpp

* FEM: Update FemConstraintInitialTemperature.h

* FEM: Update write_amplitude.py

* FEM: Update write_constraint_finaltemperature.py
2025-09-03 22:15:25 -05:00
pre-commit-ci[bot] d59babd8d3 [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pre-commit/mirrors-clang-format: 182152eb8c5ce1cf5299b956b04392c86bd8a126 → 86fdcc9bd34d6afbbd29358b97436c8ffe3aa3b2](https://github.com/pre-commit/mirrors-clang-format/compare/182152eb8c5ce1cf5299b956b04392c86bd8a126...86fdcc9bd34d6afbbd29358b97436c8ffe3aa3b2)
2025-09-03 22:14:55 -05:00
Roy-043 9aa7358530 Draft: check if autogroup exists 2025-09-03 22:11:48 -05:00
luzpaz 0367e5f791 CI: Add new entries to codespellignore file
Added several more typos for codespell to ignore.
2025-09-03 22:05:22 -05:00
sliptonic 0020057f83 [CAM] Make sure CAMAsset location exists (#23618)
* Fixes #22858

Ensure that the default CAM asset location exists and is created in the user data location

* Update src/Mod/CAM/Path/Preferences.py

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-09-03 15:32:33 -05:00
Max Wilfinger a0761c4cfa Fix missed string update 2025-09-03 13:35:10 -05:00
Ryan Kembrey c61eef3688 TechDraw: Remove duplicate import 2025-09-03 18:40:01 +02:00
Roy-043 2fa4934e3f Draft: change task panel title of Draft_CubicBezCurve to Title Case 2025-09-03 16:44:04 +02:00
Pieter Hijma 459a8bc4c8 Gui: Adjust size of the Add Property dialog 2025-09-03 15:33:45 +02:00
Pieter Hijma 66df6b39c8 Gui: Select the VarSet when clicking Std_VarSet
To make clear which VarSet is being added to, the VarSet is being
selected.
2025-09-03 11:51:14 +02:00
Pieter Hijma 550aac53a7 Gui: Improve adding multiple properties
This is based on a review of the DWG suggesting to remove the checkbox
for adding multiple properties and change the Ok button to an Add
button.

To make the impact of an extra click to cancel adding properties, the
Cancel button is the default right after adding a property (which
already disabled the Ok/Add button).
2025-09-03 11:51:14 +02:00
Pieter Hijma 93a73d55e1 Gui: Move DlgAddPropertyVarSet -> DlgAddProperty 2025-09-03 11:50:49 +02:00
Pieter Hijma 37e8a753b6 Gui: Disallow adding props to multiple objects
This commit is in preparation for switching the old Add Property dialog
to the Add Property VarSet dialog.  For now, this dialog does not handle
adding properties for multiple objects.
2025-09-03 10:24:54 +02:00
Pieter Hijma 65a8597ad8 Gui: Generalize add property VarSet dialog
This commit ensures that the adding properties does not work only for
VarSets, but also for generic property containers.
2025-09-03 10:21:07 +02:00
Pieter Hijma 35cd20bb17 Gui: Simplify title Add Property VarSet dialog 2025-09-03 10:21:07 +02:00
Ryan Kembrey a8d8d59f2e TechDraw: Fix regression in hiding vertices 2025-09-03 16:17:25 +10:00
tetektoza ec8cff9e5f Measurement: Provide correct VP name for COM (#23329)
* Measurement: Provide correct VP name for COM

This patch tries to provide proper ViewProvider name for COM, which
results in a proper pixmap assignment, which won't fallback to the
default measurement's tool icon for COM.

Since MeasurePython runs before actual COM python proxy assignments,
we can't access proxy easily from this point of code.

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

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

* Measure: Use starts_with instead of find

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

* Update src/Mod/Measure/App/MeasureBase.cpp

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-09-03 05:17:24 +00:00
mosfet80 9c02cd0014 TechDraw: Remove unused functions (#21483)
* removed unused functions

remode update

* removed unused function

removed     CreateTechDrawCommandsDims()
clean code

* removed unused function

removed     CreateTechDrawCommandsDims()
clean code

* TD: Restore CreateTechDrawCommandsDims() function

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-09-02 23:45:40 -05:00
George Peden eef738b312 Feature/sketcher constraint symbol size (#23366)
* Sketcher: Initial wiring up of independent contraint symbol size.

* Sketcher: Align constraint symbol size controls with other preferences

- Refactored the Sketcher preferences UI to place the "Constraint symbol size" checkbox and spinbox in separate grid columns, matching the layout of other settings.
- Ensured the spinbox aligns visually with other value fields for a more consistent and professional appearance.
- Preserved the enable/disable behavior of the spinbox based on the checkbox state.

* Update constraint size label

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

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

* style: simplify constraint icon size logic and remove stray blank line

* Sketcher: optional constraint symbol size defaults to font size preference (per PR comment)

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-02 22:58:56 -05:00
tetektoza dd466ac8e7 Gui: Use QByteArray directly in setData without intermediate variable 2025-09-03 01:24:58 +02:00
tetektoza c0763302df Gui: Use variable assignment directly in if statement 2025-09-03 01:24:58 +02:00
tetektoza 91b4719e30 Gui: Use copy for currentSelections in Clarify Selection tool 2025-09-03 01:24:58 +02:00
tetektoza 8bc6ab2eef Gui: Add a comment explaining invoke(0) call in NavigationStyle 2025-09-03 01:24:58 +02:00
tetektoza 1a6a28f9a0 Gui: Extract helper methods for navigation context menu 2025-09-03 01:24:58 +02:00
tetektoza 5a17297f5e Gui: Use QStringLiteral for selected element 2025-09-03 01:24:58 +02:00
tetektoza 644e7ae5af Gui: Fix typo in SelectionView 2025-09-03 01:24:58 +02:00
tetektoza 52a64aa5b7 Gui: Check for nullptr in activeWindow in CommandView directly 2025-09-03 01:24:58 +02:00
tetektoza 2905476491 Gui: Use freecad_cast where possible in CommandView for ClarifySelection 2025-09-03 01:24:58 +02:00
tetektoza c3c0644020 Gui: Use designated initializer in CommandView 2025-09-03 01:24:58 +02:00
tetektoza 72008cb7f6 Gui: Initialize SbVec2s point directly in CommandView 2025-09-03 01:24:58 +02:00
tetektoza 6f0dd99819 Part/Gui: Rename Pick Geometry tool to Clarify Selection
Co-authored-by: realthunder <realthunder@users.noreply.github.com>
2025-09-03 01:24:58 +02:00
tetektoza 0608f3b56c Gui: Add support for toggling PickGeometry with long-press LMB
Co-authored-by: realthunder <realthunder@users.noreply.github.com>
2025-09-03 01:24:58 +02:00
tetektoza edfeff975e Core/Gui: Render primitives on top of the scene in PickGeometry
+ added some better grouping for items, which are assigned per object
  right now. For example, if we exceed 10 items per object it gets an
  additional group.

Co-authored-by: realthunder <realthunder@users.noreply.github.com>
2025-09-03 01:24:58 +02:00
tetektoza 5e0b74dce6 Core: Add preselect on hovered menu items in PickGeometry tool
Co-authored-by: realthunder <realthunder@users.noreply.github.com>
2025-09-03 01:24:57 +02:00
tetektoza b3f9eba742 Core: Respect highlighting for preselection too
Co-authored-by: realthunder <realthunder@users.noreply.github.com>
2025-09-03 01:24:57 +02:00
realthunder c52bfd37de Gui: Add a context menu to select obstructed items (from RT fork)
As the title says, this is from RT's fork. I only adjusted it a little
bit and removed pie selection which was previously in the
implementation.

To activate context menu - "G, G", then if it can't resolve edges vs
faces, it adds QMenus on top to let user decide which one to select.

Co-authored-by: tetektoza <tetektoza@users.noreply.github.com>
2025-09-03 01:24:57 +02:00
Benjamin Nauck 04e085cba3 Merge pull request #23344 from 3x380V/moment
Core: Distinguish between energy and torque physical quantities
2025-09-02 23:58:19 +02:00
Kacper Donat a581ade312 PartDesign: fix the draggers for pad type and hole (#23582)
* PartDesign: fix the draggers for pad type and hole

* Gui: remove duplicated checkbox
2025-09-02 23:28:23 +02:00
captain0xff 6057e4a7ad Gui: remove duplicated checkbox 2025-09-03 01:11:16 +05:30
Chris Hennes 62ec6f773c App: Fix safe mode and home directory 2025-09-02 21:39:09 +02:00
Roy-043 09b97e0bfd Draft: Fix some prefs GUI texts (related to Title Case) (#23573)
* Draft: Fix some prefs GUI texts (related to Title Case)

* Draft: Fix some prefs GUI texts (related to Title Case)

* Draft: Fix some prefs GUI texts (related to Title Case)
2025-09-02 21:18:57 +02:00
captain0xff 599d82488d PartDesign: fix the draggers for pad type and hole 2025-09-03 00:42:39 +05:30
tarman3 d2f5dcebc2 CAM: Create stock height 1 mm for flat objects 2025-09-02 20:50:44 +03:00
tarman3 e248f98097 CAM: Fix Task panels for expression in App::PropertyLink (#22955) 2025-09-02 11:22:32 -05:00
tarman3 4fc408910c CAM: Fix uccnc postprocessor for G2|G3 (#23194) 2025-09-02 11:20:14 -05:00
J-Dunn 96f32cae5a CAM: correct grbl_post retract heights (#23010)
* CAM: correct grbl_post retract heights

Some small corrections to retraction heights in expansion of G8x drilling cycles for GRBL machines. 

Add comment blocks from NIST definitions to aid maintenance and understanding. 
Rename some variables for clarity and ease of future maintenance.

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

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

* correct typo which prevented final retract move

* [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-09-02 11:15:37 -05:00
tarman3 dfcaeaa5d2 CAM: Fix missed gcode save dialog (#23517) 2025-09-02 11:02:24 -05:00
captain0xff d37230175f Part: disable dragger for the thickness operation 2025-09-02 17:39:17 +02:00
David Kaufman f156e467c9 [CAM] Fix ramp dressup performance (#21944)
* [CAM] fix biggest performance problems in ramp dressup

key items:

- finding the index of the current edge with edeges.index(edge) was very
  expensive; fixed by tracking the index while looping

- checking which edges were rapids with edge equality was also
  expensive; fixed by keeping a list of indexes of rapid input edges,
and tagging output edges with whether or not they are rapids

* [CAM] comment out Path.Log.debug in hot segments of ramping code

Even when low level logs are supposed to be suppressed, Path.Log.debug
takes take invoking traceback.extract_stack. This time adds up if logs
are invoked in frequently run loops.

* Fix CAM test

* [CAM] reimplment ramp method 1 with faster code

* [CAM] reimplement ramp methods 2, 3, and helix

* [CAM] patch to make output match original

* [CAM] ramping full performance + functionality fix
2025-09-02 10:32:03 -05:00
David Kaufman 540ce39cb1 [CAM] Add UI elements for viewing and editing tool controller parameters from within the operation edit UI (#23180)
* [CAM] extract tool controller ui elements into their own file

* [CAM] make the changes in the tool controller UI only apply when ok is clicked

* [CAM] Add tool controller edit panel to the Profile operation

* [CAM] Add copy button to in-operation tool controller editor

* [CAM] clean up changes

* [CAM] Add tool controller edit UI to all operations

Notes on changes that were not a simple copy/paste job from the changes
I made for Profile:

- Deburr: changed TC/coolant rows from 1 and 2 to 0 and 1

- Probe: didn't work at all initially due to bug in main where ShapeName
  changed to ShapeType. I added a utility for reading either a ShapeType
or a ShapeName (check for both properties, convert ShapeType to lower
case) and applied it to probe and camotics

- Drilling: moved Keep Tool Down checkbox up from row 8 to row 2 (all
  intermediate rows were missing) and added the edit checkbox in row 3
below it

- VBit, Probe (or anything else that requires a specific tool type): in
  Base.py setupToolController(), I added a check to see if the currently
selected tool is an invalid type, and if so and there is a valid tool,
then change to that one. This fixes two UI bugs. Plausibly pre-existing,
if there is one valid tool and an invalid tool is selected, it's
impossible to switch to the valid one because you can't generate a combo
box change event for the new tool. Definitely new: if an invalid tool is
selected and there are no valid tools, the combo box will be empty but
the new tool controller edit utility will let you edit the current TC
anyway.

- Thread Milling: replaced the Tool Controller GroupBox with the
  standard QFrame layout, and added the checkbox. Note that this
operation doesn't have a UI element for coolant -- likely a bug, but I
didn't look into it

- Surface: Changed from form layout to grid layout. Deleted an old
  SurfaceEdit.ui file -- it was replaced with PageOpSurfaceEdit.ui in
2017 but not deleted (commit 8637831132)

- Waterline: Changed from form layout to grid layout

* [CAM] Bug fixes

setupUi() wasn't called on the tool controller editor, preventing
changes in its UI from being written back to the object immediately.
This caused weird behavior where if you edited a field twice it would
reset the second time it was focused

Added a hook to automatically update the TC combo box when the TC name
(or anything else about it, since that was easier) changes

* Fix usage of QSignalBlockers

* [CAM] Block scroll events on tool number and spindle direction when not
focused

Specifically, if you mouse over either of these UI elements and use the
scroll wheel, it used to focus the element and change its value. This
commit makes it do neither of those things, for these specific elements,
as a measure against users accidentally changing these values.

* disable tcNumber edit field in operations panel

* Add "New tool controller" option to TC combo box

When selected, it opens (toggles, technically) the tool bit dock and
returns to the previous selection. Adding a new tool controller using
the dock (already, before this commit) automatically switches the
operation's tool controller to the new one

* Add "Copy" option to tool controller combo box

* Copy TC function only in combo box, no button

* [CAM] update in-operation "new tool controller" function to use a dialog

* [CAM] make the tool selector always a dialog and never a dock

* remove spacer from ToolControllerEdit.ui to fix exces white space

* [CAM] change tool dialog default sizing/spacing

* [CAM] fix bug where copying tool controller doesn't copy all values
2025-09-02 10:19:33 -05:00
marioalexis bfb912b38e Fem: Update CalculiX test 2025-09-02 10:33:35 -03:00
marioalexis 3207ca6b4a Fem: Use maximum increments for electromagnetic mode 2025-09-02 10:33:35 -03:00
marioalexis c779bc1374 Fem: Rename CalculiX time properties 2025-09-02 10:33:35 -03:00
marioalexis a98500cc05 Fem: Enable time increments for non-transient analysis 2025-09-02 10:33:35 -03:00
Benjamin Nauck 3e73005653 Merge pull request #23519 from kadet1090/show-axis-cross-on-top
Gui: Show Axis Cross on top
2025-09-02 15:12:39 +02:00
PaddleStroke a9065a33c5 Syntax error 2025-09-02 14:40:37 +02:00
Ian 'z0r0' Abreu 0217c1ef97 updating docblock locations. 2025-09-02 08:28:47 -04:00
Ian 'z0r0' Abreu 8d56e3e529 reverting author metadata 2025-09-02 08:25:37 -04:00
luzpaz e1dcb21165 AddonManager: ignore everything but dirs in getVerboseAddOnsInfo
Before this PR addon manager was displaying manifest.json files along with backup files. Now those are ignored.
Fixes #23545
2025-09-01 22:32:23 -05:00
Ian 'z0r0' Abreu b24040ee52 Adding license documentation to interface class docblocks. 2025-09-01 21:50:59 -04:00
B0cho cc46344f6b Core: Move 'Result' message below 'Expression' input 2025-09-02 01:09:12 +02:00
B0cho 8450fbae97 Core: Show 'Expression' completer under cursor position 2025-09-02 01:09:12 +02:00
B0cho 56be60c639 Core: Fix 'QTextEdit' background-color
Suggested and Co-authored-by: @MisterMakerNL
2025-09-02 00:41:39 +02:00
B0cho 8b1dc9a913 Core: Make too long 'Result' message elide in Expression editor 2025-09-02 00:41:39 +02:00
B0cho 1f4b1d85c2 Core: Remove redundant spacers from Expression editor 2025-09-02 00:41:39 +02:00
B0cho 2ab3eaba21 Core: Fix 'Result' message text not wrapped in Expression editor 2025-09-02 00:36:16 +02:00
Kacper Donat 6c49ff9b5b Merge pull request #23549 from captain0xff/gizmo
PartDesign: improve the interactive draggers
2025-09-02 00:25:55 +02:00
B0cho 8b93ec2eb2 Core: Switch widget from 'ExpressionLineEdit' to 'ExpressionTextEdit'
+ minor dialog layout adjustments
2025-09-01 23:47:16 +02:00
PaddleStroke 3ce9452771 Assembly: Solver message taskbox. UI setup, App not implemented yet. (#23420)
* Assembly: Solver message taskbox. UI setup, App not implemented yet.

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

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

* Update TaskAssemblyMessages.cpp

* Update ViewProviderAssembly.cpp

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-01 21:29:06 +00:00
Kacper Donat 821e79b58a Merge pull request #23552 from pieterhijma/delete-key-prop
Gui: Add a binding for the Delete key to remove a property
2025-09-01 23:18:15 +02:00
Kacper Donat 682ba64c46 Gui: Show Axis Cross on top 2025-09-01 23:07:53 +02:00
Kacper Donat 45103d866d Gui: SoFCPlacementIndicatorKit add missing headers 2025-09-01 23:07:32 +02:00
Benjamin Nauck e5ed0b3cb9 Merge pull request #23399 from wwmayer/quick_measure
Measure: Fix quick measure command
2025-09-01 21:11:26 +02:00
captain0xff afdeacee05 PartDesign: set the linear dragger increment based on the zoom level 2025-09-02 00:32:25 +05:30
Pieter Hijma f552808811 Gui: Add Property View delete key binding
This commit adds a binding for the delete key to delete properties from
property containers.
2025-09-01 20:53:32 +02:00
captain0xff 37100c6179 PartDesign: fix draggers for chamfer with two dimensions 2025-09-01 23:20:18 +05:30
jffmichi a353ef9307 CAM: use dict constructor for Command in VCarve 2025-09-01 11:24:32 -05:00
Chris Hennes 423ea14ff2 Core: Record module failure information during startup 2025-09-01 18:10:04 +02:00
drwho495 c01b12044a PartDesign: Fix revolution's Toponaming support (#23342)
* PartDesign: Fix revolution's Toponming support

* fix test
2025-09-01 10:56:43 -05:00
tetektoza 7c4131c4ef Sketcher: Disable autoscale if new constraint value is below precision
As the title says - we can get into a scenario where user can specify
constraint equal to 0.0, or similar small value and the scale factor
will become 0 as well, resulting in all geometry trying to be rescaled
to degenerate geometry.

So this patch filters those values out, and bails out from auto-scaling
leaving only solver to handle this value.
2025-09-01 10:55:12 -05:00
Edgar Robles 5287e3f4a6 BIM: Add T slot profile option (#23334)
* feat(profiles): Add square metric t-slot profiles

Request also allows to use profiles in quetzal workbench

* fix(ProfileTaskPanel): fix class name on proxy & sufix

* refactor(ArchProfile, Arch): Modify T-s to TSLOT

and also fix hole_diameter not assigned

* fix(ArchProfile,profiles): Change t slot profile class Name
2025-09-01 17:54:20 +02:00
Chris Hennes d7e2c42f45 Update clang-tidy checks to remove avoid-do-while
While the advice is good, the overwhelming majority of "do-while" warnings that come up in our codebase are macros using a standard pattern using a do-while loop to encapsulate the macro's work.
2025-09-01 17:51:51 +02:00
Benjamin Nauck 14f9e85600 Merge pull request #23502 from maxwxyz/issue-20633
Part: Improve TopoShape::findPlane
2025-09-01 17:47:32 +02:00
Chris Hennes e706122bbb Update translations 2025-08-30 2025-09-01 17:44:54 +02:00
Kacper Donat 767c3f1f67 PartDesign: Highlight profile for profile based features
This adds highlight for sketches etc that are used to create certain
featuires.
2025-09-01 10:44:29 -05:00
Roy-043 23691409e0 BIM: fix self.Type regression for Wall, Stairs and Structure (#23476)
* BIM: fix self.Type regression for Wall

* BIM: fix self.Type regression for Stairs

* BIM: fix self.Type regression for Structure
2025-09-01 17:44:10 +02:00
Adrian Insaurralde Avalos ff91ce148f Mesh: fix #18801 - simply call gmsh if gmsh executable path is empty 2025-09-01 10:43:00 -05:00
PaddleStroke f51e1eeb22 PartDesign: Enable selecting a sketch as base plane of another sketch (#23428)
* PartDesign: Enable selecting a sketch as base plane of another sketch

* to squash

* Part: Attacher: enable attaching to empty objects such as empty Sketch or Body.

* Update SketchWorkflow.cpp
2025-09-01 17:39:51 +02:00
David Balch 7d38cc45ec BIM: Remove wrong IfcType for Column/Beam
Removes check on function parameters for height & length (first
introduced in commit 5217b24), relying on values assigned in "obj".

If those params are present, they're assigned to "obj" anyway, so
the check is redundant.

Fixes #22585
2025-09-01 17:38:27 +02:00
FEA-eng 0a392c2a3f FEM: Add support for CalculiX truss elements (#23224)
* FEM: Update element_geometry1D.py

* FEM: Update write_femelement_geometry.py

* FEM: Update write_mesh.py

* FEM: Update solver.py

* FEM: Update solver_calculix.py

* FEM: Update element_geometry1D.py
2025-09-01 10:37:44 -05:00
FEA-eng a5751e5a3b FEM: Update DlgSettingsFemZ88.ui 2025-09-01 17:18:57 +02:00
Pieter Hijma 14087606f6 Gui: Fix Property View copy bug
The context menu of the property view shows a "Copy" action for
properties with which the value of the property can be copied to the
clipboard.  When multiple properties are selected, this menu item
appears multiple times and in that case it copies the name of one of the
properties.  This commit fixes this.
2025-09-01 17:06:40 +02:00
Benjamin Nauck baef697977 Merge pull request #23101 from 3x380V/td_fixes
TechDraw: random fixes
2025-09-01 15:58:01 +02:00
Pieter Hijma cf15c637b8 Gui: Process minor review comments
Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2025-09-01 15:32:36 +02:00
Ladislav Michl 7f2ddc5ac1 TD: remove unused clearLineSets()
d2ce7f8145 ("TD: Remove calls to now-empty clearLineSets() method")
removed last calls to clearLineSets(), so remove it entirely.
2025-09-01 14:12:58 +02:00
wmayer 2006480ae8 TD: Fix compiler warnings 2025-09-01 14:11:52 +02:00
wmayer eb2c6bf73f TD: Fix loading project files
With PR 19941 there is a regression where parts of the document
won't be restored. This is caused by overriding the virtual method
handleChangedPropertyType() but not calling the method of the base class.

While searching for a fix another problem showed up where (due to the
incomplete loading) exceptions are thrown but not handled within TD.
Therefore the method recompute() is overridden in DrawView to also handle
OCC exceptions.
2025-09-01 14:11:52 +02:00
wmayer cd31d0e698 TD: Fix crash on selecting 3D edge for dimension
Unlike in the bug description of issue 19654 the user doesn't have
to preselect an edge in the 3D view but first start the dimension
command and then select an edge.

This commit adds some security checks to TechDrawHandler::quit(),
TechDrawHandler::getPage() and TDHandlerDimension::onSelectionChanged()
to be on the safe side that no null pointers are dereferenced.

But the ultimative fix for this whole problem is to change
activateHandler() and immediately delete the passed TechDrawHandler if
it fails to find the appropriate QGVPage. This is needed as otherwise
the handler behaves like a ghost object that affects the selection
mechanism and disallows to select anything in the 3D view or the tree
view.

Fixes issue 19654
2025-09-01 14:11:51 +02:00
PaddleStroke 98ad0e9fd8 PartDesign: TaskExtrudeParameters improve ui by letting line visible 2025-09-01 08:40:29 +02:00
matthiasdanner 6d5800c862 Sketcher: Fix Assertion Crash when selecting a Constraint in a group (#23491)
* Sketcher: Fix Assertion Crash when selecting a Constraint in a group

* Update src/Mod/Sketcher/Gui/EditModeConstraintCoinManager.cpp

---------

Co-authored-by: Matthias Danner <28687794+matthiasdanner@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-09-01 06:28:13 +00:00
wandererfan f5db0c6589 [TD]fix ISOLineSpacing preference not applied 2025-09-01 00:26:22 -05:00
FEA-eng 2244a16790 FEM: Add defined temperature field with CalculiX (*TEMPERATURE) (#23277)
* FEM: add write_constraint_finaltemperature.py

* FEM: Update CMakeLists.txt

* FEM: Update membertools.py

* FEM: Update FemConstraintInitialTemperature.cpp

* FEM: Update FemConstraintInitialTemperature.h

* FEM: Update write_constraint_initialtemperature.py

* FEM: Update write_femelement_material.py

* FEM: Update writer.py

* FEM: Update write_constraint_finaltemperature.py

* FEM: Update write_femelement_material.py

* FEM: Update write_femelement_material.py

* FEM: Update box_static.inp

* FEM: Update ccx_cantilever_beam_circle.inp

* FEM: Update ccx_cantilever_beam_pipe.inp

* FEM: Update ccx_cantilever_beam_rect.inp

* FEM: Update ccx_cantilever_ele_hexa20.inp

* FEM: Update ccx_cantilever_ele_quad4.inp

* FEM: Update ccx_cantilever_ele_quad8.inp

* FEM: Update ccx_cantilever_ele_seg2.inp

* FEM: Update ccx_cantilever_ele_seg3.inp

* FEM: Update ccx_cantilever_ele_tria3.inp

* FEM: Update ccx_cantilever_ele_tria6.inp

* FEM: Update ccx_cantilever_faceload.inp

* FEM: Update ccx_cantilever_nodeload.inp

* FEM: Update ccx_cantilever_prescribeddisplacement.inp

* FEM: Update constraint_contact_shell_shell.inp

* FEM: Update constraint_sectionprint.inp

* FEM: Update constraint_selfweight_cantilever.inp

* FEM: Update constraint_tie.inp

* FEM: Update constraint_transform_beam_hinged.inp

* FEM: Update constraint_transform_torque.inp

* FEM: Update material_multiple_bendingbeam_fiveboxes.inp

* FEM: Update material_multiple_bendingbeam_fivefaces.inp

* FEM: Update material_multiple_tensionrod_twoboxes.inp

* FEM: Update material_nonlinear.inp

* FEM: Update square_pipe_end_twisted_edgeforces.inp

* FEM: Update square_pipe_end_twisted_nodeforces.inp

* FEM: Update write_constraint_finaltemperature.py

* FEM: Update write_femelement_material.py

* FEM: Update write_constraint_finaltemperature.py

* FEM: Update FemConstraintInitialTemperature.cpp

* FEM: Update FemConstraintInitialTemperature.h
2025-08-31 23:28:56 -05:00
Roy-043 ad0606c69b Mesh: Gmsh dropdown to sentence case 2025-08-31 23:26:18 -05:00
Chris Hennes 8221ab77d7 Merge pull request #23503 from maxwxyz/issue-22123
Fix STEP import with bad string behavior
2025-08-31 23:23:25 -05:00
luzpaz 8f53b5164a BIM: fix trailing whitespace and refine source comment grammar (#23496)
* BIM: fix trailing whitespace and refine source comment grammar

* BIM: remove unnecessary newline
2025-08-31 23:22:39 -05:00
luzpaz e30408eec7 Part: remove trailing whitespace 2025-08-31 23:21:13 -05:00
PaddleStroke 970f771127 Core: Datums: Make getDirection and getBasePoint aware of LCS position 2025-08-31 22:54:03 -05:00
Chris Hennes 2f9f8eda18 Merge pull request #22998 from Rexbas/prevent-showing-context-menu
Navigation: Prevent showing context menu after panning or rubber band selection
2025-08-31 22:41:05 -05:00
Kacper Donat 5669db8d8b Revert "Gui: Mark mouse move action handled to skip digging nodes"
This reverts commit ccb417e00d.
2025-09-01 05:33:02 +02:00
Mathieu GRENET 692101bd1b Assembly: Fix inconsistent positioning in distance joint validation
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.
2025-08-31 21:31:45 -05:00
wandererfan a0305388c3 [TD]allow finding child view outside clip rectangle 2025-08-31 20:56:14 -05:00
tetektoza 66e099aedb Merge pull request #23192 from tetektoza/fix/22253_fix_losing_expression_during_sketcher_tools_usage
Sketcher: Copy expressions when rotating/moving geometry
2025-08-31 20:12:22 -05:00
Chris Hennes b898703841 Merge pull request #23310 from Roy-043/Draft-more-logical-placement-for-3-point-arcs
Draft: more logical placement for 3 point arcs
2025-08-31 18:44:02 -05:00
Bas Ruigrok cc930ae145 Gui: Allow switch to panning after canceling sketcher rubber band selection 2025-08-31 18:37:09 -05:00
Bas Ruigrok e469eb5ccb Sketcher: Cancel rubber band selection with RMB
Cleanup
2025-08-31 18:36:38 -05:00
Ian 'z0r0' Abreu 6fa1adf141 Cleaning up xml file generation, and erroneous export annotations from interface bindings. 2025-08-31 18:28:41 -04:00
Bas Ruigrok 39329e547f Sketcher: Don't show the context menu after rubber band selection 2025-08-31 17:24:28 -05:00
Bas Ruigrok ac3b441cba Gui: Reset navigation flags when the new mode is not IDLE or when the mouse buttons are released 2025-08-31 17:24:28 -05:00
tetektoza 96d9cd3739 Core: Do not clear highlight if filter rejected selection
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.
2025-08-31 17:23:26 -05:00
Chris Hennes 880df78906 Merge pull request #23062 from kadet1090/pd-boolean-preview
PartDesign: Implement preview for Booleans
2025-08-31 15:36:38 -05:00
Kohei Takahashi ccb417e00d Gui: Mark mouse move action handled to skip digging nodes 2025-08-31 22:09:32 +02:00
theo-vt 0c4e125e44 Quickmeasure: Make measuring holes easier (#23385)
* 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>
2025-08-31 21:57:00 +02:00
Ryan K 25d1a51fb4 Gui: Widen the default customize dialog (#22714)
* 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>
2025-08-31 21:53:51 +02:00
Ian 'z0r0' Abreu 4fc94492cd Finalizing Python interface bindings for TechDraw. 2025-08-31 15:43:50 -04:00
Ian 'z0r0' Abreu 6d3fb9393a Finalizing Python interface bindings for Robot, Spreadsheet, Surface. 2025-08-31 15:41:14 -04:00
Chris Hennes c26e3e9756 Base: Allow all valid Python 3 identifier characters
Note: Does not check for keywords, only character classes (not a change from the original code).
2025-08-31 21:39:49 +02:00
tetektoza 7b85239093 Sketcher: Use different colors for touch/window selection (#23261)
* 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>
2025-08-31 21:36:24 +02:00
Kacper Donat f502aad3b8 Merge pull request #23321 from chennes/refactorApplicationAndAddVersioning
Refactor App::Application directory handling and add versioning
2025-08-31 21:35:02 +02:00
Ian 'z0r0' Abreu 6e75aef81c Finalizing Python interface bindings for Import, Measure, Mesh, Points. 2025-08-31 15:34:03 -04:00
Ian 'z0r0' Abreu 2b889560d1 Finalizing Python interface bindings for Fem. 2025-08-31 15:27:21 -04:00
Ian 'z0r0' Abreu 9008cdb8ee Finalizing Python interface bindings for CAM. 2025-08-31 15:24:02 -04:00
Ian 'z0r0' Abreu c63ac5ffbc Finalizing Python interface bindings for assembly 2025-08-31 15:19:25 -04:00
Kacper Donat edad41c245 PartDesign: Change preview parameter to opacity from transparency 2025-08-31 21:12:07 +02:00
Kacper Donat 18792297f6 PartDesign: Implement preview for Booleans 2025-08-31 21:12:07 +02:00
Kacper Donat 0aa95996d9 Part: Add transform property to SoPreviewShape 2025-08-31 21:12:05 +02:00
Pieter Hijma bc406bee68 Gui: Add editing a property tooltip
This commit adds a way to edit the tooltip of a property in the Property
View.
2025-08-31 17:42:06 +02:00
pre-commit-ci[bot] b44dc26ff1 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-08-31 12:42:10 +00:00
wmayer ee2d35cad8 Test: Add test cases for Persistence::validateXMLString 2025-08-31 14:38:25 +02:00
wmayer 696c18b6da App: Fix output string to XML
Not all unicode characters are allowed as XML output. When writing disallowed characters the SAX parser throws an exception
when loading a project file that results into a broken document and thus to a possible loss of data.

This PR replaces all disallowed characters with an underscore and prints a warning.

This fixes https://github.com/FreeCAD/FreeCAD/issues/22123
Note: It does not fix an already corrupted project file.
2025-08-31 14:38:05 +02:00
Roy-043 ffb5d7a428 Update gui_snaps.py 2025-08-31 14:33:24 +02:00
wmayer 6500a872eb Part: Improve TopoShape::findPlane
Since OCC 7.7 using GeomLib_IsPlanarSurface without a custom tolerance may fail because the default value is too strict.
To fix this problem forward the passed tolerance value to GeomLib_IsPlanarSurface.

This fixes issue 20633
2025-08-31 14:27:09 +02:00
luzpaz 9d806694ff TechDraw: remove trailing whitespace 2025-08-30 22:10:14 -05:00
luzpaz 25a94705bd PartDesign: remove trailing whitespace
Removed from src/Mod/PartDesign/App/FeatureExtrude.cpp
2025-08-30 21:53:58 -05:00
dependabot[bot] eb5ef8d30d Bump actions/dependency-review-action from 4.7.2 to 4.7.3
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 4.7.2 to 4.7.3.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/bc41886e18ea39df68b1b1245f4184881938e050...595b5aeba73380359d98a5e087f648dbb0edce1b)

---
updated-dependencies:
- dependency-name: actions/dependency-review-action
  dependency-version: 4.7.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-30 21:00:44 -05:00
Chris Hennes 7eb15f53e5 Merge pull request #23100 from 3x380V/points
Points: Speed up translation of imported points
2025-08-30 20:04:08 -05:00
Jiří Pinkava c72d3f706b Remove unused DAGFilter 2025-08-30 17:23:18 -05:00
tetektoza e5518f9ad1 Draft: Call autogroup in make_hatch to put hatch in active group if any (#23464)
As the title says - this patch adds autogroup to hatch, so when created
it will be put in active group.
2025-08-30 22:24:33 +02:00
Jacob Oursland d3b00bdb18 Assembly: Update OndselSolver to the latest version. 2025-08-30 15:12:07 -05:00
FEA-eng 076b0bb98f FEM: Add tied contact with CalculiX (#23327)
* FEM: Update FemConstraintContact.cpp

* FEM: Update FemConstraintContact.h

* FEM: Update write_constraint_contact.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-30 14:24:22 -05:00
Chris Hennes 7d38562c79 Merge pull request #23368 from kadet1090/show-placement-and-plane-in-attacher
Gui: Show placement and plane in attacher
2025-08-30 14:13:43 -05:00
Chris Hennes b6705f5c60 Merge pull request #23453 from marioalexis84/fem-2d_calculix_loads
Fem: Add support for 2D loads with CalculiX
2025-08-30 14:09:27 -05:00
Chris Hennes 22fbdf4b58 Mesh: Add boost/agorithm/string.hpp to PCH 2025-08-30 18:44:21 +02:00
captain0xff 6e896b1248 PartDesign: add interactive gizmos 2025-08-30 17:02:52 +02:00
PaddleStroke 82ca06e7df Link: MaterialOverride: fix transparency inversion 2025-08-30 16:32:23 +02:00
marioalexis d35e5613cf Part: Remove PartDesign header 2025-08-30 15:06:31 +02:00
Max Wilfinger b57d0f37aa TechDraw: Change navigation cursors to SVG 2025-08-30 11:23:07 +02:00
Max Wilfinger 8132ffe9f0 Gui: Use BitmapFactory for generating cursors 2025-08-30 11:23:07 +02:00
Max Wilfinger 7293b323c4 Gui: Change navigation cursors to SVG 2025-08-30 11:23:07 +02:00
marioalexis a8747dca2a Fem: Update CalculiX test files 2025-08-29 19:57:42 -03:00
marioalexis 5fb640f219 Fem: Remove code duplication in MeshSetsGetter class 2025-08-29 19:57:42 -03:00
marioalexis 98e8704e79 Fem: Update body heat source element getter for CalculiX 2025-08-29 19:57:42 -03:00
marioalexis a907b60561 Fem: Add support for 2D geometries to Pressure constraint - fixes #12778 2025-08-29 19:57:42 -03:00
marioalexis 7027caf0aa Fem: Add support for 2D geometries to HeatFlux constraint 2025-08-29 19:57:42 -03:00
marioalexis 7afa56652c Fem: Add support for 2D geometries to Contact constraint - fixes #13280 2025-08-29 19:57:36 -03:00
marioalexis c483f5a890 Fem: Add support for 2D geometries to Tie constraint - fixes #13280 2025-08-29 14:03:31 -03:00
marioalexis 2e18224d8e Fem: Update electrostatic element getter for CalculiX 2025-08-29 14:03:31 -03:00
marioalexis 345f160e72 Fem: Improve meshtools.get_ccx_elements* functions 2025-08-29 14:03:31 -03:00
tetektoza 3b76d77ed8 Sketcher: Introduce Select All (Ctrl + A) (#23289)
* 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>
2025-08-29 16:52:43 +02:00
wwmayer e55e7f75d2 PD: Fix creation of pad from base feature
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 7a4bc95d47 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
2025-08-29 16:28:38 +02:00
luzpaz 13c9f5da83 Fix various typos
Found via codespell
2025-08-29 10:03:57 +02:00
PaddleStroke 7d3dd2605f PartDesign: Fix symmetric regression & LengthAlongSketchNormal (#23418)
* PartDesign: Fix symmetric regression

* to squash

* Fix LengthAlongSketchNormal not working

* to squash

* Fix checkbox not initially visible
2025-08-29 10:03:16 +02:00
Chris Hennes c4da72f55e CAM: Eliminate C++11 compiler warning by explicitly defaulting copy 2025-08-28 18:30:56 -05:00
Chris Hennes ff1932d550 FEM: remove unused variable from handlePropertyChange 2025-08-28 18:30:55 -05:00
Chris Hennes ece6353bd7 Part: Rename layout to avoid conflict 2025-08-28 18:30:55 -05:00
Chris Hennes acf9827891 PD: Remove unused parameter from *ReferenceSelection 2025-08-28 18:30:55 -05:00
Chris Hennes 780c49b6f0 Sketcher: Remove unused parameter from *ReferenceSelection 2025-08-28 18:30:55 -05:00
Chris Hennes 545dadab4d Gui: Remove unused variable from fuzzyMatch() 2025-08-28 18:30:22 -05:00
Chris Hennes 3f85cf14d3 Gui: For Qt 6.5 and later, use ParseOptions in xml 2025-08-28 18:30:22 -05:00
Chris Hennes 4be6a64abb Part: Remove unused arguments from isLinearEdge 2025-08-28 18:30:22 -05:00
Kacper Donat 78a579804c Gui: Fix reloading of themes 2025-08-28 17:14:55 -05:00
Max Wilfinger 9cae60a70f Update UI strings from Crowdin reports for consistency 2025-08-28 11:45:38 -05:00
Roy-043 6ab8589a03 Draft: Add edge-face intersection snap 2025-08-28 16:16:38 +02:00
Chris Hennes b1b97e44f1 Update translations 2025-08-28 16:14:49 +02:00
Roy-043 f7e88675e9 Mesh: Change 1 missed dialog title to Title Case (#23422)
* 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>
2025-08-28 10:51:14 +00:00
Chris Hennes 4f61369339 Addon Manager: Sync with upstream 2025-08-27 2025-08-28 11:24:50 +02:00
Kacper Donat 94e978439c Gui: Do not compute preview while restoring 2025-08-28 10:30:52 +02:00
Kacper Donat 44f58d7b72 Merge pull request #22923 from MisterMakerNL/Stylesheet_fixes2
Stylesheet fixes
2025-08-27 21:58:50 +02:00
Chris Hennes 102d0a9ac8 App: refactor to use unique_ptr
Also address other reviewer comments.
2025-08-27 11:51:22 -05:00
Chris Hennes 1ad8d0c0f2 Gui: Refactor to not use std::ranges
Older Ubuntu doesn't like the mechanism used to split on commas
2025-08-27 11:51:22 -05:00
Chris Hennes 58126c20e2 App: Fix problems with temp dir creation 2025-08-27 11:51:22 -05:00
Chris Hennes 2af71a5288 Gui: Detect new versions and offer to migrate
At the very end of the startup process, check to see if we are using a
versioned directory from a previous version, or we are not versioned at
all but are using the system's default storage location (that is, not a
custom config path set on the command line, etc.). If so, offer to
migrate the old configration folders into new ones for the current
version.
2025-08-27 11:51:22 -05:00
Chris Hennes 7ed4a9b731 App: Add directory versioning for data and config
At the application level, support the existence of subdirectories inside
the original config and data paths for a specific version of the
software. For a new installation, create them, but for an existing
installation use the most recent available version, even if it's not the
current one (and even if it's not versioned at all). Any migration must
be done at the GUI level due to the amount of data that is potentially
being copied during that process.
2025-08-27 11:51:22 -05:00
Chris Hennes 25f8a1eb57 App: Migrate directory handling to helper class
Use std::filesystem wherever possible, replacing most uses of
std::string when the object is actually a path. This is the first stage
of refactoring, and does not make any changes to Application that affect
client code. Access to the new directory-handling class is implemented,
but is unused by any external code.
2025-08-27 11:51:22 -05:00
Kacper Donat 56d8d37ab4 Gui: Move style parameters to yaml files 2025-08-27 17:59:10 +02:00
MisterMakerNL f87a9646a7 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
Chris Hennes bf4c850a4c Merge pull request #23140 from kadet1090/yaml-source-style-parameters
Gui: Add YamlParameterSource for StyleParameters
2025-08-27 10:34:17 -05:00
Kacper Donat 7c2f35c73f Gui: Show placement and plane in attacher 2025-08-27 16:53:37 +02:00
Kacper Donat 78bacd99d0 App: Add helpers for guarding property overrides.
Within code often it is required to temporarly override value of some
object properties. To properly restore old values they must be stored
somewhere and the developer must remember to manualy restore them.

This commit introduces utilities that can be used to make it easier
using RAII idiom to guard the overrides.
2025-08-27 16:53:37 +02:00
Kacper Donat 1720a71e33 Merge pull request #22944 from pieterhijma/expr-dialog-varset
Gui: Improve Expression dialog for VarSets
2025-08-27 16:14:25 +02:00
wwmayer 8512585a41 Measure: Fix quick measure command
* Clear status bar when switching off quick measure
* Activate quick measure by default
* Remove command from toolbar as there is currently no icon
2025-08-27 16:01:54 +02:00
Kacper Donat 27d2178008 Merge pull request #22389 from PaddleStroke/pd_transform
PartDesign: Transform tools
2025-08-27 15:22:26 +02:00
Pieter Hijma 8887ac8dff Gui: Add more translations to expr dialog
This adds translations to the feedback on the expression, for example if
there is a unit mismatch.
2025-08-27 14:59:28 +02:00
Pieter Hijma f672637155 Gui: Make expr dialog input validation themeable 2025-08-27 14:58:44 +02:00
marioalexis 105e918594 Fem: Acquire the GIL before running Python code 2025-08-27 14:58:06 +02:00
wwmayer 8944fd7d5e 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 5af7ad5df4 [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 0bf22ffca8 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
Pieter Hijma 4cf96385f3 Assembly: Update Ondsel Solver to the latest 2025-08-27 11:37:30 +02:00
Pieter Hijma 64895e0dad Gui: Add translations expression dialog VarSets 2025-08-27 09:52:50 +02:00
Pieter Hijma a9de6875a1 Gui: Process minor review comments
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-08-27 09:52:50 +02:00
Pieter Hijma efcbb008ac Gui: Process comments DWG expression dialog
This commit gives an error box on invalid input for the VarSet inputs.
2025-08-27 09:52:50 +02:00
Pieter Hijma 7bce610ef5 Gui: Process comments DWG expression dialog
This commit ensures that the buttons stay at the end of the dialog.
2025-08-27 09:52:50 +02:00
Pieter Hijma 7f758606bf Gui: Process review comments expr dialog
Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2025-08-27 09:52:50 +02:00
Pieter Hijma d09cba0092 Gui: Improve presenting VarSets in expr dialog 2025-08-27 09:52:50 +02:00
Pieter Hijma 459726a43f Gui: Stop remember state expression dialog
Before this commit, the expression dialog remembered the state of
whether the varset information should be shown.  This is removed
according to #17075.
2025-08-27 09:52:50 +02:00
Pieter Hijma 72fabf98b3 Gui: Improve layout expression dialog for varsets
According to #17075
2025-08-27 09:52:50 +02:00
Chris Hennes 5c73859134 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 99ad338d4b 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 6fe8a881e.

To avoid creating invalid filenames the original suffixes are restored.
2025-08-26 22:22:56 -05:00
corpix a5b3a2caac CAM: QTableView height too small in tasks panel #22957 (#23067) 2025-08-26 15:37:46 -05:00
Roy-043 6e5a1cd31c Remove gui_utils import from make_arc_3points.py 2025-08-26 12:34:42 +02:00
Adrian Insaurralde Avalos b7d2913b0c Fix autouic warnings about duplicate names in ui files 2025-08-26 11:00:30 +02:00
wwmayer 802fd0b1ef Gui: Fix crash in FileDialog::getSaveFileName 2025-08-26 09:35:01 +02:00
paddle 8b7290e91a PartDesign: Patterns: Tooltips. 2025-08-26 09:13:17 +02:00
PaddleStroke 5d2037c820 PartDesign: Transform rework 2025-08-26 08:46:51 +02:00
Benjamin Nauck f65cdb9794 Merge pull request #23291 from 3x380V/measurement
Measure: Useability improvements
2025-08-26 06:51:50 +02:00
drwho495 594acbb6a5 Toponaming: Remove updateElementReferences call in PropertyLinkSub (#23263)
* remove updateElementReferences call in PropertyLinkSub

* Retrigger checks

* update element refs after the document has restored
2025-08-25 21:39:40 -05:00
PaddleStroke 8b9ad3b509 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 314d66593c 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 a52a130a03 Assembly: Screw Joint, fix distance name to Thread Pitch 2025-08-25 16:44:04 -05:00
Frank David Martínez M e5c912e0f3 [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
paddle d85613b498 Update ondsel solver 2025-08-25 13:08:30 -05:00
Roy-043 416a2fe714 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 a346c266e7 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 3b3516de71 Material: Add missing include for PCH 2025-08-25 18:50:27 +02:00
paddle 5fa7fe5117 PartDesign: Remove message taskbox and use regular warnings instead. 2025-08-25 18:39:08 +02:00
paddle 9d12c0c7c6 PartDesign: Remove unnecessary warning. 2025-08-25 18:39:06 +02:00
paddle 9535371265 PartDesign: Rename Transformed::Mode enum 2025-08-25 18:38:34 +02:00
paddle 2e0dc45874 Part: Add PatternParametersWidget 2025-08-25 18:38:34 +02:00
paddle 89eddb4138 Gui: Move ComboLink from PartDesign to Gui. 2025-08-25 18:38:34 +02:00
paddle 00ed23845a PartDesign: add linear pattern spacing and extent icons. 2025-08-25 18:38:34 +02:00
Roy-043 ba7bb0eabe Draft: fix 2 issues with Draft_SelectPlane 2025-08-25 18:24:01 +02:00
wmayer cd1496be75 Mesh: In ReaderOBJ replace std::atoi with std::stoi 2025-08-25 18:13:59 +02:00
wmayer 8747607820 Tests: Add test case for ReaderOBJ 2025-08-25 18:13:59 +02:00
wmayer 5d75cf8fed 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 f62e18b59c Draft: Support relative paths for hatch patterns 2025-08-25 18:12:20 +02:00
tetektoza 9f04f5f371 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 6c63c298fc Bim: Fix direction of panel waves (#23271)
* Update ArchPanel.py

* Update ArchPanel.py
2025-08-25 18:09:31 +02:00
MisterMakerNL a362c4915e Replace preference page icons
replaced icon so look more like the actual wb icons
2025-08-25 11:08:19 -05:00
PaddleStroke b527c1ae6a Assembly: Move label change logic to onChange 2025-08-25 11:06:11 -05:00
tetektoza 9798df0215 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 7eaa5e8844 Mesh: Fix crash MeshPy::setPoint & MeshPy::movePoint
Fixes https://github.com/FreeCAD/FreeCAD/issues/18823
2025-08-25 10:55:53 -05:00
Chris Hennes 9ee6e592b1 Tools: Small improvements to translation extraction
1) Block a problematic BIM file from extraction
2) Implement advanced scanning system to better report problems
3) Limit number of jobs in CrowdIn push to prevent 403 errors
2025-08-25 17:39:40 +02:00
xtemp09 f20c1a0102 Simplify repr() function 2025-08-25 10:38:39 -05:00
Paul Lee c7aaff410b [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
  - https://github.com/FreeCAD/FreeCAD/commit/f6bba5d58ec7788c37977b97d7db40ef1e1ff499

  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 e2346dabd6 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
Max Wilfinger 3347ac343e Gui: Update header in about dialog before the 1.1 release (#22991)
* Gui: Update header in about dialog before the 1.1 release

Gui: Change main link in about dialog to main website instead of Wiki Main_Page

* Update based on code review.

Co-authored-by: xtemp09 <xtemp09@gmail.com>

---------

Co-authored-by: xtemp09 <xtemp09@gmail.com>
2025-08-25 10:07:58 -05:00
PaddleStroke 409d0e408d 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 150e6c9b99 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 4d8a277926 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 8d880f2860 Draft: task_orthoarray.py make some strings translatable 2025-08-25 11:31:50 +02:00
wmayer 130d5618c2 Measure: Extend angle measurements
Support to measure the angle using a planar B-spline surface
2025-08-25 09:29:29 +02:00
wmayer eebb7f7829 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 4a5217075c Measure: Fix some linter warnings 2025-08-25 09:29:29 +02:00
wmayer 9540cfe0ea 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 75236d4b13 Measure: Allow any surface type for MeasureArea 2025-08-25 09:23:54 +02:00
wmayer 8165d12607 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 1acafb240a 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 5d3f9cac3f 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
wmayer 2b2a82d901 Measure: Fix crash in Measurement::length() when selecting infinite edge (e.g. PD datum line) 2025-08-25 09:21:33 +02:00
Max Wilfinger 04e9baf533 Fix UI strings reported on Crowdin (#23297)
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-08-25 06:10:53 +00:00
Chris Hennes 18517c78e5 Addon Manager: Sync with upstream 2025-08-24 2025-08-25 07:22:52 +02:00
tetektoza 0ce6a509e7 BIM: Load QIcon for Material Editor from bytes
Loading QIcon directly from bytes is not supported in Qt6 it seems, so
this patch changes it to load it to pixmap first and then to QIcon
directly.

Plus add some alternative options to avoid tracebacks for compatibility,
as it seems that in Qt5 it either failed gracefully, or was able to load
directly from string/bytes.
2025-08-24 23:08:44 -05:00
mosfet80 475dd13052 Clean SoDatumLabel.cpp (#23217)
* Clean SoDatumLabel.cpp

removed unused variables

* Update SoDatumLabel.cpp
2025-08-24 23:00:29 -05:00
FEA-eng 20f17f7e1b FEM: Update write_step_output.py 2025-08-24 22:59:22 -05:00
tetektoza 568e63f8d5 Assembly: Allow editing joint references
As the title says - root cause of this problem was imprecise reference
matching by moving_part and TNP string processing incosistencies, so the
solution is to give enhanced matching and TNP string mapping for
reliable deletion.

Also added context menu with keyboard shortucs so user is able to delete
stuff with right click.
2025-08-24 22:58:57 -05:00
PaddleStroke e3cfca6e9d Assembly: toggle grounded: handle case of grounded joint selection. 2025-08-24 22:58:22 -05:00
Jiří Pinkava 2cf5138654 CMake: remove unused PYSIDE_WRAP_UI macro 2025-08-24 22:50:56 -05:00
tetektoza 9bff63e38d Sketcher: Fix construction lines becoming solid after box selection
Currently if user tries to use box selection while having transformed
normal line to a construction line, the line becomes solid unless it
gets moved or new geometry is created.

The root cause of that is the `draw(true, false)` call which uses
outdated solver geometry where construction=false is being specified.
Solver updates lazily, which results in construction lines in normal
sublayer instead of construction.

So, this patch changes it to `draw(false, false)` after box selection.
This ensures the redraw uses current SketchObject geometry with
up-to-date construction flags. This should be safe, as box selection is
purely visual and we do not need geometry calculations in this
operation.
2025-08-24 22:48:14 -05:00
Ian Abreu 8533b4fbb8 Core: Fixing missing python bindings. (#23054)
* Adding missing python interfaces.

* fixing interface includes.

* attempting fix for CI build error related to path resolution.

* testing build

* More testing via Github Actions...

* renaming files

* fixing comparison operator.

* reverting...

* fixing CMakeLists

* fixing binding generation issue
2025-08-24 22:43:39 -05:00
Chris Hennes d77a070bc8 Merge pull request #23104 from thyssentishman/main
Split Material Exceptions.h into source and header
2025-08-24 22:38:39 -05:00
Kacper Donat 9e0badc8a5 Gui: Fix Document Recovery screen 2025-08-24 22:32:24 -05:00
tetektoza a6e0b91758 Assembly: Auto close on deleted doc for dialogs to avoid segfaults
Currently if we close document on Assembly WB while having dialog
opened, it will throw segfault because it is not being auto closed
automatically during document close. This in turn resulted in dialog
having dangling references to document that was no longer existing,
throwing segfaults in random places.

So solution is simple - add `setAutoCloseOnDeletedDocument` for every
dialog in Assembly to avoid this situation and close every dialog upon
document close.
2025-08-24 22:22:19 -05:00
dependabot[bot] 9647b8c637 Bump actions/checkout from 4.2.2 to 5.0.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 5.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/11bd71901bbe5b1630ceea73d27597364c9af683...08c6903cd8c0fde910a37f88322edcfb5dd907a8)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-24 22:20:53 -05:00
wmayer de14265ba7 Part: Check for straight splines or Bezier curves
Straight splines or Bezier curves can be considered as line segments and thus can be used to measure e.g. angles.

This fixes https://github.com/FreeCAD/FreeCAD/issues/22878
2025-08-24 22:20:23 -05:00
wandererfan 7acd859634 [TD]fix crash in vertex show/hide 2025-08-24 22:19:31 -05:00
wmayer 8ec43d2966 App: Remove build dependency to Coin3D
Fixes https://github.com/FreeCAD/FreeCAD/issues/20897
2025-08-24 22:18:55 -05:00
wmayer 1dfcef2939 Part: Fix crash in MultiFuse::execute()
The processed shape is null and thus it's not allowed to call its ShapeType() method.
The crash is not directly related to the fact that there is a cyclic dependency

Fixes https://github.com/FreeCAD/FreeCAD/issues/22879
2025-08-24 22:17:48 -05:00
wmayer ecd7a47b4a Gui: Hold the GIL when clearing the form attribute
Inside TaskDialogPython::clearForm() the interpreter may execute a lot of things where at the some point the GIL must be hold.

This very likely fixes https://github.com/FreeCAD/FreeCAD/issues/22863

@thyssentishman
Please check this branch
2025-08-24 22:17:10 -05:00
Stefan Tröger 80f3b21184 FEM: Extract postprocessing data only if available. Fixes #22193 (#23127)
* FEM: Extract postprocessing data only if available. Fixes #22193

* [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-24 22:16:29 -05:00
matthiasdanner 19a082b63c Sketcher: Fix constraint selection in groups (#22937)
* Fix constraint selection in groups

* include paddlestrokes refactoring and fix for more than 2 constraints in a group

---------

Co-authored-by: Matthias Danner <28687794+matthiasdanner@users.noreply.github.com>
Co-authored-by: PaddleStroke <pierrelouis.boyer@gmail.com>
2025-08-24 22:08:32 -05:00
Max Wilfinger 9fe682e2cf Gui: Change default WB list in preferences 2025-08-24 21:23:41 -05:00
WandererFan 24e3ab7d3e [TD]Fix no delete of cosmetic in clip group (#22838)
* [TD]Fix no delete of cosmetic in clip group

* [TD]lint clean up
2025-08-24 20:55:55 -05:00
Kacper Donat 947f1ca235 Part: Relax boolean requirements
The current solution checked shapes before allowing boolean operation to
happend. That meant that even small error with model in an unrelated
place could prevent the boolean from being computed, even if it would
compute fine and create valid shape. This commit changes that behaviour
so the tool at least tries to compute the results.
2025-08-24 20:54:21 -05:00
Max Wilfinger 9fc40b33de Fix source string mistakes reported on Crowdin (#23157)
* Fix source string mistakes reported on Crowdin

* Update src/Mod/Draft/Resources/ui/TaskPanel_CircularArray.ui

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

* Update src/Mod/Draft/Resources/ui/TaskPanel_CircularArray.ui

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

* Update src/Mod/Draft/draftfunctions/upgrade.py

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

* Update src/Mod/Draft/draftfunctions/upgrade.py

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

* Update src/Mod/Draft/draftguitools/gui_downgrade.py

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

* Update src/Mod/Draft/Resources/ui/TaskPanel_SetStyle.ui

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

---------

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2025-08-24 20:51:32 -05:00
Bas Ruigrok 21d0e8af5f Gui: Perspective camera set focal distance to rotation center depth to fix zooming at new rotation center 2025-08-24 20:49:42 -05:00
FEA-eng 60cb0d9d8b FEM: Update writeFenicsXDMF.py 2025-08-24 20:38:14 -05:00
Kacper Donat b57f4709ba PartDesign: Prevent Hole from claiming other features as children 2025-08-24 20:37:44 -05:00
Kacper Donat bf08a5e6b5 Part: Fix 2D Offset of Face
With TNP mitigation implementation handling of TopAbs_FACE was changed
in the method computing 2D offset of shape. It used to be very simple
iteration over face wires and it was instead changed to much more
complicated splitWires method. The intent of that change was to ensure
stability of the result, but it breaks existing models.

The problem is caused by OCC bug within offseting mechanism that is
dependent on wire order. Here the outer wire is moved to the end which
can cause issues.

Another issue is that for some reason, if circle is enclosed by other
shape the offset does not create proper 2D offset but moves the circle
in Z direction.
2025-08-24 20:36:47 -05:00
Kacper Donat fd502ce94f Gui: Try to load Theme Parameters from file
This creates logic that tries to load user parameters from file as the
priority and pushes back older mechanism to lower layer. Older way of
loading theme parameters should be preserved until we release first 1.1
RC.
2025-08-25 00:47:55 +02:00
Kacper Donat db3e96ebf0 Gui: Add YamlParameterSource for StyleParameters
This adds ability to read and write Style Parameters from YAML files.
This will allow to move certain tokens out of the User Parameter system
to ensure that they can be update without user needing to reapply the
theme.
2025-08-25 00:47:55 +02:00
Ladislav Michl 3354125a0f Base: Add moment to the internal unit schema 2025-08-25 00:05:06 +02:00
Ladislav Michl f934e86dc1 Base: Quantity: Assign work unit to all energy quantities
Fixes: 847e2f5c85 ("Base: Units: refactor")
2025-08-25 00:05:06 +02:00
Roy-043 34147736e2 BIM: change shortcut for Arch_Space 2025-08-24 22:30:14 +02:00
Roy-043 e786278f80 Add import init_draft_statusbar to 2 other functions 2025-08-24 11:49:05 -05:00
Roy-043 78f4d60dab Core: 2 Report View context menu items to Title Case 2025-08-24 13:06:39 +02:00
Roy-043 28cae33d0c Bring back placement argument type check 2025-08-24 13:06:32 +02:00
Roy-043 9807bd6e02 Do not import the Draft module 2025-08-24 13:04:39 +02:00
theo-vt c61ad05789 Techdraw: Undo/redo when dragging views and rework projection group drag (#22875)
* TechDraw: create a transaction when finished dragging a view

* TechDraw: drag projection group when dragging a subview in AutoDistribute is enabled

* TechDraw: avoid creating 'Drag View' transaction if the document is already in a transaction

* TechDraw: Apply suggestions from code review

---------

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-08-24 08:36:41 +02:00
Kacper Donat cf951bae6b PartDesign: Unify deletion behavior
This unifies deletion behavior for all PartDesign features ensuring that
sketches that were used to create these features show after deletion and
that the tip is properly transfered.
2025-08-23 16:40:33 -05:00
Kacper Donat be3b9edd33 PartDesign: Do not copy visuals from ShapeBinder 2025-08-23 16:38:53 -05:00
Kacper Donat cfa6ee8d2c PartDesign: Properly forward BaseFeature transform edit requests to Body 2025-08-23 16:37:53 -05:00
tarman3 261355b714 CAM: Remove tool body with Job onDelete (#22924) 2025-08-23 12:11:51 -05:00
tarman3 dfbf7fc637 CAM: Do not show models of the toolbits in Job dialog (#22893) 2025-08-23 12:10:38 -05:00
David Kaufman 0c26ac9dba [CAM] Roadmap epic to improve core dressups (#23259)
* [CAM] proposal for an epic to improve core dressups

* Add 'array dressup' to out of scope section
2025-08-23 11:45:36 -05:00
luzpaz eb55e07b75 FEM: fix source comment typos
Found via codespell
2025-08-23 16:47:53 +02:00
Roy-043 5a854ed3d3 Draft: more logical placement for 3 point arcs
The placement of 3 point arcs very often was unexpected and typically did not match the placement of circles created on the same working plane.

This PR updates the code to use the placement of the working plane to adjust the placement of the created arc.

Additonally:
* Avoided code duplication by just passing the edge from make_arc_3points to make_circle.
* Removed inconsistent map_mode argument from make_arc_3points and the cryptic code related to it. The handling of the support property is something that has to be reviewed for all Draft commands at some point though.
2025-08-23 12:34:06 +02:00
FEA-eng dc489914d2 PartDesign: Fix small typo in multiple solids error (#23299)
* PartDesign: Update FeatureChamfer.cpp

* Update src/Mod/PartDesign/App/FeatureChamfer.cpp

---------

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2025-08-22 20:47:04 +00:00
FEA-eng b7c233b94e PartDesign: Update error message about multiple solids (#23286) 2025-08-22 18:29:50 +00:00
David Kaufman 26a7067e44 [CAM] Add roadmap epic for fixing user pain points (#23253)
* Add epic for fixing user pain points

I didn't add any detail page for this, because the pain points are already described in this document. I just think there should be an epic for this, since we are prioritizing changes that fit within an epic

* Fix typo
2025-08-22 17:47:02 +00:00
sliptonic f51b7742d3 CAM: Roadmap epic for circular hole improvements (#23001)
* epic for circular hole improvements

* feedback from PR

---------

Co-authored-by: Brad Collette <bradcollette@pop-os.localdomain>
2025-08-22 11:05:08 -05:00
Ryan Kembrey 0e85372e4a TechDraw: Fix frames resizing on select/hover 2025-08-22 16:36:31 +02:00
wmayer a6cf8ba983 Tests: Add unit tests for FileInfo 2025-08-22 15:20:25 +02:00
wmayer 12acd1da6c Base: Modernize FileInfo 2025-08-22 15:20:25 +02:00
tetektoza 67d001585c Start: Add caching for performance for thumbnails on start page (#23186)
* Start: Add caching for performance for thumbnails on start page

So currently we can have a problem where we are trying to load whole
image as a thumbnail, which can result in over 256MB~ of internal buffer
memory. Also, even if we load smaller size - every now and then start
page gets refreshed, so to check if any file got modified and refresh it
in recent files. This is okay, but with large files it loads them over
and over, resulting in start page lagging.

Solution for that is first - load image thumbnails as scaled, small
images instead of full image.

Second - for performance, use caching by using `path:modtime:size` key.
If the item fits this key, it means it didn't change, so just proceed
further and get this item from the cache. If the key is different, it
means it has been changed on the disk, so reload it.

* Start: Deactivate Start page if it loses focus to stop receiving events

As the title says. This prevents Start page from processing unnecessary
events (mostly paint ones that were causing extreme lag previously) if
it is not opened.

* Start: Preserve aspect ratio of the image for the thumbnail

* Start: use brace initialization when returning QString

* [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-21 22:06:07 -05:00
Roy-043 4680127a84 Update DlgSettingsGeneral.ui 2025-08-21 20:47:55 +02:00
dependabot[bot] c266bb10ae Bump github/issue-metrics from 3.22.3 to 3.23.0
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.22.3 to 3.23.0.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/9f2ad7e5b0353ace5de24bc74187ed0ad21473d7...63da87a2ab16c720cf9199a73c11f56a42f39cd4)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-21 15:01:58 +02:00
Johannes Thyssen Tishman 9831b60b9c Split Material Exceptions.h into source and header 2025-08-21 12:20:14 +02:00
Benjamin Nauck 5a0c03c891 Part: Fix WireJoiner error handling (#23241)
* Part: Fix WireJoiner error handling

* Part: Rename assertCheck to ENSURE
2025-08-20 22:26:56 +02:00
tetektoza 9d54896953 Part: Assign proper row and column to compound body property in prefs
As the title says, really small fix to the overlapping preferences for
Part/Part Design preferences.
2025-08-20 21:22:33 +02:00
sliptonic ecd8f6e050 revised with github comments 2025-08-20 14:09:00 -05:00
Benjamin Nauck c93c7ed360 Merge pull request #23246 from Roy-043/Draft-Make-Draft_Label-tooltip-consistent
Draft: Make Draft_Label tooltip consistent
2025-08-20 16:41:34 +02:00
Benjamin Nauck 1876e68bcb Merge pull request #23240 from wwmayer/issue_23222
Sheet: Verify that UnitExpression is valid
2025-08-20 16:40:39 +02:00
PaddleStroke fc463ee5d7 Sketcher: Revert DPI adjustment error #22941 (#23237)
* Revert #22941

* [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-20 15:25:32 +02:00
Roy-043 29d98b0af5 Update gui_labels.py 2025-08-20 15:20:06 +02:00
marioalexis f176172faa PartDesign: Remove use of user parameters from Body constructor 2025-08-20 15:08:47 +02:00
wmayer f5cfd3d64c Sheet: Verify that UnitExpression is valid
The crash happens because the UnitExpression is null and thus segfaults when trying to access the unit and scalar value.
This fixes https://github.com/FreeCAD/FreeCAD/issues/23222
2025-08-20 10:15:08 +02:00
tetektoza 564e79b890 Gui: Don't use this pointer after valueChanged in EditableDatumLabel
Simple fix for such a simple error I didn't see. Basically,
`valueChanged` signal can result in EditableDatumLabel being deleted
(for example, when we are on the last OVP and all of the OVPs have been
accepted). This could result in crashes as reported in previous issues,
because just after emitting this signal we were trying to use `this` pointer,
which wasn't available anymore as we deleted EditableDatumLabel obj that
was attached to it, so in essence we were dereferencing some random
address.

Fix for that is simple - move the check for `hasFinishedEditing` flag to
check locked appearance in `validateAndFinish` lambda, as it already
does validation and this way we will avoid referencing internals (which
could be deallocated) after emitting this signal.
2025-08-19 19:33:20 -05:00
Chris Hennes 5e4fe3a3c3 Merge pull request #23164 from ickby/FEM_post_fixes_4
Fem: Fix for 3 issues
2025-08-19 19:00:55 -05:00
sliptonic 5a7fbb449a expanding Path semantics 2025-08-19 17:39:02 -05:00
dependabot[bot] 2151a39c48 Bump actions/dependency-review-action from 4.7.1 to 4.7.2
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 4.7.1 to 4.7.2.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/da24556b548a50705dd671f47852072ea4c105d9...bc41886e18ea39df68b1b1245f4184881938e050)

---
updated-dependencies:
- dependency-name: actions/dependency-review-action
  dependency-version: 4.7.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 17:01:48 -05:00
marioalexis d5b1d994a2 Fem: Fix module import in solver CalculiX object 2025-08-19 16:33:43 -05:00
Dimitris75 7704426f54 Merge branch 'OCL-Adaptive' of https://github.com/Dimitris75/FreeCAD into OCL-Adaptive 2025-08-19 23:55:46 +03:00
Dimitris75 9c21769410 Update Waterline.py 2025-08-19 23:55:41 +03:00
dependabot[bot] 89dc1e360c Bump github/issue-metrics from 3.22.1 to 3.22.3
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.22.1 to 3.22.3.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/2fd323a2f81a70e719d1035f7b7c7535c5bc53ea...9f2ad7e5b0353ace5de24bc74187ed0ad21473d7)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.22.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 15:30:44 -05:00
pre-commit-ci[bot] 40ada2daf5 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-08-19 15:48:09 +00:00
Stefan Tröger 7cd161f066 FEM: Update color bar when switching postprocessing frames. Fixes #22284 2025-08-19 17:44:21 +02:00
Stefan Tröger c9ca852ad0 FEM: Keep result pipeline and only reload data. Fixes #20542 2025-08-19 17:44:21 +02:00
Stefan Tröger b20fe6039e FEM: Update color bar of children when switching postprocessing frames 2025-08-19 17:43:52 +02:00
Valentin Rusu 1c67ab7be2 Fix segfault where DatumLine does not have a refSubSHape 2025-08-19 11:54:32 +02:00
FEA-eng 91712dc810 FEM: Update commands.py 2025-08-19 08:05:02 +02:00
luzpaz afb943df30 TechDraw: Fix tooltip in Gui/CommandAnnotate.cpp
Typo fix
2025-08-19 07:35:23 +02:00
Roy-043 3fb61d0c90 Update CommandBody.cpp 2025-08-19 07:29:06 +02:00
Chris Hennes bafd9f75b5 Addon Manager: Sync with upstream 2025-08-18 2025-08-18 19:31:10 +02:00
Kacper Donat 9e047821bd Part: Fix wrong capitalization of Display options property group 2025-08-18 18:18:15 +02:00
drwho495 75d3d72e47 Toponaming: Update element references of PropertyLinks everytime the program needs to access the values (#22785) 2025-08-18 11:11:49 -05:00
dependabot[bot] eab4d2229a Bump prefix-dev/setup-pixi from 0.8.14 to 0.9.0
Bumps [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi) from 0.8.14 to 0.9.0.
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](https://github.com/prefix-dev/setup-pixi/compare/8ca4608ef7f4daeb54f5205b20d0b7cb42f11143...fef5c9568ca6c4ff7707bf840ab0692ba3f08293)

---
updated-dependencies:
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-18 11:11:05 -05:00
PaddleStroke 569deff94d Sketcher: Coinmanager: remove dpi (#22941)
* Sketcher: Coinmanager: remove dpi

* [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-18 11:06:37 -05:00
Chris Hennes 3e1cc8302a Update translations 2025-08-18 17:55:24 +02:00
Kacper Donat da5d6092e0 Merge pull request #22945 from ryankembrey/cosmetic-circles
TechDraw: Clarify and group cosmetic circle commands
2025-08-18 17:51:06 +02:00
Roy-043 8721756f57 Draft: fix handling of MouseDelay (improved) (#23011)
* Update DraftGui.py

* Update gui_points.py
2025-08-18 17:47:44 +02:00
theo-vt a94dc1463d TechDraw: add transactions to multiple commands (#22795)
* TechDraw: add transactions to multiple commands

* Feed each 'Create Dimension' option to the translation macro

* Call fixSceneDependencies when re-adding dimensions so that it shows up at the right place
2025-08-18 11:46:15 -04:00
Chris Hennes d8168d33f3 App: Remove use of dangerous localtime() function 2025-08-18 17:44:34 +02:00
Chris Hennes abdd975089 CI: Try to gain more disk space for the CodeQL run 2025-08-18 17:42:52 +02:00
theo-vt 10ae4de2f2 TechDraw: Fix balloon annotation unlinked after undo-redo (#22805)
* TechDraw: remove then add balloon annotation when changing the SourceView

* Use fixSceneDependencies
2025-08-18 10:37:02 -05:00
WandererFan c15cfd6615 [Meas]Fix visibility at load (#23145)
* [Meas]Fix visibility at load

* [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-18 10:36:05 -05:00
Stefan Tröger 27c7eca010 FEM: Fix post processing branch working with data extraction. Fixes #23030 2025-08-18 10:35:42 -05:00
FEA-eng b110102ca5 FEM: Amplitude support for rigid body constraint (#22898)
* FEM: Update FemConstraintRigidBody.cpp

* FEM: Update FemConstraintRigidBody.h

* FEM: Update write_constraint_rigidbody_step.py

* FEM: Update write_amplitude.py
2025-08-18 10:35:23 -05:00
marioalexis f8367d263e Fem: Add option to create conformal mesh from Netgen 2025-08-18 10:34:48 -05:00
marioalexis dc967cdb1c Fem: Create CalculiX output from .dat file - fixes #22983 2025-08-18 10:34:32 -05:00
marioalexis 576fed8362 Fem: Set Elmer equation priority based on the order of definition - fixes #21351 2025-08-18 10:34:13 -05:00
FEA-eng 052ff9237b FEM: Add support for CalculiX membrane elements (#22912)
* FEM: Update solver.py

* FEM: Update write_femelement_geometry.py

* FEM: Update write_mesh.py

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

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

* FEM: Update solver_calculix.py

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-18 10:33:49 -05:00
Roy-043 7f8e34938a Mesh: Revert Triangle menu text to Add Triangle (#23168) 2025-08-18 08:18:23 +02:00
drwho495 68077de39b Part: Fix toponaming issues. (#23151)
* fix split apart and splice

* fix hasher gen issue in extrusion

* fix broken gen in fillet/chamfer

* error when elements go missing in fillet/chamfer

* fix hashing in some elements

* fix compiler errors

* fix sweep

* remove hasher from mirror

* remove old import

* add clarifying comment

* Linter cleanup

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-08-18 01:35:46 +00:00
Max Wilfinger 84afc15c91 PartDesign: Enable compounds for PD bodies 2025-08-18 01:09:07 +02:00
captain0xff ed770bf849 Sketcher: fix cropping of some icons on hidpi screens 2025-08-18 01:02:13 +02:00
Benjamin Nauck 51f4ad7432 PartDesign: Use sketch as neutral plane for Draft (continuation of 20135) (#21901)
* Enabled Draft to accept sketch as neutral plane

* Resolving the last review

* Fix: tested the Feature with test file

* Fix: error with sketch pointer

* PartDesign: Simplify selection implementation

---------

Co-authored-by: Ziad <ziad.ashraf.cs@gmail.com>
2025-08-17 14:55:53 -05:00
Dmitry Moskowski 37c6e93e8a OpenSCAD: make openscadexecutable path resolution more consistent 2025-08-17 14:51:45 -05:00
luzpaz a55366e86e GUI: start cleaning up Parameter Editor
Begins to address a few issues brought up in #17351
2025-08-17 19:25:48 +02:00
Roy-043 2d12915a1c OpenSCAD: tweak tooltips (#23159)
* Update OpenSCADCommands.py
2025-08-17 19:24:36 +02:00
Stefan Tröger 70685aaa5d FEM: Purge tool deletes all result objects. Fixes #23028
- Correctly deletes children of pipeline without error on delete
- Ensures visualizations are also deleted as they are result objects too
- Ensures purge tool uses a transaction, like all tools should
2025-08-17 18:29:31 +02:00
pre-commit-ci[bot] c458e54e2c [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-08-17 01:57:41 +00:00
Dimitris75 b8216284ba Merge branch 'OCL-Adaptive' of https://github.com/Dimitris75/FreeCAD into OCL-Adaptive 2025-08-17 04:51:51 +03:00
Dimitris75 99a5c03ba7 Correct problems found by Github bot
Delete unused lists
2025-08-17 04:39:56 +03:00
pre-commit-ci[bot] ce13cb0174 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-08-16 19:03:29 +00:00
Dimitris75 1e9295fe27 round BoundBox
round xmin, xmax, ymin, ymax
2025-08-16 21:25:06 +03:00
Dimitris75 1a9df4eb80 CAM: Waterline OCL Adaptive
Adding OCL Adaptive Algorithm to Waterline Operation
2025-08-16 19:41:01 +03:00
Chris Hennes 1a4ff21bdd Addon Manager: Fix macro icon encoding bug 2025-08-15 22:35:00 +02:00
Kacper Donat 0c23e15cc4 Part: Prevent crash on cross-section of invalid object 2025-08-15 15:31:02 -05:00
dependabot[bot] cb3973e773 Bump korthout/backport-action from 3.2.1 to 3.3.0
Bumps [korthout/backport-action](https://github.com/korthout/backport-action) from 3.2.1 to 3.3.0.
- [Release notes](https://github.com/korthout/backport-action/releases)
- [Commits](https://github.com/korthout/backport-action/compare/0193454f0c5947491d348f33a275c119f30eb736...ca4972adce8039ff995e618f5fc02d1b7961f27a)

---
updated-dependencies:
- dependency-name: korthout/backport-action
  dependency-version: 3.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-15 13:30:51 -05:00
theo-vt af83b6883e PartDesign: Hole: fallback to getProfileNormal when a non-cylindrical surface is used 2025-08-15 10:09:23 -05:00
dependabot[bot] a0705f1d85 Bump github/issue-metrics from 3.22.0 to 3.22.1
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.22.0 to 3.22.1.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/f5c0d3ba93f0f6c6465665ac6ed1737dc74cea78...2fd323a2f81a70e719d1035f7b7c7535c5bc53ea)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.22.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-15 09:49:23 -05:00
Matthias Danner a7b501c95c remove edit value option from non dimensional constraints 2025-08-15 13:51:14 +02:00
theo-vt cf162dee3e PartDesign: Hole use the default PartDesign context menu items 2025-08-15 12:21:54 +02:00
Chris Hennes fec7d6f7cb Addon Manager: Sync with upstream
Fixes CMake problem with last sync
2025-08-14 19:55:04 +02:00
wmayer ac84cff53b Points: Replace defines with constexpr 2025-08-14 16:28:16 +02:00
wmayer 403bb40cad Points: Optimize translation of imported points 2025-08-14 16:28:16 +02:00
wmayer d1ab887475 Points: Add method PointKernel::moveGeometry
This allows to more efficiently transform a point cloud if only a translation but no rotation is needed
2025-08-14 16:28:16 +02:00
wmayer 72877a354e Gui: Add helper function Command::getActiveDocument() to get active App document 2025-08-14 16:28:16 +02:00
Johannes Thyssen Tishman 39f4bdf455 Revert "Materials: Check if m_uuid is empty before adding to recents"
This reverts commit dc03238349.
2025-08-14 16:02:02 +02:00
Vincenzo Calligaro b3e11ecd11 [Feature Request] [Draft] [UI/UX] Allow to turn dimension arrows on/off individually (#11941)
* Update additional files

* The LineColor and LineWidth properties are removed from Text objects.
* Arrow properties are added by the ViewProviderDraftAnnotation class only. This avoids code duplication.

* gui_annotationstyleeditor.py fix except

* view_draft_annotation.py fix except

---------

Co-authored-by: Roy-043 <info@b-k-g.nl>
Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2025-08-14 10:44:49 +02:00
Kacper Donat 8185d01771 Gui: Add GuiExport to SoToggleSwitch 2025-08-14 06:11:28 +02:00
Chris Hennes 9dc746389b Addon Manager: Sync with upstream
Major change is a switch to using Zip downloads as the primary
installation mechanism. Also fixes a number of small bugs.
2025-08-13 23:56:12 +02:00
wandererfan 81d22eb2c3 [TD]fix weld symbol not attached to leader 2025-08-13 22:46:20 +02:00
Kacper Donat 5fabb1372d Sketcher: Fix dimension extension overshoot length 2025-08-13 22:43:58 +02:00
Syres916 e86fbd0689 [CAM] Fix SetupSheet form table minimum height to be 300px 2025-08-13 12:34:25 +01:00
Benjamin Nauck 4195f7fee2 Merge pull request #23019 from kadet1090/transparent-previews-theming
Gui: Add theming abilities to Transparent Previews
2025-08-13 00:08:35 +02:00
Kacper Donat 6bbb4458c9 PartDesign: Use Style Parameters for theming previews 2025-08-12 22:04:23 +02:00
Kacper Donat 2f1d96bf44 Gui: Add ParameterDefinition to Style Parameters
This adds a way to define parameters within code, that allows developers
to easily encapsulate the parameters and their default values.
2025-08-12 22:04:23 +02:00
Kacper Donat 0cce9c1261 Gui: Make StyleParameterManager::resolve return optional result
This changes the resolve method of style parameter manager to return
optional intead of definitive result. In reality tokens may not be
defioned correctly and optionals provide a good way to nicely handle
defaults.
2025-08-12 22:04:23 +02:00
Kacper Donat 322ed2c7bc Gui: Rename StyleParameters::Length to StyleParameters::Numeric
This change gives a better name to the parameter type that is used to
store numeric values. Before it was called length, but it can store
other quantities as well so the name is no longer fitting.
2025-08-12 21:25:41 +02:00
Kacper Donat cf55183ece Gui: StyleParameters - use Base::Color instead of QColor
If possible we should prefer using our own classess instead of ones
coming from frameworks. This changes Style Parameters to use Base::Color
class instead of QColor. Calculations are still done using QColor but
the data is always exposed as Base::Color.
2025-08-12 21:25:41 +02:00
Kacper Donat 3a209a7e90 Base: Allow constexpr Color
This changes Base::Color class so it can be used as constexpr, useful
for defining various defaults.
2025-08-12 21:25:41 +02:00
luzpaz ce9da36314 Fix various typos 2025-08-12 12:18:23 -05:00
Max Wilfinger 6d078d3836 Change links to weekly releases 2025-08-12 11:39:42 -05:00
marioalexis f7132d7d9b Fem: Fix VTK check version 2025-08-12 11:36:29 -05:00
Kacper Donat bdba939f9f PartDesign: Implement preview for Draft 2025-08-12 11:34:26 -05:00
Benjamin Nauck 667990ec7b Start: Fix bug causing <none> to show in wb selector 2025-08-12 11:09:00 -05:00
Chris Hennes 91b3581a78 Merge pull request #22788 from pieterhijma/fix-func-expr-simplify
Core: Fix expression function simplify
2025-08-12 11:07:44 -05:00
pre-commit-ci[bot] fc3ae475e6 [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pre-commit/pre-commit-hooks: cef0300fd0fc4d2a87a85fa2093c6b283ea36f4b → 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c](https://github.com/pre-commit/pre-commit-hooks/compare/cef0300fd0fc4d2a87a85fa2093c6b283ea36f4b...3e8a8703264a2f4a69428a0aa4dcb512790b2c8c)
2025-08-11 20:00:21 -05:00
theo-vt 44a8ec2b65 Core: Add setting to hide the TaskWatcher (#22857)
* Core: Add setting to hide the TaskWatcher

* Move setting to Display/UI

* Clarify option description

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

* Use sentence case for section title

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

---------

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2025-08-11 21:38:58 +02:00
PaddleStroke 78b4e4211c Sketcher: Move root point to a SoSkipBoundingGroup (#22874) 2025-08-11 14:09:15 -03:00
Kacper Donat 5361532de7 Gui: Restore proper object names for panels 2025-08-11 18:40:25 +02:00
Chris Hennes 6616f24049 Merge pull request #22985 from pieterhijma/fix-rename-prop-with-expr
Core: Fix renaming a property with an expression
2025-08-11 11:13:54 -05:00
wandererfan ba4475bf9c [TD]fix editable fields click handles
- click handles were displayed when view frames were displayed,
  and when printing or exporting.
- now, click indication is only shown on mouse over.
2025-08-11 11:05:47 -05:00
Ryan K 4d6f0927fe TechDraw: Rework view frames (#22869)
Co-authored-by: Ryan Kembrey <ryan.kembrey@student.uts>
2025-08-11 11:04:58 -05:00
tarman3 ec8d05b163 CAM: Fix seach tool controller in Operations group (#22728) 2025-08-11 11:04:06 -05:00
Chris Hennes bd681f70fb Merge pull request #22466 from WandererFan/ComplexSection3
TechDraw: ComplexSection fixes
2025-08-11 11:01:47 -05:00
drwho495 9f18f9a86d Toponaming: Fix bad element map in Part Design Bodies (#22767) 2025-08-11 10:41:39 -05:00
PaddleStroke 53f1f112e0 Core: Fit all : Do not process SoSkipBoundingGroup 2025-08-11 10:38:26 -05:00
wandererfan 3a7298f95a [TD]Ensure changed expression value is processed 2025-08-11 10:35:12 -05:00
sliptonic c4c97b217d CAM: Fix bug with loop completion (#22877)
* fixes #22876

* [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-11 10:32:52 -05:00
Andrés Barreiro 584022fb7d Add deduction guide for Base::Overloads 2025-08-11 11:53:23 +02:00
Kacper Donat 31a24e7226 Merge pull request #22751 from PaddleStroke/sk-messages-refactor
Sketcher: Refactor TaskSketcherMessages
2025-08-11 11:13:18 +02:00
theo-vt 79738eec38 Measure: give a hint to ::getShape so that compound shapes may be resolved 2025-08-11 00:24:56 +02:00
Roy-043 c1d25b0920 Draft: toolbar names to title case
This was  missed in #22331.
2025-08-10 21:27:38 +02:00
FC-FBXL5 1885cce10e Update TaskSectionView.ui
Tooltip related to label "Section Plane Location" deserves a better description. 
Also See Crowdin: https://crowdin.com/editor/freecad/all/en-de?view=comfortable&filter=basic&value=0&search_scope=translations&search_strict=0&search_full_match=0&case_sensitive=0#q=Abstand%20vom

This tool seems to work with one section plane (section line) only, which other object's distance/position could be addressed here?
2025-08-10 17:35:44 +02:00
paddle 35f151d99e Sketcher: Refactor TaskSketcherMessages to move most of the logic into Core to be reused by Assembly 2025-08-10 15:17:35 +02:00
paddle ccb28af4a1 Sketcher: Rename "Solver messages" to "Sketch edit". Add setting button to the solver message box. In which there're grid, snap and ordering widgets. 2025-08-10 15:15:53 +02:00
Roy-043 ee1a49b1c6 Draft: update WP Proxy string for consistency (#23012)
* Update gui_planeproxy.py
2025-08-10 13:01:27 +00:00
Pieter Hijma 5a842e93f5 Gui: Add support for renaming properties 2025-08-10 11:37:11 +02:00
marioalexis fbc4f450be Fem: Fix VTK submodule import 2025-08-09 14:03:39 -05:00
Matthias Danner 2477b9a976 Fix crash on set constraints to virtual space
Reverting fix for show only filtered constraints
2025-08-09 13:59:17 -05:00
sliptonic 80cad2a44e Creating a roadmap for CAM development (#22591)
* draft roadmap

* Update README.md

fix links

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* current state

* update

* Update Tool Management.md

drag knife

* Create ADR-003.md

* Update ADR-003.md

* Update ADR-003.md

* Update ADR-003.md

* Update Generators.md

* functionality

* adr-003

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

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

* improve circular holes features

* Update ADR-003.md

Ambiguous term "Safe height" (safe for what?) shall be renamed OpRapidsHeight to indicate its function.

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

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

* relative gcode

* adding tables

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

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

* Survey.
Assessment of functionality

* Update Operation Configuration.md

* Update Operation Configuration.md

* Update Job Management.md

array

* Update README.md

short term priorities

* Update README.md

* Update README.md

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

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

* Update README.md

* Update README.md

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

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

* Update README.md

* Update README.md

* Update README.md

* renaming

* Update ADR-004.md

* Update README.md

* Update README.md

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

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

* Update README.md

* Update README.md

ADR update

* Roadmap cleanup.

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

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

* @connor's changes

* Update README.md

* Update Operation Configuration.md

Drilling ops:
Don't ignore user selection on entry. Use auto if no selection.

* Update Operation Configuration.md

Fill in some place holders
Flesh out current state.

* safe operating planes
AR-003

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

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

* Update ADR-003.md

language normalized

* Update ADR-003.md

* Remove current state

* Update ADR-002.md

* Update Operation Configuration.md

Retain starting position from hole to hole when set. 
ie retain starting angle on XY plane as determined by first hole. 
Minimising rapids between holes gains nothing over all and leads to rather arbitrary starting on subsequent holes.

* Update Operation Configuration.md

Pocket clearance. Fix and restore Spiral

* recomputes

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

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

* Update ADR-005.md

* Update ADR-005.md

* Update Output Generation.md

* Update Simulation and Verification.md

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

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

* Update ADR-003.md

title change and cleanup

* Update README.md

ADR3 title change

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

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

* Update Operation Configuration.md

* initiatives

* handling user selection draft ADR

* Update Output Generation.md

* update

* epics

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

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

* changes

* cleanup

* meta data on path commands

---------

Co-authored-by: Ian Abreu <z0r0@shurikenlabs.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: J-Dunn <dunn@piments.com>
Co-authored-by: Brad Collette <bradcollette@pop-os.localdomain>
2025-08-09 11:17:34 -05:00
dependabot[bot] 023ab981a8 Bump actions/cache from 4.2.3 to 4.2.4
Bumps [actions/cache](https://github.com/actions/cache) from 4.2.3 to 4.2.4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/5a3ec84eff668545956fd18022155c47e93e2684...0400d5f644dc74513175e3cd8d07132dd4860809)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 4.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-09 08:54:35 -05:00
Sunless 93d90ef96e Improve wording and grammar in README introduction
Reworded the sentence about sketching geometry-constrained 2D shapes to improve clarity and grammar. This change makes the introduction easier to read and more precise for new users.
2025-08-09 08:53:12 -05:00
wmayer 39ca75bac2 Py3.13: Update PyCXX to version 7.1.11 2025-08-09 00:36:56 +02:00
Pieter Hijma 3446cb8660 Core: Add logic for updating exprs on prop rename 2025-08-08 17:31:11 +02:00
marioalexis 0cdf0af0c6 App: Fix ExtensionPython macro 2025-08-08 17:11:51 +02:00
Pieter Hijma 0acc2d1ed5 Core: Add test for a prop rename with expression 2025-08-08 17:09:49 +02:00
Syres916 32ddaff649 [Gui] add carriage return to warnings 2025-08-08 06:51:18 -05:00
Bas Ruigrok 7dbb67cbe8 Sketcher: Add missing finishEditing() for points 2025-08-08 06:49:14 -05:00
dependabot[bot] 20873e433b Bump actions/download-artifact from 4.3.0 to 5.0.0
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.3.0 to 5.0.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/d3f86a106a0bac45b974a628896c90dbdf5c8093...634f93cb2916e3fdff6788551b99b062d0335ce0)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-08 06:44:11 -05:00
Max Wilfinger 70f4221993 Fix missed strings for UI consistency
Fix ellipsis rendering
2025-08-08 06:37:59 -05:00
FEA-eng f371622d6f FEM: Update FemConstraintDisplacement.cpp 2025-08-07 18:36:53 -05:00
Max Wilfinger 75ed661b14 Update sub_weeklyBuild.yml
Run weekly builds each Wednesday
2025-08-07 18:36:20 -05:00
Jacob Oursland d42e532397 CI: add debug entitlement to macOS weekly builds. 2025-08-07 18:34:29 -05:00
Jacob Oursland a3a72c556c CI: ccache configuration tweaks. 2025-08-07 18:34:08 -05:00
Jacob Oursland b71214d1e3 CMake: add FREECAD_3DCONNEXION_SUPPORT to CMakePresets.json 2025-08-07 18:33:30 -05:00
Chris Hennes 9a7c084720 Merge pull request #17249 from kadet1090/part-design-transparent-previews
PartDesign: Introduce transparent previews
2025-08-07 15:33:58 -05:00
Krzysztof ec2bf69135 Core: Fix 'Expression' and 'Vector' editor outhanging the screen (#22426)
* Core: Fix Expression dialog outhanging main window

Expression dialog is now fully shown inside main window, even if opened from model panel positioned on right side. If Model panel is outside main window, dialog is opened over this panel.

* Core: Fix Vectors dialog outhanging main window

Vectors dialog is now fully shown inside main window, even if opened from model panel positioned on right side. If Model panel is outside main window, dialog is opened over this panel.

* Core: Simplify 'adjustDialogPosition()'

Change suggested and authored by @hyarion
2025-08-07 19:22:28 +02:00
Benjamin Nauck 78e5dc9e21 Gui: Fix null check issue in navlib 2025-08-07 16:51:23 +02:00
Max Wilfinger 321cc5ced5 Gui: Fix crash with navlib
Co-authored-by: @hyarion
2025-08-07 12:11:14 +02:00
Kacper Donat 07e98226fe Part: Cleanup setupCoinGeometry method 2025-08-07 00:37:47 +02:00
Alfredo Monclus d2986cd99a PartDesign: disable final model while selecting on dressups (fillet/chamfer)
Co-authored-by: Kacper Donat <kacper@kadet.net>
2025-08-07 00:37:47 +02:00
Alfredo Monclus a5c2ccaa87 Gui: refactor: change Preview button label to Confirm Selection
Transparent preview can be enabled so it wasn't representative
2025-08-07 00:37:47 +02:00
Kacper Donat 802af4c464 PartDesign: Add preview TaskBox to all feature task dialogs 2025-08-07 00:37:46 +02:00
Kacper Donat 6caceacb95 PartDesign: Add support for preview for transforms 2025-08-07 00:37:23 +02:00
Kacper Donat 7f87d87f61 PartDesign: Add transparent previews 2025-08-07 00:37:21 +02:00
Kacper Donat 38db306a84 PartDesign: Return to previous feature after edit 2025-08-07 00:36:23 +02:00
Max Wilfinger a9cd5a4982 Draft: Update UI strings for consistency (#22331)
* Draft: Update UI strings for consistency

* Apply suggestions from code review

* Apply suggestions from code review

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Apply suggestions from code review

* Apply suggestions from code review

* Apply suggestions from code review

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

* Apply suggestions from code review

* Apply suggestions from code review

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>

* Apply suggestions from code review

---------

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2025-08-06 23:02:16 +02:00
Ladislav Michl f1032b47d4 Gui: Fix about image path
Merge of a4d4a8e7d6 accidentally didn't drop change to DlgAbout path.
Nothing sets AboutImageDev congfig key, so partially revert said commit.

Fixes: a4d4a8e7d6 ("Gui: Add about image for dev version")
2025-08-06 08:22:45 -05:00
Ryan Kembrey ca3710060b TechDraw: Fix default toolbar cosmetic circle name 2025-08-06 20:28:17 +10:00
Ryan Kembrey e2298448ab TechDraw: Fix cosmetic circle menu 2025-08-06 20:05:38 +10:00
Ryan Kembrey 2d695b249c TechDraw: Clarify and group cosmetic circle commands 2025-08-06 19:49:54 +10:00
Carlos Nihelton d5bcf68e43 Start: Walks the parent tree to close the tab (#22572)
* Start: Walks the parent tree to close the tab

We're currently closing the entire app, it seems a mistake.
Instead, we should look up the widget tree to find the tab
(QMdiSubWindow) and close it instead.

The way I put if we don't find it we don't do anything.
Might be unexpected but at least harmless.

A side effect of this fix is a required drop of constness of
multiple helper methods that call postStart().

* Start: Minor code cleanup and PCH fix

---------

Co-authored-by: Carlos Nihelton <cn@ubuntu.com>
Co-authored-by: Chris Hennes <chennes@gmail.com>
2025-08-06 00:38:30 +00:00
qewer33 a4d4a8e7d6 Gui: Add about image for dev version
Co-authored-by: ein-shved <yury.shvedov@kaspersky.com>
Co-authored-by: Ladislav Michl <ladis@triops.cz>
Co-authored-by: qewer33 <qewer33@proton.me>
Co-authored-by: 3x380V <i58604845+3x380V@users.noreply.github.com>
2025-08-05 17:33:05 -05:00
Matthias Danner 377ccbdf54 Fix drawing of angle constraints beyond the centerpoint and for negative angles 2025-08-05 23:41:30 +02:00
Roy-043 8786cac938 Draft: project point in split operation and copy original wire (#22452)
* Roy 043 patch 1 (#6)

* Update split.py

* Update gui_split.py

* Add recompute to update wire in split test

* Avoid circular import: init_draft_statusbar -> params -> init_draft_statusbar

* Remove accidentally added "ui/preferences-webgl.ui"
2025-08-05 14:41:03 -05:00
Ryan Kembrey 18702dfd6a PartDesign: Fix regression in mirror 2025-08-05 16:29:12 +02:00
Frank David Martínez M 1b3851c502 [Core] Add Boolean Functions to expressions (AND, OR, NOT) (#22506)
* [Core] Add Boolean Functions to expressions (AND, OR, BOOL, NOT)

* [Core] Add `if` function to expressions to overcome ternary operator limitations

* [Core] Update expressions grammar to recognize relational operations as arguments

* [Core] The `if` function has been removed as no consensus was reached regarding its convenience or necessity. Its inclusion was considered potentially confusing or redundant.

* [Core] Make boolean cast based on Confusion threshold.
2025-08-05 03:50:13 +00:00
Kacper Donat b311137b74 Merge pull request #22916 from kadet1090/all-string-changes
All: Update UI strings for consistency
2025-08-05 01:20:35 +02:00
Benjamin Nauck a10a52e36b Merge pull request #21723 from B0cho/CORE_Skip_recompute_command
CORE: 'Skip recompute' command added
2025-08-04 22:48:18 +02:00
Ryan Kembrey 75b2ef67fc TechDraw: Update UI strings for consistency
Closes: #22143
2025-08-04 20:26:04 +02:00
Max Wilfinger bee89d0447 PartDesign: Update UI strings for consistency and correct for new fuctions and typos
Closes: #22128
2025-08-04 20:15:04 +02:00
Max Wilfinger b267203e67 Material: Update UI strings for consistency
Closes: #22130
2025-08-04 20:14:59 +02:00
Max Wilfinger 1f35b9d7fe Part: Update UI strings for consistency
Closes: #22133
2025-08-04 20:14:51 +02:00
Max Wilfinger ecf02b7878 Gui: Update UI strings for consistency
Closes: #22135
2025-08-04 20:14:45 +02:00
Ryan Kembrey 2c7ee9b8ed Assembly: Update UI strings for consistency
Closes: #22194
2025-08-04 20:14:38 +02:00
Ryan Kembrey 627a89d8db BIM: Update UI string for consistency
Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

Closes: #22328
2025-08-04 20:14:15 +02:00
Ryan Kembrey 80c1d7a630 CAM: Update UI strings for consistency
Closes: #22350
2025-08-04 20:13:52 +02:00
Ryan Kembrey 3d163c9990 Help: Update UI strings for consistency
Closes: #22368
2025-08-04 20:13:40 +02:00
Ryan Kembrey d7bc171a38 Test: Update UI strings for consistency
Closes: #22369
2025-08-04 20:13:34 +02:00
Ryan Kembrey adff20f7dc Measure: Update UI strings for consistency
Closes: #22370
2025-08-04 20:13:26 +02:00
Ryan Kembrey 33ccea6835 MeshPart: Update UI strings for consistency
Closes: #22372
2025-08-04 20:13:18 +02:00
Max Wilfinger 764b9cca0e Sketcher: Fix UI strings
Closes: #22770
2025-08-04 20:13:04 +02:00
Max Wilfinger b7a65220a3 DAGView: Update UI strings for consistency
Closes: #22771
2025-08-04 20:12:54 +02:00
Chris Hennes 7d6c9c0ee6 Contributing: Clarify use of Draft and On hold 2025-08-04 19:39:07 +02:00
Benjamin Nauck 37a653ef33 Gui: Remove toggleskiprecomputes todos 2025-08-04 19:17:15 +02:00
luzpaz f73e863a02 Fix various typos (#22836)
* Fix various typos
Found via codespell

* [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-04 11:14:15 -05:00
Luz Paz f791502dac CI: add more codespellignore words 2025-08-04 11:13:11 -05:00
Roy-043 8f42b8e3dd Draft: fix size of file button in Hatch task panel
Fixes #22790.

To keep the file button at the correct size a vertical bottom spacer is required.
2025-08-04 11:05:48 -05:00
Chris Hennes eea9f81a90 Base: Clean up ParameterManager::LoadDocument 2025-08-04 18:04:59 +02:00
Roy-043 dac94dfee7 Draft: fix display of cross-shaped cursor
If snapping was off, and after clicking the first point of a new line (for example), the cursor would be a default arrow instead of the intended cross-shaped cursor.

Note that the arrow cursor is still displayed for a fraction of a second after this fix.

May also fix #16559.
2025-08-04 11:02:38 -05:00
Roy-043 98756ea010 BIM: ArchPanel: FontFile parameter name has changed
The parameter name has been changed from FontFile to ShapeStringFontFile. See #21054.
2025-08-04 10:58:52 -05:00
J-Dunn 966cb36e9e CAM: revert grbl_post regression (#22569)
* CAM: revert grbl_post regression

I recently noticed a bug in grbl_proc post processor where it was not correctly setting OLD_Z  if current machine_z is below G81 retract plane in R parmeter. 

On digging into my original commit is looks like the two lines which did this have been commented out. 
I can never find the Blame feature when I need so if someone else can find the culprit feel free. 

https://github.com/FreeCAD/FreeCAD/pull/9153/commits/2bd617a2b35540a6d41cb5519328fa1280116153

This PR simply reinstates the missing lines and adds a snippet of NIST as a comment block  to prevent any over-zealous editing in the future. 

This regression means that drilling cycles start with z=clearance height instead of z=safe height leading to much costly air cutting.
This similarly messes up the  the retract plane for G98 leading to excessive machine time wasting and incorrect application of G98 returns. 

Indeed this regression was noticed because some were claiming the Safe height was redundant in drilling ops since it was never used. 

There is much discussion about all this at the moment which is being disrupted by people assuming the current broken paths are what FreeCAD is intended to do. 

Let's fix this ASAP, so we can stop this confusion and get discussions back to reality.

* [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-04 10:57:03 -05:00
Florian Foinant-Willig 39c902c616 Try to auto-fix any invalid generated helix 2025-08-04 17:52:06 +02:00
Chris Hennes 26c6aa934d Tests: Add tests for timestamp-based backups 2025-08-04 17:51:15 +02:00
wandererfan 8173b11104 [TD]more stringent test for bsplines as circles 2025-08-04 10:49:27 -05:00
Ian Abreu 4aa0aff389 Core: Generation of FEM interface bindings (#22581)
* Initial commit of FEM bindings.

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

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

* running black.

* Fixing imports.

* Update src/Mod/Fem/Gui/ViewProviderFemMeshPy.pyi

Co-authored-by: João Matos <joao@tritao.eu>

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: João Matos <joao@tritao.eu>
2025-08-04 10:48:00 -05:00
FEA-eng 5eb4dffe50 Part: Remove redundant Part Import and Export tools from the menu (#22116)
* Part: Update Workbench.cpp
2025-08-04 10:43:18 -05:00
sliptonic bb0965941d Merge pull request #22228 from knipknap/fix-custom-attribute-edit
CAM: Various bugfixes for CAM tool management
2025-08-04 10:39:25 -05:00
Ian Abreu 3ecb701959 Core: Generation of python bindings for Techdraw (#22565)
* first working interfaces..

* adding the rest.

* updated all pyi files.

* running black for formatting.

* removing unused imports

* removing empty comments

* fixing typing declarations.

* removing inline comments.

* fixing pyObjectBase in CosmeticEdgePy

* removing erroneous tags.

* running black.

* fixing CenterLinePy

* fixing import issues.

* Fixing tuple.

* Enabling CosmeticEdge compilation.

* fixing comments, removing unused imports.

* fixing ordering
2025-08-04 10:36:32 -05:00
Ian Abreu 0e4dbbe8d2 Core: Generation of python bindings for Assembly (#22574)
* adding XML, CmakeLists, and interfaces.

* removing Dict, List from typing imports.

* Normalizing imports.
2025-08-04 10:36:22 -05:00
Benjamin Nauck 837ccef6f4 Merge pull request #22165 from 3x380V/fix_19183
PD: Fix loft between curved faces
2025-08-04 17:34:52 +02:00
Pieter Hijma 1b9da7e423 Core: Fix func expression simplify 2025-08-04 16:51:11 +02:00
Pieter Hijma c86907d243 Core: Add tests for expression simplify and eval 2025-08-04 16:51:11 +02:00
Jackson Oursland 54a5192182 CI: ccache fix (#22899) 2025-08-03 23:55:53 +00:00
Kacper Donat 481b5d644b Sketcher: Make SoDatumLabel constraints more interactable (#21920)
* Sketcher: Make distance constraint more interactable

As the title says, this patch aligns selectability to what we actually
draw, so from now on extension lines and arrowheads will be also
selectable.

* Sketcher: Make radius/diameter constraint more interactable

* Sketcher: Make angle constraint more interactable

* Sketcher: Make symmetric constraint more interactable

* Sketcher: Make ArcLength constraint more interactable
2025-08-03 22:04:59 +02:00
Syres916 123b3b066b Tests: Add test for two face loft 2025-08-03 19:14:09 +02:00
Ladislav Michl 9a5d934eab PD: Fix loft between curved faces
Fixes issue 19183 also reported in the forum:
https://forum.freecad.org/viewtopic.php?p=806495
https://forum.freecad.org/viewtopic.php?t=88234

The actual reason for the failure is that the new code uses
FaceMakerBullseye method which expects coplanar wires.
The code was using FaceMakerCheese previously which changed
in LinkStage with their commit 93ce3edfe7ff
("PD: use FaceMakerBullseye for feature Loft")
and was imported here with TNP mitigations.

As changing it back would cause different regressions, lets
try different facemakers until one succeeds.

Fixes: fa8f29aed4 ("Toponaming/Part: Fix all getBaseTopoShape calls...")
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
Co-authored-by: Werner Mayer <wmayer@freecad.org>
2025-08-03 19:14:09 +02:00
theo-vt 1299b3eb9f Core: Set ::Remove flag before calling breakLinks (#22759)
* Ensure the ::Remove flag of DocumentObject is set to true before calls to breakLinks

* TechDraw: remove then add balloon annotation when changing the SourceView

* Revert "TechDraw: remove then add balloon annotation when changing the SourceView"

This reverts commit 483b4fe4a0715ff63c2669af33fc3beb60a93f54.
2025-08-03 15:45:04 +02:00
tetektoza 44b3686459 Sketcher: Make ArcLength constraint more interactable 2025-08-02 19:54:00 +02:00
tetektoza ba0e9ac5a8 Sketcher: Make symmetric constraint more interactable 2025-08-02 19:54:00 +02:00
tetektoza 36e6808d34 Sketcher: Make angle constraint more interactable 2025-08-02 19:54:00 +02:00
tetektoza c7e96a2168 Sketcher: Make radius/diameter constraint more interactable 2025-08-02 19:53:48 +02:00
tetektoza e2b8ebab41 Sketcher: Make distance constraint more interactable
As the title says, this patch aligns selectability to what we actually
draw, so from now on extension lines and arrowheads will be also
selectable.
2025-08-02 19:52:33 +02:00
tetektoza afa61ab0d1 Part: Enable SwitchToTask as a preference (#22136)
* Part: Enable SwitchToTask as a preference

As the title says. No clue why this variable was not available in
preferences, but giving it to users allow them to stop Part Design
workbench to switch to Tasks tab by default, everytime they switch
workbench, which users claim to be annoying.

So this patch adds this preference under Part/Part Design.

* Update src/Mod/Part/Gui/DlgSettingsGeneral.ui

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

* Update src/Mod/Part/Gui/DlgSettingsGeneral.ui

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2025-08-02 16:22:47 +00:00
xtemp09 5aae85f48d [Spreadsheet] Add icons to the context menu (#22773)
* [Spreadsheet] Add icons to the context menu

This commit adds the following icons:
- edit-cut
- edit-copy
- edit-paste
- edit-delete
- merge-cells
- split-cell
- view-refresh

* [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-02 14:57:53 +02:00
MisterMaker 7ded6608c6 Stylesheet: Update QComboBox and QListView styles for varset dialog (#22861)
* Update QComboBox and QListView styles

Fixed issue with Varset dialog which was using the same object as the workbench combobox. So I directed the general version to the workbench combobox and changed the general setting to more normal version.

* Update selected item background in QListView

Changed the background color for selected QListView items from @AccentBackgroundHoverColor to @GeneralBackgroundHoverColor for improved visual consistency.

* Unify selection and hover styles in views

Updated QListView, QTableView, QTreeView, and QColumnView item selection to use @AccentBackgroundColor for consistency. Changed hover states for these views to use @AccentHoverColor, improving visual coherence across the UI.

* shouldn't be in there yellow
2025-08-02 14:56:31 +02:00
Chris Hennes 113a06a2e1 Merge pull request #22881 from oursland/ci-ccache-update
CI: ccache update
2025-08-01 22:02:00 -05:00
Jacob Oursland 52453154e6 CI: formatting GitHub CI workflows. 2025-08-01 14:49:15 -07:00
Jacob Oursland 66881ad3e4 CI: address actions/cache warning and always upload cache. 2025-08-01 14:49:14 -07:00
FEA-eng a83f34e31c FEM: Add support for amplitudes with CalculiX (#22851) 2025-08-01 15:22:01 -05:00
FEA-eng fb4c739619 FEM: Add support for references for CalculiX's initial temperature (#22864)
* FEM: Update checksanalysis.py

* FEM: Update FemConstraintInitialTemperature.cpp

* FEM: Update meshsetsgetter.py

* FEM: Update writer.py

* FEM: Update write_constraint_initialtemperature.py

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

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

* FEM: Update thermomech_bimetal.inp

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-01 14:03:37 -05:00
Pieter Hijma d4303f19ca Core: Support enum editor in VarSet dialog 2025-07-31 13:43:31 +02:00
PaddleStroke bc207c0a07 Assembly: Fix https://github.com/FreeCAD/FreeCAD/issues/22815 2025-07-29 13:49:41 -05:00
Johannes Wüller 3321b13218 Sketcher: Fix external geometry out-of-bounds vector access (#22181)
* Sketcher: Fix external geometry out-of-bounds vector access

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
Co-authored-by: Ajinkya Dahale <AjinkyaDahale@users.noreply.github.com>
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-07-29 18:36:17 +00:00
dependabot[bot] d200ae6f7a Bump prefix-dev/setup-pixi from 0.8.12 to 0.8.14
Bumps [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi) from 0.8.12 to 0.8.14.
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](https://github.com/prefix-dev/setup-pixi/compare/307e5e5842748e3752d5178fbd158e0a6c1b55ff...8ca4608ef7f4daeb54f5205b20d0b7cb42f11143)

---
updated-dependencies:
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.8.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-29 13:04:45 -05:00
Chris Hennes 68ae4986c3 Merge pull request #22817 from oursland/macos-weekly-numpy
Fix numpy on macOS Weekly Builds
2025-07-29 08:43:35 -05:00
Jacob Oursland 10080f0bd3 CI: use OpenBLAS on macOS weekly builds. 2025-07-29 01:43:12 -07:00
Jacob Oursland 9e8371f91c CI: recursively fixup RPATHs on macOS. 2025-07-29 01:42:26 -07:00
PaddleStroke 83a7d3c456 AssemblyGui: CmakeLists typo 2025-07-28 22:21:45 -05:00
Chris Hennes 8dc6397fc4 App: Fix XML namespace issue in Branding 2025-07-28 12:17:34 -05:00
PaddleStroke ae5564d50c Assembly: Replace "Activated" property by the core "Suppressed" mecha… (#22409)
* Assembly: Replace "Activated" property by the core "Suppressed" mechanism.

* Fix inaccuracy

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

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

* move the change to migrationScript5 function

* Update JointObject.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-07-28 18:20:01 +02:00
wandererfan 40db448db2 [TD]light changes for style and clarity 2025-07-28 18:15:18 +02:00
wandererfan 76517f8492 [TD]fix BrokenView does not handle shells
- or faces, wires, edges that are not part of another shape
2025-07-28 18:14:21 +02:00
wandererfan c47cd6bece [TD]prevent detail object deletion during task dialog 2025-07-28 18:11:12 +02:00
sliptonic 1d64a3a983 Merge pull request #22392 from knipknap/fix-test-uses-user-data
CAM: fix: CAM tests use files from user asset dir
2025-07-28 11:08:50 -05:00
Roy-043 80713fd47c Draft: show dotted lineTracker in Trimex extrude mode (#22509)
* Draft: show dotted lineTracker in Trimex extrude mode

* Fix copy-paste error
2025-07-28 18:02:01 +02:00
Roy-043 a8a44aab0a Draft: fix handling of MouseDelay
The MouseDelay sets a point value to None. In some cases this point was then still used resulting in attribute errors.

See:
https://github.com/FreeCAD/FreeCAD/issues/19531#issuecomment-2651341711
2025-07-28 17:52:02 +02:00
Furgo 6e68d94c78 Update default sun path diagram scale 2025-07-28 17:49:56 +02:00
Yorik van Havre 7766b215d4 Merge pull request #22251 from furgo16/dxf-new-import-ui-and-more
Redesign DXF import UI, add Part primitives and Draft object import modes
2025-07-28 17:49:25 +02:00
sliptonic 43fe9b3d1a Merge pull request #22578 from z0r0/CAM-bindings
Core: Generation of python bindings for CAM
2025-07-28 10:34:34 -05:00
Ian 'z0r0' Abreu ab225f5672 fixing unnecessary list import 2025-07-28 08:59:52 -05:00
Roy-043 e64b654699 BIM: fix profile rotation of elbow pipe connector
Fixes #22761
2025-07-28 12:39:06 +02:00
Lee Matos fcd1b923b3 Gui: Fix #12199 missing font family Courier on MacOS 2025-07-28 10:17:18 +02:00
theo-vt 2da7c9ff17 Sketcher: Change the style of the curves in creation to match the construction/defining flag (#22407)
* Sketcher: Change EditCurvesDrawStyle to match either CurvesDrawStyle or CurvesConstructionDrawStyle in editDraw()

* Match color as well

* Match pattern scale as well

* Use enum instead of boolean flag

* Update src/Mod/Sketcher/Gui/Utils.h

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-07-28 02:33:25 +00:00
theo-vt 7481a5d8dd PartDesign: Hole: get direction from cylindrical surface rather than normal (#22393)
* PartDesign: Hole: Find direction of cylindrical face in Hole::execute instead of FeatureSketchBased::getProfileNormal

* PartDesign: Minor cleanups in guessNormalDirection

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-07-28 02:06:50 +00:00
Furgo f2e9a7f62e Gui: add 'Select group contents' context menu item (#22082)
* Gui: add 'Select group contents' context menu item

* Gui: remove dependency from Draft icon
2025-07-28 00:44:12 +02:00
Kacper Donat 5c2b5507d6 Merge pull request #22712 from PaddleStroke/asm_watcher
Assembly: TaskWatcher
2025-07-28 00:13:28 +02:00
paddle 3aeb6e9e92 Assembly: Task Watcher. 2025-07-27 21:23:12 +02:00
paddle 2843bbefc7 Assembly: Add 'Activate assembly' command. 2025-07-27 21:17:28 +02:00
paddle 013bbf1937 Core: TaskView: add updateWatcher when an object is set in edit. And add a timer when active document changes. 2025-07-27 21:17:28 +02:00
alafr f89a763a5b Draft: Enable Draft Edit for Draft Labels (#13445)
* Draft: implement DraftLabelGuiTools

TODO:
1- support for custom StraightDirection with any number of points
2- fix EditNode positions when the label is inside a Part

* Draft: enable Draft Edit for Draft Label object

TODO:
Make the edition possible also with double-click in the tree view

* Draft: Trigger Edit on double click on Label in the tree view

Fix part 1/2 of comment https://github.com/FreeCAD/FreeCAD/pull/13445#issuecomment-2079672899

* Draft: Edit Label: enable to move one or move both nodes

The following apply to both edit points of the straight segment:
- If a point is moved exactly on the direction of the straight segment (set the WP to the Label object and use Shift key while moving the node), then it's length is changed without moving the other point.
- If a point is moved in any other direction, both points are moved and the straight segment's length is unchanged

Part 2/2 of https://github.com/FreeCAD/FreeCAD/pull/13445#issuecomment-2079672899
2025-07-27 17:26:12 +02:00
PaddleStroke 91641c4fb6 TaskView: Add 'Permanent task box' framework. (#22750)
* TaskView: Add 'Permanent task box' framework.

* Update TaskView.h
2025-07-26 22:46:49 +02:00
PaddleStroke a8b655d602 Assembly: Use icon overlay for unconnected joints instead of annoying warning. (#22662)
* Core: FeaturePython : Add getOverlayIcons to python interface

* Assembly: unconnected joints icon overlay Fix #22643

* Update src/Mod/Assembly/Gui/ViewProviderAssembly.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update AssemblyObject.cpp

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

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

* Update ViewProviderFeaturePython.h

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

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

* Update ViewProviderFeaturePython.h

* Update JointObject.py

* Update ViewProviderFeaturePython.h

* Update ViewProviderFeaturePython.cpp

* Update Application.cpp

* Update ViewProviderFeaturePython.cpp

* Update ViewProviderFeaturePython.h

* Update ViewProviderAssembly.cpp

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-26 22:35:24 +02:00
Kacper Donat 4823ccb6a1 Merge pull request #22736 from chennes/sketcherCodeQLCleanup
Sketcher CodeQL cleanup
2025-07-26 11:21:53 +02:00
Chris Hennes 3aa31f11f6 Part: Add error handling to TopoShape::isLinearEdge 2025-07-26 11:17:33 +02:00
PaddleStroke 4f4fe019b8 Assembly: utils: tiny fix 2025-07-26 11:16:28 +02:00
Chris Hennes 29da89febd Sketcher: Clean up some old commented out code 2025-07-25 19:12:30 -05:00
Jacob Oursland ce9bc86908 CI: fix macOS on x86_64 weekly builds
Despite claims of compatibility with 'conda_build_config.yaml', rattler-build does not support
all of the necessary capabilities to set the minimum macOS version. Converting the
'conda_build_config.yaml' to the rattler-build 'variants.yaml' corrects the issue.
2025-07-25 17:54:43 -05:00
Pieter Hijma 79d1ecbfd2 Gui: Allow expressions in the VarSet dialog (#22719)
* Gui: Allow expressions in the VarSet dialog

* Gui: Process review comments VarSet Dialog

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-07-25 23:16:37 +02:00
Chris Hennes cdf0097dec Sketcher: Fix increment of parabola constraint tag
It is an invisible and unstated assumption of the redundant-constraint
removal code that the "tag" of a constraint can be used as the index
into the SketchObject's Constraint list. This is true for all objects
except a parabola, which, when creating its internal alignment focus
constraints, incremented the ConstraintCounter for *each* of the
internal constraints, instead of only once.
2025-07-25 22:03:10 +02:00
sliptonic 1ba5888330 Merge pull request #22659 from chennes/cam-size_t-fmt-spec
CAM: Fix the format spec used with size_t
2025-07-25 14:45:11 -05:00
Kacper Donat 4702b839ac Stylesheets: Fix missing arrows 2025-07-25 13:38:52 -05:00
sliptonic b5d782e856 Merge pull request #22314 from tarman3/vcarve
CAM: Vcarve fix
2025-07-25 12:44:16 -05:00
Luz Paz 9efd70ffa4 Fix various source comment typos
Found via codespell
2025-07-25 10:25:54 -05:00
Chris Hennes 3679a2adca Sketcher: Extract "processFace" function
Tool-aided refactor, no functional changes.
2025-07-25 10:08:29 -05:00
Chris Hennes 403056fa20 Sketcher: Resolve "Declaration hides variable"
Reduce some code duplication via helper method.
2025-07-25 09:48:34 -05:00
Chris Hennes ab91372e28 Sketcher: Resolve "Type confusion" CodeQL critical warning 2025-07-25 09:21:43 -05:00
matthiasdanner f3e1e6cec0 Sketcher: Display arc angle and length constraints beyond center point (#22651)
* Allow arc segment length and angle constraints to go past the center point

* fix angle helper lines

* fix linter warning

* fix arc length calculation

---------

Co-authored-by: Matthias Danner <28687794+matthiasdanner@users.noreply.github.com>
2025-07-25 13:57:21 +02:00
Kacper Donat f572d2e4f2 Merge pull request #22660 from chennes/fixMultResultConvertedToLargerType
Fix mult result converted to larger type
2025-07-25 10:20:03 +02:00
Jacob Oursland 705f2daa61 CI: set minimum macOS SDK to 10.13. 2025-07-24 21:00:45 -05:00
theo-vt 3896e2daae Change Py::Int to Py::Long 2025-07-24 19:16:00 -05:00
Chris Hennes 0cc8460def GUI: Switch DAGModel to use qreal instead of float 2025-07-24 17:59:09 -05:00
Kacper Donat 32eee15223 Merge pull request #22544 from jffmichi/undockfullscreen
Gui: Allow undocking and fullscreen for all MDI windows
2025-07-25 00:18:20 +02:00
Kacper Donat b7c978314e Merge pull request #22577 from AjinkyaDahale/sk-fix-22352
Sketcher: Avoid crash when using trim as described in #22352
2025-07-25 00:16:28 +02:00
Chris Hennes 0bd4c7cfe2 App: Update setContent call for Qt 6.8 2025-07-25 00:12:22 +02:00
PaddleStroke e141cb7a49 Assembly: Fix infinite loop with subassembly. Fix #19319 (#22685)
* Assembly: Fix infinite loop with subassembly. Fix #19319

* squash

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

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

* Update AssemblyObject.h

* [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-07-25 00:11:24 +02:00
Chris Hennes 983ec3815c Base: Disable default entity resolution
Fixes CWE-611, guards agains XML external entity attacks.
2025-07-24 22:23:39 +02:00
Syres916 19001d9cfe [Gui] Property Editor allow double-click of separators 2025-07-24 22:15:15 +02:00
PaddleStroke 45adb828a6 Assembly: Fix insert sub-assemblies positioning issues (#22677) 2025-07-24 12:43:23 -05:00
PaddleStroke 836d543797 Assembly: Fix flexible sub-assemblies cannot be deleted (#19100) 2025-07-24 12:41:31 -05:00
Jackson Oursland 714a1e2e70 Weekly build fixes (#22699)
* CI: use CMAKE_ARGS for weekly builds.
* CI: set CC and CXX for windows weekly build.
* CMake: add OCCT libraries path to CMakePresets.json.
* CI: synchronize CMake config for weekly-build with FreeCAD-Bundle.
* CI: fix path to OCCT in weekly-builds.

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-07-24 17:01:58 +00:00
PaddleStroke cdd69cca7d Assembly: Simulation active only if proper joint available (#22711) 2025-07-24 14:59:58 +00:00
PaddleStroke 83b82b2dcc Assembly: Insert tool : fix error when removing object 2025-07-24 08:46:39 -05:00
Syres916 e828c5da4d [Sketcher] Ensure All Reference Constraints are Read Only in the Property Editor 2025-07-24 08:40:09 -05:00
Roy-043 0baa28ed24 BIM: hide base of railings 2025-07-24 14:58:02 +02:00
Benjamin Nauck 321a294f2d Merge pull request #22697 from chennes/replaceTraceback 2025-07-24 14:34:02 +02:00
Benjamin Nauck 52e1293040 Merge pull request #22698 from oursland/remove-occt-variant 2025-07-24 14:29:12 +02:00
Kacper Donat ad09cbe7b5 Merge pull request #22692 from chennes/fixTestHeisenbug
Fix test initialization failure
2025-07-24 11:06:09 +02:00
Jacob Oursland b90a909fa5 CMake: remove unused FREECAD_USE_OCC_VARIANT. 2025-07-23 22:00:17 -07:00
Chris Hennes d49b94f0ca Gui: Replace use of traceback with sys._getframe() 2025-07-23 21:08:02 -05:00
Chris Hennes d54ff81870 Tests: Save/restore Materials user prefs 2025-07-23 19:26:20 -05:00
Chris Hennes 25f1d28468 Tests: Ensure tests use a fixture that inits app 2025-07-23 19:26:14 -05:00
Chris Hennes 7df7768729 Merge pull request #22690 from oursland/pin-compilers
Pin compilers
2025-07-23 17:40:29 -05:00
Jacob Oursland 69fdb38cdc CI: pin weekly build to compilers 1.10 to avoid libc++ 19 issue. 2025-07-23 12:33:45 -07:00
Jacob Oursland 7225f81da6 pixi: pin compilers to 1.10 to avoid libcxx 19 compile failures. 2025-07-23 12:30:44 -07:00
luzpaz a56b6f84d2 codespell: add 'DocumentIn' to list
PR replaces #22667
2025-07-23 13:23:05 -05:00
Chris Hennes fe624f2c3a CAM: Add missing initializers 2025-07-23 16:51:20 +02:00
PaddleStroke d165324d31 Assembly: VPAssemblyLink: remove warning leftover 2025-07-23 07:24:17 -05:00
PaddleStroke 1aa2aada37 Assembly: Fix flexible subassemblies have no transform gizmo when selected (#22670)
* Assembly: Fix flexible subassemblies have no transform gizmo when selected
2025-07-23 07:23:49 -05:00
xtemp09 d87b41181e Add "Clear Recent files list" item (#22638)
* Add "Clear Recent files" item

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-07-23 04:11:48 +00:00
tomate44 4614e6b4f6 Part: Feature Offset2D fix #22563 2025-07-22 20:40:51 -05:00
Ian Abreu 8d1c60bb44 Core: Generation of Mesh interface bindings (#22623)
* Initial commit of Mesh

* Fixing import
2025-07-22 19:39:10 -05:00
Ian Abreu bb2ee82990 Core: Generation of Spreadsheet interface bindings (#22624)
* Initial commit of spreadsheet

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-07-22 18:34:42 -05:00
Jacob Oursland 081f24c694 CI: add backport workflow to aid in backporting. 2025-07-22 17:04:56 -05:00
luzpaz 7587b29b4a Gui: Add header to InputHint.h (Fixes #22654)
Fixes #22654
2025-07-22 16:46:08 -05:00
Chris Hennes 7a70843be2 TD: Remove incorrect allocation failure handler 2025-07-22 09:57:49 +02:00
Pieter Hijma ca9ecfb517 PartDesign: Add migration tag 2025-07-22 09:03:27 +02:00
Chris Hennes b96c9a51bb CI: Remove 3rd party and generated code from CodeQL analysis 2025-07-22 09:00:40 +02:00
Chris Hennes 963527fc80 TD: Switch to non-buffer-based format string interpretation 2025-07-22 08:59:49 +02:00
Chris Hennes 803a050082 Base: Add missing header to PCH 2025-07-22 08:59:03 +02:00
Chris Hennes 38a177b1bf TD: Fix multiplication result converted to larger type 2025-07-21 23:40:56 -05:00
Chris Hennes f1c200b204 Sketcher: Fix multiplication result converted to larger type 2025-07-21 23:40:56 -05:00
Chris Hennes 7d93d69890 Reverse Engineering: Fix multiplication result converted to larger type 2025-07-21 23:40:56 -05:00
Chris Hennes 814263e561 Part: Fix multiplication result converted to larger type 2025-07-21 23:40:56 -05:00
Chris Hennes a1d73f8b78 MeshPart: Fix multiplication result converted to larger type 2025-07-21 23:40:56 -05:00
Chris Hennes 1d1acc1458 Mesh: Fix multiplication result converted to larger type 2025-07-21 23:40:51 -05:00
Chris Hennes b0d4fad05a Inspection: Fix multiplication result converted to larger type 2025-07-21 22:04:43 -05:00
Chris Hennes 1237fbd391 FEM: Fix multiplication result converted to larger type 2025-07-21 22:04:10 -05:00
Chris Hennes 6c2617874a CAM: Fix multiplication result converted to larger type 2025-07-21 22:03:14 -05:00
Chris Hennes c2705c6fc2 Gui: Fix multiplication result converted to larger type 2025-07-21 22:02:15 -05:00
Chris Hennes a0b5cc90cc CAM: Fix the format spec used with size_t 2025-07-21 21:32:07 -05:00
Kacper Donat 5d58ac7459 Merge pull request #22088 from hyarion/feature/variable-constraint-points
Sketcher: Adds support for constraint with more than 3 points
2025-07-21 23:06:49 +02:00
PaddleStroke 80935791fd Assembly: Fix unconnected Joints always touched
Fix https://github.com/FreeCAD/FreeCAD/issues/22642
2025-07-21 13:24:28 -05:00
sliptonic c99cd73cd6 Merge pull request #22398 from dbtayl/fix_22073
CAM: Adaptive: Fix NULL input shapes when top of stock equals top of model
2025-07-21 11:35:39 -05:00
Roy-043 ebc776fca9 Draft: fix hang on snapping to large point cloud 2025-07-21 11:04:53 -05:00
Benjamin Nauck 7150ae1dc9 Sketcher: Add tests for ensuring accessing works for both old and new api 2025-07-21 18:03:14 +02:00
PaddleStroke 04bbfc6e07 Fix https://github.com/FreeCAD/FreeCAD/issues/21936 2025-07-21 11:03:12 -05:00
Benjamin Nauck ac07a56b75 Sketcher: Add support for more than 3 points
While this adds a new way, it keeps the old to make it easier to merge.
This will allow other work to be merge before without rebase issues
2025-07-21 18:02:23 +02:00
Benjamin Nauck 6eff3ed949 Sketcher: Initialize constraint members in class declaration 2025-07-21 18:02:23 +02:00
Syres916 4fa82a796d [Points] Add e57 to import file extensions 2025-07-21 11:02:17 -05:00
Yorik van Havre fd9f93f841 BIM: Prevent opening several Layer Managers - issue #17983 2025-07-21 11:01:39 -05:00
Yorik van Havre a7960a8e66 BIM: Hide stairs base object on creation - Fixes #22436 2025-07-21 11:01:05 -05:00
wmayer 402d533bff Sketcher: fix for issue 12925 2025-07-21 10:55:06 -05:00
Roy-043 ff03f3f182 BIM: BimBox: improve length, width and height inputs
PR to make the handling of the mentioned inputs consistent with that of the X, Y and Z inputs: check for in-command shortcuts. and select only the numerical portion of the text on focus change.
2025-07-21 15:41:37 +02:00
FEA-eng 949767ea69 FEM: Add cavity radiation with CalculiX (#22593) 2025-07-20 21:26:03 -05:00
jffmichi 6de1358725 Gui: clean up and fix active window handling 2025-07-21 00:44:18 +02:00
jffmichi fea703c8be Gui: use correct cast with getActiveView 2025-07-21 00:44:18 +02:00
jffmichi da6a08acfe Gui: simplify and fix setCurrentViewMode 2025-07-21 00:44:18 +02:00
jffmichi 475a889316 TechDraw: fix dock/undock/fullscreen for TechDraw view 2025-07-21 00:44:18 +02:00
jffmichi 450846c4bc Gui: enable dock/undock/fullscreen for all MDI widgets 2025-07-21 00:44:18 +02:00
Chris Hennes 6974c83f9a Base: Switch from toTimeSpec to toTimeZone for Qt 6.9 compatibility 2025-07-20 22:48:48 +02:00
Chris Hennes 1af908409e Gui: Fix compiler warnings 2025-07-20 22:47:52 +02:00
PaddleStroke aa785f78d6 Sketcher: Dimension: Offset the label when moving mouse (#22387)
* Sketcher: Dimension: Offset the label when moving mouse

* Sketcher: Create dedicated enum for offset boolean

This improves readability because the intent must be stated explicitly.

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-07-20 19:47:21 +02:00
matthiasdanner f38485ada2 Sketcher: Add second arc helper on diameter constraint (#22579)
* add second arc helper on diameter constraint

* fix linter warnings

---------

Co-authored-by: Matthias Danner <28687794+matthiasdanner@users.noreply.github.com>
2025-07-20 19:46:49 +02:00
Chris Hennes 538b6e042c Merge pull request #22227 from kadet1090/refactor-tool-hints
Sketcher: Refactor Tool Hints
2025-07-20 12:05:15 -05:00
Ian 'z0r0' Abreu efc4defebf fixing imports 2025-07-20 09:04:27 -04:00
Ian 'z0r0' Abreu 536a7452c7 Removal of comments. 2025-07-20 08:51:45 -04:00
Chris Hennes b97bdb7383 Tests: Add tests for 'Standard' backup policy (#22566)
* Tests: Add tests for 'Standard' backup policy

* [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-07-20 00:34:07 +02:00
PaddleStroke 4bdaa0180a Sketcher: Fix random gray icon (#22502)
* Sketcher Fix #10027
2025-07-20 00:17:58 +02:00
MisterMaker 790511cd92 [Stylesheet] Update dark theme tree color and tab bar background (#22596)
* Update dark theme tree color and tab bar background

Changed the TreeActiveColor value in the FreeCAD Dark preference pack for improved visibility. Set the QTabBar background color to use @PrimaryColor in the stylesheet for fixing drawbase issues.

* Differentiate QTabBar styles for mdiAreaTabBar

Separated the QTabBar#mdiAreaTabBar styling from the general QTabBar, setting qproperty-drawBase and background-color specifically for mdiAreaTabBar. The general QTabBar now has qproperty-drawBase set to 0, improving style specificity for file tab bars.
2025-07-20 00:15:31 +02:00
MisterMakerNL 7ca0d17127 Include PNG files in images_classic source group
Added support for PNG files in the images_classic directory by updating the CMake file glob pattern. This ensures that both SVG and PNG images are included in the build process.
2025-07-20 00:07:44 +02:00
Emmanuel Ferdman 1bcf0d4996 Fix path dressup array test case
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2025-07-19 13:08:36 -07:00
Chris Hennes 121363311a CMake: Move creation of qt.conf 2025-07-19 11:44:07 -05:00
Chris Hennes 066fc1acc0 CMake: Explictly add QtOpenGLWidgets
Necessary for manually-compiled Qt 6.9 builds.
2025-07-19 17:17:09 +02:00
Max Wilfinger 17dadc774c Part: Align to selection - implement for 1 non-planar face selection (#22365)
* Part: Align to selection - implement for 1 non-planar face

* Clean up suggested code changes
2025-07-19 11:21:46 +02:00
Kacper Donat 4ac445afe7 Sketcher: Declare tr function for DrawSketchHandler 2025-07-19 10:05:09 +02:00
Kacper Donat ed14e6b24f Sketcher: Use generic tool hints table for DrawSketchHandlerBSpline 2025-07-19 10:05:09 +02:00
Kacper Donat 91de480bc8 Sketcher: Use generic tool hints table for DrawSketchHandlerTranslate 2025-07-19 10:05:09 +02:00
Kacper Donat 6564ad5c6e Sketcher: Use generic tool hints table for DrawSketchHandlerSlot 2025-07-19 10:05:09 +02:00
Kacper Donat 05eb702f87 Sketcher: Use generic tool hints table for DrawSketchHandlerScale 2025-07-19 10:05:08 +02:00
Kacper Donat 276a44c1e3 Sketcher: Use generic tool hints table for DrawSketchHandlerRotate 2025-07-19 10:05:08 +02:00
Kacper Donat 6b22c79be2 Sketcher: Use generic tool hints table for DrawSketchHandlerRectangle 2025-07-19 10:05:08 +02:00
Kacper Donat 49fbffa200 Sketcher: Use generic tool hints table for DrawSketchHandlerPolygon 2025-07-19 10:05:08 +02:00
Kacper Donat 7d7fc0c021 Sketcher: Use generic tool hints table for DrawSketchHandlerLineSet 2025-07-19 10:05:08 +02:00
Kacper Donat 23bd9e86fd Sketcher: Use generic tool hints table for DrawSketchHandlerLine 2025-07-19 10:05:08 +02:00
Kacper Donat 9a9613d88c Sketcher: Use generic tool hints table for DrawSketchHandlerFillet 2025-07-19 10:05:08 +02:00
Kacper Donat ed617cdf74 Sketcher: Use generic tool hints table for DrawSketchHandlerExtend 2025-07-19 10:05:08 +02:00
Kacper Donat 2ab975cfd5 Sketcher: Use generic tool hints table for DrawSketchHandlerEllipse 2025-07-19 10:05:08 +02:00
Kacper Donat edf0d488e4 Sketcher: Use generic tool hints table for DrawSketchHandlerCircle 2025-07-19 10:05:08 +02:00
Kacper Donat 5c1d097161 Sketcher: Use generic tool hints table for DrawSketchHandlerBSpline 2025-07-19 10:05:08 +02:00
Kacper Donat e86a43c183 Sketcher: Use generic tool hints table for DrawSketchHandlerArcSlot 2025-07-19 10:05:08 +02:00
Kacper Donat f0c6cd7a0f Sketcher: Use generic tool hints table for DrawSketchHandlerArcOfParabola 2025-07-19 10:05:08 +02:00
Kacper Donat d1a25c98bc Sketcher: Use generic tool hints table for DrawSketchHandlerArcOfHyperbola 2025-07-19 10:05:08 +02:00
Kacper Donat 20876d7b35 Sketcher: Use generic tool hints table for DrawSketchHandlerArcOfEllipse 2025-07-19 10:05:08 +02:00
Kacper Donat b2453caaea Sketcher: Use generic tool hints table for DrawSketchHandlerArc 2025-07-19 10:05:08 +02:00
Kacper Donat 33ec6e671e Gui: Add standardized HintsTable for InputHints
Input hints in various DrawSketchHandler were implemented independently
using declarative mechanism with searching over lookup table. This
results in a lot of duplicated code, this commit will create generic
mechanisms that can be used to replace them.
2025-07-19 10:05:08 +02:00
Ian 'z0r0' Abreu 6358874a58 merging. 2025-07-18 19:44:47 -04:00
Ian 'z0r0' Abreu 325fa7f5e6 removing List, Dict typing refs. 2025-07-18 19:44:09 -04:00
Ian Abreu b721257670 Merge branch 'main' into CAM-bindings 2025-07-18 18:28:49 -04:00
Ian 'z0r0' Abreu e4e8625a4b initial commit 2025-07-18 18:27:08 -04:00
Ajinkya Dahale 114d3dcd87 Sketcher: Improve constraint transfer in SketchObject::trim()
Provide new geos to `deriveConstraintsForPieces` manually, since they are
not (and likely cannot be at time of calling) added to the sketch. This will
make sure that the method has sufficient information to properly transfer/create
new constraints.
2025-07-19 03:25:38 +05:30
Ajinkya Dahale 018ac7b9dd Sketcher: Skip checks in deriveConstraintsForPieces when risky
Possibly fixes #22352.

It is possible to call the method when new geos are not yet created or added to
the sketch. In such cases, the values obtained can be "dirty", and is likely a
seg-fault.
2025-07-19 03:25:38 +05:30
PaddleStroke f468e4c4ac Assembly: Fix error message flexible assembly #22561 2025-07-18 15:20:27 -05:00
sliptonic 7de4fac9fe Merge pull request #22524 from jffmichi/drilling_remove_redundant
CAM: remove redundant move after drilling
2025-07-18 14:15:19 -05:00
mosfet80 c42b92461c Remove unnecessary “using std::numbers::pi” 2025-07-18 20:30:44 +02:00
Chris Hennes 95a7dfd515 Remove boost::filesystem includes 2025-07-18 20:26:56 +02:00
PaddleStroke da5e18f5d8 Import: Fix export crash when hidden object in Part. (#14567) 2025-07-18 11:20:04 -05:00
theo-vt b0dcce6c66 Sketcher: Only autoscale if the datum being edited is the scale defining datum (#22419) 2025-07-18 09:58:30 -05:00
wmayer 48785dfd0e PD: Fix crash in Loft::getSectionShape
The passed DocumentObject pointer can be null which is nowhere checked.
This fixes issue 19545

Fixes: 256ad7a01a ("PartDesign: Loft Intelligence - Select the whole sketch if the selected shape is ...")
2025-07-18 09:57:29 -05:00
FEA-eng fa694ff4c5 FEM: Add hard contact with CalculiX (#22513) 2025-07-18 09:56:39 -05:00
Jacob Oursland a1bb6d2c25 CI: Update weekly build dependencies for VFX Reference Platform. 2025-07-18 09:54:40 -05:00
dependabot[bot] 501a5fc28d Bump github/issue-metrics from 3.21.0 to 3.22.0
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.21.0 to 3.22.0.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/346541fd0068df64c02607a4c7f55438dc2881e2...f5c0d3ba93f0f6c6465665ac6ed1737dc74cea78)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-18 09:54:04 -05:00
dependabot[bot] f9e6dcfc21 Bump prefix-dev/setup-pixi from 0.8.11 to 0.8.12
Bumps [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi) from 0.8.11 to 0.8.12.
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](https://github.com/prefix-dev/setup-pixi/compare/273e4808c831936a3ce1a3080c829d9e153143d3...307e5e5842748e3752d5178fbd158e0a6c1b55ff)

---
updated-dependencies:
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.8.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-18 09:53:54 -05:00
PaddleStroke facfbeb47e Assembly: Fix crash 20614 (#22538) 2025-07-18 09:53:35 -05:00
Mos c2832547f8 remove unnecessary std::numbers::pi;
using std::numbers::pi is not necessary.   fix compile warning

removed commented code
2025-07-18 09:48:22 -05:00
Florian Foinant-Willig c968effe26 Sketcher: manage legacy negative circle-line distance (#22203)
* manage legacy negative circle-line distance

* Add test for legacy negative circle-line distance
2025-07-17 23:00:38 -05:00
Kacper Donat 46d1345ca2 Attacher: Orient normals correctly for Midpoint
Co-authored-by: Max Wilfinger <max@wilfinger.de>
2025-07-18 01:12:22 +02:00
sliptonic 3f6a3f10ff Merge pull request #22374 from z0r0/CAM-Inspect-Fix
CAM: Fixing Length Check in CommandPathInspect class
2025-07-17 13:40:08 -05:00
Tayler Miller 8acbb224fc Assembly: Fixes bug for origins in Sub-AssemblyLink (#22415) 2025-07-17 08:03:28 -05:00
matthiasdanner 9cd3b31067 Sketcher: Fix Constraint Filter Handling (#22072)
* Fix SpecialFilter Handling for selected and associated constraints
Fix show constraints in 3d view if no constraints in list and filter to only show selected is disabled

---------

Co-authored-by: Matthias Danner <28687794+matthiasdanner@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-07-17 07:51:44 +00:00
PaddleStroke 39266e496f Sketcher: Fix #13927 (#22427) 2025-07-16 21:55:52 -05:00
Bas Ruigrok 6ef6a70822 Gui: NaviCube recreate frame buffer if invalid (#22454)
* Gui: NaviCube recreate frame buffer if invalid

* Gui: NaviCube add debug warning if the frame buffer became invalid
2025-07-16 21:43:52 -05:00
dependabot[bot] 874a9e5007 Bump step-security/harden-runner from 2.12.2 to 2.13.0
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.12.2 to 2.13.0.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/6c439dc8bdf85cadbbce9ed30d1c7b959517bc49...ec9f2d5744a09debf3a187a3f4f675c53b671911)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-16 21:40:30 -05:00
pre-commit-ci[bot] 692ddf3a30 [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pre-commit/mirrors-clang-format: 6b9072cd80691b1b48d80046d884409fb1d962d1 → 182152eb8c5ce1cf5299b956b04392c86bd8a126](https://github.com/pre-commit/mirrors-clang-format/compare/6b9072cd80691b1b48d80046d884409fb1d962d1...182152eb8c5ce1cf5299b956b04392c86bd8a126)
2025-07-16 21:39:56 -05:00
Chris Hennes f2569e6427 Gui: Fix missing PCH include 2025-07-17 03:35:12 +02:00
jffmichi 3bce6e3fc9 CAM: remove redundant move after drilling 2025-07-16 20:31:42 +02:00
theo-vt f2d0a69e01 Core: Remember export information on a per document basis (#22067)
* Use a new struct ExportInfo to hold export information on a per document basis
2025-07-16 02:43:57 +00:00
B0cho 62e5d0df23 CORE: Tree context menu upgraded with 'Std_ToggleSkipRecompute' 2025-07-15 22:12:22 +02:00
B0cho b38394da68 CORE: 'Std_ToggleSkipRecompute' implemented, no icon 2025-07-15 22:12:22 +02:00
jffmichi e12b4fd27c CAM: select rows instead of cells in drilling panel 2025-07-15 21:09:16 +02:00
dependabot[bot] 7e03fc6620 Bump prefix-dev/setup-pixi from 0.8.10 to 0.8.11
Bumps [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi) from 0.8.10 to 0.8.11.
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](https://github.com/prefix-dev/setup-pixi/compare/14c8aabd75893f83f4ab30c03e7cf853c8208961...273e4808c831936a3ce1a3080c829d9e153143d3)

---
updated-dependencies:
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.8.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-15 12:07:50 -05:00
Chris Hennes 6a06ab24db Update Addon Manager submodule 2025-07-15 10:16:24 -05:00
Max Wilfinger a41921924f Merge pull request #22459 from kadet1090/stylesheet-fixes
Stylesheet: Various fixes
2025-07-15 04:58:06 +02:00
Ilya Baidakov 7c05289f6b Add custom template path support for WebGL export (#21695)
* Add custom template path support for WebGL export
- Extract hardcoded template into separate file and store in Mod/BIM/Resources/templates
- Remove hardcoded template from code
- Add new section to Import-Export Preference page ("WebGL"). This introduces two new parameters
- Make export() return bool to indicate success or failure for controlled headless export
- Add new unit tests for WebGL export to ensure functionality
- Update CMakeLists.txt to include the new template resource

* Apply suggestions from code review

Changes to literals, suggested after DWG review

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

* Removed unused import

* Removed unused import

---------

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
Co-authored-by: Yorik van Havre <yorik.vanhavre@gmail.com>
2025-07-14 22:25:57 +00:00
PaddleStroke 562d646082 Sketcher: add ConstraintLineByAngle helper. (#22273)
* Sketcher: add ConstraintLineByAngle helper.

* Update src/Mod/Sketcher/Gui/Utils.cpp

* Update src/Mod/Sketcher/Gui/Utils.cpp

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-07-14 19:44:32 +00:00
MisterMakerNL dc2f2374b6 Adding PNG back for now
Adding it back because old stylesheet is not compitable with SVG.  Hopefully it can be removed soon.
2025-07-14 20:51:42 +02:00
Kacper Donat 53c0b56e74 Stylesheets: Fix file chooser buttons not displaying dots 2025-07-14 20:48:50 +02:00
Kacper Donat 09ecda8dc1 Stylesheets: Fix jumping entries on Windows
Co-authored-by: MisterMakerNL <marijn82@gmail.com>
2025-07-14 20:48:50 +02:00
Kacper Donat 50b0dc691c Stylesheets: Fix property editor headers 2025-07-14 20:48:50 +02:00
Kacper Donat efc0cd6ede Stylesheets: Fix empty line between header and content in QSInt 2025-07-14 20:48:49 +02:00
Kacper Donat aa180b3443 Stylesheets: Properly utilize AccentColor 2025-07-14 20:48:49 +02:00
Kacper Donat 1bb93dc105 Gui: Add blend function to style parameters 2025-07-14 20:48:49 +02:00
Kacper Donat 9de9cff3fe Build: Fix built-in copying PreferencePacks 2025-07-14 20:48:49 +02:00
Kacper Donat 374c40adde Stylesheets: Unify border on ScrollBars 2025-07-14 20:48:49 +02:00
Kacper Donat 4f7a608217 Stylesheets: Remove QTabBar color inconsistencies 2025-07-14 20:48:49 +02:00
Kacper Donat 4a719a784d Stylesheets: Remove padding and marign resets.
Setting margins and padding to 0 on * disables margins supplied by the
QStyle. That was required when QStyle was not enforced but now it can
cause trouble.
2025-07-14 20:48:49 +02:00
Kacper Donat 9b92902c0d Gui: Rename FreeCAD_stylesheet.qss into FreeCAD.qss
This removes redundant suffix from the file name.
2025-07-14 20:48:49 +02:00
Syres916 bb9d0a44ec Measure: Use string based addObject as workaround as type is an alias (#22462)
* [Measure] Revert one specific piece of code from PR19142

* Measure: Add comment for workaround

---------

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-07-14 18:41:55 +00:00
theo-vt e5a206a2e4 Use correct flag 2025-07-14 18:28:33 +02:00
mosFet bf2cd60553 update addonManager
update addonManager

.
2025-07-14 18:21:12 +02:00
Kacper Donat 871b1add1f Merge pull request #22119 from captain0xff/draggger-rework2
Gui: refactor SoRotationDragger
2025-07-14 18:14:42 +02:00
FEA-eng 119b8cffd7 FEM: Add offset property for CalculiX's shell section (#22385)
* FEM: Update element_geometry2D.py

* FEM: Update write_femelement_geometry.py

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

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

* FEM: Update ccx_cantilever_ele_quad4.inp

* FEM: Update ccx_cantilever_ele_quad8.inp

* FEM: Update ccx_cantilever_ele_tria3.inp

* FEM: Update ccx_cantilever_ele_tria6.inp

* FEM: Update constraint_contact_shell_shell.inp

* FEM: Update material_multiple_bendingbeam_fivefaces.inp

* FEM: Update square_pipe_end_twisted_edgeforces.inp

* FEM: Update square_pipe_end_twisted_nodeforces.inp

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-14 18:10:00 +02:00
dependabot[bot] 7fd8e63278 Bump github/codeql-action from 3.29.1 to 3.29.2
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.1 to 3.29.2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/39edc492dbe16b1465b0cafca41432d857bdb31a...181d5eefc20863364f96762470ba6f862bdef56b)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.29.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 18:03:57 +02:00
FEA-eng 18acfabea6 FEM: Add thermal contact with CalculiX (#22121) 2025-07-14 11:03:43 -05:00
wandererfan 5b1f9b1082 [TD]Revert property type changes 2025-07-14 17:57:28 +02:00
Florian Foinant-Willig 0ecdb8b00e Sketcher: clean planegcs/Geo (#22378)
* Sketcher: clean planegcs/Geo
2025-07-14 10:56:25 -05:00
Bas Ruigrok d1c14a21e1 Gui: Increase orthographicFocalDistance to get more near and far distance slack 2025-07-14 17:55:47 +02:00
Syres916 7945508f8d [TechDraw] Improve TaskFillTemplate tool (#22400)
* [TechDraw] Improve TaskFillTemplate tool
* [TechDraw] use max instead of if block as per Lint feedback
* [TechDraw] remove unused icon variable
2025-07-14 10:40:01 -05:00
theo-vt c8bddd2f2b Sketcher: assign the old geometries' GeometryId[s] to new geometries after scaling (#22263)
* Reassign facade ids after scale operation if deleting geometries

* Fix failing CI
2025-07-14 17:39:03 +02:00
theo-vt e38fe196d5 Allow open wires in Part::getProfileNormal 2025-07-14 17:38:51 +02:00
paul f81003f492 [ArchWindow] subVolume Support Multi-Material (bug fix) (#22279)
* [ArchWindow]  subVolume Support Multi-Material (bug fix)

Fix #21640

BIM: Automatic hole depth for windows issue (new window depth algorithm cannot determine the width of the wall when using multimaterial)

* [ArchWindow] subVolume Support Multi-Material (bug fix) / Further fix

(Fix problem found by Github CodeQL - Local variable 'totalThk' may be used before it is initialized)

Fix #21640

BIM: Automatic hole depth for windows issue (new window depth algorithm cannot determine the width of the wall when using multimaterial)
2025-07-14 17:23:14 +02:00
Syres916 c57cf0e1e0 [TechDraw] fix regression from PR19502 2025-07-14 15:55:50 +02:00
Roy-043 08aef89fc3 BIM: fix Height and Width inversion for rectangular pipes 2025-07-14 15:40:18 +02:00
Paul Lee a47fc30873 [ArchWindowPresets] Further Fix Sill Change
Further to Bug-fix Changing Sill _&_ SketchArch Support Sill Property
- https://github.com/FreeCAD/FreeCAD/pull/21726 ,
minor fix to make ensure tracking of sill works upon window creation.
2025-07-14 15:36:40 +02:00
Furgo 485b8016f4 Remove debug print statement 2025-07-14 10:18:04 +02:00
Furgo 2061df9fa9 Import: DXF, fix CodeQL errors 2025-07-14 10:18:04 +02:00
Furgo 8bda4ddfa5 Import: DXF, make straight polylines Draft-editable 2025-07-14 10:18:04 +02:00
Furgo 9ce3a35bc8 Import: DXF, correctly transfer Draft.Line points to make them editable 2025-07-14 10:18:04 +02:00
Furgo 8054042a9a Import: DXF, fix typo in individual shapes import mode 2025-07-14 10:18:04 +02:00
Furgo f8b3e91e23 Import: DXF, add suggestions and improve UI copy. 2025-07-14 10:18:04 +02:00
Furgo 808526e8b8 Import: DXF, deduplicate Part primitives creation
Create helpers that can be reused when importing entities as top-level
geometry and as part of blocks
2025-07-14 10:18:04 +02:00
Furgo cb64caf283 Import: DXF, first working version of dimensions import 2025-07-14 10:18:04 +02:00
Furgo 5243501638 Import: DXF, make ellipses parametric 2025-07-14 10:18:04 +02:00
Furgo fa4d8247bc Import: DXF, first working version of Draft objects import 2025-07-14 10:18:04 +02:00
Furgo a7f8fd29bb Import: DXF, first working version for import as Part primitives 2025-07-14 10:18:04 +02:00
Furgo 071bdcc579 Import: DXF, add dedicated import dialog 2025-07-14 10:18:04 +02:00
Furgo c7aada6abd Gui: add WaitCursor API 2025-07-14 10:18:04 +02:00
Furgo 1b2246c5db Import: DXF importer, refactor preferences UI 2025-07-14 10:18:04 +02:00
Chris Hennes 0d71dc5e32 Merge pull request #22467 from oursland/requires-pixi 2025-07-14 00:47:54 +02:00
Jacob Oursland c78f0dce33 Pixi: update pixi.lock. 2025-07-13 11:17:29 -07:00
Jacob Oursland 5a07907118 Pixi: update pixi.toml with required pixi version. 2025-07-13 11:17:11 -07:00
wandererfan 24625d3198 [TD]ComplexSection fixes
- fix handling of non-ortho profiles
- fix profile not on same plane as section normal
- fix direction of arrows on section line
2025-07-13 12:08:15 -04:00
wandererfan df390b0c88 [TD]property type changes 2025-07-13 12:00:10 -04:00
Benjamin Nauck 566fe8371a Merge pull request #21995 from chennes/moveBackupPolicy
Extract BackupPolicy class into its own file to facilitate automated testing
2025-07-12 17:58:14 +02:00
Furgo 3b3d19c56b Import: improve DXF C++ importer support for BLOCK and INSERT entities (#22045)
* Import: DXF importer, block and inserts overhaul

Implement support for blocks as definitions and inserts
as instances.

A BLOCK definition becomes a hidden master object in a
_BlockDefinitions group (currently a Part::Compound).
An INSERT becomes a visible App::Link that points to
that master definition.

* Import: DXF parser/importer add debug print statements

* Import: DXF importer, various improvements

- Add more code comments
- Correctly increase object count
- Improve readability of anonymous block checks

* Import: DXF (all) report anonymous blocks separately

* Import: DXF importer (App + GUI) add nested inserts support

* Import: DXF importer (GUI) fix preserving colors for inserts

* Import: DXF importer, make primitives naming more specific

* Import: DXF parser/importer remove debug print statements

* Import: DXF parser, work around DXF color index 7

* Import: DXF importer GUI, temporary debug print to show layer color data

* Import: DXF importer, fix nested inserts hierarchy

* Import: DXF importer, prefix and suffix underscores to names

To work around mangling from FreeCAD's unique name generator.

* Import: DXF importer, implement flattening blocks on import

* Revert "Import: DXF importer GUI, temporary debug print to show layer color data"

This reverts commit b6ece395c9d2b8a1e0796d6f7b0d58842a2f3686.

* Import: DXF importer, fix imported text orientation

The DXF file provides the text rotation angle in degrees.
The used rotZ function expects the angle in radians,
thus the conversion needs to be made.

Fixes: #21548

* Import: DXF importer, honour the preference to not import layouts

* Import: DXF importer, move unreferenced blocks to separate group

This provides better classification, but it has a performance hit:
we import all blocks as before, we sort them and we reparent them
to the correct group. The reparentipart with Grou.setValues()
appears to be an expensive call. Probably because internally the
FreeCAD dependency graph is modified.

* Import: DXF importer, count compound children in the report

* Import: DXF importer, cleanup defined blocks group if empty
2025-07-12 13:38:13 +02:00
Roy-043 93e09aa315 Draft: 1st downgrade of lofts and sweep should be de-parametrization 2025-07-12 13:29:32 +02:00
Roy-043 2e4e661594 BIM: store Classification prefix setting 2025-07-12 13:25:23 +02:00
MisterMaker 5fa2d62f6c Gui: Implement style parameters for built-in themes (#20528)
* added code to add more parameters to stylesheets

and test QSS files which will probably be removed when testing is completed

* update

* Update CMakeLists.txt

* some tweeks

* reverting this as it should not have been uploaded

* Update User_dark.qss

* more stuff

* code cleanup

* synced light to dark

* tweaks!!

* Fixed the qsint action tab

* tweaks

* push latest changed getting ready for release.

* tweaks

* Update FreeCAD Dark.qss

* fixessss

* wrong radiusss

* Update FreeCAD Light.cfg

changed the light background too F0f0f0

* disable tweaks

* modifications to use ThemeToken manager

See https://github.com/FreeCAD/FreeCAD/pull/20668

* Undo bunch of stuff.

* bugs

* Clean-up

* more cleanup

* Update FreeCAD_stylesheet.qss

* Big update + cleanup

* Update FreeCAD Light.cfg

* Changed UserColor to Primary

* Update actionpanelscheme.cpp

rtying to fix merge issues

* trying to fix merge issues

* clean-up

* Update FreeCAD_stylesheet.qss

* Refactor theme color variables and improve widget styling

Unified color variable naming by replacing '@PrimaryColorUIColor' and related tokens with '@PrimaryColor' and new lighten/darken variants in both dark and light theme configs and stylesheets. Added new variables for input field border radius and checkbox/radio button colors, and updated QSS rules to use these variables for consistent widget appearance. Improved styling for checkboxes, radio buttons, and input fields, and fixed menu indicator icons for better theme compatibility.

* Checkboxes and radioboxes

Rounded off the checkboxes add buttons for radioboxes.

* updated icons

* Refine toolbar, checkbox, and toolbox styles

Updated QToolButton#qt_toolbar_ext_button to use border-image and improved gradient backgrounds. Enhanced checkbox indicator styling for better color consistency and hover/disabled states. Adjusted gradients and background colors for QTabBar, QDockWidget, QHeaderView, and QToolBox elements to improve visual coherence and accessibility.

* Refine FreeCAD Dark theme hover and selection colors

Updated the FreeCAD Dark theme configuration and stylesheet to introduce new hover and border color tokens, unify hover/selection backgrounds, and replace most uses of @UserHighlight1Color/@UserHighlight2Color with @GeneralBackgroundHoverColor and @GeneralBorderHoverColor. Adjusted color lightening values for better contrast and consistency across UI elements.

* Fix QHeaderView gradient direction in stylesheet

Corrects the gradient parameters for QHeaderView::section to use y1 and y2, ensuring the background gradient renders as intended.

* Update FreeCAD Light theme user tokens

Changed MenuBackgroundColor to use @PrimaryColorLighten1 and SketcherUnderConstrainedColor to #000000. Added new tokens GeneralBackgroundHoverColor and GeneralBorderHoverColor for improved UI customization.

* Update FreeCAD Dark.cfg

* Add padding to QMenuBar items in stylesheet

Updated the FreeCAD stylesheet to include specific padding for QMenuBar::item, improving menu item spacing and appearance.

* I added the old stylesheets back for fallback

I added the old stylesheets back in the case of in forseen issues.

* Update Freecad Overlay.qss

* Refactor color tokens in Dark and Light theme configs

I sorted the tags and linked accent colors

* Update QPushButton styles for improved consistency

Adjusted padding and min-width for QPushButton elements to enhance visual consistency across dialogs and tables. Updated QTableView QPushButton styles to include hover effects and removed redundant selectors.

* Adjust QPushButton vertical padding in stylesheet

Reduced the vertical padding of QPushButton from 4px to 3px to refine button appearance and alignment.

* Adjust QPushButton styles in dialogs and panels

Updated QDialogButtonBox QPushButton to have 3px vertical padding instead of 4px, and removed special styling for QMessageBox buttons. Added a new style for QPushButton inside QFrame panels with 3px padding and no minimum width.

* undo some changes

* Update grid lines color in FreeCAD Light theme

Changed the GeneralGridLinesColor from @PrimaryColorLighten2 to @PrimaryColorDarken4 in the FreeCAD Light theme configuration for improved visual consistency.

* Update menu background color in FreeCAD Dark theme

Changed the MenuBackgroundColor from @PrimaryColorLighten4 to @PrimaryColorDarken4 in the FreeCAD Dark theme configuration to improve visual consistency.

* Update FreeCAD Dark.cfg

* Refactor selection background color handling

Introduces TextSelectBackgroundColor in both FreeCAD Dark and Light preference packs for more flexible selection styling. Updates stylesheet to use TextSelectBackgroundColor instead of UserHighlight1Color and removes redundant selection-background-color rules for improved consistency and maintainability.
Selection color is just a toned down color from the accent 1 color. This makes it better readable.

* Selection color had issues with treeview select

* woopsie add pink to find issues removed it

* Update src/Gui/Stylesheets/CMakeLists.txt

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-07-11 21:33:14 +00:00
sliptonic 759bad7455 Merge pull request #22330 from z0r0/fanuc-postprocessor-fix
CAM: Fix for Fanuc Post-Processor
2025-07-11 11:00:50 -05:00
Ian Abreu 6c5098680f Merge branch 'main' into CAM-Inspect-Fix 2025-07-09 19:40:30 -04:00
Fermín Olaiz 1881686e72 Fix crash on out-of-bound vector access (#22397) 2025-07-09 19:07:11 +02:00
Samuel Abels 0ad45ac99a CAM: silence unnecessary log for preferences change when no change was actually made 2025-07-09 10:19:22 +02:00
Dan Taylor e914eca089 CAM: Adaptive: Fix NULL input shapes when top of stock equals top of model (fix #22073) 2025-07-08 20:09:33 -05:00
Max Wilfinger 82698073f1 Update Help menu. Remove outdated links; add Developers handbook (#22283)
* Update Help menu. Remove outdated links; add Developers handbook

* Apply suggestions from code review

* Update src/Gui/CommandStd.cpp

* Update Shortcuts.cfg
2025-07-08 21:23:01 +00:00
Samuel Abels 3332c49271 CAM: fix: CAM tests use files from user asset dir 2025-07-08 20:39:52 +02:00
Roy-043 ff5a25784c BIM: fix autojoin behavior (#22303)
* BIM: fix autojoin behavior

* Use new deletebase argument of joinWalls

* Remove colon from task bar title
2025-07-08 15:19:19 +02:00
captain0xff 35fe77efd0 Gui: move geometry data to separate classes from dragger components 2025-07-08 17:59:51 +05:30
captain0xff 5aba712505 Gui: add SoToggleSwitch class
update
2025-07-08 17:59:51 +05:30
tarman3 ec839c5d43 CAM: Vcarve fix 2025-07-07 19:56:02 +03:00
pre-commit-ci[bot] d2a4f8994f [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pre-commit/mirrors-clang-format: 64827eb3528d4dc019b01153e9fb79107241405f → 6b9072cd80691b1b48d80046d884409fb1d962d1](https://github.com/pre-commit/mirrors-clang-format/compare/64827eb3528d4dc019b01153e9fb79107241405f...6b9072cd80691b1b48d80046d884409fb1d962d1)
2025-07-07 18:45:59 +02:00
FEA-eng 0e8a7b6319 Sketcher: Add tooltip for autoscale feature (#22252)
* Sketcher: Update SketcherSettings.ui

* Sketcher: Update SketcherSettings.ui
2025-07-07 18:31:55 +02:00
Zbyněk Winkler 9c91b959a6 build and install debug build explicitly 2025-07-07 18:20:28 +02:00
Zbyněk Winkler 91bfde1fd2 update python debugger type to debugpy
vscode says that "python" is deprecated
2025-07-07 18:20:28 +02:00
Zbyněk Winkler 1b7c12629c Improve compatibility with VSCode
- remove build directory override, use build directory from CMakePresets.json
  without this VSCode cannot use builddir created by pixi
- add *-debug and *-release commands everywhere
2025-07-07 18:20:28 +02:00
Zbyněk Winkler ff0b4b6325 remove conda dir since we have pixi 2025-07-07 18:20:28 +02:00
FEA-eng 5f610d32ab FEM: Update ElementGeometry1D.ui (#22134) 2025-07-07 18:16:22 +02:00
sliptonic e0466b7a14 Merge pull request #21341 from tarman3/arraywarning
CAM: Changes in warnings of old Array
2025-07-07 11:06:11 -05:00
dependabot[bot] 1598d56560 Bump step-security/harden-runner from 2.12.1 to 2.12.2
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.12.1 to 2.12.2.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/002fdce3c6a235733a90a27c80493a3241e56863...6c439dc8bdf85cadbbce9ed30d1c7b959517bc49)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.12.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-07 17:50:38 +02:00
FEA-eng 45be617bf3 Part: Enable solid creation by default for Loft and Sweep (#22098)
* Part: Update PartFeatures.cpp

* Part: Update DlgRevolution.ui

* Part: Update TaskLoft.ui

* Part: Update TaskSweep.ui

* Part: Update PartFeatures.cpp

* Update src/Mod/Part/Gui/DlgRevolution.ui

---------

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2025-07-07 17:46:19 +02:00
Roy-043 50faa72378 Draft: gui_utils.py minor improvement for autogroup 2025-07-07 17:03:21 +02:00
Roy-043 59088a0365 Draft: make_sketch.py should not use view direction (#22249) 2025-07-07 17:02:14 +02:00
tetektoza 2c82bfa150 BIM: Add an option to preload IFC types during document opening (#21450)
* BIM: Add an option to preload IFC types during document opening

Currently, IFC types are only possible to be loaded if user double
clicks an IFC object, and this has be done for optimization reasons.

But user can also want to preload IFC types, so this patch adds an
option to the dialog and Properties dialog to do just that.

* BIM: Remove cyclic import

---------

Co-authored-by: Yorik van Havre <yorik@uncreated.net>
2025-07-07 16:06:43 +02:00
Zbyněk Winkler 4d7f03bf63 Copy subvolume before changing its Placement
Placement property of a cached object was modified each time
component is recalculated.

Fixes #22162.
2025-07-07 15:35:26 +02:00
Roy-043 985e42b61a BIM: check OutListRecursive in addComponents 2025-07-07 14:57:19 +02:00
Roy-043 236bec9aa9 BIM: improve Arch_MergeWalls (#22262)
* BIM: improve Arch_MergeWalls

* Improve delete behavior

Keep hosted objects*, additions and subtractions if delete is False. 

* For hosted objects with a Host property this is not possible.

* Make deletion of base objects optional
2025-07-07 14:51:27 +02:00
Roy-043 e6e1d6c54e BIM: fix visibility handling of objects hosted by additions 2025-07-07 14:46:29 +02:00
Roy-043 3e9089bd47 BIM: fix handling of Project coin nodes (#22244)
* Update ArchProject.py

* Update ArchSite.py
2025-07-07 14:45:07 +02:00
Syres916 addac93afa [BIM] Stop combobox sizeAdjustPolicy warning 2025-07-07 14:42:58 +02:00
Roy-043 680be1548c BIM: fix profile selection (#22223)
* Update params.py

* Update ArchStructure.py

* Update BimProfile.py
2025-07-07 14:39:55 +02:00
Roy-043 152f4989c6 BIM: fix Arch_SectionPlane 'Toggle Cutview' issue 2025-07-07 14:28:06 +02:00
Ryan Kembrey cf3de7b730 Sandbox: Update UI strings for consistency 2025-07-07 13:51:33 +02:00
Roy-043 56024f12ad BIM: fix default radius for rectangular pipe connector
Fixes #22364.

The default radius of a connector between rectangular pipes should depend on the Height or Width of the pipe (the max. of the two is used), not on the hidden (and unused) Diameter property.
2025-07-07 13:46:38 +02:00
Max Wilfinger 3e32ea5dd4 Sketcher: Update missed UI strings (#22363) 2025-07-07 10:16:07 +02:00
Benjamin Nauck 86eea6af0f Merge pull request #20668 from kadet1090/stylesheet-params
Gui: Add Style Parameter Manager to contain theme parameters
2025-07-07 02:58:36 +02:00
theo-vt 4b84834112 Sketcher: Autoscale: do not scale dimension's position if it is a radius or diameter (#22308)
* Do not scale dimension's position if it is a radius or diameter

* Update src/Mod/Sketcher/Gui/EditDatumDialog.cpp

Sketcher: spell checking

---------

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-07-06 23:25:24 +00:00
Kacper Donat dffdfb1a3b Gui: Fix too small link icon on high dpi (#22359)
* Gui: Fix too small link icon on high dpi

* Gui: suppress warning in ViewProvideLink.cpp

---------

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-07-06 22:37:34 +00:00
Kacper Donat a32594faea Gui: Add ThemeTokenManager class to contain theme parameters
This class aims to implement Design Token idea into FreeCAD themes. It
allows themes to use generic variables with generic values so we could
use one qss theme and change the style based on values from preference
packs.
2025-07-07 00:07:31 +02:00
Ian Abreu 1724e9b62f fixing typos 2025-07-06 16:30:53 -04:00
Ian Abreu 83dd97608f adding sanity fix 2025-07-06 16:26:50 -04:00
Ian Abreu a370673467 Merge branch 'main' into CAM-Inspect-Fix 2025-07-06 16:24:42 -04:00
Ian Abreu 7158294d34 Adding simple check 2025-07-06 11:07:15 -04:00
Kacper Donat 8d1f65e992 Merge pull request #22322 from oursland/pixi-update
pixi: Update pixi dependencies for VFX Reference Platform.
2025-07-06 16:50:19 +02:00
Syres916 8d6f3c95db [TechDraw] Fix Qt6 compatability of FillTemplateFields tool 2025-07-06 16:49:18 +02:00
Kacper Donat 3d3d3ad6d2 Merge pull request #22138 from chennes/compilerWarningCleanup20250622
Compiler warning cleanup
2025-07-06 16:32:08 +02:00
Roy-043 db11f481e9 Update DraftGui.py 2025-07-05 22:44:22 +02:00
Kacper Donat 38ec685f2d CAM: Fix origin indicator for Job
This commit fixes how origin (coordinate system) indicator looks. Before
it showed as disc, and now it shows as point which is more approperiate
given the context.
2025-07-05 18:46:01 +02:00
Dan Taylor a7f1b96c45 [CAM] Correctly process Adaptive extensions as faces instead of shells (fix 22177) 2025-07-04 14:51:55 -05:00
Luz Paz f72397ce19 Fix various typos
Found via codespell
2025-07-04 21:24:09 +02:00
Samuel b16fb74889 Merge branch 'main' into fix-custom-attribute-edit 2025-07-04 20:32:37 +02:00
Ian Abreu 6d9d7e8b7f Merge branch 'fanuc-postprocessor-fix' of github.com:z0r0/FreeCAD into fanuc-postprocessor-fix 2025-07-04 11:31:21 -04:00
Ian Abreu 05d9eeded2 correcting to use Tool vs. ToolController 2025-07-04 11:30:46 -04:00
Ian Abreu 98f22837bc Merge branch 'main' into fanuc-postprocessor-fix 2025-07-04 11:21:14 -04:00
Ian Abreu bd24577184 initial fix 2025-07-04 11:10:43 -04:00
Benjamin Nauck 927d302401 Merge pull request #22319 from davesrocketshop/importer_fixes 2025-07-04 06:10:37 +02:00
Jacob Oursland 56c9f7936f pixi: Update pixi.lock. 2025-07-03 14:45:49 -07:00
Jacob Oursland 06368d7109 pixi: Add freecad-stubs for python autocompletion. 2025-07-03 14:45:43 -07:00
Jacob Oursland 0a96cd0ad5 pixi: Pin occt to 7.8 due to bugs in 7.9.0. 2025-07-03 14:45:37 -07:00
Jacob Oursland adcc3c2518 pixi: Pin versions for compatibility with VFX Reference Platform. 2025-07-03 14:45:26 -07:00
David Carter 44fab7eeab Materials: Add import for unimplemented fields
Adds import/export support for unimplemented material fields.

This includes reference source and URLs, and tag fields. Tag support
remains unimplemented in the editor, but is supported by a number
of materials in the FCMat files. They can be accessed in both C++
and Python.
2025-07-03 14:32:27 -04:00
pre-commit-ci[bot] f0803a620f [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-07-03 10:45:55 +02:00
FEA-eng 489eb47050 FEM: Update Command.cpp 2025-07-03 10:45:55 +02:00
FEA-eng 52d36374db FEM: Update commands.py 2025-07-03 10:45:55 +02:00
FEA-eng 67c7c97577 FEM: Update TaskPostFrames.ui 2025-07-03 10:45:55 +02:00
FEA-eng f958555ea9 Core: Update DlgSettingsLightSources.ui 2025-07-03 02:43:12 -05:00
Pieter Hijma 5c9761d676 Core: Fix property rename test 2025-07-02 15:36:56 -05:00
David Carter 902012f12f Materials: Add support for embedded images
Adds support for file types other than PNG to embedded images in
materials. Adds checks to prevent crashing when an unsupported image
type is used.
2025-07-02 11:01:59 -05:00
FEA-eng 556fc32c30 FEM: Update Command.cpp 2025-07-02 10:52:39 -05:00
captain0xff dfd29e06ea Gui: refactor SoRotationDragger 2025-07-01 18:18:14 +05:30
tarman3 51f489083b CAM: Changes in warnings of old Array 2025-07-01 06:11:56 +03:00
Max Wilfinger cf082f7642 Sketcher: Update UI strings for consistency (#22167)
* Sketcher: Update UI strings for consistency

* Update src/Mod/Sketcher/App/Sketch.cpp

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Update src/Mod/Sketcher/Gui/Command.cpp

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Update src/Mod/Sketcher/App/SketchObject.cpp

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Update src/Mod/Sketcher/Gui/Command.cpp

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Update src/Mod/Sketcher/Gui/Command.cpp

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Update src/Mod/Sketcher/Gui/Command.cpp

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Apply suggestions from code review

* Apply suggestions from code review

---------

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 22:51:46 +00:00
Samuel Abels 173ee65b8b CAM: Fix: rename vbit and threadmill back to v-bit and thread-mill to avoid backward compatibility issues 2025-06-30 22:59:14 +02:00
Samuel Abels 16d90cfbb9 CAM: Fix: shape parameters coming from the attributes section in the fctb file were not normalized 2025-06-30 21:48:21 +02:00
Samuel Abels be969e1589 remove unused import of PartGui 2025-06-30 21:30:34 +02:00
Samuel Abels b417c5e180 Avoid triggering circular imports by using traceback instead of inspect 2025-06-30 21:30:34 +02:00
Samuel Abels b5e4b400ad CAM: Fix: Tool editor ignored shape attributes if they were not in the Shape group. Now it reads all except Base 2025-06-30 20:27:54 +02:00
Samuel Abels 7f7f5ba2bb CAM: make ToolBitShape more robust against invalidly typed parameters in toolbit files (e.g. Flutes with string value) 2025-06-30 20:27:26 +02:00
Samuel Abels 3829e1db76 CAM: Fix: Remove invalid normalization of shape name 2025-06-30 20:26:51 +02:00
Bas Ruigrok 60aa5ff373 Inform Coin to use EGL when on Wayland (#21917)
* Inform Coin to use EGL when on Wayland

* Only check for Wayland on Linux and BSD
2025-06-30 11:12:02 -05:00
Roy-043 d8889c3ca4 BIM: fix setting of self.Type
Fixes #21364.

`self.Type` should be set in `__init__` and `loads`, and not in `onDocumentRestored`.

Additionally:
fixed mistake in `loads` in ifc_objects.py.
2025-06-30 11:05:41 -05:00
Roy-043 425ea761ff Draft: fix setting of self.Type
Fixes #17750.

`self.Type` should be set in `__init__` and `loads`, and not in `onDocumentRestored`.
2025-06-30 11:05:25 -05:00
Ryan K aa9c16f8c9 TechDraw: ActiveView rework (#22107)
* TechDraw: Rework ActiveView

* Update src/Mod/TechDraw/Gui/TaskActiveView.cpp

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>

---------

Co-authored-by: Ryan Kembrey <ryan.kembrey@student.uts>
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-06-30 12:04:12 -04:00
Chris Hennes 352f015aa4 Merge pull request #21985 from furgo16/dxf-stats-reporter
Import: add DXF statistics reporter
2025-06-30 10:55:57 -05:00
Chris Hennes 6a242f5b4c Merge pull request #22083 from galou/improve_dae
Improve dae
2025-06-30 10:54:08 -05:00
Luz Paz 71d28a9ad8 codespell: add 3 false positives to ignore list
Added `InvertIn, LeadIn, linez`
ref: https://github.com/FreeCAD/FreeCAD/pull/22137/files
2025-06-30 10:45:00 -05:00
Andrea c9294d3c78 Remove unused deprecated functions
Remove unused deprecated functions
2025-06-30 10:40:10 -05:00
Chris Hennes 6b4b1a1a95 Merge pull request #21975 from pieterhijma/transaction-rename-property
Core: Add redo/undo to property rename
2025-06-30 10:36:26 -05:00
pre-commit-ci[bot] 15a41d4274 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-06-30 10:35:42 -05:00
Max Wilfinger 3f6cc47fa8 Update src/Mod/Fem/femtaskpanels/task_constraint_centrif.py
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:42 -05:00
Max Wilfinger 1db08ca0b8 Update src/Mod/Fem/femtaskpanels/task_constraint_centrif.py
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:42 -05:00
Max Wilfinger 58b036fcb9 Update src/Mod/Fem/femcommands/commands.py
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:42 -05:00
Max Wilfinger 4572a5f126 Update src/Mod/Fem/Gui/DlgSettingsFemCcx.ui
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:42 -05:00
Max Wilfinger 401163cb83 Update src/Mod/Fem/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:42 -05:00
Max Wilfinger 033737d664 Update src/Mod/Fem/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:42 -05:00
Max Wilfinger a0fe944393 Update src/Mod/Fem/App/AppFem.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:42 -05:00
Max Wilfinger dd702da1bc FEM: Update UI strings for consistency 2025-06-30 10:35:42 -05:00
Max Wilfinger 3cce6ffa3c Update src/Mod/Spreadsheet/Gui/Workbench.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:16 -05:00
Max Wilfinger e7161fedd4 Update src/Mod/Spreadsheet/Gui/Workbench.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:16 -05:00
Max Wilfinger f38d0028a1 Update src/Mod/Spreadsheet/Gui/Workbench.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:16 -05:00
Max Wilfinger a732648fe9 Update src/Mod/Spreadsheet/Gui/Workbench.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:16 -05:00
Max Wilfinger 50173a4e1b Update src/Mod/Spreadsheet/Gui/Workbench.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:16 -05:00
Max Wilfinger d3e6c1fd63 Update src/Mod/Spreadsheet/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:16 -05:00
Max Wilfinger a3f2e8cf6b Update src/Mod/Spreadsheet/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:16 -05:00
Max Wilfinger cbef684d63 Update src/Mod/Spreadsheet/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:16 -05:00
Max Wilfinger a31f2d3a1c Update src/Mod/Spreadsheet/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:16 -05:00
Max Wilfinger 4151dfd18c Update src/Mod/Spreadsheet/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:16 -05:00
Max Wilfinger 7fdf2ec460 Update src/Mod/Spreadsheet/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:16 -05:00
Max Wilfinger 5ae0d2f6a9 Update src/Mod/Spreadsheet/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:16 -05:00
Max Wilfinger 6ffe3ee81b Update src/Mod/Spreadsheet/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:16 -05:00
Max Wilfinger f078e51dab Update src/Mod/Spreadsheet/Gui/Workbench.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:16 -05:00
Max Wilfinger 751626202d Spreadsheet: Update UI strings for consistency 2025-06-30 10:35:16 -05:00
Max Wilfinger 0a9a2372e0 Update src/Mod/Robot/Gui/Command.cpp 2025-06-30 10:35:10 -05:00
pre-commit-ci[bot] d3fe81b0e7 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-06-30 10:35:10 -05:00
Max Wilfinger 57086dfaf0 Update src/Mod/Robot/Gui/TaskTrajectoryDressUpParameter.ui 2025-06-30 10:35:10 -05:00
Max Wilfinger b857c6a460 Update src/Mod/Robot/Gui/CommandTrajectory.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:10 -05:00
Max Wilfinger 1796de8bde Update src/Mod/Robot/Gui/CommandTrajectory.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:10 -05:00
Max Wilfinger 802bc566f3 Update src/Mod/Robot/Gui/CommandTrajectory.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:10 -05:00
Max Wilfinger 40980f436c Update src/Mod/Robot/Gui/CommandTrajectory.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:10 -05:00
Max Wilfinger ac250b7ce7 Update src/Mod/Robot/Gui/CommandInsertRobot.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:10 -05:00
Max Wilfinger 5500594312 Update src/Mod/Robot/Gui/CommandInsertRobot.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:10 -05:00
Max Wilfinger 311c0472b9 Update src/Mod/Robot/Gui/CommandInsertRobot.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:10 -05:00
Max Wilfinger 08cef0c9dc Update src/Mod/Robot/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:10 -05:00
Max Wilfinger 4718388d05 Update src/Mod/Robot/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:10 -05:00
Max Wilfinger b098fabad8 Update src/Mod/Robot/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:10 -05:00
Max Wilfinger 93e7ad6d79 Robot: Update UI strings for consistency 2025-06-30 10:35:10 -05:00
Max Wilfinger 01d15c1edb Update src/Mod/Surface/Gui/TaskSections.ui
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:00 -05:00
Max Wilfinger c960c81543 Update src/Mod/Surface/Gui/TaskFillingEdge.ui
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:00 -05:00
Max Wilfinger c9206a700d Update src/Mod/Surface/Gui/TaskFillingVertex.ui
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:00 -05:00
Max Wilfinger c388d958f4 Update src/Mod/Surface/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:00 -05:00
Max Wilfinger 24b3bb5d71 Update src/Mod/Surface/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:00 -05:00
Max Wilfinger ede7667bc1 Update src/Mod/Surface/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:00 -05:00
Max Wilfinger 2202dc10ce Update src/Mod/Surface/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:00 -05:00
Max Wilfinger 6bef08a346 Update src/Mod/Surface/App/FeatureFilling.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:00 -05:00
Max Wilfinger 16020cf0c5 Update src/Mod/Surface/App/FeatureFilling.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:35:00 -05:00
Max Wilfinger e3dce25e00 Surface: Update UI strings for consistency 2025-06-30 10:35:00 -05:00
Max Wilfinger 9afee61b97 Update src/Mod/ReverseEngineering/Gui/FitBSplineSurface.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:53 -05:00
Max Wilfinger 1c40f08900 Update src/Mod/ReverseEngineering/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:53 -05:00
Max Wilfinger 7f617aac19 Update src/Mod/ReverseEngineering/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:53 -05:00
Max Wilfinger adcfd8a149 Update src/Mod/ReverseEngineering/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:53 -05:00
Max Wilfinger 4eebf4431e Update src/Mod/ReverseEngineering/App/AppReverseEngineering.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:53 -05:00
Max Wilfinger da5f0f18c6 ReverseEngineering: Update UI strings for consistency 2025-06-30 10:34:53 -05:00
Max Wilfinger 2a96b8c758 Update src/Mod/Mesh/Gui/DlgSettingsMeshView.ui
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger 36b2ffbf6a Update src/Mod/Mesh/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger b96005a3f9 Update src/Mod/Mesh/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger 051494f8c8 Update src/Mod/Mesh/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger aa4a764822 Update src/Mod/Mesh/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger 7fb6f82c03 Update src/Mod/Mesh/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger d7614c0467 Update src/Mod/Mesh/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger 9f36b72eb8 Update src/Mod/Mesh/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger dab5115105 Update src/Mod/Mesh/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger 1857c9eea1 Update src/Mod/Mesh/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger 0aa4d66f59 Update src/Mod/Mesh/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger 14384f4e01 Update src/Mod/Mesh/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger 0b9e61024c Update src/Mod/Mesh/App/MeshPy.xml
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger 818b7b64ef Update src/Mod/Mesh/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger 24fabe551a Update src/Mod/Mesh/App/MeshPy.xml
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger 9bbf1ec092 Update src/Mod/Mesh/App/AppMeshPy.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:36 -05:00
Max Wilfinger b7259483c5 Mesh: Update UI strings for consistency 2025-06-30 10:34:36 -05:00
Max Wilfinger 09f61dae59 Update src/Mod/Points/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:28 -05:00
Max Wilfinger 3857fddc40 Update src/Mod/Points/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:28 -05:00
Max Wilfinger 4939d8c2ab Update src/Mod/Points/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:28 -05:00
Max Wilfinger 43bcb7205d Update src/Mod/Points/Gui/Command.cpp
Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 10:34:28 -05:00
Max Wilfinger 4edba0539a Points: Update UI strings for consistency 2025-06-30 10:34:28 -05:00
Max Wilfinger 488bc484b9 Inspection: Update UI strings for consistency 2025-06-30 10:34:19 -05:00
Karliss df08c0ce8d Sketcher: fix Esc can leave setting synchronization 2025-06-30 09:51:08 -05:00
Samuel Abels 2d1746d04f CAM: gracefully handle tool numbers that are strings in the tool library JSON 2025-06-29 21:39:04 +02:00
Samuel Abels da8eec5744 CAM: Fix: ToolBitShapeCustom properties not editable if they had no type specified in the schema 2025-06-29 21:34:06 +02:00
Kacper Donat 536775188b Contributing: Add requirement to clearly mark ownership for cherry-picked PRs (#22001)
* Contributing: Add requirement to clearly mark ownership for cherry-picked PRs

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
Co-authored-by: Furgo <148809153+furgo16@users.noreply.github.com>
2025-06-29 19:11:30 +00:00
Max Wilfinger 919652c69c Start: Update UI strings for consistency 2025-06-29 11:27:43 -05:00
Jakub Klinkovský 3d2b7dc9c7 Use vtkUnstructuredGrid::GetLinks instead of vtkUnstructuredGrid::GetCellLinks for VTK >= 9.3
The vtkUnstructuredGrid::GetCellLinks has been deprecated in VTK 9.3 and
silently removed in 9.5:

https://gitlab.kitware.com/vtk/vtk/-/blob/master/Documentation/release/9.3.md
2025-06-29 10:37:27 -05:00
Max Wilfinger 3443a0da00 OpenSCAD: Update UI strings for consistency 2025-06-29 10:32:47 -05:00
Samuel Abels 788560d709 CAM: fix toolbit editor shape resolution for high DPI displays 2025-06-29 13:15:47 +02:00
Samuel Abels 3521ae91cc CAM: reduce default size of toolbit editor dialog 2025-06-29 13:02:09 +02:00
Samuel Abels 0a7cf449bc CAM: Fix: Tools without icon now display the thumbnail from the FCStd file 2025-06-29 12:57:32 +02:00
Samuel Abels 2f051136fe CAM: Fix: Chipload is not written to fctb file 2025-06-29 11:52:22 +02:00
Samuel Abels 33935cf73e CAM: store tool quantities in user units, not metric 2025-06-29 11:52:07 +02:00
Chris Hennes 507e170b19 Apply suggestions from code review
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-06-29 04:47:28 -05:00
FEA-eng 730e07db5d FEM: Fix data extraction checkbox typo (#22225)
* FEM: Update PostHistogramFieldAppEdit.ui

* FEM: Update PostLineplotFieldAppEdit.ui

* FEM: Update view_post_histogram.py
2025-06-28 19:14:30 -05:00
mosfet80 b25c54baee Clean EditableDatumLabel.cpp
removed unused variable
2025-06-28 19:05:06 -05:00
Chris Hennes f0a44b9e8b Gui: Selectively disable MSVC 4251 warning
This warning is not relevant to our project in this instance. We are not concerned about ABI-compatibility of DLLs since they are all compiled at the same time when building FreeCAD.
2025-06-28 18:58:32 -05:00
Samuel Abels 11d5707141 CAM: Fix: custom shape attributes not showing in toolbit editor 2025-06-29 01:30:06 +02:00
Chris Hennes a833ed0785 FEM: Fix missing VTK headers in PreCompiled.h 2025-06-28 16:21:25 +02:00
dependabot[bot] 8076a45de5 Bump github/codeql-action from 3.29.0 to 3.29.1
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.0 to 3.29.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/ce28f5bb42b7a9f2c824e633a3f6ee835bab6858...39edc492dbe16b1465b0cafca41432d857bdb31a)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.29.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-27 14:13:38 -05:00
Syres916 4f167b828b [BIM][Draft] QCheckBox fix regressions introduced by PR #21939 (#22199)
* [BIM][Draft] QCheckBox fix regressions introduced by PR #21939

* [BIM] Remove unwanted index values - CodeQL feedback
2025-06-27 11:25:36 +02:00
tetektoza 352fadd5c7 Draft: Remove redundant QGroupBoxes from some of the array panels (#21980)
* Draft: Remove main QGroupBox from Circular Array tool

* Draft: Remove main QGroupBox from Polar Array tool

* Draft: Remove main QGroupBox from Ortho Array tool

* Draft: Remove AxisMode QGroup from Ortho Array tool

* Draft: Remove main QGroup from ShapeString tool
2025-06-26 10:11:26 +02:00
Kacper Donat 8fe791bd6f Merge pull request #22169 from 3x380V/fix_19002
PD: Fix regression about single-solid check
2025-06-25 21:40:05 +02:00
sliptonic f002937fa8 Merge pull request #22168 from Roy-043/CAM-fix-window-handling-in-ImageBuilder.py
CAM: fix window handling in ImageBuilder.py
2025-06-25 14:39:41 -05:00
sliptonic 872942cb6f Merge pull request #22051 from tarman3/tagfixes
CAM: Dressup Tag some fixes
2025-06-25 13:03:10 -05:00
Kacper Donat cd1e5b2b33 Merge pull request #22150 from Rexbas/remove-camera-adjust-method
Remove Command::adjustCameraPosition()
2025-06-25 13:11:00 +02:00
Kacper Donat 69a60a1b08 Gui: Use no_except=true for getExtensionByType in ViewProviderDragger
Fixes: #22166
2025-06-25 12:54:11 +02:00
Furgo 6e1ac43092 Import: DXF reporter, add unsupported indicator 2025-06-25 07:41:03 +02:00
Furgo 51ff320f0e Import: DXF reporter, add filename to report 2025-06-25 07:41:03 +02:00
Furgo 4c0517d2ae Import: DXF parser, correctly pass line no. and handle 2025-06-25 07:41:03 +02:00
Furgo 7764ed5173 Import: DXF backend/frontend, report more unsupported features info
Now for unsupported features we report on line numbers and on the entity
handle, in case that unsupported feature is a DXF entity. To avoid
flooding the output, only a maximum of 5 instances are reported with
details. The rest simply add up to the global count and are ellipsized
in the report.

Report output is now in sentence case.
2025-06-25 07:41:03 +02:00
Furgo f8b0ceaac5 Import: DXF parser, fix macOS linker issue 2025-06-25 07:41:03 +02:00
Furgo a881d3633c Import: DXF parser, remove original unsupported features count and warning 2025-06-25 07:41:03 +02:00
Furgo c10a945fad Import: DXF importer, add code comments to C++ to Python stats passing function 2025-06-25 07:41:03 +02:00
Furgo 89f6f9449c Import: DXF parser, add entities in paperspace count 2025-06-25 07:41:03 +02:00
Furgo 6392423b5b Import: DXF parser, add DXF block count 2025-06-25 07:41:03 +02:00
Furgo 434bf415b9 Import: DXF backend, frontent; add time measurement 2025-06-25 07:41:03 +02:00
Furgo a517d2c05a Import: DXF frontend, improve scale reporting 2025-06-25 07:41:03 +02:00
Furgo 6fc5bea0dc Import: DXF parser, disable now redundant unsupported entities reporting 2025-06-25 07:41:03 +02:00
Furgo bf0c8f24fa Import: DXF parser/imported improve unsupported features count
Classify unsupported features by type, and report on
the breakdown.
2025-06-25 07:41:03 +02:00
Furgo ef0dd661a3 Import: DXF parser/importer, improve scale reporting
Report additional information about user scaling
value, scaling info source and resulting scale,
including units.
2025-06-25 07:41:03 +02:00
Furgo e1836052d9 Import: DXF Python frontend, implement stats reporter 2025-06-25 07:41:03 +02:00
Furgo 321c5b692b Import: DXF importer, add Python bindings 2025-06-25 07:41:03 +02:00
Furgo 9775aafc32 Import: DXF importer, populate stats reporting structure 2025-06-25 07:41:03 +02:00
Furgo 63d8fe6c30 Import: DXF parser, add stats reporting structure 2025-06-25 07:41:03 +02:00
Gaël Écorchard 3611a4328b BIM: satisfy github-advanced-security
Signed-off-by: Gaël Écorchard <gael@km-robotics.cz>
2025-06-25 07:40:09 +02:00
wmayer 23d93e45ff PD: Correctly handle single solid rule for loft with and without base 2025-06-25 00:14:15 +02:00
wmayer 4ac7f57ac4 PD: Use isSingleSolidRuleSatisfied() for pipe feature
This fixes issue 18977

Fixes: 935bdf9a0f ("PartDesign: Refactor single-solid rule enforcement")
2025-06-25 00:13:54 +02:00
wmayer eb52dd4a9a PD: Fix regression about single-solid check
For several PD features the single-solid check fails. The regression
is caused by PR 13960 and reported as issue 19002. The reason for the
failure is that the first solid of the output shape is retrieved and
then checked for a single solid. This test will always pass, of course.

The single-solid is fixed for these features:
* Pad
* Pocket (never worked there)
* Fillet
* Chamfer
* Groove (never worked there)
* Revolution (never worked there)
* Loft

Fixes: 935bdf9a0f ("PartDesign: Refactor single-solid rule enforcement")
2025-06-25 00:09:33 +02:00
Roy-043 fd053b1be3 Update ImageBuilder.py 2025-06-24 20:30:46 +02:00
sliptonic f3980c8a6f Merge pull request #21732 from tarman3/engrave
CAM: Engrave - Fix step down for closed profile
2025-06-24 12:49:05 -05:00
Gaël Écorchard 346c7581d4 BIM: fix geometry under node tags
I took the file
[link_3.dae](https://github.com/ros-industrial/kuka_experimental/blob/514790a553d556f7c58f0f34a4d29a71eca126e7/kuka_kr210_support/meshes/kr210l150/visual/link_3.dae)
as test.
Before this commit, no geometry is loaded because the childer of `node`
are `Node` instances not geometry.
To access all the geometries, `col.scene.objects("geometry")` is used,
cf. https://pycollada.readthedocs.io/en/latest/structure.html.

Signed-off-by: Gaël Écorchard <gael@km-robotics.cz>
2025-06-24 12:14:52 +02:00
Gaël Écorchard 9a039860a3 BIM: remove unused variable DEBUG 2025-06-24 12:14:52 +02:00
Gaël Écorchard d09196a173 BIM: improve style of importDAE.py 2025-06-24 12:14:52 +02:00
Gaël Écorchard 281d112bea BIM: Use labels in DAE export
Signed-off-by: Gaël Écorchard <gael@km-robotics.cz>
2025-06-24 12:14:51 +02:00
alafr 27c786fef1 Draft : fix Label Justification (#13444)
Draft Label ViewObject.Justification property was overriden by Object.StraightDistance property. The Justification in the 3D view was reset after recompute. This commit fixes the problem by setting Object.StraightDistance automatically when ViewObject.Justification is changed and vice versa. Also fixes the frame position when Justification is Center.
2025-06-24 10:45:46 +02:00
tarman3 c55102acf8 Merge branch 'main' into engrave 2025-06-24 08:14:59 +03:00
Kacper Donat 96b006a2dd Spreadsheet Fix '=' regression in spreadsheets (#22146)
* Tools: Add ExpressionLineEdit to QtDesigner plugin

* Spreadsheet: Only use validator when when prefix is not '='

---------

Co-authored-by: wmayer <wmayer@freecad.org>
2025-06-23 22:20:25 +02:00
sliptonic 7545c9fd23 Merge pull request #21961 from knipknap/tool-cleanups
CAM: Some cleanups (moving DetachedDocumentObject around)
2025-06-23 15:02:24 -05:00
George Peden 580d538798 Sketcher: Add contextual input hints to constraint commands (InputHints Phase 2) (#21751)
* Sketcher: Extend InputHints infrastructure to constraint tools

- Implement DrawSketchHandler::getToolHints() for constraint workflows
- Add centralized hint table mapping constraint commands to step-specific InputHints
- Integrate hint lookup in DrawSketchHandlerGenConstraint and dimension handler
- Provide step-by-step user guidance for:
  - Coincident, PointOnObject, Distance (X/Y)
  - Horizontal, Vertical, HorVer, Lock, Block
  - Equal, Symmetric, Radius, Diameter, Angle
  - Tangent, Perpendicular, Parallel

This continues the InputHints work started for drawing tools by enabling consistent, contextual guidance for constraint creation, including multi-step workflows like tangent-via-point.

* Call updateHint() after selection reset to re-arm the first-step prompt
when the tool stays active after apply.

* Add comments to hints table structure

* Sketcher: Update constraint hint text to use "pick" instead of "Select"

Change constraint hint text from "Select" to "pick" to maintain consistency
with existing FreeCAD UI style. This affects the DrawSketchHandlerGenConstraint
hint system for various constraint operations including coincident, distance,
horizontal/vertical, block, lock, symmetry, tangent, perpendicular, parallel,
and distance constraints.

The hints now follow the pattern:
- "%1 pick first point or edge"
- "%1 pick second point or edge"
- "%1 pick line or two points"
etc.

This provides consistent terminology throughout the sketcher constraint
creation workflow.

* - Remove redundant 'first' from initial selection hints
- Improve consistency in hint text formatting per Developer Guidelines
- Add consistent spacing in comment sections"

* Per PR feedback for DrawSketchHandlerDimension hints:
* Change 'Click to' to "pick"
* Simplify hint wording
* Combine redundant else
* Use direct return pattern instead of building hints list

* Update lookupConstraintHints() to use C++20 std:ranges::find_if form per PR review feedback

* Sketcher: Refine constraint hints per PR feedback

- Use consistent 'point or edge' phrasing in Distance and DistanceX/Y tools
- Reword Horizontal/Vertical step 0 to avoid misleading 'two points'
- Generalize Tangent and Perpendicular hints to 'edge' with optional point
- Simplify legacy Distance to 'point or edge'

* Add dynamic hint handling for PointOnObject constraint
- Implemented contextual hints in getToolHints() to generate an appropriate step 2 hint based on step 1 selection type
- Preserved static lookupConstraintHints() for all other tools

* Sketcher: Convert constraint hint table to C++20 designated initializer syntax

- Refactored static constraint hint table to follow Sketcher hint development guidelines
- Uses C++20 designated initializers for clarity and maintainability
- No changes to hint logic or behavior; content is identical to previous version
2025-06-23 21:24:33 +02:00
sliptonic 84f32bfcd8 Refactor slot op. (#21799)
* Refactor slot op.
Move out of experimenation features

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

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

* Incorporate Hyarion's suggestions

* Update src/Mod/CAM/Path/Op/Slot.py

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-06-23 21:22:33 +02:00
Benjamin Nauck a1636cbc27 Merge pull request #21943 from tetektoza/fix/21927_change_enter_ovp_accepting_dim
Sketcher: Change enter behavior on OVP to put OVP in lock state only
2025-06-23 21:18:41 +02:00
Samuel 2069e799bb CAM: Load preferences before activating the workbench (#21981) 2025-06-23 14:11:23 -05:00
Luz Paz 6faa377fbd FEM: fix typos 2025-06-23 20:46:33 +02:00
Kacper Donat 1f82156948 Gui: Fix wildcard call disconnects warnings Qt6.9 (#22096)
* Gui: Fix wildcard call disconnects warnings Qt6.9

* Gui: Fix typo

---------

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-06-23 17:42:03 +00:00
tiagomscardoso 5dc523ec27 Gui: prevent hover tooltip from covering menu items (#22019)
* fix #21330: prevent hover tooltip from covering menu items
Instead of showing the tooltip at the mouse cursor,
it is now displayed to the right of the corresponding
menu option, avoiding overlap with the menu itself.

* Update src/Gui/Action.cpp

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-06-23 17:40:16 +00:00
Bas Ruigrok 7fa89f965a Gui: Remove adjustCameraPosition() 2025-06-23 19:29:11 +02:00
Bas Ruigrok 699c06dd0c PartDesign: Remove use of adjustCameraPosition() 2025-06-23 19:28:56 +02:00
Bas Ruigrok 165c46413a Part: Remove use of adjustCameraPosition() 2025-06-23 19:27:09 +02:00
tetektoza 75017b2dd2 Sketcher: Make TAB clear the field if user hasn't valid input 2025-06-23 19:25:57 +02:00
Ryan K dc7365ae08 TechDraw: Add command tool label for vertex group (#22118)
Co-authored-by: Ryan Kembrey <ryan.kembrey@student.uts>
2025-06-23 12:26:40 -04:00
Ryan Kembrey f5f2d42c58 TechDraw: Remove redundant apply button. (Fix #21792) 2025-06-23 11:15:03 -05:00
WandererFan f7c844abbf [TechDraw]Detail highlight drag (fix #21828) (#22036)
* [TD]add preferences for detail highlight snapping

* [TD]fix highlight drag issues

* Update src/Mod/TechDraw/Gui/TaskDetail.cpp

minor format change from benj5378.

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>

---------

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-06-23 11:13:27 -05:00
mosfet80 63793532f2 fix unused variable
remove unused parameter ‘method’
2025-06-23 18:12:01 +02:00
George Peden c76f068f91 Sketcher: Add contextual input hints to transform tools (InputHints Phase 4) (#21840)
* Add hints to symettry tool

* Add hint system for transform tools
- Design decision: Keep hints simple and focused on primary mouse actions
- Avoid redundancy with dialog UI which already shows keyboard shortcuts clearly
- Implements progressive hints for multi-state tools (Rotate, Scale, Translate)
  using declarative hint tables, and focused hints for single-state tools
  (Symmetry, Offset) using direct return implementations.

* Cleanup unused declarative hint decls

* Change hint to 'pick axis, edge, or point" per PR feedback
2025-06-23 11:09:59 -05:00
Karliss 732501d89d Sketcher: Implement related constraint command for non edges 2025-06-23 11:01:33 -05:00
Florian Foinant-Willig f6f75a6a0d Sketcher: Fix circle-line negative distance 2025-06-23 10:56:45 -05:00
LarryWoestman 4e30eb21c6 CAM: added command line arguments for finish label, (#21881)
output machine name, and post operation.
	With tests.
2025-06-23 10:45:19 -05:00
Syres916 7e6775d2c0 [Measure] Fix seg fault in MeasurePosition::execute if subElements is empty (#22016)
* [Measure] take into account if subElements is empty

* [Measure] Remove unnecessary else block
2025-06-23 10:44:51 -05:00
Florian Foinant-Willig 8c2eb14efe Sketcher: refactor planecgs/Constraints (#21988)
* Sketcher: refactor planecgs/Constraints

Remove code duplication

* Clarify param push with `Copy()`
2025-06-23 10:39:34 -05:00
Benjamin Nauck 6f965d3191 Merge pull request #21221 from ickby/FEM_extract_data
FEM: Data extraction and visualization
2025-06-23 17:33:07 +02:00
jffmichi 67efd9eff3 CAM: sort tool paths for Engrave and Deburr operation (#21531)
Co-authored-by: jffmichi <>
2025-06-23 10:22:21 -05:00
Max Wilfinger f66c2a27f2 Assembly: Fix conflicting shortcuts 2025-06-23 10:06:18 -05:00
tarman3 9accf3eaf8 CAM: Custom gcode - Improve error messages (#21509) 2025-06-23 10:05:01 -05:00
Chris Hennes eb534360a1 CAM: Fix format specifier for size_t (unsigned long) (#22005) 2025-06-23 09:50:17 -05:00
Benjamin Nauck 4fcb871b5b Spreadsheet: Only use validator when when prefix is not '=' 2025-06-23 16:14:35 +02:00
Roy-043 3ab2c0a02c Update ArchComponent.py 2025-06-23 14:26:05 +02:00
Roy-043 b9b600ae42 Update BimTDPage.py 2025-06-23 14:24:03 +02:00
Roy-043 eb4e1552a9 Update ArchSchedule.py 2025-06-23 14:23:09 +02:00
Roy-043 7142763892 Update ArchAxis.py 2025-06-23 14:21:02 +02:00
Roy-043 2c6663d766 BIM: fix filtering out level issue (#22059)
* Update ifc_status.py

* Update ifc_tools.py
2025-06-23 14:14:51 +02:00
Roy-043 b0f6375c5f Update BimProjectManager.py 2025-06-23 14:13:19 +02:00
Roy-043 3eacde0ba2 Update ArchMaterial.py 2025-06-23 14:12:12 +02:00
wmayer a39c44e483 Tools: Add ExpressionLineEdit to QtDesigner plugin 2025-06-23 14:12:05 +02:00
Roy-043 b11ebe6e40 BIM: fix index error in ifc_viewproviders.py
Fixes #21912
2025-06-23 14:10:26 +02:00
Roy-043 826f4789b5 BIM: fix ArchProfile update issues
Fixes 21001
Fixes 21187
2025-06-23 14:09:36 +02:00
Roy-043 580ec6451e BIM: fix display of help menu items after WB reactivation (improved)
Fixes #22044

Previous PR (#21874) did not work properly if the BIM WB was the start up WB. A scenario that I forgot to test.
2025-06-23 14:08:26 +02:00
Furgo f3a4b9de78 DXF: do not ignore the setting that controls importing paper layouts 2025-06-23 14:06:02 +02:00
Paul Lee fea582dc10 [ArchCurtainWall] Fix Vert-Horiz Mullion Mix-up & Support Swap (Variables name)
(Variables name improvement only)
2025-06-23 14:03:40 +02:00
Paul Lee 147e97d407 [ArchCurtainWall] Fix Vert-Horiz Mullion Mix-up & Support Swap
Fix #21845
Curtain wall vertical/horizontal mullion mix-up
- https://github.com/FreeCAD/FreeCAD/issues/21845

Support/Feature #21866
Swap Horizontal Vertical does not work #21866
https://github.com/FreeCAD/FreeCAD/issues/21866
2025-06-23 14:03:40 +02:00
Chris Hennes 55696b6a57 Help: Change URL sanitization to be safer 2025-06-23 14:02:36 +02:00
Paul Lee 9b3b15ebfe [ArchRoof] Improve subVolume generation
Fix #21633 : Holes in roof are causing troubles

FreeCAD Forum : Sketch based Arch_Roof and wall substraction
- https://forum.freecad.org/viewtopic.php?t=84389

Improved algorithm:
1. Extrusion of bottom faces in +Z.
2. The roof itself.
3. Extrusion of the top faces in +Z.

TODO:
Find better way to test and maybe to split suface point up and down and extrude separately
2025-06-23 14:00:41 +02:00
Syres916 f674589fbe [BIM] Fix Runtime Error when creating Wall (#21862)
* [BIM] Fix Runtime Error when creating Wall

* [BIM] Fix continueMode functionality for Wall, Panel and Structure
2025-06-23 13:59:13 +02:00
Kacper Donat d35b638039 Gui: Use proper placement property for Link
Links require different placement property (LinkPlacement) to be used,
otherwise it breaks the transform.

Fixes: #20776
2025-06-22 23:04:06 -05:00
Bas Ruigrok dff2127bc3 Part: Align to planar curves normal direction 2025-06-22 21:43:45 -05:00
xtemp09 65f737e859 [GUI] Remove dark fringe around letters (#21536)
Closes #12394

Co-authored-by: Kacper Donat <kacper@kadet.net>
2025-06-22 21:24:51 -05:00
matthiasdanner 71eed18cb1 Sketcher: 3 Point Symmetry fixed if root is selected first (and simplify and fix the selection logic) (#21612) 2025-06-22 19:54:39 -05:00
Kacper Donat 246bfa9c31 Merge pull request #22002 from tetektoza/search_preferences_box
Core: Introduce searching in Preferences
2025-06-23 02:16:55 +02:00
Chris Hennes 111d44b71c FEM: Eliminate unused proxy member 2025-06-22 19:10:48 -05:00
Chris Hennes d2ce7f8145 TD: Remove calls to now-empty clearLineSets() method 2025-06-22 19:10:48 -05:00
Chris Hennes 41af5a8e74 TD: Add missing override 2025-06-22 19:10:48 -05:00
Chris Hennes fdfd3e0eaa CAM: Add missing initializers
Also switch to designated initializers to give context.
2025-06-22 19:10:48 -05:00
Chris Hennes 385afbdc8b CAM: Add initializer for retract_mode
Also explicitly list fields for clarity.
2025-06-22 19:10:39 -05:00
tetektoza 74919b4b81 Core: Use bypass WM hint for X11 for search list in preferences 2025-06-23 01:24:50 +02:00
tetektoza 2bd637206e Core: Handle globalPos for both Qt6 and Qt5 2025-06-23 01:24:50 +02:00
tetektoza bd231ddb00 Core: Correct font sizes to be smaller in search box in preferences 2025-06-23 01:24:50 +02:00
tetektoza 68464393b9 Core: Remove displayText field from search box's result
Removes displayText from the searchboxes result, as it's being handled
differently and there are two other fields that store this previously
concatenated information separately.
2025-06-23 01:24:50 +02:00
tetektoza 2c5aa541e9 Core: Move reusable parts of MixedFontDelegate to separate functions
Co-Authored-By: Kacper Donat <kacper@kadet.net>
2025-06-23 01:24:50 +02:00
tetektoza d06651e92c Core: Use separate roles for found item in font delegate for search 2025-06-23 01:15:27 +02:00
tetektoza 53bd5a2ab7 Core: Use designated init for SearchResult in preferences 2025-06-23 01:15:27 +02:00
tetektoza e3dd8ec134 Core: Use an enum for search bar popup in preferences 2025-06-23 01:15:27 +02:00
tetektoza 4c1f2107dd Core: Extract preferences search bar to it's own class 2025-06-23 01:15:27 +02:00
tetektoza 6a024ea4e1 Core: Formatting changes for search in preferences 2025-06-23 01:15:27 +02:00
tetektoza 01729237b2 Core: Introduce searching in Preferences
This PR introduces search box in preferences.
Features:
*supports left click on the result, taking user to the result
*clicking anywhere cancels searching and closes popup box, same with ESC
key
*double click on the result closes the popup too (same behavior as
enter)
*supports enter (although if you are on the position you are already
on it so enter just closes the popup basically)
*escape closes it
*you can navigate through the list with mouse
*support fuzzy search so stuff like "OVP" is being matched to "On-View-Parameters"
*there is hierarchical display (tab/page/setting)
*some of the results are prioritized but fuzzy search prioritizing is the most important
*highlights found item
*goes to tab/page of found item
*if the pop-up box won't fit next to the right side of the screen,
it is added underneath the search box
2025-06-23 01:15:27 +02:00
Benjamin Nauck f50d84d1ea Merge pull request #21902 from tetektoza/fix/21380_allow_group_to_be_in_active_obj
Core: Allow users to add groups to active objects
2025-06-23 00:45:24 +02:00
Chris Hennes aa0acc944f Gui: Drop name of unused parameter in PropertyBoolItem 2025-06-22 17:40:25 -05:00
Chris Hennes edca310fd3 Gui: Make narrowing conversion float->int explicit 2025-06-22 17:11:22 -05:00
Chris Hennes f8ba2f6615 Gui: Mark widget as [[maybe_unused]] 2025-06-22 17:06:51 -05:00
Chris Hennes 951e8baf19 Gui: Implicit capture of this is deprecated 2025-06-22 17:03:55 -05:00
tetektoza 4c8be343b8 Gui: Allow users to add groups to active objects
As the title says, if right now there is Arch type active (like Level,
Building, etc. etc.), then it's not possible to assign Group to it
automatically (it's being created on root level of the document).

So this patch basically takes an active object and tries to insert it.
2025-06-22 23:50:12 +02:00
Benjamin Nauck d2f35cee55 App: Expose allowObject for groups in python 2025-06-22 23:50:12 +02:00
tetektoza b3c83df151 Core: Add a possibility to extract active object based on extension 2025-06-22 23:48:52 +02:00
Balazs Nagy 2688f06dd1 find job in parent chain (#21742) 2025-06-22 09:18:07 -05:00
jffmichi 2056c2792e CAM: simplify Order Output By Tool logic and fix #21969 (#21970)
Co-authored-by: jffmichi <>
2025-06-21 12:49:49 -05:00
jffmichi 7f1ffe5106 CAM: improve Job toggleVisibility (#21802)
Co-authored-by: jffmichi <>
2025-06-21 12:49:32 -05:00
tetektoza 7515c70b67 Sketcher: Make TAB lock the label if user has typed previously 2025-06-21 13:48:12 +02:00
xtemp09 eb8d8b68f0 [Spreadsheet] Replace override cursor with QGraphicsItem::setCursor (#22097)
* [Spreadsheet] Replace the risky use of override cursor with
QGraphicsItem::setCursor

* [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-06-21 12:57:07 +02:00
tetektoza 9912c029dc Sketcher: Add QLabel header for newly added locked icon 2025-06-21 12:46:37 +02:00
tetektoza 78a754e620 Sketcher: Force cycling back to first labels on OVP if they are not set 2025-06-21 12:46:27 +02:00
tetektoza 1f250fab32 Sketcher: Initialize lock icon only once 2025-06-21 12:46:27 +02:00
tetektoza bcbf8d88a9 Sketcher: Adjust P&D mode to new enter behavior 2025-06-21 12:46:27 +02:00
tetektoza ef0b259097 Sketcher: Change enter behavior on OVP to put OVP in lock state only
This patch adds/changes a couple of things:
* if you press enter on a label now, it moves you to another label and
  adds the label and lock on the previous label, instead of previous behavior
  where it was accepting whole dimension
* if you press enter and have lock state on both labels then you move to
  next stage
* if you press ctrl+enter it's as is if you'd press enter on both labels
  (the object becomes constrained with whatever dimensions that were in
  both labels)
* tab still works the same way
* you can remove "Lock" state from the label by typing something
  additional or removing the dimension at all
2025-06-21 12:46:27 +02:00
Chris Hennes b307395c59 Measure: Remove redundant check for edges > 0 2025-06-20 22:49:34 +02:00
Chris Hennes d077deebf0 CI: Eliminate 3rd party and generated code from analysis 2025-06-20 22:49:00 +02:00
Chris Hennes 484904e9e1 Sketcher: Remove redundant checks
Also cleanup missing curly braces.
2025-06-20 22:48:31 +02:00
Chris Hennes ac51f11660 Sketcher: Remove dead code 2025-06-20 22:41:59 +02:00
Chris Hennes 723a2eb1ae Part: Remove remnants of code from TNP merge 2025-06-20 22:41:24 +02:00
Chris Hennes 211ef2d48b Tools: Use a safer hostname detection 2025-06-20 22:40:55 +02:00
Kacper Donat ee91b41a6f Merge pull request #22015 from 3x380V/matrix4d_fixes
Matrix4D fixes
2025-06-20 22:39:44 +02:00
Benjamin Nauck f576abd78d Gui: Use middle elide for text in model tree 2025-06-20 22:37:37 +02:00
Max Wilfinger 3c1e197115 Gui: Add toggle overlay icons 2025-06-20 22:36:40 +02:00
Chris Hennes 9db1051f7e Merge pull request #22094 from oursland/lint-on-pr-only 2025-06-20 14:30:40 -06:00
Benjamin Nauck 889d708992 Merge pull request #22025 from tetektoza/sketcher_regression_1 2025-06-20 19:21:14 +02:00
Jacob Oursland 7301dd0780 CI: only lint on PRs. 2025-06-20 09:57:11 -07:00
tetektoza deff562dee Sketcher: Handle additional characters for OVP in regexp
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-06-20 00:33:48 +02:00
Chris Hennes fb7aa5f53b Merge pull request #22033 from oursland/limit-lint
Limit lint to changed lines
2025-06-19 12:01:58 -05:00
Alfredo Monclus e45cf96afb Gui: Tasks: fix in place close and ok buttons 2025-06-19 18:42:24 +02:00
Kris 0090566724 Gui: Move Submenu Commands in Tool Menu (#20864)
* Moved tools submenu commands and title case

* Apply suggestions from code review

Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
2025-06-19 08:33:36 +02:00
Jacob Oursland 2dbf9d3937 CI: limit C++ lint to changed lines. 2025-06-18 22:14:35 -07:00
Jacob Oursland e18b8bdf15 CI: determine modified lines in a clang-tidy compatible way. 2025-06-18 22:14:34 -07:00
Kacper Donat f7e932f575 Merge pull request #21982 from tetektoza/feature/11603_render_constraints_below_geom
Sketcher: Prioritize rendering geometry lines rendering over constraints
2025-06-19 00:03:50 +02:00
tetektoza 301b201c6d Gui: Change ordering of names in Link property
As the title says, currently it is:
ObjName (Label), this patch changes it to Label (ObjName) to be more
user friendly.
2025-06-18 23:38:52 +02:00
dependabot[bot] fa1d8a27f5 Bump github/issue-metrics from 3.20.1 to 3.21.0
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.20.1 to 3.21.0.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/119b5237f41e78241b9b9cae254e544b52a359a0...346541fd0068df64c02607a4c7f55438dc2881e2)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-18 08:32:44 -05:00
Syres916 cd5d0980b4 [BIM][Draft][CAM] preparation for deprecation of QCheckBox… (#21939)
* [BIM][Draft]{CAM] preparation for deprecation of QCheckBox stateChanged -> checkStateChanged
2025-06-18 11:24:21 +02:00
tarman3 0991e3fa2a CAM: Dressup Tag some fixes 2025-06-18 09:42:56 +03:00
David Tanana e17a83fa1f PartDesign: Added 1 3/16 16 threaded drill hole diameter (#22000)
* Adding UNf 1 3/16  16 to this list
* Updating type and test params
2025-06-17 08:59:00 -05:00
tarman3 a56357e0ff CAM: Engrave - Fix step down for closed profile 2025-06-17 13:22:26 +03:00
Chris Hennes 0b1a2e0591 Draft: Eliminate redundant assignment to self (#22006)
* Draft: Eliminate redundant assignment to self

* Removed confusing comment.

---------

Co-authored-by: Roy-043 <70520633+Roy-043@users.noreply.github.com>
2025-06-17 09:40:01 +02:00
Furgo a91bf4ee78 DXF: rename "Group layers into blocks" setting (#21896)
* DXF: rename "Group layers into blocks" setting

* DXF: apply suggested improvement children => contents

* Import: DXF, change tooltip to reflect the reality of the current code

https://github.com/FreeCAD/FreeCAD/pull/21896#issuecomment-2958611607
2025-06-17 09:38:38 +02:00
tetektoza e8ae780ae5 BIM: Allow user to skip dialog during type conversion
As the title says - this adds a new option to the dialog to `never ask
again` as well user can customize both settings through preferences.
2025-06-17 09:35:38 +02:00
tetektoza 0817510181 BIM: Fix IFC type assignment not being saved to file
As the title says, this is simple fix - basically right now anytime user
changed Link property to point to proper IFC type, we weren't writing to
the IFC file buffer to finally write it to the file if user would save
it.

So this patch makes sure we write to this buffer by calling appropriate
function, and making ifc object have proper pointer to IFC type.
2025-06-17 09:33:57 +02:00
pre-commit-ci[bot] 6b28644ed7 [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pre-commit/mirrors-clang-format: c8ab0f80399e63a4fabbf5313c0606831f09742e → 64827eb3528d4dc019b01153e9fb79107241405f](https://github.com/pre-commit/mirrors-clang-format/compare/c8ab0f80399e63a4fabbf5313c0606831f09742e...64827eb3528d4dc019b01153e9fb79107241405f)
2025-06-16 18:55:48 -05:00
Kacper Donat 34dfd00b1e Merge pull request #21965 from tetektoza/fix/21861_crashes_selection_during_deletion
Core: Fix crashes during item deletion in specific selection order
2025-06-17 00:39:17 +02:00
tetektoza 4b4475ea3f Gui: Emit signal to EditableDatumLabel only if there's no digits
Small regression of mine, basically this signal to remove set/locked
state of EditableDatumLabel should be only sent out if current text in
the label is empty or it doesn't contain digits.

Previously it was emitted every intermediate wrong state, so stuff like
"71." was also being matched, and it resulted in resetting the locked
state of the label, which in turn resulted in keeping user from entering
float values.
2025-06-17 00:34:21 +02:00
tetektoza fdf002df2d Core: Add guard in Tree to ensure we don't process items during deletion 2025-06-17 00:15:49 +02:00
tetektoza 5e91c90bdc Core: Fix crashes during item deletion in specific selection order
This patch fixes crashes that we've noticed during migration from Qt5 to
Qt6 in recent months.

If you select items in a tree in a specific direction or range (all, or
from bottom to top) and delete them, there is a high change user will
experience a crash in `testStatus` function. This problem arises because
we're getting into use-after-free situation.

Looking at the callstack there are a lot of calls to
`itemSelectionChanged` during deletion, which takes over item creation
after deletion in `TreeWidget::_slotDeleteObject`. This in turn causes
`DocumentObjectItem::testStatus` to be called prematurely when we have
dangling pointers in object map still. `itemSelectionChanged` signal is
being transmitted because the selection range is changing as we're
constantly deleting and readding certain items.

Previously there was `blockSelection` call during deletion, but it turns
out the signals can still be emitted even AFTER we delete the item. This
had to somehow change between Qt5 and Qt6. So, to be safe, move the
signal block for selection before the obj deletion loop to be sure we
won't retransmit this signal during an uncertain state.
2025-06-17 00:01:24 +02:00
tetektoza a265fb8817 Sketcher: Remove redundant comment regarding old SoAnnotation node 2025-06-16 23:57:17 +02:00
tetektoza 02716069c2 Sketcher: Prioritize rendering geometry lines rendering over constraints
As the title says - since there is pending PR for better SoDatumLabel
constraints interactivity, this patch now prioritizes geometry lines
over constraints, so constraints will be rendered below lines.

This patch changes rendering order of constraint lines to be below
geometry lines, so now selection and rendering will be prioritized for
geometry lines instead of constraints.

This is done by changing depth buffer values and removal of SoAnnotation
node which was disabling depth buffer checks on constraints at all.
2025-06-16 23:56:47 +02:00
pre-commit-ci[bot] da4d5c919f [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-06-16 18:27:13 +00:00
Stefan Tröger fa9aba2749 FEM: Data extraction lint updates 2025-06-16 20:23:18 +02:00
Roy-043 fca41e4003 Rebase and minor adjustments 2025-06-16 18:25:59 +02:00
dependabot[bot] 60753068ec Bump step-security/harden-runner from 2.12.0 to 2.12.1
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.12.0 to 2.12.1.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/0634a2670c59f64b4a01f0f96f84700a4088b9f0...002fdce3c6a235733a90a27c80493a3241e56863)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.12.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 11:18:56 -05:00
dependabot[bot] 6bb3469308 Bump github/codeql-action from 3.28.19 to 3.29.0
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.19 to 3.29.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/fca7ace96b7d713c7035871441bd52efbe39e27e...ce28f5bb42b7a9f2c824e633a3f6ee835bab6858)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.29.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 11:18:46 -05:00
Benjamin Nauck 01d9e6efa3 Sketcher: Refactor GeoDef and ConstrDef structs
- Fix comment for mid-point
- Use in-class member initializers instead of constructor
- Remove redundant default constructor (got redundant after initializers)
- Made comments doxygen compatible
2025-06-16 11:18:25 -05:00
tetektoza 864ea5176b BIM: Fix Arch_SectionPlane having incorrect display style upon init
Regressed from previous behavior - there was Arch's refactor and the
base element that `SectionPlane` was inheriting from was
`App::FeaturePython`, not `Part::FeaturePython`. This changes a lot, since
`Part::FeaturePython` has predefined color (black in this case), which
later on - during property set of `SectionPlane` in properties caused
skipping of preferred setup of color.
2025-06-16 18:15:53 +02:00
Yorik van Havre fe83909cf7 Merge pull request #21826 from 3x380V/fix_21812
Spreadsheet: Re-enable zooming and fix cursor change
2025-06-16 18:10:27 +02:00
Benjamin Nauck 6e3135c08d App: Trim “Gui::” and “NavigationStyle” more securely
By using regex we can remove prefix and suffix more securely as we can’t assume all navigation styles are formatted the same (mistakes can happen)
2025-06-16 11:07:40 -05:00
Chris Hennes 46888b83b2 Merge pull request #21921 from furgo16/add-prefcheckablegroupbox
Gui, Draft, BIM: Add PrefCheckableGroupBox, use it in IFC exporter preferences page
2025-06-16 11:06:30 -05:00
George Peden 94d39087d3 Sketcher: Add contextual input hints to edit tools (InputHints Phase 3) (#21806)
* Add input hints to fillet and chamfer tools

* Add hints to trimming tool

* Add hints to splitting tool

* Implement hints for extend tool

* Add hints to external geometry

* Add hints to Carbon Copy tool

* Hint updates to align with developer guidelines

* change "click to set" to "set" per PR comments

* Use enum (or declare one) to be type safe per PR comments

* For "trivial" one-step / one-state tools, refactor with direct hint return rather than using declarative / table pattern.

* Refactor hint tables initializers with C++20 features per PR feedback

- Use designated initializers (.state = , .hints = ) for clearer structure
- Add 'using enum Gui::InputHint::UserInput' to eliminate repetitive prefixes
- Applied to DrawSketchHandlerExtend and DrawSketchHandlerFillet

* Refactor Splitting tool hint implementation with direct return (trivial) pattern

* For fillet change "vertex" to "point" per PR feedback

* Change hint to "pick location on edge to split" per PR feedback
2025-06-16 11:05:13 -05:00
Max Wilfinger ccf27775dc Gui: Center notification label and disable show report view by default (#21872)
* Gui: Center notification label and disable show report view by default

* Stylesheet: min-width: 0 for QStatusBar QPushButton
2025-06-16 11:03:58 -05:00
Furgo 1e29a3273f Import: DXF, handle non-standard 8859_1 encoding (#21905)
* Import: improve DXF importer exception handling

* Import: DXF, pinpoint erroneous header section when reading

* Import: tackle 8859_1 non-standard encoding name
2025-06-16 18:02:56 +02:00
Pieter Hijma b19fc992fb Core: Add tests for undo/redo property rename 2025-06-16 17:58:33 +02:00
Pieter Hijma 2bf376cffb Core: Add undo/redo support to property renaming 2025-06-16 17:57:44 +02:00
Roy-043 e68a40cdb0 BIM: fix display of help menu items after reactivation
Fixes #21873.
2025-06-16 17:54:43 +02:00
Chris Hennes 2a48addd57 Merge pull request #21924 from hyarion/fix/lcs-crash
Gui: Fix crash when creating a LCS
2025-06-16 10:42:55 -05:00
Ryan Kembrey 52725ebeb7 TechDraw: Add spacing preview without OCCT calls 2025-06-16 10:41:21 -05:00
Samuel 034b8bf579 CAM: Show abbreviations next to properly labels in the toolbit editor (#21887) 2025-06-16 10:40:32 -05:00
Furgo d166d2a5e8 3rdParty: avoid warnings from libE57Format (#21818)
* 3rdParty: avoid warnings from libE57Format

* Suppress all warnings from libE57Format

* Fix typo in original file
2025-06-16 10:39:12 -05:00
Furgo b88cbac4f5 BIM: fix ArchPipe's view provider initialization 2025-06-16 17:37:28 +02:00
paddle 2161725848 Part: FaceMakerRing from RealThunder's branch.
Co-authored-by: Zheng Lei <realthunder.dev@gmail.com>
Co-authored-by: Pierre-Louis Boyer <pierrelouis.boyer@gmail.com>
2025-06-16 10:33:35 -05:00
Max Wilfinger 1421ff7094 Sketcher: ShowDimensionalName by default 2025-06-16 10:32:42 -05:00
wmayer abe64f7576 Base: Use nested std::array for Matrix4D class 2025-06-16 10:05:43 +02:00
wmayer 74a22df884 Base: Simplify Base::Matrix4D
As discussed in https://forum.freecad.org/viewtopic.php?t=65959 reduce code duplications
2025-06-16 10:05:43 +02:00
wmayer 4634e62867 Base: Use i,j consistently for iterations Matrix4D
As discussed in https://forum.freecad.org/viewtopic.php?t=65959
use consistently i,j to iterate over rows and columns
2025-06-16 10:05:43 +02:00
wmayer 2f736ded84 Base: Do not use short int in Matrix4D
As discussed in https://forum.freecad.org/viewtopic.php?t=65959
replace short with int.
2025-06-16 10:05:43 +02:00
Chris Hennes f3f3f75146 CI: Update test names in runner 2025-06-15 17:31:25 -05:00
Chris Hennes 5388c32f10 Tests: Refactor tests with better names, etc.
The basic tests now run on Windows correctly without needing to manually
copy any files -- the executables are output in the same location as the
necessary DLLs. However, tests that require *.pyd files (all code in the
Mod subdirectory, basically) still do not work on Windows as the test
executables cannot find those files. This is a work in progress.
2025-06-15 17:31:19 -05:00
dependabot[bot] 65fd80754a Bump prefix-dev/setup-pixi from 0.8.8 to 0.8.10 (#21973)
* Bump prefix-dev/setup-pixi from 0.8.8 to 0.8.10

Bumps [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi) from 0.8.8 to 0.8.10.
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](https://github.com/prefix-dev/setup-pixi/compare/19eac09b398e3d0c747adc7921926a6d802df4da...14c8aabd75893f83f4ab30c03e7cf853c8208961)

---
updated-dependencies:
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.8.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update pixi-version as well

Co-authored-by: Jackson Oursland <jacob.oursland@gmail.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
Co-authored-by: Jackson Oursland <jacob.oursland@gmail.com>
2025-06-15 17:07:18 -05:00
Chris Hennes ee571ef6e7 Tests: Add test framework for BackupPolicy 2025-06-15 10:34:09 -05:00
Chris Hennes 7d37d8dfa9 App: Extract BackupPolicy into its own file
No code changes except to add AppExport to BackupPolicy
2025-06-15 10:33:42 -05:00
Stefan Tröger 7557d49697 FEM: Extraction code CodeQL updated and typo fix 2025-06-15 13:03:26 +02:00
Stefan Tröger 3e3e6a2c7b FEM: Include code quality improvements from review 2025-06-15 10:57:47 +02:00
Stefan Tröger 66f8674e63 FEM: Prevent invalid index for data extraction 2025-06-15 10:57:47 +02:00
Stefan Tröger cb4ab225a6 FEM: Plot single frame index data as point 2025-06-15 10:57:47 +02:00
Stefan Tröger f5533a5f53 FEM: Data extraction code version conflicts resolved: PySide, mpl, VTK 2025-06-15 10:57:47 +02:00
Stefan Tröger ecf2dba626 FEM: Adopt data extraction code to ubuntu LTS 2025-06-15 10:57:47 +02:00
Stefan Tröger 997fa8a193 FEM: Remove VTK 9.4 only function
And make sure filters task dialogs can be used if something in python fails
2025-06-15 10:57:47 +02:00
Stefan Tröger 8786b072d9 FEM: Update data extraction dialog titles and spelling errors 2025-06-15 10:57:47 +02:00
Stefan Tröger dcfc932711 FEM: Fix impact of stylesheet min button widht 2025-06-15 10:57:47 +02:00
Stefan Tröger 8dff03ff79 FEM: Ensure tests run without GUI with data extraction code 2025-06-15 10:57:47 +02:00
Stefan Tröger fbf31f8657 FEM: Data extraction ui works better with stylesheets 2025-06-15 10:57:47 +02:00
Stefan Tröger 8cec9ad7f9 FEM: Adopt data extraction for VTK <9.3: different table filter
Additionally remove unneeded includes in c++ code remaining from earlier experiments
2025-06-15 10:57:47 +02:00
Stefan Tröger d50a98b9cf FEM: Ensure post task dialogs work without VTK python build 2025-06-15 10:57:47 +02:00
Stefan Tröger 64d864c944 FEM: Add data extraction objects to FEM test suite 2025-06-15 10:57:47 +02:00
Stefan Tröger 6ba5c0d0a5 FEM: port DataAlongLine filter to use arc length.
This makes it easier for the new data extraction to also plot data over line length.
2025-06-15 10:57:47 +02:00
Stefan Tröger 89c71c511a FEM: Data extraction objects are FEM::FeaturePython
This allows them to be drag and droped in an analysis
2025-06-15 10:57:47 +02:00
Stefan Tröger 974f41fc96 FEM: Adopt post extraction code to updated main 2025-06-15 10:57:47 +02:00
Stefan Tröger 318d0645f0 FEM: Usability and UI improvements for data extraction
Update icons for post data extraction
Improve translatability of post data extraction
Fix post data extraction commit handling
2025-06-15 10:57:47 +02:00
Stefan Tröger aa6bb428cc FEM: Allow export of post processing data tables to CSV files or to cliboard to paste into spreadsheet programs 2025-06-15 10:57:47 +02:00
Stefan Tröger 8672a680e0 FEM: Post data visualization bug fixes and quality of life updates 2025-06-15 10:57:47 +02:00
Stefan Tröger 54a35a6c4d FEM: Add extraction task panel to data plot filters 2025-06-15 10:57:46 +02:00
Stefan Tröger d86040dd58 FEM: Add table post data visualization 2025-06-15 10:57:46 +02:00
Stefan Tröger d3fa7ad8f0 FEM: Add index over frames visualizations 2025-06-15 10:57:46 +02:00
Stefan Tröger c1b11a19f7 Fem: Implement lineplot visualization 2025-06-15 10:57:46 +02:00
Stefan Tröger 6e4fab1f50 FEM: Draft architecture of post data extraction with histogram example 2025-06-15 10:57:46 +02:00
Captain f92d33944b Gui: refactor SoLinearDragger (#21451)
* Gui: refactor SoLinearDragger

* further improvements

* allow changing label visibility

* change SoLinearDraggerContainer to not inherit from SoDragger

---------

Co-authored-by: captain <captain@captain.captain.com>
2025-06-14 23:21:25 +02:00
theo-vt 9ecb62c8f6 Sketcher: Fix autoscale issue with the origin (#21952)
* Correctly handle geo ids < 0 in scale handler
2025-06-14 13:07:19 -05:00
Benjamin Bræstrup Sayoc 117796bf08 Gui: use parameter observer for locale parameter
Parameter change should be independent of the use of the preference window.
2025-06-14 18:25:03 +02:00
Chris Hennes 9714e2f87a Base: Disable XML external entity expansion
Addresses https://github.com/FreeCAD/FreeCAD/security/code-scanning/29
2025-06-13 10:44:01 +02:00
pre-commit-ci[bot] f03900b58d [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-06-13 10:40:48 +02:00
Syres916 6eecd08f7c [Gui] C++ preparation for deprecation of QCheckBox…
…stateChanged -> checkStateChanged
2025-06-13 10:40:48 +02:00
tetektoza 2c532ed924 Sketcher: Fix OVP accepting input prematurely in Position and Dimensions
Fixes the problem where if user has selected `Position and dimensions`
mode in Preferences, then after first keystroke on 2nd label after
typing something in 1st label before, the input is being accepted
without allowing them to enter a number with more than 2 digits.
2025-06-13 10:10:58 +02:00
tetektoza 60a86b05c4 Sketcher: Fix OOB access to OVPs
Stupid mistake of mine from previous refactor - some of the OVPs do not
contain those elements and thus should not be accessed prematurely.

This patch moves access to the OVPs when it's actually needed so it
won't go out of bounds.
2025-06-13 10:10:58 +02:00
Alfredo Monclus f5c32243a6 Gui: fix double-click on checkboxes locking the properties 2025-06-13 10:10:31 +02:00
Roy-043 89cb9877b7 Draft: OrthoArray task panel change some strings to sentence case (#21959)
X Axis -> X axis
Same for Y and Z.
2025-06-12 19:52:52 +02:00
Samuel Abels b88bafc138 CAM: fix: broken import in tests 2025-06-12 18:17:21 +02:00
Samuel Abels c7a27e8b82 CAM: Remove obsolete images 2025-06-12 17:05:23 +02:00
Samuel Abels 07d466e1fb CAM: move DetachedDocumentObject into a dedicated module for better reuse 2025-06-12 17:01:36 +02:00
Benjamin Nauck f32fdcf48b Gui: Fix regression pointed out in review
paddlestroke:
> Here we actually need to keep App::Origin. Because we do not allow deletion ONLY of origin objects. Not of normal LCS.

While the original code:
```cpp
auto origin = dynamic_cast<App::Origin*>(lcs);
if (origin && !origin->getInList().empty()) {
```
...handles this perfectly fine, intent isn't obvious when reading it.
Using `is<T>()` shows intent better and should avoid similar situations in the future.
2025-06-12 10:33:56 +02:00
Benjamin Nauck 4c66d2e3d4 Gui: Refactor LCS fixes
* use early exit to highlight main execution path
* use `auto*` for pointer
* use getObject<T>() instead of casting result from getObject()
* remove empty updateData()
* rename origin to lcs in setTemporaryVisibility for clarity
2025-06-12 10:27:06 +02:00
Luz Paz 775194b5b9 TechDraw: fix typo in comment 2025-06-11 21:51:23 +02:00
Max Wilfinger 9d1360fc8d Gui: Fix dragger update when moving to target object and make flip independent of selected components. 2025-06-11 20:58:47 +02:00
tetektoza a95d782ab0 Sketcher: Refactor access to OVPs to not repeat array access everytime
As the title says. I think personally this increases readability just a
little bit and I thought it's low effort to refactor.

Instead of checking the OVPs through array everytime, since we access
them multiple times in different scenarios - just cache them on the
beginning of state and access the variable, instead of array.
2025-06-11 13:30:35 +02:00
wmayer f2780320cc Gui: Fix crash when creating a LCS
This is a left-over of the regressions introduced with PR 18126.
Thanks to some moderinization of the code base and replacing static with dynamic casts undefined behaviour
has changed to well-defined behaviour but now unchecked null pointers.

This change does some extra null pointer checks and uses the now correct types for down casting.

Hint: Upstream still uses many static casts here that already cause undefined behaviour when creating a LCS.
This could be the reason for the possible crashes when deleting a LCS as described in 20261

# Conflicts:
#	src/Gui/ViewProviderCoordinateSystem.cpp
2025-06-11 08:26:17 +02:00
Ladislav Michl 4d1d6f4e78 Revert "Sheet: Disable zooming"
This reverts 0c4fb60 ("Sheet: Disable zooming") as it breaks some
users workflow.
2025-06-11 06:54:59 +02:00
Kacper Donat 109e11e6b2 Spreadsheet: Fix cursor being stuck resize state when scaled 2025-06-11 06:54:59 +02:00
Furgo 195afca33f BIM: Use PrefCheckableGroupBox in IFC exporter preferences page 2025-06-11 02:44:52 +02:00
Furgo b584c506bd Draft: handle reading defaults from PrefCheckableGroupBox 2025-06-11 02:44:52 +02:00
Furgo 5362c818c8 Gui: add new PrefCheckableGroupBox widget 2025-06-11 02:44:52 +02:00
wandererfan 7388758ad9 [TD]fix bad element name in Vertex::Restore 2025-06-10 13:46:57 -05:00
wmayer 456659d763 Test: Do not write test files into CWD
When running the tests make sure to write the test files into the temp directory.

This fixes issue 19112
2025-06-10 17:11:25 +02:00
Jacob Oursland 51a056e245 CI: set MACOS_DEPLOYMENT_TARGET=10.13 for Intel macOS.
The MACOS_DEPLOYMENT_TARGET was not explicitly set, resulting in a default of 10.9, which does not support C++
features needed by some components in FreeCAD. This PR sets the MACOS_DEPLOYMENT_TARGET to 10.13 to build
for platforms running macOS High Sierra (2017) or newer.
2025-06-10 09:41:53 -03:00
Ladislav Michl 8b94d49a3c Gui: fix ViewProviderCoordinateSystem::claimChildren()
Until 8de6382 ("Gui: Fix stackoverflow when loading corrupted file")
a static_cast was used to obtain App::Origin object, however with
introducing App::LocalCoordinateSystem this was no longer correct,
although not causing any troubles as OriginFeatures moved into
LocalCoordinateSystem as well.

Recent use of getObject template triggered this problem, so use now
correct cast to App::LocalCoordinateSystem.

Fixes: 19702dc ("Core: Add App::LocalCoordinateSystem")
2025-06-10 10:20:06 +02:00
Kacper Donat 85b1c42cd1 Gui: Add guidelines for input hints 2025-06-10 07:05:06 +02:00
Mino-Tsuzuku ae3962191a Draft: Fix several SVG import bugs (#20293)
* Fix #19422 SVG: use tag create wrong size object
Fix #19072 SVG: import <defs> keyword as object without <use>
and Fix bug that not reported, <symbol> keyword as object without <use>
and Fix bug that not reported, nested use tag not import correctly.
 To do this. I make preprocessor that replace use tag to it's referenced object.
and remove symbol tag and defs tag from loaded svg.
 there is a subeffect, name of imported object that related to symbol tag is changed.

* Fix  incorrect import when use tag nesting context.

* fix error when use tag not exist.

* rebased aprospero PR20293.
fix several bugs.
1,x and y attribute of use tag is not processed under certain condition.
2,Doesn't finish importing when referenced ID is not exist.
3,Doesn't finish importing when use tag use href instead of xlink:href

* Refactor: Use data.get() for cleaner dictionary key handling

* Refactored code for simplicity following suggested changes.

* Add <a> tag support.( <a>tag  is  almost same with <g> tag at visual effect )

* Correct mistakes in the if condition handling href and xlink:href

* Modify the code to retain the original namespace definitions, as removing all namespaces may cause incorrect importing process.
2025-06-09 23:44:37 +02:00
Jackson Oursland 12b4610b49 CI: install black for python format checker (#21858) 2025-06-09 14:51:59 -03:00
Syres916 fec8d924fe [BIM] Fix Attribute Error when user moves and then deletes the BimViewArea dock widget (#21830)
* [BIM] Fix attribute error when user deletes the BimViewArea dock widget

* [BIM] Fix Attribute Error for both Qt5 and Qt6

* Update src/Mod/BIM/bimcommands/BimViews.py

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-06-09 17:36:04 +00:00
theo-vt 353c4eca55 Sketcher: Sketch autoscale (#21084)
* Working scale prototype

* Call viewAll to fit geometries in the viewport post-scaling

* Exclude angle dimensions

* Scale the viewport rather than calling viewAll

* Scale dimension annotation along geometries

* Early return when counting more than one dimensional constraint

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

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

* Disable sketch autoscale if there are external geometries in the sketch

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

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

* Add a setting to disable the feature _ and eventually parametrize

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

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

* Check for objects in the viewport in the sketch's ancestry to decide wheter or not to autoscale

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

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

* More consistent camera scaling

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

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

* Check for visual indicator in the whole document

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

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

* Find visible items in nested assemblies

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

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

* Check visual elements in assemblies nested in assemblies

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

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

* Set the dimension even if the scaling fails

* Allow constraints that interact with the origin axis/root

* Remove unused variable

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

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

* Misc fixes from review

* [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-06-09 18:31:44 +02:00
Kacper Donat 53737ed389 Gui: Add BitmapFactory::empty method
This adds empty(QSize) method to bitmap factory that creates empty
pixmap. This may seem useless, but after creating bitmap one needs to
remember to clear it and to properly set DPR - BitmapFactory will take
care of it.
2025-06-09 12:20:08 -04:00
wmayer 017f2c8842 Helper function to get preferred delete key depending on platform 2025-06-09 18:10:52 +02:00
Furgo 64497cea4b CI: add ifcopenshell to Ubuntu native builds (#21709)
* CI: add ifcopenshell to Ubuntu native builds

* CI: move test dependencies installation after build/runtime deps installation

* CI: bump ifcopenshell
2025-06-09 18:10:40 +02:00
Tomas Mudrunka 2c3b56547b Add 3.175mm milling bit to default tool library as it's extremely common bit size 2025-06-09 12:06:36 -04:00
Chris Hennes 772a19e4f2 Merge pull request #21813 from maxwxyz/siemens-nx-navigation
Navigation: Add Siemens NX style
2025-06-09 12:03:31 -04:00
João Matos 967ebfd29c Material: Fix unused parameters warnings. (#21584)
Just another round of compiler warnings fixes for material code.
2025-06-09 10:53:43 -05:00
Ralf Habacker 719ee20ba4 Partial homogenization of FEM dialogs for constraints (#21538)
* FEM: Add context menu entry for clearing the reference list in constraints

See #6085

* FEM: Add 'Remove' button to python based dialogs for adding geometry references

See #6085
2025-06-09 10:51:36 -05:00
wandererfan a46d84aa2e [TD]fix dim reference repair 2025-06-09 11:49:25 -04:00
WandererFan 4989af13e6 [TD]Cosmetic vertex tag save/restore fail (fix #21069) (#21374)
* [TD]fix tag handling on Save/Restore

* [TD]fix linter messages

* [TD]remove c-style cast x4

* [TD]do not write VertexTag element in Vertex::Save
2025-06-09 17:48:00 +02:00
Ralf Habacker e14c45d9a0 BIM: Add top level group when importing obj file into active document
When importing an obj file into an existing document,
the imported objects are now stored below a new group
object in order to improve the structure and avoid
flooding the top level with imported objects.

Fixup for #21349
2025-06-09 17:36:45 +02:00
tetektoza 29ca81b64f Draft: Introduce 1-axis mode for ortho array (#21602)
* Draft: Introduce 1-axis mode for ortho array

As the title says - the 1 axis mode allows to switch between all of the
axises mode and allows to modify only 1 axis at the time that user can
select with the checkbox.

* Draft: Rename to Linear Mode and remove redundant comments

* Draft: Display only one interval for the selected axis

* Draft: Cache selected variables in user.cfg - axis mode, intervals, etc...

* Draft: Make sure the checkboxes in OrthoArray are exclusively selected

* Draft: Apply review comments

Changed a couple of things according to review:
* linear mode is now being used as default during first startup (it
  wasn't before)
* applied Roy's comments about coding style, etc.
* grouped everything into separate QGroupBox which is dedicated for
  Linear Mode and has it's own labels, although spinboxes are shared so
  during mode switch we reparent them now
* removed Orthogonal Array's icon
* in the QGroup applied naming suggested in the review, X Intervals ->
  interval, etc.
* changed to radio buttons since we want exclusivity in selection
2025-06-09 17:33:51 +02:00
Syres916 a38689b6fb [Start] add Tooltip to show full path when the ShortCustomFolder is true 2025-06-08 22:11:05 +02:00
Samuel Abels 5d6ec97ce1 CAM: Remove unwanted transparency from shape icons 2025-06-08 21:15:18 +02:00
Jacob Oursland 8be9b5924d Pixi: remove explictly setting Qt6 now that it is the default. 2025-06-08 18:30:53 +02:00
Chris Hennes 4f7ce9270c Addon Manager: Update to latest main
Fixes problem with installer
2025-06-08 18:03:43 +02:00
Kacper Donat 593e946639 Merge pull request #21825 from maxwxyz/surface-blend-curve
Surface: Task dialog for blend curve
2025-06-08 16:21:01 +02:00
Syres916 0622e5014f [Start] show the actual custom folder name...
...instead of 'Custom Folder'
2025-06-08 16:19:19 +02:00
Alfredo Monclus d48dcd8bb0 Gui: remove taskheader animation 2025-06-08 16:18:28 +02:00
Max Wilfinger 0386189c51 Advanced options for move to other object in the transform tool.
Allows for masking of individual translation or rotation axes.
2025-06-08 16:18:01 +02:00
tetektoza 6664907bd5 Sketcher: Allow user to reset OVP state using backspace key
Currently if user tries to reset OVP, they can only do that by entering
"0" for example, and then the parameters will get unset in
unsetOnViewParameter. But that will only happen if user types a value
that's under confusion point (typically 1e^-7). In my opinion, it would
be cool to reset that state if user deletes all content in the label, to
allow them to specify coordinates with mouse once again.

Also, this patch fixes a regression with backspace, where deleting stuff
from OVP was working on unix systems, but seems like on Windows it
doesn't pass the check.
2025-06-08 15:00:58 +02:00
Max Wilfinger e4b1512ae9 Update stale action (#21860)
* Increase operations per run
2025-06-08 07:51:25 +00:00
Max Wilfinger 277bbf1f70 Update GitHub stale action and fix typo 2025-06-08 09:04:35 +02:00
longrackslabs 8a58d225c8 - Refactor Point tool hint implementation with direct return (trival) pattern 2025-06-08 02:31:19 +02:00
Chris Hennes b8da3568d2 CMake: Switch default Qt to Qt6 2025-06-08 00:38:03 +02:00
Max Wilfinger 111dbc08f4 Change hint size for status bar consistency 2025-06-08 00:33:31 +02:00
saso badovinac 1b0ea183c2 Update codeql.yml (#21819)
* Update codeql.yml

this splits the cpp scan into a separate file, makes the configuration more readable and cleaner checks in push and pull requests

* Create codeql_cpp.yml
2025-06-07 17:31:54 -04:00
Max Wilfinger 23f29e3aa8 Fix linter warnings 2025-06-07 21:10:01 +02:00
Max Wilfinger 9c017b0dbf Fix label action for changes in Mod/Surface.
Adding label action for 3rd party changes.
2025-06-06 18:36:48 +02:00
wmayer 680ba751b3 Surface: Fix transaction support of BlendCurvePanel and bind widgets to properties 2025-06-06 16:11:00 +02:00
wmayer 327222f780 Surface: Add task panel for blending curve 2025-06-06 16:10:47 +02:00
Max Wilfinger d9a0b6909a Renaming Gui::SiemensNXStyle to Gui::SiemensNXNavigationStyle for consistency 2025-06-06 15:32:05 +02:00
Max Wilfinger fc5b5fd9c6 Added UI for Siemens NX navigation style.
Ordered navigation styles alphabetically.
2025-06-06 15:26:18 +02:00
wmayer 969c147be2 Gui: Refactor navigation styles
Simplify type erasure
2025-06-06 15:26:18 +02:00
wmayer 00e05045df Gui: Refactor navigation styles
Derive SiemensNXStyle from NavigationStateChart
2025-06-06 15:26:18 +02:00
wmayer ba9c09fc61 Gui: Refactor navigation styles
Add new base class for state chart based navigation styles
2025-06-06 15:26:18 +02:00
wmayer a1730a626c Gui: Implement navigation style for NX
See forum threads:
https://forum.freecad.org/viewtopic.php?t=96459 or https://forum.freecad.org/viewtopic.php?t=96503
2025-06-06 15:26:18 +02:00
Chris Hennes e7c9d64577 Gui: KeypadModifier should be used via bitwise or 2025-06-06 14:15:13 +02:00
Bas Ruigrok 74e329cc74 Gui: Improve orthographic camera rotation stability 2025-06-06 12:39:24 +02:00
Roy-043 c567b75fa9 BIM: Roof add tolerance to parallel check (#21814)
Fixes #21796.
2025-06-06 11:39:57 +02:00
Roy-043 c9a434377a Draft: fix focus behavior if Length has default focus and axis constraint is used
Fixes #21774.

The X, Y or Z input should have priority is an axis constraint is used.
2025-06-06 10:21:17 +02:00
Alfredo Monclus e3a320fd2c Gui: fix taskpanel header label font descents 2025-06-06 10:20:40 +02:00
dzid26 4b068f4b81 Block preselect on selection 2025-06-05 12:18:41 -05:00
Max Wilfinger 281d4e0b91 Gui: Adding translation comments to hints and new numpad keys. 2025-06-05 11:47:50 -05:00
Chris Hennes 493817a775 Merge pull request #21785 from 3x380V/sheet_fixes
Sheet: random fixes
2025-06-05 10:16:32 -05:00
Samuel 39e79cee58 CAM: fix default asset directory (#21775) 2025-06-05 08:20:19 -05:00
Luz Paz 5c219bea41 Sketcher: fix typo in source comment
Found via codespell
2025-06-05 14:39:32 +02:00
Furgo de37c5157a BIM: Arch, docstring and linter fixes (#21763)
- Fix docstring markup, improve types
- Fix max length to 100 chars on comments
- Wrap all code to 100 chars max
- Add deprecation notice
2025-06-05 14:02:25 +02:00
paul f6bba5d58e [ArchWindow] Bug-fix Changing Sill _&_ SketchArch Support Sill Property (#21726)
* [ArchWindow] Bug-fix Changing Sill _&_ SketchArch Support Sill Property

1.  Bug found in https://github.com/FreeCAD/FreeCAD/pull/21005 (Allow changing Sill parameter)

self.baseSill
self.basePos :
- need to be restored as 'initial' settings in onDocumentRestored() as corresponding codes in onChanged() does upon object creation

2.  ArchWindow with SketchArch add-on to support above 'Allow changing Sill paramemeter' feature
- Update to ArchWindow following groundworks in https://github.com/FreeCAD/FreeCAD/pull/21568/

* [ArchWindow] Bug-fix Changing Sill _&_ SketchArch Support Sill Property (rev)
2025-06-05 14:01:06 +02:00
wmayer b38c8867d0 Sheet: Further cleanup in Sheet class
With PR 21445 an unused function has been removed. But the underlying
class member isn't used anywhere else and can be removed as well.
2025-06-05 10:15:58 +02:00
wmayer 513260d29d Sheet: Improve handling of unsupported formulas
With the example file of issue 20299 the parser stops with an exception
and reads in the formulas only partially. This PR doesn't fix the issue
but avoids to raise an exception so that as much as possible will be
read in. For unsupported formulas a suitable message is printed with
the content of the cell.
2025-06-05 10:15:28 +02:00
wmayer a46f79aa68 Sheet: Fix crash in Cell::setContent
This fixes issue 14697
2025-06-05 10:15:24 +02:00
wmayer c215bd7be9 Sheet: Fix reading xlsx files
for the specs of the XLSX file format see:
https://jkp-ads.com/articles/excel2007fileformat00.aspx or
https://www.data2type.de/xml-xslt-xslfo/spreadsheetml/xlsx-format

In order to find the correct sheet file one has to first read-in
xl/_rels/workbook.xml.rels and save the relations of Id and Target.
The file xl/workbook.xml contains a list of sheet elements where for
each element the attribute 'r:id' is set. This attribute can be used
to look up for the actual data file.

This fixes issue 19757
2025-06-05 10:14:42 +02:00
wmayer 0c4fb60225 Sheet: Disable zooming
With PR 16130 the zooming capability was added to spreadsheet view.

The SheetTableView is added to a QGraphicsScene of a QGraphicsView
that provides the method scale(). However, this causes some problems
with header of the table view and makes resizing columns or rows
very unintuitive.

A correctly working table view is probably more important than the
possibility to zoom in or out and that's why the latter will be
disabled.

This fixes issue 19863
2025-06-05 10:14:03 +02:00
Gonzalo bcfda35b42 Avoid error importing spreadsheet with deleted sheet (#19757)
This fix was proposed by pageeddie on https://github.com/FreeCAD/FreeCAD/issues/19757
2025-06-04 21:54:31 -05:00
Chris Hennes b1ea693492 Merge pull request #21714 from zbynekwinkler/fix-typing-extensions
Fix typing extensions
2025-06-04 21:27:22 -05:00
Roy-043 cfdb99fb60 BIM: improve unit handling in Arch_Roof task panel (#21773)
* BIM: improve unit handling in Arch_Roof task panel

Fixes #21137.
Improvement for #21175.

units are now kept when a cell receives the focus.

Additionally:
* The first and last column have been made read-only.
* Some columns have been widened.
* The text in the task panel has been reordered to match the order of the columns.

* _RoofTaskPanel_Delegate class only if Gui is up

* typo
2025-06-04 21:25:33 -05:00
Andrea 85b7e0a498 update addonManager submodule to main 2025-06-04 21:17:13 -05:00
Kacper Donat 0b62d19528 Preferences: Better grouping for Selection page (#21750)
* Preferences: Better grouping for Selection page

* Update src/Gui/PreferencePages/DlgSettingsSelection.ui

Co-authored-by: Furgo <148809153+furgo16@users.noreply.github.com>

* Update src/Gui/PreferencePages/DlgSettingsSelection.ui

Co-authored-by: Furgo <148809153+furgo16@users.noreply.github.com>

---------

Co-authored-by: Furgo <148809153+furgo16@users.noreply.github.com>
2025-06-04 21:16:40 -05:00
dependabot[bot] 804e0dd69d Bump github/codeql-action from 3.28.18 to 3.28.19
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.18 to 3.28.19.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/ff0a06e83cb2de871e5a09832bc6a81e7276941f...fca7ace96b7d713c7035871441bd52efbe39e27e)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.19
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-04 21:15:39 -05:00
Max Wilfinger 068ab727e4 Gui: Fix hints on high DPI screens (#21762) 2025-06-04 18:20:06 +00:00
David Carter 657da35e6b Materials: Set array quantity format (#21647)
* Materials: Set array quantity format

When setting quantity formats, the default format is not actually the
default. Instead fixed format is, which causes issues for very small
and very large values. This was fixed for C++ but arrays created in
Python were not setting the format correctly.

* Apply suggestions from code review

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-06-04 16:27:37 +00:00
papaathome fc92b2ba90 Update PathUtils.py
Removed typo ('.') at line 838
2025-06-04 17:28:46 +02:00
Benjamin Nauck 7105a2332e Merge pull request #21147 from 3x380V/units
Units rework II
2025-06-04 15:58:00 +02:00
wmayer edc8013670 Base: Fix size in array 2025-06-04 14:14:20 +02:00
wmayer 9a7646ab74 Base: Fix typo 2025-06-04 14:14:20 +02:00
wmayer 753130de56 Base: Remove weird error parameter from encode 2025-06-04 14:14:20 +02:00
wmayer 7358ef9b9f Base: Allow to also throw exception by given Python type 2025-06-04 14:14:20 +02:00
wmayer 0576c129cd Base: Improve Python exception handling
If the Python profiler is activated then transporting the dict as
exception object is broken where InteractiveInterpreter::runCode()
fails to restore it.
To fix the problem use Exception::setPyException() instead inside
the macto PY_CATCH and the generated wrapper code.

This also improves exception handling in command line mode.
2025-06-04 14:14:20 +02:00
Benjamin Nauck 69eea91c8f Merge pull request #21749 from kadet1090/qss-aware-checkbox-property-panel 2025-06-04 12:31:49 +02:00
papaathome 047e39389f CAM: Update PathUtils.py
Proposed fix for `CAM: 3Dsurface, rotational path, difference between X/A and Y/B paths #21556`
2025-06-04 09:50:02 +02:00
Ryan Kembrey 9d8952627c Fem: Fix typo in VTK module warning: 'then' -> 'than' (#21752)
Co-authored-by: Ryan Kembrey <ryan.kembrey@student.uts>
2025-06-04 07:22:20 +02:00
PaddleStroke 9d48371ab4 Sketcher: Fix #21646 (#21739) 2025-06-04 06:13:44 +02:00
Chris Hennes 272c3034b4 Merge pull request #21659 from 3x380V/gui_fixes
Gui: random fixes
2025-06-03 19:23:21 -05:00
Kacper Donat aafc7c1ba6 Gui: Ensure width and height of QAbstractView checkboxes 2025-06-03 23:43:39 +02:00
sliptonic 7f6af23acb Cam: Add Ondsel SVG post processor (#21743)
* Ondsel SVG post processor

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

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

* Update src/Mod/CAM/Path/Post/scripts/svg_post.py

* Update src/Mod/CAM/Path/Post/scripts/svg_post.py

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-06-03 21:37:20 +00:00
wmayer 83f4029277 Gui: Implement validator for ExpressionLineEdit
As requested in issue 21426 a leading '=' shouldn't be allowed in the edit field. The validator now explicitly disallows a leading
'=' in the text. In the future the validator can be extended.

This fixes issue 21426
2025-06-03 16:11:48 -05:00
Kacper Donat 0d14ad4936 Gui: Make checkbox in the property view QSS aware 2025-06-03 23:07:23 +02:00
Alfredo Monclus 69f3dae845 PD: hole change the task panel threaded and model thread checkboxes into a combo/dropdown (#21664)
* PD: hole change threaded and modeled to combo in taskpanel

* Gui: Property editor apply review suggestions
2025-06-03 21:14:52 +02:00
Alfredo Monclus 9fabeae75c Gui: Property editor use a checkbox instead of a combobox for booleans (#21555)
* Gui: property-editor add property copy context menu

* Gui: Property editor checkbox brighter border

* Gui: Property editor refactor optimize

* Gui: Property editor checkbox react to first click and add label

* Gui: Property editor remove auto-inserted include

* Gui: property-checkbox fix not painting the grid
2025-06-03 21:05:30 +02:00
theo-vt 324f610782 App::Document addObject and removeObject code reuse (#21481)
* Concatenate all of Document::addObject[s] functions into calls to Document::_addObject

* Fix minor logic errors

* use ::isPerformingTransaction instead of direct operators

* Uniform case for enum

* Remove dupplicate code for Document::removeObject

* Use CamelCase for enum and fix comment
2025-06-03 14:19:20 +00:00
sliptonic 434dc61e9d Merge pull request #21569 from tarman3/vcarve
CAM: Vcarve - fix zStart
2025-06-03 08:44:42 -05:00
Furgo 94a4639bc3 BIM: ignore FreeCAD groups for IFC export, controlled by a user preference (#21583)
* Add .db extension to git ignore list

* BIM: new feature - add ignore groups option on IFC exports

* BIM: create generic get_architectural_contents function
2025-06-03 11:19:07 +02:00
theo-vt 9a80921d74 Sketcher: Fix scaling down ellipses and arcs of ellipses (#21718)
* Reorder ellipse major/minor radius assignment when scaling down

* [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-06-03 11:16:56 +02:00
paul 93b53af0d1 [BimWindow] ArchWindow/MakeWindow Normal Default Auto & SketchArch Support Sill Property (#21568)
https://github.com/FreeCAD/FreeCAD/pull/21261
Historically, the normal of a Window object was deduced by the orientation of the Base Sketch and hardcoded in the Normal property.
Now with the new AutoNormalReversed property/flag (above PR), set True as default, the auto Normal previously in opposite direction to is now consistent with that previously hardcoded.
With the normal set to 'auto', window object would not suffer weird shape if the Base Sketch is rotated by some reason.
The Normal property is set to  'auto' (0,0,0) default following the above PR.

https://github.com/FreeCAD/FreeCAD/pull/21005
BIM: Allow changing Sill parameter in Properties for Window #21005
Ground work is added to support Window augmented by SketchArch Parametric Placement feature (PR to ArchWindow.py to be submitted separately)
2025-06-03 11:15:18 +02:00
Brad Eric Hollister 4dff82f7a3 proposed fix for https://https://github.com/FreeCAD/FreeCAD/issues/20856github.com/FreeCAD/FreeCAD/issues/20856. NOTE: AddonManager and Telemetry addon ui files are in separate repos 2025-06-03 09:37:22 +02:00
bofdahof 847e2f5c85 Base: Units: refactor
Refactor Units making it constexpr, immutable, with repetition reduced.
Separate data from code.

Constexpr constructed units allow constructing predefined Quantities
from predefined unit types.
2025-06-03 09:31:38 +02:00
Ladislav Michl f8d2789a43 Base: Units: introduce unit one
Dimensionless quantities have all exponents equal to zero.
Such quantities are simply numbers. The associated unit is
the unit one, symbol 1, although this is rarely explicitly
written.

See chapter 2.3.3 Dimensions of quantities, The International
System of Units, 9th edition.
2025-06-03 09:31:38 +02:00
Ladislav Michl 1c955c9347 Fem: get unit via quantity
Unit is interally using Quantity to parse string input, so use it
explicitely as string constructor for Unit is going to be dropped.
2025-06-03 09:31:38 +02:00
Ladislav Michl 913c30429c Base: Quantity: use isDimensionless whenever feasible
Quantity is often queried for Unit just to see if it has a dimension.
Ask Quantity directly using isDimensionless() method and modify that
method not to care about Quantity value validity; no user was ever
asking for value validity.
2025-06-03 09:31:38 +02:00
Ladislav Michl f486b7c84b App: Quantity: use predefined unit types 2025-06-03 09:31:38 +02:00
Ladislav Michl d972e07e11 Gui: use Units namespace in DlgUnitsCalculatorImp 2025-06-03 09:31:38 +02:00
Ladislav Michl ae80d51d5d Gui: do not create intermediate Quantity class in property editor 2025-06-03 09:31:38 +02:00
Ladislav Michl 8fe73e1f2c Base: minor refactoring of UnitsSchema::toLocale 2025-06-03 09:31:38 +02:00
Ladislav Michl bcd23743f4 Base: fix UnitsSchema::translate
Schema translation previously returned factor 0 and unit string
of input quantity if there was no translation match. Restore
that behaviour as well as returned factor and unit string of
imperial schemas.

Fixes: 1155f0d752 ("Base: simplify UnitsSchemas management")
2025-06-03 09:31:38 +02:00
wmayer e5e251df8f Test: Add further test cases for quantities 2025-06-03 09:31:38 +02:00
wmayer 19bb0a5d52 Test: Add test case for UnitsSchemaMeterDecimal 2025-06-03 08:16:18 +02:00
julian1 f5db34501c fix #10514
Update src/Gui/PreferencePages/DlgSettingsEditor.cpp

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

Update src/Gui/PreferencePages/DlgSettingsEditor.cpp

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-06-03 00:12:58 -05:00
samrg472 1025beed8e Fix compiling ProgressIndicator with precompiled headers 2025-06-02 16:35:10 -05:00
tetektoza 9b40afea7a Sketcher: Do not allow mouse interruption while entering dimension (#20925)
* Sketcher: Do not allow mouse interruption while entering dimensions

So, currently user has an option to enter dimensions to different
Sketcher elements like circle, line, or hexagon, whatever else. But, if
they move mouse during entering of those parameters, they are gone.

This is because we are currently allowing for constant
`QAbstractSpinBox` value change during mouse move, it stops changing
ONLY AFTER value is being set (user enters number and presses ENTER
or TAB).

So, this patch introduces one more state for `EditableDatumLabel` which
is `hasFinishedEditing` which is being triggered by ENTER or TAB key,
and still keeping old `isSet` state, which disallows mouse movement
disruption and dynamically updates the edited element on viewport.
This means, that all objects now wait for `hasFinishedEditing` state to
actually finish editing.

* Sketcher: Avoid out of boundary access by checking onViewParameters size

* Sketcher: Add missing Qt headers for CI

* Sketcher: Allow using TAB to switch between labels without accepting

* Sketcher: Change to or statement, so enter will accept both labels

* Sketcher: Apply review comments

* used casting directly in if statement and auto to keep linter happy
* added comments for flags used for describing EditableDatumLabel states
2025-06-02 22:18:42 +02:00
tarman3 c30407cbbf CAM: Vcarve - fix zStart 2025-06-02 22:53:37 +03:00
dependabot[bot] 997d485124 Bump ossf/scorecard-action from 2.4.1 to 2.4.2
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.1 to 2.4.2.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](https://github.com/ossf/scorecard-action/compare/f49aabe0b5af0936a0987cfb85d86b75731b0186...05b42c624433fc40578a4040d5cf5e36ddca8cde)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  dependency-version: 2.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 13:42:58 -05:00
David Carter db1b5a8773 Materials: Pass by reference instead of pointers
Refactoring topass by reference instead of using existing pointers.
2025-06-02 11:32:08 -05:00
Furgo 670a85de97 BIM: fix ArchRebar default name (#21681)
* BIM: ArchRebar, only import GUI modules if the GUI is up

* BIM: ArchRebar, add tests

* BIM: Arch.makeRebar, fix rebar default name

* BIM: Arch.makeRebar, add type hints

* BIM: Arch.makeRebar, add code comments

* BIM: Arch.makeRebar, expand docstring
2025-06-02 18:31:50 +02:00
PaddleStroke e06d8abe3a TechDraw: Sheet view: add property to claim sheet as child. (#21624)
* TechDraw: Sheet view: add property to claim sheet as child.

* Update ViewProviderSpreadsheet.cpp

* Fix bad scale of sheet views
2025-06-02 11:29:22 -05:00
Turan Furkan Topak 8cfad161f0 Update Help.py 2025-06-02 18:28:09 +02:00
Chris Hennes d13993d37c Merge pull request #21679 from 3x380V/fix_20859
Gui: Fix TreeWidget::addDependentToSelection
2025-06-02 11:26:20 -05:00
WandererFan 5cdf13d6bd Merge pull request #21377 from WandererFan/Removesnprintf
[TD]remove snprintf
2025-06-02 18:24:05 +02:00
saso badovinac 273156472c Update codeql.yml 2025-06-02 11:22:38 -05:00
Kacper Donat c6130552ca Merge pull request #21427 from tritao/async-occt-progress
Part: Introduce `OCCTProgressIndicator` and port operations to support it.
2025-06-02 18:04:38 +02:00
sliptonic b82c7b6c7c Merge pull request #21694 from tarman3/jobvisibility
CAM: Fix Job toggleVisibility
2025-06-02 11:04:33 -05:00
David Carter 77ce4e0aed Core: Fix Thermal Conductivity units conversion
It appears that unit conversions for thermal conductivity were reversed
when migrating to the new system versus conversions in 1.0 and earlier.
2025-06-02 11:03:46 -05:00
sliptonic 732335119f Merge pull request #21644 from tarman3/drill
CAM: Drilling - RetractMode readonly
2025-06-02 10:55:54 -05:00
sliptonic b017e4b2c0 Merge pull request #21338 from dbtayl/fix-21058
CAM: Adaptive: Fix helix entry start height (fix #21058)
2025-06-02 10:54:50 -05:00
sliptonic ffc8d21d4b Merge pull request #21643 from tarman3/dressupboundary
CAM: Dressup Boundary - CmdMoveDrill
2025-06-02 10:52:09 -05:00
Alfredo Monclus 551c15b48f feat(PD): ISO tyre valve threads 2025-06-02 10:50:10 -05:00
Chris Hennes 9b9d56cc17 Merge pull request #21558 from WandererFan/PyRoutineInvertY
[TD]Return QT or Conventional coords for geometry in Py routines (fix #21473)
2025-06-02 10:41:29 -05:00
sliptonic 2a26a38f0f Merge pull request #21425 from knipknap/btl
CAM: Integration of the tool and shape editors from BTL (Better Tool Library)
2025-06-02 10:37:38 -05:00
sliptonic cd71030353 Merge pull request #21619 from tarman3/leadinout
CAM: Dressup LeadInOut - fix property name select style
2025-06-02 10:30:35 -05:00
sliptonic 0eacdd2613 Merge pull request #21617 from tarman3/profileoutside
CAM: Offer correct side for Profile
2025-06-02 10:28:45 -05:00
Roy-043 e4adfc63d7 Draft/BIM: change BezCurve, BSpline and Wire to Part::FeaturePython
Fixes: #7387.

See comment: https://github.com/FreeCAD/FreeCAD/issues/7387#issuecomment-2915599566

PR to change the base object of BezCurve, BSpline and Wire to `Part::FeaturePython`. This will only affect new objects. So code will have to also keep handling the old object type (`Part::Part2DObjectPython`).

The modification of BimPreflight.py needs to be verified. The steps in the old code lacked logic IMO. But I may have misunderstood.
2025-06-02 17:27:20 +02:00
Furgo 56e68922cb BIM: clarify window frame depth (#21486)
* BIM: improve tooltip for window Frame property

* BIM: rename window editor's Thickness label to Frame depth

In order to match the window's Frame property, to which
this value is added to.
- Improve tooltip
- Rename the 'default' label to be more specific

* BIM: improve window editor's Offset property tooltip

- Rename 'default' label for clarity
2025-06-02 17:24:21 +02:00
sliptonic 90bb1d6454 Merge pull request #21685 from chennes/CAMPathSimulatorTruncation
CAM(PathSimulator): Use single-precision pi
2025-06-02 10:20:46 -05:00
sliptonic 95195de67a Merge pull request #21529 from jffmichi/prevent_travel_dogbone
CAM: prevent dogbones between two travel moves
2025-06-02 10:14:34 -05:00
sliptonic e8cadf942b Merge pull request #21519 from tarman3/x0y0
CAM: Do not create useless G0 X0 Y0 movements for multiprofile operations
2025-06-02 10:11:42 -05:00
sliptonic 8140329f5d Merge pull request #21563 from LarryWoestman/tests
CAM:  added command line arguments for line number start, increment
2025-06-02 10:07:22 -05:00
sliptonic 50daa71f80 Merge pull request #21651 from tarman3/simdrill
CAM: Simulator - Drilling - RetractMode G98/G99
2025-06-02 09:50:49 -05:00
Samuel Abels d63fccc1d1 fix: preferences key for asset path 2025-06-02 16:45:12 +02:00
Chris Hennes 6a5db43eb5 Merge pull request #21706 from 3x380V/fix_start
Start: Fix crash
2025-06-02 09:45:09 -05:00
Chris Hennes 8805528e39 Merge pull request #21712 from yorikvanhavre/translations
Translations
2025-06-02 09:31:21 -05:00
Zbyněk Winkler 076f1e9d72 update pixi.lock to sync updates to recipe.yaml 2025-06-02 13:13:04 +02:00
Zbyněk Winkler 1fa05fed83 typing_extensions package was missing 's' 2025-06-02 13:12:40 +02:00
Alfredo Monclus cfb31e6850 Gui: Property editor combobox fix not popping up if the user canceled (#21688)
* Gui: Property editor combobox fix not popping up if the user canceled the popup and then try to open it again

fixes #21675

* Update src/Gui/propertyeditor/PropertyItemDelegate.cpp

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-06-02 10:40:08 +00:00
matthiasdanner 187f1b647f Sketcher: Fix Arrow Direction of Angle Arrows (#21645)
* Fix Arrow Direction of Angle Arrows

* Fix huge Space of angle box in negative angles

* Swap the direction vectors for the arrows
2025-06-02 12:22:24 +02:00
mosfet80 96c0acb825 FEM: clean code (#21526)
* FEM: clean code

clean code

* [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-06-02 12:13:35 +02:00
Matthias Danner 46d626f368 fix use of viewScalingFactor 2025-06-02 12:05:55 +02:00
George Peden b0e901bab6 Sketcher: Implement hints for for all drawing tools and modes (consolidates previous PRs into a single PR) (#21632)
* Implement hints for arc

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

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

* Change hint text to lower case per comments and style guide

* Sketcher: Add input hint to Point tool

Adds a structured input hint ("🖱 pick point location") to the Point tool
using Gui::InputHint. Hint appears immediately upon tool activation
and uses the new `%1` icon injection pattern with MouseLeft.

* Sketcher: Add structured input hints for Polyline (LineSet) tool

- Adds context-sensitive input hints to the Polyline (LineSet) tool using Gui::InputHint.
- Shows "pick first point" and "pick next point" with MouseLeft, and "right-click to finish" with MouseRight, updating as the tool state changes.
- Hints appear in the status area to guide users through polyline creation.

* Cleanup 'using' and short form of syntax per PR comment

* Cleanup 'using' and short form of syntax per PR comment

* Add Escape Key to cancel hints

* Add MouseRight to cancel hint

* MouseRight and Escape Key hints for all states

* Sketcher: Add context-sensitive input hints to Line tool

- Implements updateHints() for DrawSketchHandlerLine to show "pick first point" and "pick second point" actions with appropriate mouse icons.
- Hints update dynamically based on tool state for improved user guidance.

* Sketcher: Add context-sensitive input hints to Circle tool

- Implements updateHints() for DrawSketchHandlerCircle to show appropriate hints for center and 3-rim construction methods.
- Hints update dynamically based on tool state to guide user actions.

* Remove cancel hints per PR/Discord feedback discussion

* Sketcher: Refine Arc tool input hints for construction method

- updateHints() now explicitly distinguishes between Center and ThreeRim construction methods.
- Shows accurate context-sensitive hints for both arc creation modes.
- Removes generic else for future-proofing and clarity.

* Remove cancel hints per Discord discussion

* Refactor to use using and short form of class names per PR feedback

* Sketcher: Refactor Polygon tool to use new input hints mechanism

- Replaces legacy getToolHints() with updateHints() following the modern pattern by @kadet
- Ensures consistent, context-sensitive hints for Polygon tool, matching Arc, Line, and Circle tools
- Removes cancel hints per maintainer feedback

* Sketcher: Refactor Circle tool to use new input hints mechanism

- Implements updateHints() for DrawSketchHandlerCircle
- Provides context-sensitive hints for both center and 3-rim construction methods
- Ensures consistency with Arc, Line, and Polygon tools

* Sketcher: Update Rectangle tool to use new input hints mechanism

- Implements updateHints() for DrawSketchHandlerRectangle
- Provides context-sensitive hints for all supported rectangle construction methods
- Ensures consistency with Arc, Line, Circle, and Polygon tools

Note: All rectangle construction modes are supported and can be cycled after tool activation, even if not all are directly shown in the UI.

* Sketcher: Refactor Slot tool to use new input hints mechanism

- Implements updateHints() for DrawSketchHandlerSlot
- Provides context-sensitive hints for all slot drawing steps
- Ensures consistency with other Sketcher tools

* Sketcher: Refactor Arc Slot tool to use new input hints mechanism

- Implements updateHints() for DrawSketchHandlerArcSlot
- Provides context-sensitive hints for both ArcSlot and RectangleSlot construction methods
- Ensures consistency with other Sketcher tools

* Sketcher: Refactor B-spline tool to use new input hints mechanism

- Implements updateHints() for DrawSketchHandlerBSpline
- Provides context-sensitive hints for all B-spline drawing steps
- Ensures consistency with other Sketcher tools

* Sketcher: Refactor Arc of Parabola tool to use new input hints mechanism

- Implements updateHints() for DrawSketchHandlerArcOfParabola
- Provides context-sensitive hints for each step of arc of parabola creation
- Ensures consistency with other Sketcher tools

* Sketcher: Refactor Arc of Ellipse tool to use new input hints mechanism

- Implements updateHints() for DrawSketchHandlerArcOfEllipse
- Provides context-sensitive hints for each step of arc of ellipse creation
- Ensures consistency with other Sketcher tools

* Sketcher: Add input hints to Arc of Hyperbola tool

- Implements updateHints() for DrawSketchHandlerArcOfHyperbola
- Provides context-sensitive hints for each step of arc of hyperbola creation
- Ensures consistency with other Sketcher tools
- Note: This only adds hints to the existing tool code; no refactor to controller/state machine pattern

* Sketcher: Add M key hint to polyline tool

- Adds a hint for the M key ("change mode") in the polyline (lineset) tool when drawing subsequent segments.
- Improves discoverability of cycling segment/transition modes while drawing.

* Merge branch 'sketcher-hints-circle' into sketcher-hints-all-drawing-tools

* Restore updateHints() for Circle from sketcher-hints-circle branch

* Refactor Sketcher tools to use getToolHints() for input hints (most tools updated, a few pending fine-tuning)

* Sketcher: Ensure input hints update after every state change in LineSet tool

- Explicitly call updateHint() after all Mode/state transitions in DrawSketchHandlerLineSet.
- Fixes missing or stale input hints when using the polyline/lineset tool with custom state machine.
- Brings hint update behavior in line with other Sketcher drawing tools.

* Sketcher: Refactor Slot tool to use new input hints mechanism

* Call updateHint() after setting mode

* Sketcher: Add getToolHints() override to Rectangle handler for unified input hints

- Revert inccorect previous inadvertent deletions (reverted to main)
- Implements getToolHints() in DrawSketchHandlerRectangle to provide context-sensitive input hints.
- Brings Rectangle tool in line with other Sketcher handlers using the standard input hint system.
- No changes to controller or parameter adaptation logic.

* Sketcher: Remove redundant 'click' from Point tool hint text

- Change '%1 click to place a point' to '%1 place a point'
- Mouse cursor already indicates clicking is needed
- Makes hint text more concise and focused on the action

* - Change remove implied 'click to finish" to just 'finish'
- Mouse cursor already indicates clicking is needed
- Makes hint text more concise and focused on the action"

* Refactor all handlers to modern compact enum pattern per PR feedback

- Use 'using enum Gui::InputHint::UserInput;' for cleaner enum usage
- Direct return statements instead of intermediate variables
- QObject::tr() for concise translation calls
- Consistent modern pattern across all handlers
- Improved readability and maintainability
- Also implmemented getToolHints() in ArcSlot.

* Add M key hint functionality to tools with multiple construction methods:

- Circle: Center ↔ 3-point modes
- Arc: Center ↔ 3-point modes
- Rectangle: Diagonal → Center → 3-corner → Center+2-corner modes
- Line: Point+length+angle → Point+width+height → 2-point modes
- B-Spline: Control points ↔ Knots modes (+ construction-method-aware hints)

Features:
- Add 'M switch mode' hints to make mode switching discoverable
- Add doConstructionMethodChanged() template specializations to update hints
- Use generic 'switch mode' text for initial implementation (vs specific mode names)
- Maintain consistent hint patterns across all tools
- Preserve existing functionality while adding discoverability

Users can now press M to cycle through construction methods in any multi-mode
drawing tool and see the mode switching option in the hints panel.

This first implementation uses generic 'switch mode' hint to avoid the complexity of tracking mode cycles with drop downs, etc. This would be where integrating hints into the underlying state machine might help

* Per PR review feedback, replace repeated inline 'switch mode' hint definitions with const variables:
- Define 'const InputHint switchModeHint' once per tool function
- Use variable reference in all hint lists instead of inline creation
- Reduces code duplication from 30+ repetitions to 5 clean definitions

Affected tools: Circle, Arc, Rectangle, Line, B-Spline

Improves maintainability - hint text changes only need updates in one
location per tool. Follows DRY principle and reviewer feedback.

No functional changes - same hints displayed to users.

* Per PR feedback, remove repetitive 'arc slot' prefix from hint messages:
- 'pick arc slot center' → 'pick slot center'
- 'pick arc slot radius' → 'pick slot radius'
- 'pick arc slot angle' → 'pick slot angle'
- 'pick arc slot width' → 'pick slot width'

Context is already clear from the active tool. Follows reviewer
feedback to make hints more concise and less verbose.

Improves readability while maintaining clarity

* per PR feedback, Change 'change mode' to 'switch mode' to match all other drawing tools.

* remove hanging Claude

* per PR review, restore accidentally deleted Rectangle adaptParameters method

Add back DSHRectangleController::adaptParameters template specialization
that was accidentally removed during manual file reconstruction.

This method handles parameter updates during Rectangle tool interaction,
including checkbox synchronization for M key mode switching and proper
state management when transitioning between construction methods.

Without this method, mode switching leaves the tool in an inconsistent
state with misaligned parameters and out-of-sync checkboxes.

Addresses reviewer feedback - this functionality should not be removed.

* Clean up placeholder comment per PR review feedback

* Refactor Arc hints to declarative data-driven architecture

Inspired by early feedback regarding separation of code and data, this
refactors the Arc tool hints from functional logic to a pure declarative
table-driven system.

Key improvements:
- Pure data-driven hint lookup via static table
- Complete separation of hint data from control logic
- Elimination of nested if/switch complexity
- Establishes reusable pattern for other drawing tools
- Maintains identical functionality with a cleaner architecture

This creates a scalable template that other sketcher tools and workbenches can adopt,
demonstrating proper usage of the InputHint framework through
declarative configuration rather than imperative code."

* Convert Point tool to declarative hint system

Apply the proven declarative pattern to Point tool:
- Replace functional getToolHints() with table lookup
- Single state tool demonstrates pattern scalability
- Maintains identical functionality with cleaner architecture

* Convert Line tool to declarative hint system

Apply declarative pattern to Line tool with 3 construction methods:
- OnePointLengthAngle, OnePointWidthHeight, TwoPoints
- All method/state combinations properly handled
- Maintains identical functionality with cleaner architecture

* Refine Arc tool declarative hints - address maintainer feedback

- Use camelCase naming convention (switchModeHint, getArcHintTable)
- Move tr() calls to runtime to fix translation caching issues
- Preserve declarative table structure with runtime generation
- Add structure comments for maintainability
- Maintains identical functionality with cleaner implementation

* Refine Point tool declarative hints - address feedback

- Use camelCase naming (getPointHintTable)
- Move tr() calls to runtime to fix translation issues
- Preserve simple declarative structure
- Point tool has no construction methods, keeps single-state simplicity

* Refine Line tool declarative hints - address feedback

- Use camelCase naming (switchModeHint, getLineHintTable)
- Move tr() calls to runtime to fix translation issues
- Preserve declarative table structure with 3 construction methods
- Maintains all functionality for OnePointLengthAngle, OnePointWidthHeight, TwoPoints modes

* Convert Arc of Ellipse to declarative hint system

- Replace functional switch statement with declarative table approach
- Use camelCase naming and runtime tr() calls
- Maintains 4-state workflow: center, axis, start, end points
- Consistent with refined declarative pattern used in Arc/Point/Line tools

* Convert Circle to declarative hint system

- Replace nested if/switch statements with declarative table approach
- Use camelCase naming and runtime tr() calls
- Support both Center and ThreeRim construction methods
- Maintains all state transitions: center/rim points
- Consistent with refined declarative pattern

* Convert Polygon to declarative hint system

- Replace switch statement with declarative table approach
- Use camelCase naming and runtime tr() calls
- Simple 2-state tool: center selection and rotation/size
- Preserves polygon-specific hints (U/J keys for side count)
- Consistent with refined declarative pattern

* Convert Slot to declarative hint system

- Replace switch statement with declarative table approach
- Use camelCase naming and runtime tr() calls
- Simple 3-state tool: start point, end point, radius
- Consistent with refined declarative pattern

* Convert Arc Slot to declarative hint system

- Replace switch statement with declarative table approach
- Use camelCase naming and runtime tr() calls
- 4-state tool: center, radius, angle, width
- Consistent with refined declarative pattern

* Convert Arc of Hyperbola to declarative hint system

- Replace switch statement with declarative table approach
- Use camelCase naming and runtime tr() calls
- 4-state tool: center, axis, start point, end point
- Consistent with refined declarative pattern

* Convert Parabola to declarative hint system

- Replace switch statement with declarative table approach
- Use camelCase naming and runtime tr() calls
- 4-state tool: focus point, axis, starting point, end point
- Consistent with refined declarative pattern

* Convert B-spline to declarative hint system

- Replace nested if/switch statements with declarative table approach
- Use camelCase naming and runtime tr() calls
- Support both ControlPoints and Knots construction methods
- Preserves special finish functionality (MouseRight)
- Consistent with refined declarative pattern

* Convert Ellipse to declarative hint system

- Replace nested if/switch statements with declarative table approach
- Use camelCase naming and runtime tr() calls
- Support both Center and ThreeRim construction methods
- 3-state workflow for each method
- Consistent with refined declarative pattern

* Convert LineSet to declarative hint system

- Replace switch statement with declarative table approach
- Use camelCase naming and runtime tr() calls
- 2-mode tool: first point, then multi-point with finish/switch
- Preserves finish and mode switching functionality
- Consistent with refined declarative pattern

* Convert Rectangle to declarative hint system

- Replace nested switch statements with declarative table approach
- Use camelCase naming and runtime tr() calls
- Support all 4 construction methods: Diagonal, CenterAndCorner, ThreePoints, CenterAnd3Points
- Each method has 4-state workflow with switch mode functionality
- Consistent with refined declarative pattern

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-02 12:00:50 +02:00
pre-commit-ci[bot] 5dc203630b [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-06-02 09:53:47 +00:00
Yorik van Havre 94144ecd99 Translations: Merged crowdin translations 2025-06-02 11:48:26 +02:00
Roy-043 3fc219a824 BIM: Terrain should not also be in Group of Site
Addresses one of the issues mentioned in #21667.

* If the Terrain is dropped on the Site it is added to the Group (as before) but the Terrain property is then also set to None.
* If one of the objects in Group is selected as the Terrain it is removed from the Group.
2025-06-02 11:45:34 +02:00
Yorik van Havre bba4a7b990 Translations: updated ts files 2025-06-02 11:07:28 +02:00
wmayer 2fa65a5539 Start: Fix possible crash when opening Start page
Procedure to trigger the crash:
* Create a document
* Create a spreadsheet and open it
* Close the 3D view
* Open the Start page
* It may or may not crash but the program is in an undefined state

The reason of the crash is caused by an inappropriate use of static_cast.
This bug is caused by PR 17152.

To fix the crash use dynamic_cast instead. If the cast fails it returns
a null pointer instead of a dangling pointer.
2025-06-02 08:22:28 +02:00
wmayer ca987bf0b5 App: Handle possibly raised exception in ZipFile constructor
This fixes the issue reported at:
https://forum.freecad.org/viewtopic.php?t=93619
2025-06-02 08:22:07 +02:00
Jacob Oursland 09fbb6162b CI: add typing_extensions to runtime dependency for weekly build. 2025-06-01 15:38:32 -04:00
sliptonic e777e2e8ae Merge pull request #21635 from tarman3/contextmenu
CAM: Dressup context submenu
2025-06-01 12:50:14 -05:00
sliptonic 36b3f8ffcb Merge pull request #21684 from chennes/libareaFixEncoding
CAM(libarea): Fix encoding of clipper.cpp
2025-06-01 12:48:22 -05:00
luzpaz 09f91baa2b BIM: fix typo in Arch.py (#21696) 2025-06-01 18:36:10 +02:00
Roy-043 49a9382812 Draft: DraftGui.py correct handling of last point (#21698)
This PR fixes a V1.1 regression.
The default for the last point should be the origin of the working plane if Global mode is off.

Forum topic:
https://forum.freecad.org/viewtopic.php?t=97452
2025-06-01 18:33:18 +02:00
tarman3 7ae68b9a55 CAM: Fix Job toggleVisibility 2025-06-01 14:11:38 +03:00
Roy-043 b3f7639016 Draft: Tweak working plane code (#21672)
* The new align_to_face_and_edge functions would align the Y axis to the edge. This should be the X axis.
* The align_to_point_and_axis functions did not accept a zero length upvec.
* Added a return value to the _next function for compatibilty with its counterpart the _previous function.
2025-06-01 09:13:19 +02:00
Chris Hennes 67435e22ca CAM(PathSimulator): Use single-precision pi
All of PathSimulator uses floats, rather than doubles: to prevent
compiler warnings about truncation, explicitly use the single-precision
version of the standard pi constant.
2025-05-31 17:57:24 -05:00
Chris Hennes e418014f55 CAM(libarea): Fix encoding of clipper.cpp
This file was encoded in ISO-8859-1, but contained characters that were illegal
in that encoding (superscripts). Convert to UTF-8.
2025-05-31 17:48:38 -05:00
wmayer 1307a53608 Gui: Fix TreeWidget::addDependentToSelection
Avoid stack overflow for cyclic dependencies.

This fixes issue 20859
2025-05-31 19:41:50 +02:00
Ladislav Michl 9574703b9c Revert "[Gui] Fix "Select dependent objects" with cycles"
This reverts commit 01effaaab0.
2025-05-31 19:39:11 +02:00
tarman3 239a05b242 command to open folder with macros 2025-05-30 20:02:58 +02:00
James Stanley eadd0bc191 PartDesign: Add OCCT progress support to FeatureTransformed.
Include `<Base/ProgressIndicator.h>` and bail out when
`Base::ProgressIndicator::getInstance().UserBreak()` returns true during
transformation loops and composite operations in
`FeatureTransformed.cpp`.
2025-05-30 18:25:32 +01:00
Joao Matos 39efc8ec0f Part: Add OCCT progress support to Part boolean and shape builders
Introduce a `Build(const Message_ProgressRange&)` overload in
`FCBRepAlgoAPI_BooleanOperation` (guarded by `OCC_VERSION_HEX <
0x070600`) and route user-abort checks around the operation. Add a new
`OCCTProgressIndicator` adapter (`OCCTProgressIndicator.h`) that bridges
`Message_ProgressIndicator` to `Base::ProgressIndicator`. Include
`OCCTProgressIndicator.h` where needed and update all `Build()` calls in
`TopoShape` and `TopoShapeExpansion` to pass
`OCCTProgressIndicator().Start()`, enabling singleton-based progress
reporting and user-break handling.
2025-05-30 18:25:32 +01:00
wmayer 40f29fe318 Gui: Show date & time in locale specific format 2025-05-30 18:04:33 +02:00
wmayer d681c54338 Gui: Improve DlgAddPropertyVarSet
* Give user a hint about the reason of an invalid name. Fixes issue 21111
* Fix isTypeValid() to check for valid property type
2025-05-30 18:04:33 +02:00
wmayer 19925ac1be Gui: In DockWindowItems::addDockWidget replace the booleans with the enum class DockWindowOptions 2025-05-30 18:04:33 +02:00
wmayer 29274c1f35 Gui: Improve auto-saving
Handle possibly raised exceptions in RecoveryRunnable::run().
Since the run() method is executed within the context of a worker
thread all exceptions must be handled before returning to Qt
Concurrent as otherwise the application will be terminated.

For testing purposes load the corrupted project file from this forum
thread https://forum.freecad.org/viewtopic.php?p=823608#p823608
and wait for the auto-saving.
2025-05-30 18:04:33 +02:00
wmayer 8b1df6f00f Gui: Move define HAS_QTBUG_129596 to separate header file 2025-05-30 18:04:33 +02:00
wmayer a6234f2ee3 Gui: Fix crash in ~PythonBaseWorkbench with Python 3.12 2025-05-30 18:04:33 +02:00
wmayer f5bfc10c81 Gui: avoid code duplication in PythonEditor 2025-05-30 18:04:33 +02:00
wmayer 5d11b2938f Gui: Replace calls of FCMD_SET_EDIT with Gui::cmdSetEdit 2025-05-30 18:04:33 +02:00
wmayer ce6641cb81 Gui: Handle exception when trying to start editing an object 2025-05-30 18:04:33 +02:00
wmayer d6a62e4fa4 Gui: Fix crash in Command::keySequenceToAccel
If FreeCAD is loaded without GUI it isn't allowed to access the
QKeySequence class as it will cause a crash. So, it checks
beforehand if QApplication::instance() is null.

This fixes issue 16407
2025-05-30 18:04:33 +02:00
wmayer 0efd60b654 Gui: Improve document recovery
When checking for recovery files also check for validity of the
actual project file. In case it's broken but has a never date
then still process the recovery file.

This is done to reduce the chance of data loss as described in
issue 18044
2025-05-30 18:04:33 +02:00
wmayer cafd4a4fc3 Gui: Use QDialogButtonBox in DlgExpressionInput
This way the order of buttons is more consistent than using
separate QPushButtons.

This fixes issue 19902
2025-05-30 18:04:33 +02:00
wmayer 8de63825cf Gui: Fix stackoverflow when loading corrupted file
If an object has a link to itself it may cause a stackoverflow
in several cases:
* If the method claimChildren3D() returns a list containing the
  object of the view provider then Document::handleChildren3D()
  will add a SoGroup to itself as a child. This will result into
  a stackoverflow as soon as an action traverses the scene.
* If the method claimChildren() returns a list containing the
  object of the view provider then DocumentItem::createNewItem()
  causes an infinite loop with DocumentItem::populateItem()

Solution:
* Inside Document::handleChildren3D() avoid to add a SoGroup to itself
* In this specific case fix ViewProviderCoordinateSystem::claimChildren()
  to avoid a cyclic dependency

Hint: Since PR 18126 FreeCAD is vulnerable for this problem.

This fixes issue 19682
2025-05-30 18:04:33 +02:00
wmayer ca49788ab6 Gui: Fix crash when trying to transform link object
This is a regression caused by PR 17564.

ViewProviderDragger has the member 'forwardedViewProvider' that is used
to handle the editing by the parent object. This means that inside
ViewProviderLink::startEditing 'transformDragger' can be null but this
isn't checked so that accessing the member causes a segmentation fault
or a failing assert in debug mode, respectively.

Solution:
Make sure that transformDragger is not null before accessing it.

This fixes 19542.
2025-05-30 18:04:33 +02:00
wmayer be40c28912 Gui: Fix command StdCmdProperties
The command is only able to show the property view in case it's
invisible. But it fails to raise the widget. And if in the preferences
'Combined' mode is set it fails completely.

Solution:
The method DockWindowManager::activate already does everything what's
needed. Now the command only must be changed to access the right
docked widget.
2025-05-30 18:04:33 +02:00
wmayer fd9c10c1c0 Gui: Make AccelLineEdit a subclass of QKeySequenceEdit
The class QKeySequenceEdit already implements the relevant
functionality and properly handles shortcuts using the Shift key.

This fixes issue 19320
2025-05-30 18:04:33 +02:00
James Stanley db02e43ad3 Base: Add Base::ProgressIndicator for OCCT progress reporting
Introduce a new `ProgressIndicator` base class
(`ProgressIndicator.h`/`.cpp`) with a singleton-managed, no-op default
implementation matching OCCT’s `Message_ProgressIndicator` interface.
Update `CMakeLists.txt` to include the new sources.
2025-05-30 14:10:28 +01:00
wmayer de14c1e067 Gui: Do not round color values set in property editor
Do not use the number of decimals from the user settings to pass
the material to the property as this will cause some unexpected
rounding effects.

This fixes issue 19048
2025-05-30 14:21:53 +02:00
wmayer 820c06fe03 Gui: Fix DlgPreferencesImp::minimumDialogWidth() to return a reasonable width
The current implementation always returns a width that is too small
so that a scrollbar is shown. Especially on the General page this is
unfortunate as some important controls are truncated or completely
hidden.

Another problem of this implementation is that when loading a not
yet loaded workbench in the 'Available workbenches' page then the
computed size will be by far too high leading to a dialog that all
the sudden covers most of the screen.

Solution:
The correct width is the sum of:
width of the tree view + width of the biggest page + spacing of the layout
This fixes both of the above problems.
2025-05-30 14:21:53 +02:00
wmayer 1926c1f1b9 Gui: Fix several methods in Workbench to list all items
* Fix Workbench::listToolbars() to also return custom toolbars or added by a manipulator
* Fix Workbench::getToolbarItems() to also return custom toolbars or added by a manipulator
* Fix Workbench::listMenus() to also return menus added by a manipulator

Fixes issue 18647
2025-05-30 14:21:53 +02:00
wmayer 31bbd50fb0 Gui: Adjust transform dragger after undo/redo
When performing undo/redo after tansforming an object it flips back
to its original position but the dragger does not.

This commit set the dragger's placement to the object placement.

Fixes issue 18914
2025-05-30 14:21:53 +02:00
wmayer 9bf621657b Gui: Fix undo/redo behaviour in transformation tool
If the user clicks on undo while the transformation dialog is
open the currently active transaction will be closed.
From now on any change of the placement won't be recorded any
more so that e.g. canceling the dialog or an undo after
accepting the dialog leads to unexpected behaviour.

To fix the issue two new virtual methods onUndo() and onRedo()
are added to TaskDialog and reimplemented in TaskTransformDialog.
These functions make sure to open a new transaction.

This fixes issue 19152
2025-05-30 14:21:53 +02:00
wmayer 9e1d85ebd2 Gui: Use Py::SmartPtr instead of raw pointer
Using the raw pointer may result into a crash in case the Python
object is accessed by the interpreter after the NavigationStyle
has been destroyed.
2025-05-30 14:21:53 +02:00
wmayer 0ea02d60c1 Gui: Add Action::setBlockedChecked
Remove the second parameter of Action::setChecked and
provide Action::setBlockedChecked instead.
2025-05-30 14:21:53 +02:00
tarman3 2db1a734e7 CAM: Simulator - Drilling - RetractMode G98/G99 2025-05-30 08:52:54 +03:00
tarman3 e6d7f9a8e4 CAM: Drilling - Retract mode readonly 2025-05-30 00:23:38 +03:00
sliptonic 8644498400 Merge pull request #21303 from tarman3/array
CAM: Added property CycleTime to old Array
2025-05-29 15:43:47 -05:00
Gonzalo Odiard eb92a4f496 App: Make Label property on Document read only (#21562)
Fixes: #10010
2025-05-29 22:43:34 +02:00
Alfredo Monclus 4e387e3ff3 Gui: property-editor open the combo directly and apply after selection
Previously you had to make 4 clicks to apply a combo
1 to enter edit, 1 to open the combo, 1 to select, and 1 to defocus and apply

with this commit only 2 clicks:
1 to open the combo and 1 to select
2025-05-29 22:41:37 +02:00
Alfredo Monclus e7882427e7 Gui: property-editor add property copy context menu 2025-05-29 22:40:59 +02:00
theo-vt 13e7952ccc PartDesign: Fix hole centered on point edge case (#21257)
* Light refactor of getTopoShape function

* Fix hole edge case

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

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

* Update src/Mod/Part/App/PartFeature.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update src/Mod/Part/App/PartFeature.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update src/Mod/Part/App/PartFeature.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update src/Mod/Part/App/PartFeature.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Refactor simplifyCompound()

* Use Base::Flags<GetShapeOption>

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

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

* Shorten enum name and move it from class scope to namespace scope

* [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>
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-05-29 22:37:54 +02:00
Samuel Abels f0bdf79767 CAM: Fix: case_sensitive argument for glob() not supported in Python 2.10 2025-05-29 20:18:40 +02:00
Samuel Abels d2f2befaa9 CAM: Handle import of unknown shape types gracefully; allow case insensitive filenames, and allow invalid tool ID data type 2025-05-29 19:50:51 +02:00
sliptonic 17e56f6570 Merge pull request #21416 from jffmichi/custom_gcode_allow_empty_lines
CAM: allow empty lines in Custom operation
2025-05-29 09:47:32 -05:00
Alfredo Monclus cb290a2396 Gui: property-editor fix text not showing due to stylesheets 2025-05-29 15:01:11 +02:00
Alfredo Monclus 0624d67fe0 Start: fix thumbnails not keeping aspect ratio 2025-05-29 15:00:37 +02:00
Benjamin Bræstrup Sayoc 9709fc43de TechDraw: fix incorrect click handles of editable labels (#21131)
Fixes #20964:
- When `text` element doesn't have id
- When `text` element has transform attribute
2025-05-29 08:30:59 -04:00
tarman3 80d815ba31 CAM: Dressup context submenu 2025-05-29 09:23:29 +03:00
pre-commit-ci[bot] 0691a2d863 [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pre-commit/mirrors-clang-format: 300fa4c170bf0887bb5585d17ec50901ad2625fb → c8ab0f80399e63a4fabbf5313c0606831f09742e](https://github.com/pre-commit/mirrors-clang-format/compare/300fa4c170bf0887bb5585d17ec50901ad2625fb...c8ab0f80399e63a4fabbf5313c0606831f09742e)
2025-05-29 00:14:40 +02:00
PaddleStroke 859d4f4fa5 TechDraw: Fix DrawViewSpreadsheet being assigned wrong QGI in QGSPage.cpp (#21623) 2025-05-29 00:06:34 +02:00
dependabot[bot] 0a3c940d08 Bump github/issue-metrics from 3.20.0 to 3.20.1
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.20.0 to 3.20.1.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/6a0f49b4e14363b63e65ec698b43715b69d21f6d...119b5237f41e78241b9b9cae254e544b52a359a0)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.20.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-28 21:01:12 +02:00
sliptonic 4a0dec7098 Merge pull request #21530 from jffmichi/sort_all_drilling
CAM: sort locations for all drilling operations
2025-05-28 13:55:20 -05:00
sliptonic 32a8887589 Merge pull request #21528 from mosfet80/piDef
CAM: using std::numbers pi definition
2025-05-28 13:53:00 -05:00
tarman3 f5411c9b6d CAM: Dressup Boundary - CmdMoveDrill 2025-05-28 19:39:50 +03:00
tetektoza 8ec6605fc4 BIM: Add support for deactivation active object to BIM Views Tree (#21570)
* BIM: Use checkbox in model tree for Activation/Deactivation of WP

* BIM: Set active object after deactivating current object if it exists

Currently we can get into a scenario where user can activate two working
planes, one after another. For example, Level, and  then Level001. If
they activate both, and then deactivate Level001, working plane switches
back to Level. But, we didn't set the object as the active one, so user
didn't have clear information that they can deactivate it, only the
working plane was switching it.

So this patch sets the object as the active one, if it exists.

* BIM: Add support for deactivation active object to BIM Views Tree

As the title says - it adds the checkbox that's similarly done in Part
workbench, so user can select/deselect the item and if they had previous
active object, it will also fall back to the previous object.

Also, moved out part of the common logic from ArchBuildingPart and
BimViews to utils.

* BIM: Handle correct context on activating WP for NativeIFC/BIM

* BIM: Remove redundant logic from BIM Views upon double click

As all of the logic is being handled now in `activate` function in
BimViews, this logic is redundant

* BIM: Rename button for taskbar and BIM Views from Activate to Active
2025-05-28 11:27:11 +02:00
tarman3 90fd1c8ea3 CAM: Dressup LeadInOut - fix property name select style 2025-05-28 12:19:20 +03:00
Samuel Abels 0ddf511fbf CAM: Fix: Custom tool parameters not showing up in property editor 2025-05-28 09:39:43 +02:00
Samuel Abels 1c23343bd3 CAM: Fix: Chamfer schema was missing TipDiameter 2025-05-27 22:50:40 +02:00
Yorik van Havre 1f6ecf83b2 Draft: Added snap recenter functionality (#19728)
* Allow to align the working plane on selected edge + face of a same object, which aligns the plane with the face, but positions it on the edge (the WP is positioned on the edge's first vertex, the WP's X axis is aligned with the edge, and the face's center point provides the third point to define the plane)
* Added a "Recenter" in-command shortcut. This moves the WP to be centered on the current snap position (the WorkingPlane snap button is taken into account, so one can only move the WP in the same plane or not).
2025-05-27 19:17:43 +02:00
tarman3 9c7910a1b5 CAM: Set outside by default for selected Edges 2025-05-27 20:10:57 +03:00
Samuel Abels 0023533262 CAM: remove left over debug print 2025-05-27 16:20:24 +02:00
Samuel Abels a68e3cd11c CAM: No need to copy defaultl shapes anymore, because the asset manager now dynamically fetches built-in shapes as a fallback 2025-05-27 16:04:10 +02:00
Benjamin Nauck 6b7e4185e1 Merge pull request #21552 from alfrix/fixup_hole
PD: Fixup hole
2025-05-27 15:00:13 +02:00
Samuel Abels 80bce9498f CAM: Fix: ShapeType not displayed correctly in property editor 2025-05-27 12:46:12 +02:00
Samuel Abels 857d7269ee CAM: Improved handling of toolbit shape type inference 2025-05-27 12:07:19 +02:00
Samuel Abels 7e635bed46 CAM: Refactor ToolBit.from_dict() for clarity and to generate more relevant warnings 2025-05-27 09:30:35 +02:00
Samuel Abels 383e2f599a CAM: Change Camotics file extension to .json 2025-05-26 23:53:58 +02:00
Samuel Abels b2176b0731 CAM: Improve LinuxCNC and Camotics serializer tests 2025-05-26 23:53:30 +02:00
Samuel Abels 7e8f8d9906 CAM: use three decimals in LinuxCNC export 2025-05-26 23:43:28 +02:00
Samuel Abels c0bf7ec4f2 CAM: Fix: all toolbits in camotics exported as Cylindrical 2025-05-26 23:42:44 +02:00
Samuel Abels 663d338a88 CAM: only copy shape icons if the shape folder is not initialized 2025-05-26 23:36:50 +02:00
Benjamin Nauck eb51a5d784 Merge pull request #21379 from alfrix/set_style
Gui: Set QStyle to Fusion if not set
2025-05-26 22:13:31 +02:00
Luz Paz 8a5290ae86 Fix various typos
Found via codespell
2025-05-26 21:40:10 +02:00
pre-commit-ci[bot] 2a569e4407 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-05-26 17:17:07 +00:00
Samuel Abels 57ca27c22f CAM: Fix: Only attach view if the Gui is up 2025-05-26 19:13:00 +02:00
Samuel Abels aa0a242f4f CAM: Fix recursionlimit due to invalid overwrite of exec() 2025-05-26 19:04:27 +02:00
Samuel Abels c5d1a2f6de CAM: Reintroduce Save button for the library editor 2025-05-26 18:49:17 +02:00
Jacob Oursland bc5616dbf6 CI: pin occt==7.8.1 on weekly builds. 2025-05-26 18:31:05 +02:00
Samuel Abels 107cbcac38 CAM: Fix: viewprovider not added when adding a tool to a document from the dock 2025-05-26 18:16:23 +02:00
Pieter Hijma d025501755 Spreadsheet: Add tests for rename property 2025-05-26 18:11:27 +02:00
Pieter Hijma 75a9e26473 Core: Add tests for renaming dynamic properties 2025-05-26 18:11:27 +02:00
Pieter Hijma 5bdfba3a1a Core: Update expressions on property rename
This includes both expressions in generic containers and in
spreadsheets.
2025-05-26 18:11:27 +02:00
Pieter Hijma 18d87df6f1 Core: Add a Python interface for property rename 2025-05-26 18:11:27 +02:00
Pieter Hijma e7f8f2f48c Core: Add logic to rename dynamic properties 2025-05-26 18:11:27 +02:00
chris dc7ceddc50 fix for #20656 2025-05-26 18:07:12 +02:00
Syres916 ef4c33fee4 [Gui] InputField correct icon visibility logic on opening a pre-completed task panel 2025-05-26 17:54:39 +02:00
Samuel Abels 6f2971a684 CAM: Fix SurfaceSupport operation for new type toolbits 2025-05-26 17:53:32 +02:00
Samuel Abels 28668fad5a CAM: Add CamAssetManager now falls back to builtin assets if not found in user assets 2025-05-26 17:40:19 +02:00
Samuel Abels b0a900f335 CAM: AssetManager now supports passing mutilple stores to all get_*() methods 2025-05-26 17:40:03 +02:00
Chris Hennes e4fa55a922 CAM: Ensure float constants are single-precision (#21322)
* CAM: Ensure float constants are single-precision

* Revert suggestion

---------

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-05-26 17:38:34 +02:00
Samuel Abels 2239603398 CAM: Rename getBuiltinToolPath to getBuiltinAssetPath 2025-05-26 17:34:49 +02:00
Syres916 0e40f2dfc5 [App] Use consistent unit schema names (#21355)
* [Start] ensure user's preferred unit schema is retained after restart of application

* [App] use consistent schema names throughout the application

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

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

* [Start] Revert commit 2eea421

in preference to PR #21466

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-05-26 17:33:45 +02:00
Kacper Donat d5a091bf0c Merge pull request #21571 from alfrix/property_editor_2
Gui: property editor do not enter edit mode if the property is read-only
2025-05-26 17:20:06 +02:00
WandererFan 4dd2313425 [TD] fix small angle dims (fix #21114) (#21208)
* [TD]fix handling of very small angle dimensions

- also remove test for too small format specifier

* [TD]lint messages

* [TD]apply review comments.
2025-05-26 17:19:19 +02:00
PaddleStroke 82696359f6 TechDraw: richannotation : Fix white text issue (#21515)
* TechDraw: richannotation : Fix white text issue

* Update QGIRichAnno.cpp
2025-05-26 17:18:21 +02:00
Benjamin Bræstrup Sayoc ade3922a31 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
Alfredo Monclus 1bb05bf987 Gui: property-editor make readonly cells look disabled 2025-05-26 07:13:44 -06:00
tarman3 e8f6a2fee4 CAM: Added property CycleTime to old Array 2025-05-26 12:13:03 +03:00
tetektoza 8eaaaaff50 BIM: Parse Classification in IFC correctly for conversion/type assign 2025-05-26 10:24:34 +02:00
Furgo 5386ca838a BIM: add first iteration of unit tests 2025-05-26 10:23:24 +02:00
Furgo edc4d04a41 BIM: refactor to reduce code duplication and improved readability 2025-05-26 10:23:24 +02:00
Furgo df2e055183 BIM: remove command now removes windows from walls
Fixes: #21551
2025-05-26 09:53:21 +02:00
Furgo 92a9b1ae54 BIM: add test for window removal from walls 2025-05-26 09:53:21 +02:00
Paul Lee 8ff5c71101 [ArchWall] Fix SetLength Error When Base Sketch has External Geom
fix #21357 error message problem

Github issue and discussion:
https://github.com/FreeCAD/FreeCAD/issues/21357
https://github.com/FreeCAD/FreeCAD/issues/21357#issuecomment-2886010914

ArchWall return error when Base Sketch has external(projected) geometry.

External projected geometry has TNP-problem, until the feature is TNP-tolerant,  support of external(projected) geometry at ArchWall is not encouraged. The reported error message is fixed in the meantime in this PR.
2025-05-26 09:49:36 +02:00
Stephen Green c8c63a4099 Fix for https://github.com/FreeCAD/FreeCAD/issues/21533 2025-05-25 22:12:13 -04:00
Benjamin Bræstrup Sayoc 9af522c085 TechDraw: centralize usertype constants 2025-05-25 20:42:02 +02:00
Alfredo Monclus 8be84f2a9f Gui: property editor do not enter edit mode if the property is read-only 2025-05-25 06:25:09 -06:00
Lawrence Woestman 77410cf1b5 CAM: added command line arguments for line number start, increment
Also added command line arguments for listing tools in preamble
2025-05-24 18:43:11 -07:00
jffmichi 4b4a15beef CAM: sort locations for all drilling operations 2025-05-25 00:27:03 +02:00
mosfet80 41c750be47 Sketcher: Remove unused variables (#21504)
removed unused variables
2025-05-25 00:19:46 +02:00
David Carter 15ed1a07a9 Materials: Correct model spelling errors 2025-05-25 00:14:08 +02:00
wandererfan 8bdd42929c [TD]fix hidden vertex not created 2025-05-24 14:57:44 -04:00
wandererfan 3c325bbc37 [TD]fix vertex visible attribute not restored 2025-05-24 14:57:44 -04:00
wandererfan cfc9a47aec [TD]return Qt or conventional coords 2025-05-24 14:57:44 -04:00
Roy-043 96af3a5bba Draft: remove 'CTRL to snap' from tooltips (#20619)
The 'CTRL to snap' option is not the default, it should therefore not be included in the tooltips.

Additionally:
* Some obsolete info was removed.
* Some minor improvements,
2025-05-24 18:55:47 +02:00
Roy-043 98d4222253 Draft: Revise close task panels on doc close solution (#21546)
Use built-in feature to close the task panels. See #21253.
2025-05-24 10:25:40 +02:00
Alfredo Monclus 3aabb826aa PD: hole safeguard countersink depth calculation against possible math issues 2025-05-24 02:05:06 -06:00
David Carter 8ef8f64e9b Materials: External interface refinements (#21524) 2025-05-24 08:25:44 +02:00
longrackslabs 77a11efa0b Draft: Fix typo in arc input hint ("staring" → "starting") 2025-05-24 08:24:32 +02:00
Alfredo Monclus 07e7918baf PD: hole calculate counterbore and countersink if no standards are available 2025-05-23 20:51:35 -06:00
Alfredo Monclus 9bbddbc1f6 PD: hole fix head custom values checkbox not appearing 2025-05-23 20:51:28 -06:00
Alfredo Monclus ff17eb611a PD: hole: calculate depth of countersink and adjust other parameters accordingly when changed 2025-05-23 17:36:26 -06:00
Alfredo Monclus 236c287f16 PD: hole: fix standarized head cuts not working in metric regular sizes 2025-05-23 14:15:44 -06:00
saso badovinac a969f31573 Update codeql.yml
disable cpp scan on pull requests and enable actions scan
2025-05-23 15:10:01 +02:00
Benjamin Nauck e4eeb66626 Merge pull request #21289 from tetektoza/fix/fix_transparency_doors_windows_ifc
BIM: Change from RGBT to RGBA for IFC
2025-05-23 14:10:47 +02:00
paul 62cc73c104 BIM - ArchWindow - Add AutoNormalReversed property 2025-05-23 12:08:33 +02:00
tetektoza bcb8932930 BIM: Additional improvements for Activate button in BIM Views
This patch introduces a few things:
- changes Activate button to be first in the list
- puts it in bold text, also adding (Default) to point it is default
  action
- removes all of the hiding logic upon double click and leaving Activate
by default to be called after double-clicking a BuildingPart
2025-05-23 12:06:55 +02:00
Roy-043 5cb88a63d0 BIM: Revise close panel on doc close solution (#21302)
* BIM: Revise close panel on doc close solution

Use built-in feature to close the task panels. See #21253.

* Keep self.doc
2025-05-23 11:49:55 +02:00
tetektoza 41dad48e5c BIM/Help: Access DockWidgetArea QFlag enum correctly
Currently, for both Help and BIM Views panels we can get a traceback
about incorrect casting if we move the panel.

This is because the QFlag of DockWidgetArea that is being passed, as it is not
able to be parsed down to an int. Most probably some historical change
either in Qt or FC.

This error also caused to not write current BIM Views/Help panel setup
to config, resulting in the position being resetted every run.
2025-05-23 11:47:10 +02:00
Krzysztof 4590d922ff Draft: Implementation of 'Align to face' checkbox in Hatch task panel (#21332) 2025-05-23 09:42:19 +00:00
tetektoza 391a41cbda BIM: Add missing IFC attributes for both Pipe and Rebar
As the title says - those two tools missed IFC attributes, since they
used different path of initialization than other components, so this
patch makes sure we initialize those properties properly.
2025-05-23 10:50:47 +02:00
Furgo 88d9be2e10 BIM: allow deleting locked IFC properties when needed 2025-05-23 10:18:36 +02:00
Furgo 78fcaaee34 Revert "BIM: add workaround for Draft workbench test mockup"
This reverts commit 5be803863e7552f7cb96998cd682edd3c556b4be.
2025-05-23 10:14:40 +02:00
Furgo f901477601 BIM: add workaround for Draft workbench test mockup 2025-05-23 10:14:40 +02:00
Furgo e710617093 BIM: add basic error checking in unit test, make extrusion a solid 2025-05-23 10:14:40 +02:00
Furgo 844bdada9c BIM: add area calculation unit tests for Arch Components 2025-05-23 10:14:40 +02:00
Furgo 1107f5f364 BIM: support curved vertical edges for area calculation 2025-05-23 10:14:40 +02:00
Furgo 7fa289cae4 BIM: refactor component area calculation into a helper class 2025-05-23 10:14:40 +02:00
Furgo cc70fee4d7 BIM: correct planar check to avoid vertical/horizontal misclassification 2025-05-23 10:14:40 +02:00
Furgo f5737a9c5a BIM: add support for bsplines in Arch structures 2025-05-23 10:14:40 +02:00
jffmichi f590a1546a CAM: prevent dogbones between two travel moves 2025-05-23 03:34:36 +02:00
pre-commit-ci[bot] f596e654f4 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-05-22 23:23:27 +00:00
Andrea 3d63b5d282 . 2025-05-23 01:18:58 +02:00
pre-commit-ci[bot] b9c7f385a2 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-05-22 23:17:56 +00:00
Andrea af0287e174 CAM: use std::numbers pi definition
se std::numbers pi definition
2025-05-23 01:11:37 +02:00
FC-FBXL5 2c8d6529b5 TechDraw: Update LineGroup.csv (#21513)
: -> ;

It seems a colon was mistakenly used instead of a semicolon, this has been corrected.
2025-05-22 22:45:22 +02:00
saso badovinac b43b3e9096 Update codeql.yml
Testing cpp scan on pull requests (will probably run for too long)
2025-05-22 22:40:21 +02:00
Roy-043 e5f81e4791 Draft: ShapeString fix stick font check for small character (#21522)
Fixes #21501.

For some fonts `Part.makeWireString()` returns characters that are much smaller than the given height. This would lead to a false positive for the 'sticky font' check (which checks the area of the "L" character).
2025-05-22 17:26:00 +02:00
Benjamin Nauck 333acffd66 Merge pull request #21349 from rhabacker/obj-import-lines
BIM: Add support to import lines from obj files
2025-05-22 15:19:49 +02:00
Ralf Habacker 74ad3978a0 BIM: Add support for concatenation of lines in Obj files
If a line in an obj file ends with '\', the following line is appended.
2025-05-22 12:54:35 +02:00
Ralf Habacker 5e0c109cb1 BIM: Add support to import lines from obj files
Single lines and polylines from 'l' instructions are imported as
Draft::Wire objects and grouped with an App:Part object so that
the lines contained in the obj file are included in the
corresponding object definition.

Single lines defined in the obj file within a block are converted
into a non-closed polyline if the second point of a line matches
the first point of the following line.

Fixes #21326
2025-05-22 12:54:03 +02:00
Roy-043 ec88f39f6d Draft: Tweak polygonTracker code (#21518)
Minor improvement for the `setOrigin` and `update` functions of the class.
2025-05-22 11:35:25 +02:00
Roy-043 819b1b9218 Typo in ViewProviderGeometryObject.cpp (#21517)
appearrance -> appearance
2025-05-22 11:04:10 +02:00
tarman3 7c3b6dd9cf CAM: Do not create useless G0 X0 Y0 movements for mutliprofile operations 2025-05-22 08:55:16 +03:00
jffmichi 46a11b6538 Sketcher: remove surplus push_back to shapes (fixes #21499) 2025-05-22 06:24:47 +02:00
Benjamin Nauck b119588203 Merge pull request #18961 from kadet1090/tool-hints 2025-05-21 18:46:10 +02:00
Kacper Donat 239173bcf2 Draft: Add example tool hints 2025-05-21 17:42:45 +02:00
Kacper Donat 9baeb6e9e6 Gui: Add support for hints in status bar 2025-05-21 17:42:45 +02:00
Alfredo Monclus e06b495c6f Gui: fix light/dark switch when on classic (#21049)
* Gui: fix: taskpanel light/dark switch when on classic

* Gui: fix: taskpanel double icon

* Apply suggestions from code review

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-05-21 14:00:54 +00:00
Roy-043 a7f0feddc0 Draft: avoid redundant constraints in make_sketch.py (improved)
See #21398 and #21396.
2025-05-21 11:56:11 +02:00
Ladislav Michl d680de81c0 Start: fix restoring of user saved Unit schema
This is partially reverting change done in 1155f0d752.

Fixes: 1155f0d752 ("Base: simplify UnitsSchemas management")
2025-05-20 19:46:02 +02:00
David Carter 0ed426a60b Core: Correct unit merge errors
Several units were merged our of order. This corrects the ordering.
2025-05-20 19:45:09 +02:00
Samuel Abels b0ad72943b CAM: Fix: updateSpinBox renamed to updateWidget 2025-05-20 17:08:21 +02:00
Kacper Donat 448976dfc5 Merge pull request #21462 from hyarion/minor-unit-fixes
Base: Add some tests for units and minor fixes
2025-05-20 15:59:52 +02:00
sliptonic 2d413d271c Merge pull request #21437 from mosfet80/moveLibarea
Update clipper lib
2025-05-20 08:39:56 -05:00
sliptonic f7f6d73ada Merge pull request #20833 from LarryWoestman/tests
CAM:  added three command line arguments, with tests
2025-05-20 08:35:30 -05:00
Pieter Hijma 56b7116dce Doc: Move Extension documentation to a topic
This commit constitutes an almost verbatim move from the documentation
of Extension and ExtensionContainer to its own topic in core-app.dox.
2025-05-20 13:39:26 +02:00
Pieter Hijma ea3d81fb94 Doc: Reorder topics 2025-05-20 13:39:26 +02:00
Benjamin Nauck 9efd6baee9 Base: Fix use after free in unit error message 2025-05-20 12:34:00 +02:00
Benjamin Nauck 1678171e6b Base: Add more tests for imperial building special function 2025-05-20 12:34:00 +02:00
Benjamin Nauck 4241d795c0 Base: Skip test for units using GTEST_SKIP() instead of comments 2025-05-20 12:34:00 +02:00
Samuel Abels ca6dba21d0 CAM: Update asset manager docs 2025-05-20 12:24:15 +02:00
hlorus e4238f58e1 Measure: Fix delta label text size scaling (#21467)
* Measure: Fix delta label font size

- Add font size field to ViewProviderMeasureBase which connects to other fields
- Remove dead code in DimensionLinear which internally is using FrameLabel
- Connect FrameLabels's fontsize property to DimensionLinear's property

* [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-05-20 12:10:35 +02:00
hlorus c9b87c5862 Measure: Add MeasureElementType::Surface 2025-05-20 12:01:14 +02:00
jffmichi 09e356cec6 CAM: fix philips postprocessor always writing to "-" instead of specified file and not processing arguments 2025-05-20 05:18:03 +02:00
jffmichi 08cba3fa45 CAM: fix fablin postprocessor always writing to "-" instead of specified file 2025-05-20 05:17:53 +02:00
jffmichi a59fc30d6c CAM: fix some non-refactored postprocessors crashing on blank lines 2025-05-20 05:00:06 +02:00
jffmichi 7b58dd2977 CAM: fix Custom operation UI panel dropping trailing blank lines 2025-05-20 03:29:24 +02:00
jffmichi 70f3c7c387 CAM: add configuration value to suppress blank lines in refactored postprocessors 2025-05-20 02:37:00 +02:00
jffmichi c2a05ec807 CAM: fix refactored postprocessors crashing on blank lines 2025-05-20 01:58:32 +02:00
Samuel Abels 8961413bb7 CAM: Fix some type hints and unnecessary debug output 2025-05-20 01:17:37 +02:00
pre-commit-ci[bot] 546e1cd1b9 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-05-19 22:45:31 +00:00
Samuel Abels 7523e456ff CAM: Add explicit implementation of FileStore.exists(), so AssetManager.exists() does not log FileNotFound warnings 2025-05-20 00:40:48 +02:00
Samuel Abels 917e1a7be7 CAM: Fix: Show builtin shapes in separate section in shape selector 2025-05-20 00:29:25 +02:00
Samuel Abels 8c7de12990 CAM: Show shape ID on shape buttons 2025-05-20 00:28:46 +02:00
Samuel Abels 2f7bb39eb7 CAM: Handle shape schema violations gracefully (for now) 2025-05-20 00:07:26 +02:00
Samuel Abels 3ae5128826 CAM: Add built-in shapes to asset folder if they do not already exist 2025-05-20 00:06:27 +02:00
Lawrence Woestman e741a761ff CAM: added three command line arguments, with tests 2025-05-19 13:52:20 -07:00
Samuel Abels 8670cb839c CAM: Fix Gui test for ToolBitBrowserWidget 2025-05-19 21:02:54 +02:00
pre-commit-ci[bot] 9cb8cced38 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-05-19 18:31:11 +00:00
Samuel Abels d749098dcb CAM: Replace complete tool management (PR 21425) 2025-05-19 20:27:28 +02:00
Ajinkya Dahale 1cfb85a71f Sketcher: Incorporate comments from #20589
See https://github.com/FreeCAD/FreeCAD/pull/20589#pullrequestreview-2830404892.
2025-05-19 20:24:17 +02:00
Ajinkya Dahale a280cacb93 Sketcher: clean up import 2025-05-19 20:24:17 +02:00
Ajinkya Dahale e33377b595 Sketcher: Use const parameter where relevant 2025-05-19 20:24:17 +02:00
Ajinkya Dahale b7d8ed25be Sketcher: Remove some unused lambda captures 2025-05-19 20:24:17 +02:00
Ajinkya Dahale 2d2009ccc6 Sketcher: Use range-based for in Sketch.cpp 2025-05-19 20:24:17 +02:00
Ajinkya Dahale 4ee40f4c49 [Sketcher] [WIP] One curious refactor I'm not certain about
Possibly reduces "cognitive complexity", but is it really too much clearer?
2025-05-19 20:24:17 +02:00
Ajinkya Dahale 6cf63b078e Sketcher: Refactor further DrawSketchDefaultHandler.h
These are somewhat riskier refactors. If confirmed safe, these can be merged
with the previous commit.
2025-05-19 20:24:17 +02:00
Ajinkya Dahale eeb061f302 [planegcs] Use std::ranges and range for in GCS.cpp 2025-05-19 20:24:17 +02:00
Ajinkya Dahale c3c7e8d33f [Sketcher] Refactor SketchObject::delAllExternal()
Trivial changes.
2025-05-19 20:24:17 +02:00
Ajinkya Dahale 07bce810ae [Sketcher][WIP] Refactor SketchObject::buildShape() 2025-05-19 20:24:17 +02:00
Ajinkya Dahale 1cc0ca0a3b [Sketcher] Use std::ranges in SketchObject where possible 2025-05-19 20:24:17 +02:00
Ajinkya Dahale 215fbc5187 [Sketcher] Refactor SketchObject::split() 2025-05-19 20:24:17 +02:00
Ajinkya Dahale 8fd9c19013 [Sketcher] Refactor TaskSketcherElements::onSelectionChanged() 2025-05-19 20:24:17 +02:00
Ajinkya Dahale ace0c57dd6 [Sketcher][WIP] Refactor SketchObject::addExternal() 2025-05-19 20:24:17 +02:00
Ajinkya Dahale 8a1c4526bd [Sketcher] Refactor SketchObject::toggleExternalGeometryFlag()
Doesn't seem to be used anywhere. Remove?
2025-05-19 20:24:17 +02:00
Ajinkya Dahale 3425eebfdc [Sketcher][WIP] Refactor SketchObject::generateId()
Should be just the same old loop and conditional rearrangement. However, not
confident that this behaves exactly the same as previously.
2025-05-19 20:24:17 +02:00
Ajinkya Dahale 82610ca8fa [Sketcher] Use replaceGeometries() in split 2025-05-19 20:24:17 +02:00
sliptonic 93a6c5e077 Merge pull request #21288 from tarman3/simhome
CAM: Simulator - Reset camera
2025-05-19 11:42:58 -05:00
Joao Matos 1f5e0f6494 App: Invoke signalBeforeRecompute() on the GUI thread
Historically, `App::Document::recompute()` ran entirely on the **main**
(GUI) thread and directly emitted `signalBeforeRecompute()`.

* Add-ons like **Assembly3** and others depend on that signal for
setup/teardown hooks before any recompute work begins.

* After offloading `recompute()` into a background worker thread to keep
the UI responsive, calling `signalBeforeRecompute()` directly from the
worker would break thread-affinity rules and silently break
compatibility with those add-ons.

**Solution**

1. **Introduce a generic hook** (`PreRecomputeHook`) in
**App::Document**:

* A `std::function<void()>` that, if set, is invoked at the very
start of `recompute()`.

* Core code stays Qt-free—only knows to call a callback if one
exists.

2. **Wire up the hook in `Gui::Document`**:

* In the GUI wrapper’s constructor, install a hook that calls
`callSignalBeforeRecompute()`.

* `callSignalBeforeRecompute()` uses `QMetaObject::invokeMethod(...,
Qt::BlockingQueuedConnection)` to enqueue `signalBeforeRecompute()` on
the GUI thread and **block** the worker until it completes.

    * If already on the GUI thread, it simply calls the signal directly.

3. **Maintain add-on compatibility**:

* From the add-on’s perspective nothing changes—they still receive
`signalBeforeRecompute()` on the main thread before any recompute work.

* Internally, the recompute body now runs on a worker thread,
improving UI responsiveness without breaking existing hooks.

**Result**

* **Recompute** remains fully backward-compatible for add-ons like
Assembly3.

* **UI thread** still handles all GUI-related signaling.

* **Worker thread** performs the actual heavy lifting, unblocked only
once the GUI is primed and all pre-recompute signals have been
delivered.
2025-05-19 18:30:56 +02:00
Andrea 6cd828d986 SpreadSheet: remove function
Observer is no longer required as PropertySheet is now derived from  PropertyLinkBase and will handle all the link related behavior
2025-05-19 18:27:01 +02:00
Andrea f8b327fffc Removed empty functions
Removed empty functions
2025-05-19 18:25:17 +02:00
Andrea 81097bbaf1 Remove oldFuse funcion
oldFuse is deprecated since OCC 7.3
2025-05-19 18:21:07 +02:00
Kacper Donat f30fba7adb Materials: Fix MaterialManager being copied on getInstance() 2025-05-19 18:12:01 +02:00
Kacper Donat fc93511d88 Materials: Fix ModelManager being copied on getInstance() 2025-05-19 18:12:01 +02:00
tetektoza bba139985a BIM: Make a correct mapping to weight during IFC Quantities assignment
Currently we can assign quantities to a BIM object, but upon exporting
quantities are not visible in the IFC file.

This was because we didn't have a correct mapping to weight property.
`App::PropertyWeight" basically doesn't exist, so this patch changes it
to `App::PropertyMass`, as it is the same. The incorrect mapping
resulted in a traceback, which in turn resulted in missing a big part of
additional processing for the properties, which resulted in
`writeQuantities` checking for non-existent IfcData in the object.
2025-05-19 18:10:37 +02:00
saso badovinac 2f463ff005 Update codeql.yml
Split the cpp scan to a new job and activate running it on weekly schedule (runs for about 5 hours)
2025-05-19 18:04:40 +02:00
Furgo 52daf829a7 BIM: do not prune Roof objects on export 2025-05-19 18:00:38 +02:00
FEA-eng 3047feba7a FEM: Add more glyph types for the Glyph filter (#21397)
* FEM: Update post_glyphfilter.py

* FEM: Update TaskPostGlyph.ui

* [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-05-19 17:52:25 +02:00
marioalexis b6da328bb7 Fem: Add support for VTK < 9.1 in calculator filter - fixes #21346 2025-05-19 17:50:17 +02:00
Benjamin Nauck 02e1bbe1ae Merge pull request #21042 from furgo16/add-taskpanel-walloffset
BIM: add Offset input to wall creation task panel
2025-05-19 17:45:46 +02:00
xtemp09 65fe3b8558 Add Navigation Style/Orbit Style/Rotation Mode to About info
Closes #17431
2025-05-19 17:45:00 +02:00
tetektoza ca9041ce50 BIM: Avoid traceback if there is no Classification selected
As the title says, if user selects `OK` button and has no Classification
selected (which can happen only if the list is empty I think), then they
get a traceback since we're trying to access list of selections
directly.

So this patch adds a small patch to close the form if user has pressed
`OK` button and did not select anything.
2025-05-19 17:41:24 +02:00
sliptonic fa2de9bc7b Merge pull request #21129 from jffmichi/fix_active_and_coolant
CAM: fix handling of Active state and CoolantMode with nested dressups
2025-05-19 10:33:45 -05:00
PaddleStroke 8e8382dbcb TechDraw: Fix claiming of hatch 2025-05-19 17:33:19 +02:00
sliptonic d041090c87 Merge pull request #21408 from jffmichi/fix_array_dressup_two
CAM: fix loading Array dressup with unused properties
2025-05-19 09:48:02 -05:00
pre-commit-ci[bot] 32dbb69a20 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-05-19 14:43:23 +00:00
Andrea 043646477b update clipper 2025-05-19 16:40:24 +02:00
sliptonic fc2e844c22 Merge pull request #21108 from tarman3/pathshape2
CAM: PathShape with Tool Controller
2025-05-19 09:12:58 -05:00
Ladislav Michl 76ce8ccfd5 Base: fix conversion to kilometers in Standart unit schema
Fixes: 1155f0d752 ("Base: simplify UnitsSchemas management")
2025-05-19 12:15:51 +02:00
Ladislav Michl c0963a9277 Base: align unit format to Quantity parser expectations
Quantity parser is unable to deal with exponents written in
supersript, so change it back to ^n.

The micro prefix is expected to be U+00B5, not U+03BC, so change
it back as well. Note, that \x escape sequence reads till the
whitespace or the end of string, thus microFarad becomes
  "\xC2\xB5""F

Fixes: 1155f0d752 ("Base: simplify UnitsSchemas management")
2025-05-19 12:15:51 +02:00
Ladislav Michl d80e5d0a8a Base: fix QuantityPy::getValueAs
Fixes: 77f4515963 ("Base: refactor QuantityPy class")
2025-05-19 12:15:51 +02:00
bofdahof 285a930d70 Base: restore output format of imperial fraction units
Fixes: 1155f0d752 ("Base: simplify UnitsSchemas management")
2025-05-19 12:15:51 +02:00
PaddleStroke e2a0570921 TechDraw: Lock multiple views 2025-05-19 09:37:37 +02:00
PaddleStroke baf08540ab TechDraw: decorateLine fix (#21312)
* TechDraw: decorateLine fix

* Update CommandAnnotate.cpp
2025-05-19 09:36:47 +02:00
Chris Hennes f9235b316d TD: Remove unused variable 2025-05-19 09:36:13 +02:00
Céleste Wouters 90a612db29 Sketcher: remove "SecondIcon" logs on constraint icon hover
Hovering the cursor over constraint icons sometimes logs "SecondIcon"
messages to the report view, doing so for every cursor move event.
This message isn't useful outside of a development context and in fact
is a leftover from 11c76c998e.

Removes this message.

Fixes #21417
2025-05-18 16:30:22 +02:00
jffmichi b460bf295c App: Fix exported object dynamic property type identifier (#21415)
Fixes: 9d6f1ad37c ("App: Align Document to best practices")

Co-authored-by: jffmichi <>
2025-05-18 01:38:04 +02:00
Roy-043 61e349ef54 Draft: use different color for WPProxy to avoid BIM dependency
Fixes #21390.
2025-05-17 14:30:48 +02:00
jffmichi 12ad0c36e8 CAM: fix loading Array dressup with unused properties 2025-05-17 12:42:28 +02:00
dependabot[bot] 1ca108f8d5 Bump github/codeql-action from 3.28.16 to 3.28.18
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.16 to 3.28.18.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3.28.16...ff0a06e83cb2de871e5a09832bc6a81e7276941f)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-16 12:15:43 -05:00
Roy-043 9d79d1aab9 Draft: avoid redundant constraints in make_sketch.py (#21398)
Forum topic:
https://forum.freecad.org/viewtopic.php?t=97072

The MissingVerticalHorizontal functions from the Sketcher WB do not behave as expected. See #21396.

A check for redundant contraints is required if   `makeMissingVerticalHorizontal()` is used. The argument for the function should be `True`. For consistency the same was done for makeMissingPointOnPointCoincident().
2025-05-16 19:12:32 +02:00
saso badovinac fc4203fbf8 Update codeql.yml 2025-05-16 09:52:44 -05:00
saso badovinac 2b29d6b51c Update codeql.yml 2025-05-16 09:52:44 -05:00
saso badovinac 25e9ca6571 Update codeql.yml 2025-05-16 09:52:44 -05:00
saso badovinac 0e01ab6f6d Update codeql.yml
Change the cpp dependencies install to ./package/ubuntu/install-apt-packages.sh (cpp scan is still disabled) and activate the extended security queries
2025-05-16 09:52:44 -05:00
Alfredo Monclus c33b53105f Gui: add 'System' style to leave QtStyle unset 2025-05-16 07:52:32 -06:00
Roy-043 5a7b73e560 Draft: params.py: do not report missing UI files (#21370)
See #21331.
2025-05-16 15:27:33 +02:00
Alfredo Monclus 57a8b2879a Gui: fix ElideCheckbox spacing 2025-05-16 09:32:11 +02:00
Alfredo Monclus 4cd5b50643 Gui: Set QStyle to Fusion if not set 2025-05-15 21:20:48 -06:00
Alfredo Monclus dc58468088 PD: move the base profiles types to the top 2025-05-15 23:31:55 +02:00
tetektoza d9881f6384 BIM: Rename to alpha instead of trans after switch to RGBA 2025-05-15 23:00:20 +02:00
Kohei Takahashi b54898f05f Base: Fixed segfault on destructing cached string (#20563)
* Base: Fixed segfault on destructing cached string

Xerces default memory manager is deleted before destructing static local
variable and segfault.

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-05-15 17:23:03 +00:00
Pieter Hijma 238957fb16 Fix a cyclic build dependency
Before this commit, Draft depended on BIM and BIM depended on Draft.
With this commit, BIM depends on Draft.
2025-05-15 18:50:17 +02:00
Chris Hennes a4aabe05de Sketcher tests: Silence compiler warning with cast 2025-05-15 18:49:08 +02:00
Luz Paz 5d052cc043 Fix various typos
Missed by the codespell CI not being functional for a period of time.
2025-05-15 10:59:48 -05:00
pre-commit-ci[bot] 0aefde35ca [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pre-commit/mirrors-clang-format: 7ec07eeb4135dc6ecf410d24ac4ead986a5d413d → 300fa4c170bf0887bb5585d17ec50901ad2625fb](https://github.com/pre-commit/mirrors-clang-format/compare/7ec07eeb4135dc6ecf410d24ac4ead986a5d413d...300fa4c170bf0887bb5585d17ec50901ad2625fb)
2025-05-15 08:55:15 -05:00
saso badovinac a81fcc9d5e CI: Create codeql.yml (#21300)
Adding CodeQL, starting with a minimal configuration, default queries and python only
2025-05-15 08:14:54 -05:00
Benjamin Bræstrup Sayoc 3ddc7fe2e6 TechDraw: fix face color not working
Fixes #20467
2025-05-15 12:16:24 +02:00
Dan Taylor 116eaac31d CAM: Adaptive: Fix helix entry start height (fix #21058) 2025-05-14 20:07:33 -05:00
Joao Matos 280cdd273c Fix warnings in ModelManagercode. 2025-05-15 01:02:55 +02:00
Chris Hennes f2e78e53e9 UI: Remove qPixmapFromMimeSource pixmap function
This function dates back to Qt3, and was removed in Qt4. Modern Qt no
longer uses this ui file entry, and in some circumstances the uic
complains about its presence.
2025-05-15 00:56:30 +02:00
Chris Hennes 5aa21132b8 Materials: Clean up unused variables
Updated error messages no longer refer to the exception object, resulting in compiler warnings.
2025-05-15 00:29:19 +02:00
Chris Hennes 87f3d6bb40 Gui: Eliminate signed-to-unsigned comparison
`std::numeric_limits<int>::max()` can losslessly be cast to an unsigned
int to silence the compiler warning about comparison of signed to
unsigned.
2025-05-15 00:20:35 +02:00
FEA-eng eaff709d82 FEM: Update TaskPostGlyph.ui 2025-05-15 00:06:43 +02:00
FEA-eng 1eb57c4933 FEM: Update post_glyphfilter.py 2025-05-15 00:06:43 +02:00
jffmichi 1809c6cf01 CAM: fix rrf postprocessor always writing to "-" instead of specified file 2025-05-14 22:00:11 +02:00
jffmichi bb409986f7 CAM: prevent marlin postprocessor from always writing to "-" 2025-05-14 21:55:49 +02:00
jffmichi 82a473ee59 CAM: fix crash in dynapath_4060 postprocessor due to fmt function expecting precision as integer 2025-05-14 21:50:04 +02:00
jffmichi 9d72b917b6 CAM: fix uccnc postprocessor not checking the Active state of operations 2025-05-14 21:44:48 +02:00
jffmichi 747afab6e5 CAM: fix handling of Active state and CoolantMode with nested dressups for some non-refactored postprocessors 2025-05-14 21:43:31 +02:00
Pieter Hijma 9ea0f32692 Fix finding hdf5 on CMake reconfigure 2025-05-14 13:49:09 -05:00
Benjamin Nauck 3a22c1c100 Merge pull request #21174 from 3x380V/fix_21172
Base: fix Unit scheme management regressions
2025-05-14 19:43:59 +02:00
dependabot[bot] 9fb2fbf0f7 Bump actions/dependency-review-action
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 8805179dc9a63c54224914839d370dd93bd37b2e to da24556b548a50705dd671f47852072ea4c105d9.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/8805179dc9a63c54224914839d370dd93bd37b2e...da24556b548a50705dd671f47852072ea4c105d9)

---
updated-dependencies:
- dependency-name: actions/dependency-review-action
  dependency-version: da24556b548a50705dd671f47852072ea4c105d9
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-14 08:05:56 -05:00
Ladislav Michl beccce4d3c Base: revert to using ASCII chararacters for imperial lengths
The new unit schema management is using U+2032 and U+2033 characters
for feet and inches while parser is expecting only ' and ", while
U+2032 and U+2033 are used for arcminute and arcsecond.

While this is not an ideal solution and parser should deal with both,
revert back to ASCII for now.

Fixes: 1155f0d752 ("Base: simplify UnitsSchemas management")
2025-05-14 11:39:09 +02:00
Syres916 a075bf8c34 Base: fix default unit schema
Fix the transcription error which occured while moving into
single structure. Default schema now uses milimeters again.

Fixes: 1155f0d752 ("Base: simplify UnitsSchemas management")
2025-05-14 10:25:47 +02:00
Ladislav Michl 1d62b8372b Base: fix Python interface for Unit schema selection
Fixes: 1155f0d752 ("Base: simplify UnitsSchemas management")
2025-05-14 10:20:49 +02:00
Ladislav Michl 9c6cdcaa01 Base: sort returned Unit schema description
Return schemas name and description vectors sorted by number, so
index can be used later to select particular schema.

Fixes: 1155f0d752 ("Base: simplify UnitsSchemas management")
2025-05-14 10:20:49 +02:00
3x380V 9d6f1ad37c App: Align Document to best practices (#21059)
* use static cast

* join declaration and definition

* don't hide previous declaration

* initialize in declaration

* redundant else

* reserved identifier

* endl

* implicit conversion

* narrowing

* always false

* replace define with constexpr

* return and continue

* avoid copy

* multiple declarations in line

* use auto

* member initialize

* uninitialized

* range based loop

* move to inner scope

* redundant

* const, mainly

* function parameter descriptions

* misc

---------

Co-authored-by: bofdahof <172177156+bofdahof@users.noreply.github.com>
2025-05-14 09:36:42 +02:00
jffmichi a055c77ca1 CAM: replace opProperty with more specific activeForOp 2025-05-14 05:10:05 +02:00
FilippoR c951255a6c fedora rpm packaging: use standard macro to package sources with submodules (#20953) 2025-05-13 22:03:28 -03:00
tritao 45a7acb959 Fix regressions in CI linting generic checks.
This got broken due to applying some review suggestions without proper
testing.

This fixes commit 5e72c0afe5.

Closes https://github.com/FreeCAD/FreeCAD/issues/21231.
2025-05-14 00:20:10 +02:00
tarman3 1e4eb1d399 CAM: Simulator - Reset camera tooltip 2025-05-13 23:26:45 +03:00
tarman3 da8a82628e CAM: Simulator - Reset camera 2025-05-13 20:41:30 +03:00
marioalexis 5e624a4775 Fem: Add CalculiX writers for electrostatic constraints 2025-05-13 14:46:54 +02:00
marioalexis eb82923869 Fem: Search elements for electrostatic constraints 2025-05-13 14:46:54 +02:00
marioalexis 4fe1002baa Fem: Improve CalculiXTools 2025-05-13 14:46:54 +02:00
marioalexis ab1e4384f1 Fem: Change CalculiX time and frequency properties to quantites 2025-05-13 14:46:54 +02:00
tetektoza 7d57569eb4 Draft: Finish command if user deselected Chained Mode
As the title says - currently, if user deselects Chained Mode, they
can't exit it without using ESC key for example, as the old behavior
of ContinueMode is kept under it.

So, this patch finishes the command if user has deselected it, at
the same time finishing previous chain.
2025-05-13 11:39:01 +02:00
Paul Lee d10485b156 [ArchStairs] ArchSketch Support and Refactoring Phase 3 + Regression
Phase 2 Subsequent to #21025 + Regression Fix

FC Forum Discussion:-
https://forum.freecad.org/viewtopic.php?p=814274#p814274

ArchSketch Support, PropertySet, and Refactoring to enable more complex Stairs shape.
2025-05-13 11:31:09 +02:00
Paul Lee 7b078e2c96 [BimWindow] Interactive Creation Tool: Check if SketchArch is Enabled (ArchSketchLock)
Improvement to User Interactive Experience:
- The Window Interactive Tool would check if SketchArch-addon is enabled by user, i.e. if ArchSketckLock is checked.
- If not, the conventional creation behaviour is used, SketchArch properties would not be added to Window object.
- It also check if Base of Wall is ArchSketch or not.

Github Discussion:
- https://github.com/paullee0/FreeCAD_SketchArch/issues/27#issuecomment-2837652351
2025-05-13 11:29:09 +02:00
tetektoza 2c9c80fefa BIM: Allow changing Sill parameter in Properties for Window
User has no possibility to change Sill parameter upon adding Window, it
is only possible while creating Window for the first time.

So this patch adds this parameter, and changing it moves the *BASE*
coordinate of the object in Z direction.
2025-05-13 11:25:31 +02:00
tetektoza 1de7024a43 BIM: Switch Visibility of ViewObj on/off to restore it in all objs 2025-05-13 11:03:05 +02:00
tetektoza 0da05071a5 BIM: Do not hide children of Building if Building has been isolated 2025-05-13 11:03:05 +02:00
tetektoza 8fd7c94d8f BIM: Remove additional recompute at the end of isolate 2025-05-13 11:03:05 +02:00
tetektoza 2cd492424c BIM: Exclude viewtree from cached items and add a sanity check 2025-05-13 11:03:05 +02:00
tetektoza ccd40ed03b BIM: Cache the tree elements beforehand and hide only necessary ones 2025-05-13 11:03:05 +02:00
tetektoza d24dabbdc2 BIM: Hide all objects that aren't selected during Isolate
Currently if user selects an item and does `Isolate` operation on it in
BIM, everything is being hidden if the item was inside another container
(like Building).

This is because we are prioritizing on hiding parents of current object
if they are not the selected ones, which is causing the child of the
parent to be hidden as well (duh).

So, this patch fixes isolate method to hide all other parents and their
childs. If they are not a parent of our child under selection -> hide
them and proceed further. If we are processing parent of our selection,
just hide anything on current level that is not our selection while
leaving parent intact.
2025-05-13 11:03:05 +02:00
Slawomir Gonet f9d79627b5 CAM: Fix Existing Stock from resetting
Due to a Qt signal setup, the clone object for Existing Stock stock type
was recreated every time the Job properties dialog was opened (during the
stock candidates list population).

This fix blocks the Qt signal from being emitted during the dropdown
population.
2025-05-13 09:35:04 +02:00
tarman3 c855083b0c CAM: Simulator - Improve camera limits 2025-05-13 08:43:59 +02:00
Jacob Oursland 2b099f8416 CI: fix weekly builds. 2025-05-13 08:38:29 +02:00
Chris Hennes c9c193b5d6 Gui: Eliminate double->float truncations
Our GUI code uses a mix of floats and doubles to represent floating
point numbers, and in a few places interchanges them in a way that
causes an invisible loss of precision. Change the double precision
"default" values to float defaults, and use the appropriate value for
pi.
2025-05-13 08:37:06 +02:00
tarman3 b37b746f7e CAM: Remove CAM_Shape from top menu 2025-05-13 07:45:29 +03:00
Jacob Oursland 305ef46e2c CI: checkout source prior to installing pixi on weekly builds. 2025-05-12 23:12:47 -05:00
Jackson Oursland 23fb262150 Update sub_weeklyBuild.yml
Fix `sub_weeklyBuild.yml`
2025-05-12 22:20:43 -05:00
tetektoza 5e46843031 BIM: Change from RGBT to RGBA for IFC
Currently users by default have transparent window frames and doors.

Turns out that at some point there was a switch from RGBT to RGBA, which
means last transparency element differs in the range of transparency
that it specifies (RGBT, where 1 - fully visible, RGBA where 1 - fully
transparent). As the changed happened, all of the windows and door
became transparent.

This patch changes that, from RGBT to RGBA so we will map transparency
properly, as well as adding a possibility to set transparency through
material.
2025-05-12 23:36:13 +02:00
Furgo 9590224fe2 BIM: change Snapping menu order for workplane commands 2025-05-12 22:32:26 +02:00
tarman3 f4acd04623 CAM: PathShape with Tool Controller 2025-05-12 22:57:23 +03:00
Furgo 576b5ffb41 Draft: add more context to select plane command message 2025-05-12 21:27:30 +02:00
Furgo 2b5833fa49 BIM: Add working plane selection command 2025-05-12 21:27:30 +02:00
Jackson Oursland a997c1ef16 macOS: Remove duplicate RPATHs (#21244)
* Package: fix formatting.

* Package: correct printing of directory being processed.

* Package: remove duplicate RPATHs for macOS builds.

* Package: note the additional issue affecting RPATHs in the bundle script.
2025-05-12 11:21:14 -05:00
Chris Hennes da239c6c69 Gui: Manually specify correct QVariant conversion
There are multiple possible conversion paths for a QPixmap to QVariant,
which results in a compiler warning. Explicitly specify the path we
intend to silence the warning.
2025-05-12 18:17:48 +02:00
Chris Hennes f0e183b20b Gui: Make variable more local
Eliminate a compiler warning about an unused variable by making the
variable more local to the point-of-use.
2025-05-12 18:16:56 +02:00
Chris Hennes dce5d9ce82 Gui: Remove default init of shared_ptr
`std::shared_ptr` default-initializes to `nullptr`, so there is no need
to do it manually, and in the current code the initialization is in the
wrong order (so generates a compiler warning).
2025-05-12 18:16:32 +02:00
Chris Hennes d7433466a0 TD: Fix hatch size constraint
Commit 1155f0d7 changed `UnitsApi::getDecimals()` from `int` to
`size_t`, which changes the meaning of the negation since it is now
unsigned. Cast it to an integer before the negation to restore the old
behavior.
2025-05-12 18:11:15 +02:00
FEA-eng c9174a25e8 FEM: Update DlgSettingsFemCcx.ui 2025-05-12 11:09:59 -05:00
sliptonic 396c1cef61 Merge pull request #21193 from davidgilkaufman/adaptive_helix_fixes
[CAM] Adaptive helix fixes
2025-05-12 11:09:16 -05:00
saso badovinac 72a173e36d Update sub_weeklyBuild.yml (#21249)
Run harden-runner first
2025-05-12 11:03:39 -05:00
tetektoza b0599f0cde BIM: Update tooltip for Activate button 2025-05-12 18:00:52 +02:00
tetektoza 464e7d5144 BIM: Introduce Activate for BIM Views
Currently there's no option for selecting active working plane other
than selecting `DoubleClickActivates` property on a BIM Level.

So, this patch adds an additional button for the submenu that BIM Views
provides - to activate working plane of the selected item.
2025-05-12 18:00:52 +02:00
tetektoza bda260336c BIM: Fix missing IFC attributes for certain BIM objects
Some of the objects, like Column, or Beam do not contain `IFC
Attributes` if they are initially created.

As it turns out, they are not being created as we are checking for
`onDocRestoredDone` attribute, which is assigned in `onDocumentRestored`
function. Since users can usually just not restore a document, but just
play on a newly created document, this attribute won't be available,
thus we won't be going through whole `onChanged` logic which populates
`IFC Attributes`.

To preserve current functionality of this additional parameter and not
cause the previous errors to happen, this patch just changes from the
custom flag to globally available `Restoring` flag which tracks document
being restored more reliably.
2025-05-12 17:50:11 +02:00
Roy-043 ca0630aa50 BIM: close BIM_Library task panel on doc close
Fixes #21179.

This PR uses the built-in solution to close the task panel.

I was not aware of this feature before. My 2 previous PRs related to the closing of task panels, #20719 and #21073, will (largely) have to be reverted/redone in favor of this solution.
2025-05-12 17:48:39 +02:00
Roy-043 b451193a49 Draft: aux.fake_function should not overwrite functions
The `aux.fake_function` is used in the Draft unit tests as a substitute for functions that, in most cases, do not yet exist. But in test_modification.py it would overwrite Draft.extrude leading to issues with BIM unit tests.

See:
https://github.com/FreeCAD/FreeCAD/pull/21134#issuecomment-2869178563
2025-05-12 10:45:45 -05:00
mosfet80 7f3398f320 [Mod] Drawing remove (#20419)
* [Mod] Draw remove

removed deprecated drawing module

* [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-05-12 17:43:25 +02:00
sliptonic 3f6805a380 Merge pull request #20873 from tarman3/startpoint
CAM: Fixes PickStartPoint
2025-05-12 10:40:57 -05:00
marcuspollio 67f1b41bc2 BIM: fix some imports and cleanup miscellaneous (#20914) 2025-05-12 17:40:12 +02:00
Chris Hennes f5806841b6 Merge pull request #19907 from benj5378/getAttribute
Base: make getAttribute template
2025-05-12 10:39:55 -05:00
Furgo 3502b60c73 BIM: set DoubleClickActivates property true by default 2025-05-12 17:36:29 +02:00
sliptonic 59483c8001 Merge pull request #21265 from LarryWoestman/refactor
CAM:  updated opensbp post to work with current Processor.py
2025-05-12 09:32:43 -05:00
sliptonic fbe94b352e Merge pull request #20828 from tarman3/DressupPathBoundary-KeepToolDown
CAM: Keep tool down in DressupPathBoundary
2025-05-12 09:07:44 -05:00
tarman3 b7ba562288 CAM: PickStartPoint fixes 2025-05-12 16:57:32 +03:00
tarman3 f75d79860b CAM: Simulator - Decrease speed button (#21222)
* CAM: Simulator - Decrease speed button

* CAM: Simulator - Move slider upper

* CAM: Simulator - Changed speed icons
2025-05-12 08:57:30 -05:00
Kacper Donat f71e84cad9 Gui: Fix handling - character in OVP 2025-05-12 08:55:09 -05:00
sliptonic 43d94f1575 Merge pull request #21177 from dbtayl/fix_adaptive_repeated_cuts
CAM: Fix adaptive repeating cuts excessively at various depths
2025-05-12 08:15:55 -05:00
sliptonic fd4e504b13 Merge pull request #21128 from jffmichi/fix_array_dressup
CAM: bring Array dressup in line with existing dressups
2025-05-12 08:10:31 -05:00
Jacob Oursland 32debd36e8 CI: use the weekly build tag in title bar of main window. 2025-05-12 11:22:14 +02:00
Jacob Oursland 2380f9153d CI: use the exact same source for weekly builds. 2025-05-12 11:21:12 +02:00
tarman3 a00c402d7a CAM: Simulator - Add document name to title 2025-05-12 08:22:44 +02:00
Furgo 87768e4c79 Merge branch 'main' into add-taskpanel-walloffset 2025-05-12 05:08:04 +02:00
Lawrence Woestman 07e78f5631 CAM: updated opensbp post to work with current Processor.py 2025-05-11 15:39:49 -07:00
tarman3 43b2a0e301 Macro: Button to open folder with macros 2025-05-11 21:54:07 +02:00
dependabot[bot] ce368cb7a0 Bump actions/dependency-review-action
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 67d4f4bd7a9b17a0db54d2a7519187c65e339de8 to 8805179dc9a63c54224914839d370dd93bd37b2e.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/67d4f4bd7a9b17a0db54d2a7519187c65e339de8...8805179dc9a63c54224914839d370dd93bd37b2e)

---
updated-dependencies:
- dependency-name: actions/dependency-review-action
  dependency-version: 8805179dc9a63c54224914839d370dd93bd37b2e
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-09 14:27:21 -05:00
dependabot[bot] 187d615c37 Bump github/issue-metrics from 3.19.0 to 3.20.0
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.19.0 to 3.20.0.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/0bac4758505aae5956ceaf77d747e65680bcafb0...6a0f49b4e14363b63e65ec698b43715b69d21f6d)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-09 14:26:12 -05:00
saso badovinac f90f102efe Update sub_weeklyBuild.yml
Pin Actions to a full length commit SHA
2025-05-09 14:25:57 -05:00
saso badovinac 1ca01d80bd Update sub_lint.yml
Pin Actions to a full length commit SHA
2025-05-09 14:25:42 -05:00
Benjamin Bræstrup Sayoc 6786af6ef9 Everywhere: clean up getAttribute conversions 2025-05-09 15:54:57 +02:00
Benjamin Bræstrup Sayoc 492b8312b3 Base: make getAttribute template 2025-05-09 15:54:57 +02:00
pre-commit-ci[bot] 2683d41cc7 CAM: clean up code 2025-05-09 09:53:34 -04:00
David Kaufman fad13fb300 CAM: add spiral-out to full radius at the bottom of the cone helix 2025-05-09 09:53:34 -04:00
David Kaufman 7629312717 CAM: delete dedicated cone helix implementation, merge into standard implementation 2025-05-09 09:53:34 -04:00
David Kaufman 9d64f5fb0f CAM: Allow helix angles between 0 and 1 degree 2025-05-09 09:53:27 -04:00
tarman3 9577d108e3 CAM: Simulator window title 2025-05-09 12:50:32 +02:00
Pieter Hijma 895bf8db8b Doc: Fix small doc warnings in ExtensionContainer 2025-05-08 17:52:33 -05:00
Pieter Hijma 57d2d51c9b Doc: Improve App::Extension documentation 2025-05-08 17:52:33 -05:00
Rayno Jiang 2032a9d844 Sketcher: Scaling of a sketch containing BSplines doesn't work (#20943)
* [FreeCAD-20111] Sketcher: Scaling of a sketch containing BSplines doesn't work
When we executing Scale cmd we don't will lose knots information from shape geometry and it cause the scaled spline build with issue knots and it lead solver gets compute issue.
1. Add string format function PythonConverter::makeArryString(const std::stringstream& ss) for processing the control pnts string, mults string and knots string.
2. Add mults and knots information for python obj to make BSplineCurvePy::buildFromPolesMultsKnots(Args...) initialized Geom_BSplineCurve correctly.

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

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

* 1. fix typo
2. Add wights info to keep spline shape after convert from python object

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

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

* 1. remove static function makeArrayString() from PythonConverter
1. Add template function makeSplineInfoArrayString() to generate string for cleaner code.
2. change python string format as review suggestion

* use fmt format

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

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

Fixes #20111

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-05-09 00:02:33 +02:00
xtemp09 54fdd62fc7 Gui: Add switching to the document when closing FreeCAD (#21135)
* Add switching to the document when closing FreeCAD

Closes #20997

* Some update of language

* camelCase every variable name used
2025-05-08 23:59:11 +02:00
Syres916 340cfc6feb [App] find Pyside and Shiboken versions whether it be Qt5 or Qt6 2025-05-08 23:39:51 +02:00
Stefan Tröger 4a78446e84 FEM: Fix test if VTK or VTK python is not available (#21168)
* FEM: Fix test if VTK or VTK python is not available
* FEM: Make test work if vtk python not installed
2025-05-08 15:55:45 -05:00
FilippoR ff4740d082 Tests: Add FREECAD_USE_EXTERNAL_GTEST cmake option (#21190)
Add FREECAD_USE_EXTERNAL_GTEST cmake option and fix build with external libraries
2025-05-08 15:41:48 -05:00
Chris Hennes 3d18203403 TD: Fix capitalization of Console calls 2025-05-08 21:08:45 +02:00
theo-vt e56979e76e PartDesign: Fix no longer possible to make a hole from one selected circle in a sketch (#21030)
* Search for profile shape subelements without simplifying compounds for hole center detection

* Simpler solution
2025-05-08 16:47:26 +00:00
WandererFan 9938818d82 [TD]Allow non-shape views to have children (#20768) (#21099)
* [TD]Allow non-shape views to have children (#20768)

* Update src/Mod/TechDraw/App/DrawView.cpp

Review comment

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

* Update src/Mod/TechDraw/App/DrawView.cpp

review comment

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

* Update src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp

review comment

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

* Update src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp

review comment

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

---------

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-05-08 09:18:09 -05:00
Jacob Oursland 3c25cdc213 Linux: Force QT_QPA_PLATFORM=xcb for Wayland compat. 2025-05-08 08:29:15 -05:00
Pieter Hijma e9d298a94f Doc: Improve App::ExtensionContainer documentation 2025-05-08 08:28:51 -05:00
dependabot[bot] 412cea78f9 Bump github/issue-metrics from 3.18.5 to 3.19.0
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.18.5 to 3.19.0.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/bf0268ff2ece11ffedc0162ed594c8f629aa963e...0bac4758505aae5956ceaf77d747e65680bcafb0)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-08 07:38:10 -05:00
tetektoza ff1602ef6b Draft: Introduce new dynamic polygon tracker for Polygon tool (#21045)
As the title says - currently we just have a simple circle, so I thought
with some basic adjustments it's possible to add a cool tracker that
will possibly guide user better on what they are placing on the
viewport.
2025-05-08 14:30:31 +02:00
Chris Hennes 3b47a4ca4a Merge pull request #21184 from pieterhijma/doc-object-identifier
Doc: Improve App::ObjectIdentifier documentation
2025-05-07 16:22:49 -05:00
Beep6581 601c0f9b09 PartDesign: Merge pull request #21015 from Beep6581/fix-thread-pitch
Fixes hole thread pitch
2025-05-07 21:53:09 +02:00
Roy-043 223234952a BIM: show units in Arch_Roof task panel
Fixes: #21137.

Note that the list values in the Property editor are unitless. Therefore lengths are still in mm there.
2025-05-07 17:54:14 +02:00
Syres916 7b79f2da24 [BIM} remove incorrect check which was stopping the default Pipe being created 2025-05-07 17:53:26 +02:00
Furgo 1a62a73e10 BIM: add docstrings to all Arch module functions 2025-05-07 17:51:57 +02:00
Furgo 8344fe599f BIM: refactor whitespace between parameters and operators for improved
readability
2025-05-07 17:51:57 +02:00
sliptonic ffd53ee75f Merge pull request #21183 from tarman3/fixsimprogress
CAM: Simulator Fix thumb right position with speed > 1
2025-05-07 10:23:29 -05:00
Pieter Hijma ef01818afe Doc: Fix warnings App::Property
PR #21155 introduced some warnings that are fixed in this PR.
2025-05-07 15:15:08 +02:00
Pieter Hijma a51c72729c Doc: Improve App::ObjectIdentifier docs 2025-05-07 13:34:25 +02:00
Pieter Hijma 295e9636a0 Doc: Move doc comments ObjectIdentifier
Move the doc comments from the cpp file to the header file.
2025-05-07 10:26:28 +02:00
tarman3 6397023fc8 CAM: Simulator Fix thumb right position with speed > 1 2025-05-07 11:09:17 +03:00
tarman3 a7f6a84ea4 CAM: KeepToolDown in Dressup Boundary 2025-05-07 09:42:16 +03:00
jffmichi 3bcc702de9 CAM: add test for refactored postprocessor using dressups 2025-05-07 04:58:07 +02:00
jffmichi f4d853e5dc CAM: respect SHOW_OPERATION_LABELS in post-operation information 2025-05-07 04:56:08 +02:00
jffmichi 1e87d8e668 CAM: fix handling of Active state and CoolantMode with nested dressups 2025-05-07 04:46:16 +02:00
Dan Taylor 6fdb672d36 CAM: Fix adaptive repeating cuts excessively at various depths 2025-05-06 20:29:19 -05:00
Jacob Oursland 8a82caf3af Gui: use 'C.UTF-8' for locale as Qt requires UTF-8. 2025-05-06 16:06:10 -05:00
Jacob Oursland 72db580c43 macOS: Remove QT_MAC_WANTS_LAYER=1, which is no longer valid. 2025-05-06 15:01:36 -05:00
Jacob Oursland 926d9c6eee macOS: Do not force LANG=UTF-8, which is not valid. 2025-05-06 14:51:58 -05:00
Max Wilfinger caf7530865 Update weekly-build-notes.md 2025-05-06 20:44:41 +02:00
Jacques Beaurain 418c09899b Gui: HiDPI fixes for Sketcher (#21098)
* Gui: HiDPI fixes for Sketcher

(cherry picked from commit f043fd7c5c8a6ea003811453165eee7d643f3779)

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

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

(cherry picked from commit 42567ca9fcf2d6bab612715391a7b1911367f75d)

* Apply suggestions from code review

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
(cherry picked from commit 28b52086e9cceae0e095421985479c546df49e44)

* qreal to double

(cherry picked from commit 4434ef18affa082a88390c1e68274de42f7c181e)

* more qreal to double

(cherry picked from commit df15eb6200d4ceab730ca8cf25ab0a90efe1cf41)

* Restore previous code which converted label size to points. View scaling would result in text that is too big.

* Ensure scaled marker size is one of the supported sizes for CIRCLE_LINE otherwise it would default to 7  (or what was set to "MarkerSize" in hGrp)

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

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

---------

Co-authored-by: Tim Ringenbach <tim.ringenbach@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-05-06 19:47:09 +02:00
PaddleStroke 4c8fadd68d Core: restoreContent not restoring expressions (#21152) 2025-05-06 12:02:35 -05:00
Pieter Hijma 920029f5ce Doc: Improve App::Property documentation 2025-05-06 12:00:52 -05:00
dependabot[bot] 7b90b12f0c Bump github/issue-metrics from 3.18.4 to 3.18.5
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.18.4 to 3.18.5.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/ed6e4b2b46f44ec7cdd2f6c145757a67a07ecf5b...bf0268ff2ece11ffedc0162ed594c8f629aa963e)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.18.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-06 11:48:54 -05:00
bofdahof 998f4e4d45 Console: rename PascalCase named methods to camelCase 2025-05-06 17:50:21 +02:00
bofdahof d4ecf95ca5 Console: misc refactors
- use C++20 contains where appropriate
- add nolint redundant qualifier
- remove old todo
- remove redundant enum name
- add const
- remove redundant classname
- remove redundant inline
- remove redundant namespace
2025-05-06 17:50:21 +02:00
sliptonic 8336d8c475 Merge pull request #20928 from LarryWoestman/refactor
CAM:  Fix tool changes not correctly output in gcode in the refactored code base
2025-05-06 10:47:47 -05:00
Benjamin Nauck c192a0e166 Merge pull request #21083 from 3x380V/exception-stage-1
Base: simplify Exception
2025-05-06 09:29:45 +02:00
pre-commit-ci[bot] 261ce705a9 [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pre-commit/mirrors-clang-format: 458d954d175f16d216d7d04d5c182e3b10ddfbb4 → 7ec07eeb4135dc6ecf410d24ac4ead986a5d413d](https://github.com/pre-commit/mirrors-clang-format/compare/458d954d175f16d216d7d04d5c182e3b10ddfbb4...7ec07eeb4135dc6ecf410d24ac4ead986a5d413d)
2025-05-06 05:23:37 +02:00
wandererfan c1df1c73a0 [TD]fix hidden line regression, 2025-05-05 21:26:35 -05:00
Chris Hennes 7ba8b1f2ba Merge pull request #20891 from ickby/FEM_python_filter
FEM: Enabling postprocessing filters written in python, and adding a glyph example
2025-05-05 21:19:49 -05:00
Benjamin Nauck fe1990565f Point OndselSolver to FreeCAD's organization
Syncing and update submodule should work, but if it doesn't then the following will reset it (+ remove all local changes):
```sh
git submodule deinit -f src/3rdParty/OndselSolver
git submodule update --init --recursive src/3rdParty/OndselSolver
```
2025-05-05 17:18:11 -05:00
Ladislav Michl c293d74566 Base: rename Exception's PascalCase methods to camelCase 2025-05-05 23:50:01 +02:00
bofdahof 838178bb1c Base: simplify Exception
Remove repetition. Add functions to replace macros, but keep macros
in use for now as some compilers have broken std::source_location
support.
2025-05-05 23:50:01 +02:00
Jacob Oursland a1c5950d9a CI: add missing token to fix weekly build. 2025-05-05 23:43:03 +02:00
Ladislav Michl 3189030c11 Gui: fix warning in NavigationStyle
Fix warning: suggest braces around empty body in an ‘if’ statement.
While there also guard similar debug messages instead of commenting
them out.

Fixes: 8d2cb99712 ("Gui: Added classic trackball orbit style")
2025-05-05 19:45:01 +02:00
Kacper Donat 67e5d730fe Merge pull request #20754 from hyarion/coverty/sketchobject
Sketcher: Fix some of the coverity issues in SketchObject.cpp
2025-05-05 19:28:55 +02:00
Jacob Oursland 8f57c46f3a Base: use nullptr instead of 0 in Base. 2025-05-05 12:12:15 -05:00
David Carter 8abb9f0128 Materials: Default units (#20909)
Improves handling and assignment of default units

When creating a material without specifying units, no units are
currently assigned. This commit will assign the default units when none are
given, or throw an error when incompatible units are given. In the
latter case, the units are set to the property defaults.

This commit also incidentally fixed an issue when saving the material that
resulted in accessing an uninitialized pointer.
2025-05-05 11:31:25 -05:00
tetektoza fe7d3e9071 BIM: Pass correct object for Compass while updating Visibility property
Currently, if user selects `Site` object in the Model tree, and hides it
while having `Compass` property selected to `true` and then unhides it,
the Compass is not appearing even though the property still remains to
be true.

This is because for the `Compass` property itself and `Visibility`
property we're using two different object types. For `Compass` property
we're using View provider geometry object, whereas for the `Visibility`
property we're using `Part::Feature` object. Since `Part::Feature`
object doesn't have compass attribute and Compass directly under it,
we're never hitting the logic to show the compass.

So, this patch just changes the object type that is being passed to
`updateCompassVisibility` during change of `Visibility` property, to
match the same object type passed during change of `Compass` property.
2025-05-05 18:19:22 +02:00
Roy-043 2e02c6a944 Draft: ShapeString: use an actual font file as default, allow TTC files
* To help novice users supply an actual font file from the OS as the default for ShapeStringFontFile.
* The Draft code blocked the use of TTC font files. `Part.makeWireString()` can however handle them (although only the first font in the file can be used).

Additonally:
In a previous PR the bottom spacer was removed from the task panel. This PR brings it back as it is required in some cases. Without it  the "..." button of the file selector can become huge.
2025-05-05 18:15:47 +02:00
Furgo be62ecc023 BIM: group 2D view creation commands 2025-05-05 18:10:18 +02:00
Roy-043 ffd99499fb Draft: fix dim unit override for Building US unit system
Fixes #21092.
2025-05-05 18:01:36 +02:00
tetektoza 7f6b3dcf70 Draft: Preserve direction vector upon Continue Mode for Dimension (#20974)
So, currently, if we use Vertical/Horizontal Dimension which is
constrained in one direction vector, upon `Continue`, the direction
vector is not being preserved.

The cause of that is that everytime we recall the command in Continue
Mode, we also call base class' `Activated` method, which in turn calls
`finish()` if we have already initialized an active Draft command. This
doesn't happen during first usage of the command, because this variable
is not yet populated, but upon second (and next) runs it is. In turn,
this causes to call `finish()`, and clean up the direction vector. So,
in essence, we are specifying the vector and cleaning it every
"Continue" run.

So, as a solution, just move the direction vector as an argument to
populate super class with it, and do that after super class' `Activated()`
call, so it won't get cleaned up in `finish()`.

Co-authored-by: Yorik van Havre <yorik@uncreated.net>
2025-05-05 17:58:54 +02:00
Roy-043 57da6ac140 BIM: close task panels on doc close
Fixes #17952.

This PR is a continuation of #20719.

It mainly involves adding `self.doc`. This new attribute is then also used in the rest of the modified classes. In some cases code was slightly reordered for consistency.

The `_finish_command_on_doc_close` function has been modifief to also handle `Gui.Snapper.ui.escape` and the code in gui_arcs.py has been updated accordingly.

Additionally:
Removed the `done` and `spacedone` variables in BimWall.py by tweaking the code.
2025-05-05 17:52:37 +02:00
Shai Seger c90bb3cd9e [CAM Simulator] Auto resizing of simulator slider based on window size (#21027)
* [CAM Simulator] Auto resizing of simulator slider based on widow size. Replaces PR #20885.

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

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

* Add tooltips

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

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

* Add missing includes

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-05-05 10:51:28 -05:00
sliptonic 205c556e69 Merge pull request #20591 from jalapenopuzzle/jalapenopuzzle/cam_snapmaker_machine_types
CAM: snapmaker improve support for different machine variants and toolheads
2025-05-05 10:47:07 -05:00
marcuspollio 953063ca09 BIM: add missing license (#20906)
* BIM: add missing license

* BIM: add SPDX License id to init.py

* Revert Dice3DS license
2025-05-05 17:45:38 +02:00
Chris Hennes 9b1467cef3 Merge pull request #20540 from 3x380V/cleanup-schemas-management
Simplify UnitsSchemas management
2025-05-05 10:43:27 -05:00
marcuspollio c4ce2fb44a Revert: Enable pcl by default on non windows systems #20372 2025-05-05 11:34:19 -04:00
Max Wilfinger 3fcadd01f5 Set RoundedArcball as default orbit style.
Reorder status bar entries.
2025-05-05 10:33:33 -05:00
Chris Hennes e4b301a048 Merge pull request #20449 from hyarion/refactor/cpp20-contains
Avoid using `count` and `std::find` where `contains` and `isEmpty` express intent better
2025-05-05 10:31:33 -05:00
sliptonic 37edce115e Merge pull request #20877 from knipknap/cam-postprocessor-errors
CAM: fix postprocessor errors
2025-05-05 10:03:50 -05:00
Furgo 24bf79665e BIM: create wall upon pressing Enter with focused Offset input 2025-05-05 12:31:03 +02:00
Furgo 288a04deba BIM: add Offset input to wall creation task panel 2025-05-05 12:31:03 +02:00
David Carter 2117d5aef1 Material: Database manager fixes (#21132)
* Remove duplicate code from previous merge

* Caatch potential unknoiwn exceptions
2025-05-05 10:22:50 +02:00
Jacob Oursland 9e9024537c CMake: Do not optimize debug builds. 2025-05-05 10:20:45 +02:00
Chris Hennes 4dc4185319 Merge pull request #21051 from WandererFan/ComplexSectionCrash
[TD]Complex section crash (fix #20155)
2025-05-04 20:53:05 -05:00
David Carter 24df826865 Merge pull request #21046 from davesrocketshop/issue_13922_2
Update module dependencies to ensure that automated testing code is considered as well as direct dependencies. Update some automated tests to eliminate unwanted dependencies.
2025-05-04 17:02:50 -05:00
Chris Hennes 12fb3b989c Merge pull request #21100 from marioalexis84/fem-elmer_quantity_format
Fem: Use string format to round Elmer quantity values - fixes #20938
2025-05-04 16:57:31 -05:00
Jackson Oursland 2070dc9633 CI: add missing command line args to codespell.py. (#21127)
* CI: add missing command line args to codespell.py.

* CI: alter files parameters to codespell.py.

* CI: update verbose flag in codespell to be boolean.
2025-05-04 16:56:42 -05:00
jffmichi 24c32c9841 CAM: bring Array dressup in line with existing dressups 2025-05-04 20:18:34 +02:00
Benjamin Nauck 93ea68a23b Gui: Add tests to automatically verify the axonometric views 2025-05-04 13:21:08 +02:00
Benjamin Nauck 3f79626799 Sketcher: Fix 513269 Variable copied when it could be moved 2025-05-03 23:38:05 +02:00
Benjamin Nauck 47a43e21b2 Sketcher: Fix · · ·
532547 Variable copied when it could be moved
2025-05-03 23:38:05 +02:00
Benjamin Nauck 6b87d7df22 Sketcher: Fix 512328 Use of auto that causes a copy 2025-05-03 23:38:05 +02:00
Benjamin Nauck 70d11e33dc Sketcher: Fix 529853 Variable copied when it could be moved 2025-05-03 23:38:05 +02:00
Benjamin Nauck be264928fc Sketcher: Fix 515688, 513858, 515692, Variable copied
# Conflicts:
#	src/Mod/Sketcher/App/SketchObject.cpp
2025-05-03 23:38:05 +02:00
Benjamin Nauck 7f49a4e668 Sketcher: Fix 513105 Variable copied when it could be moved 2025-05-03 23:37:26 +02:00
Benjamin Nauck de17a7acee Sketcher: 532658 Use of auto that causes a copy
Also fixes 532658
2025-05-03 23:37:26 +02:00
Benjamin Nauck 6adebe348e Sketcher: Fix 512301 Variable copied when it could be moved 2025-05-03 23:37:26 +02:00
Benjamin Nauck 53b9c54f97 Sketcher: Fix 512831 Variable copied when it could be moved 2025-05-03 23:37:26 +02:00
Benjamin Nauck 78e2a12d2d Sketcher: Fix 463717 Variable copied when it could be moved 2025-05-03 23:37:26 +02:00
Benjamin Nauck 04ac555ae4 App: use contains() instead of count() 2025-05-03 22:22:10 +02:00
Benjamin Nauck ae76f89759 Sketcher: Use contains instead of std::find 2025-05-03 22:22:10 +02:00
Benjamin Nauck 588d26937b Gui: Use contains instead of std::find 2025-05-03 22:22:10 +02:00
Benjamin Nauck a43989dfbf App: Use contains instead of std::find 2025-05-03 22:22:10 +02:00
Benjamin Nauck c70b649dff Spreadsheet: use isEmpty() instead of count() where possible 2025-05-03 22:22:10 +02:00
Benjamin Nauck b9ee64792d Part: use empty() and isEmpty() instead of count() where possible 2025-05-03 22:22:10 +02:00
Benjamin Nauck e69c372056 Material: use contains() and isEmpty() instead of count() where possible
# Conflicts:
#	src/Mod/Material/App/ModelLibrary.cpp
2025-05-03 22:22:10 +02:00
Benjamin Nauck 4bf7048534 Import: use contains() instead of count() where possible 2025-05-03 22:19:51 +02:00
Benjamin Nauck dd2172e463 CAM: use contains() instead of count() where possible 2025-05-03 22:19:51 +02:00
Benjamin Nauck a882289995 Gui: use contains() and isEmpty() instead of count() where possible 2025-05-03 22:19:51 +02:00
Benjamin Nauck 65ee1339de App: use contains() instead of count() where possible 2025-05-03 22:19:51 +02:00
dependabot[bot] d427162d97 Bump github/codeql-action from 3.28.16 to 3.28.17
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.16 to 3.28.17.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/28deaeda66b76a05916b6923827895f2b14ab387...60168efe1c415ce0f5521ea06d5c2062adbeed1b)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 17:58:22 -05:00
Jacob Oursland bcea78a451 CI: unify the location of GitHub release creation. 2025-05-02 20:28:24 +02:00
Jacob Oursland adec1ebc7e CI: update AppImage build with correct repo locaiton and tag. 2025-05-02 20:26:21 +02:00
pre-commit-ci[bot] 3ef7ba2d9d [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-05-02 07:29:09 +00:00
Stefan Tröger ce25de290e FEM: Fix typos in python post processing code 2025-05-02 09:25:57 +02:00
Stefan Tröger 0304faa2bc FEM: Handle python vtk user installs that conflict with FreeCAD VTK 2025-05-02 09:25:57 +02:00
Stefan Tröger 96e9e7a17a FEM: Fix test with new python filter and other small fixes 2025-05-02 09:25:56 +02:00
Stefan Tröger d51d5a3b0b Fem: correctly handle python filters if vtk python is not available 2025-05-02 09:25:56 +02:00
Stefan Tröger 0217a2176e Fem: make python filter build process more elegant 2025-05-02 09:25:56 +02:00
Stefan Tröger 491923e41e Fem: Implement basic python filter functionality and glyph example 2025-05-02 09:25:56 +02:00
marioalexis 2fdc7e91bc Fem: Use string format to round Elmer quantity values - fixes #20938 2025-05-01 20:23:19 -03:00
marioalexis 37b988ec00 Fem: Move code from Elmer electrostatic writer to proxy class 2025-05-01 20:23:18 -03:00
Jacob Oursland b3a3b13603 pixi: Downgrade to Qt6 6.7.x. 2025-05-02 00:16:31 +02:00
Jacob Oursland a881bddbe6 CI: Add weekly build notes. 2025-04-30 13:30:56 -05:00
Leticia Vong 68e7ce375b GUI: Refactor - removed soft dependency from freeze toggle 2025-04-30 15:11:44 +02:00
Jacob Oursland 14d276b120 CI: rename Weekly Build weekly-<date> to Development Build weekly-<date>. 2025-04-29 22:56:09 -05:00
Andrea 042f96ccbc Removed unused function
Removed unused function
2025-04-29 22:52:04 -05:00
Pieter Hijma 5953fb6c24 Doc: Improve PropertyContainer documentation 2025-04-29 22:50:14 -05:00
mosfet80 9b9f8d1800 clean SoFCSelection.cpp
removed unused code
2025-04-29 22:49:40 -05:00
David Carter ffb7ab779b Materials: External Module Support
The final PR for the external module feature that allows materials to
be stored in an external datastore, webservice, etc.

This includes the final material manager classes, and the UI support in
the form of commands and preference pages.
2025-04-29 19:06:16 -05:00
wandererfan a925595232 [TD]Lint brushing 2025-04-29 09:22:11 -04:00
Chris Hennes 1bf21f85bd Merge pull request #20874 from 3x380V/main-cleanup
Main: cleanup
2025-04-29 07:20:12 -05:00
Andrea 8cc1565dcb remove unnecessary InitApplication.h inclusion
The InitApplication library was being unnecessarily imported into some C++ files
2025-04-29 07:14:58 -05:00
Ralf Habacker 21a5261345 BIM: Fix Python syntax error
Due to the use of an incorrect exponentiation operator the following
exception was triggered when changing attributes of a wave profile:

TypeError: Unsupported operand type(s) for ^: 'float' and 'float'

fixes #21048
2025-04-29 07:14:17 -05:00
Roy-043 56d75c2c06 Draft: store 3 ShapeString parameters and remove font from prefs (#21054)
* Draft: store 3 ShapeString parameters and remove font from prefs

With this PR 3 ShapeString parameters are stored:
* ShapeStringFontFile: this replaces the old FontFile parameter.
* ShapeStringHeight
* ShapeStringText

The ShapeStringFontFile is just the last selected font file and not exposed in the Preferences editor.

Additionally:
* Changed the label of the text input box from "String" to "Text".
* Changed the label of the point reset button to sentence case.

* Remove faulty docstring
2025-04-29 07:13:17 -05:00
Ladislav Michl 8a0f94d59f Main: unistd.h is not needed 2025-04-29 07:33:37 +02:00
Ladislav Michl 0276ff13f5 Main: output exception stream directly to stdout
printf is used to output formated stringstream. Not only introductory
information is somewhat repeated, but text can be sent directly to
standard output.
2025-04-29 07:33:37 +02:00
Ladislav Michl 2bae2a3242 Main: create QString from std::string directly 2025-04-29 07:33:37 +02:00
Ladislav Michl 0876b850f0 Main: use inGuiMode() consistently
Dialogs to show exception follow different logic than presenting
gui itself. Unify that.
2025-04-29 07:33:18 +02:00
Ladislav Michl 2feb0c92c9 Main: inGuiMode() helper 2025-04-29 07:33:05 +02:00
Chris Hennes 9a5f96ac0b Merge pull request #21007 from ickby/FEM_post_fixes
Fem post fixes
2025-04-28 21:19:43 -05:00
Stefan Tröger 4479fd4d2d FEM: correct typos 2025-04-28 20:52:47 -05:00
wandererfan ee2b3cae4e [TD]Add check for invalid section coordinate system 2025-04-28 19:15:58 -04:00
wandererfan c33fe5f274 [TD]improve ComplexSection handling of bad section normal choice 2025-04-28 19:15:58 -04:00
captain0xff 101da159ec Gui: rename TaskCSysDragger to TaskTransform 2025-04-28 23:30:14 +02:00
Stefan Tröger 2c40c8291c FEM: Post task dialog opens transaction only if none is pending. Fixes item 4 in #20263 2025-04-28 18:45:05 +02:00
Stefan Tröger 95e3c08840 FEM: Add post pipeline for check analysis type. Fixes #20936 2025-04-28 18:45:05 +02:00
Stefan Tröger c5c38a4a12 FEM: Ensure finite frame values only. Fixes #20933 2025-04-28 18:45:05 +02:00
Stefan Tröger 6cc83f470e FEM: Fix post object load of unsupported VTK data type 2025-04-28 18:45:05 +02:00
tetektoza 8d6547d519 BIM: Allow CurtainWall to have Window being assigned upon Remove/Add ops
Currently user has no possibility to insert Window to the host, if the
host is a Curtain Wall.

Solution is simple - just populate the array of acceptable hosts that
haven't been extended.

NOTE: Although this feels wrong, I've noted to change it as having some
kind of an internal flag allowing for add/remove for the host, since
extending this array looks like a really bad approach.
2025-04-28 18:20:16 +02:00
Graic 8d2cb99712 Gui: Added classic trackball orbit style (#20535)
* Gui: add classic trackball orbit

* Gui: add rounded arcball orbit
2025-04-28 11:12:53 -05:00
Ajinkya Dahale 350a416708 Sketcher: Avoid an unnecessary geometry update when trimming 2025-04-28 11:11:57 -05:00
bofdahof 21f7e7eb86 Amend script so that it works on macOS 2025-04-28 11:02:58 -05:00
Jackson Oursland fe9ac47c6b CI: Check file name case sensitivity in lint workflow. (#20903) 2025-04-28 11:01:21 -05:00
Roy-043 ea6a30efba Draft: Add Global mode to ShapeString task panel
This PR adds the Global mode option to the ShapeString task panel.

Additionally:
* Rounding of coordinates caused by reading values from the task panel is avoided.
* Improved task panel layout: Height input above String input.
* Some code reformatting.
2025-04-28 17:57:41 +02:00
dependabot[bot] ca5bfb17c0 Bump actions/download-artifact from 4.2.1 to 4.3.0
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.2.1 to 4.3.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/95815c38cf2ff2164869cbab79da8d1f422bc89e...d3f86a106a0bac45b974a628896c90dbdf5c8093)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 10:50:43 -05:00
João Neves 0d38b2f7c5 Core: Fixed a bug where an empty document disappears (#20554)
* Core: Fixed a bug where an empty document disappears

Created a flag named autoCreated to distinguish an autoCreated
document created in the startup from a manually document.
Implemented a setter and a getter for this new flag.
Added a codition that verifies if a document is autoCreated
when opening another document to close it in the correct case.
Implemented unit tests for theses cases. Fixes #19868.

Signed-off-by: João Neves <joao.antonio.neves@tecnico.ulisboa.pt>

* Tests: Fix failing auto-created document tests

Signed-off-by: João Neves <joao.antonio.neves@tecnico.ulisboa.pt>

* Tests: moved created tests to the existing Document test framework.

Signed-off-by: João Neves <joao.antonio.neves@tecnico.ulisboa.pt>

---------

Signed-off-by: João Neves <joao.antonio.neves@tecnico.ulisboa.pt>
2025-04-28 10:46:52 -05:00
Furgo 9c1e3d8bc5 BIM: BIM_TDView, add tooltip info on how to insert the view on a particular page (#20932)
* BIM: add tooltip info on how to insert the view on a particular page

* Fix typo

* BIM: split tooltip comment for better code readability

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

---------

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-04-28 17:46:09 +02:00
Bas Ruigrok 5765f416ca Gui: MayaGesture navigation fixes (#20948)
* Gui: Gesture and MayaGesture style disable H key in editing mode

* Gui: MayaGesture style go back to IDLE after dragging/panning/zooming

* Gui: MayaGesture more Maya like zoom behavior
2025-04-28 10:45:21 -05:00
J-Dunn 28620363fd CAM: Remove comment (#20931)
* Update helix.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-04-28 10:39:57 -05:00
tarman3 b9ed43f222 CAM: Fix array warning 2 2025-04-28 10:38:24 -05:00
David Carter a6ffcf63b6 Materials: Model Manager External Interface (#20825)
* Materials: Model Manager External Interface

Implement the ModelManagerExternal class for the external Materials
interface.

This is part of the ongoing merges of code to support external material
interfaces. In this PR the ModelManagerExternal class is implemented,
along with changes to supporting classes required for this class.

* Apply reviewer feedback
2025-04-28 10:29:04 -05:00
muezabdalla 56d3ca7b72 making the buttons of the temperature constrain expandable (#20894) 2025-04-28 10:11:40 -05:00
paul ed85cd3a5d [ArchStairs] ArchSketch Support and Refactoring Phase 2 (#21025)
* [ArchStairs] ArchSketch Support and Refactoring Phase 2

Phase 2 Subsequent to https://github.com/FreeCAD/FreeCAD/pull/20069

FC Forum Discussion:-
https://forum.freecad.org/viewtopic.php?p=814274#p814274

ArchSketch Support, PropertySet, and Refactoring to enable more complex Stairs shape.

* [ArchStairs] ArchSketch Support and Refactoring Phase 2 - Typo fix

* [ArchStairs] ArchSketch Support and Refactoring Phase 2 - Clean up Tab
2025-04-28 10:04:40 +02:00
Roy-043 0d6a07728a BIM: Update working plane related code
Some code stemming from the old BIM external workbench still used `FreeCAD.DraftWorkingPlane`.
2025-04-28 10:01:35 +02:00
Luz Paz 4619ab1bff Misc: Fix various typos
Found via codespell
2025-04-27 19:32:19 -05:00
tetektoza b138276a15 Core: Introduce PDF Import-Export dialog (#20860)
* Core: Introduce PDF Import-Export dialog

Currently, we only have hardcoded exporting to one pdf version, which
leads to (as in one of the below issues) to problems, such as
non-transparent layers, which are by default not supported in PDF/A-1b.

So, this patch adds an option to the user to select their preferred PDF
version by introducing new dialog under Import-Export in Preferences,
and allowing to update that version before exporting.

* Core: Add informational messages regarding selected PDF format

* Gui: Handle Qt < 6.8 unsupported PDF format

* Gui: Switch PDF export prefs dialog to use tr()

* Gui: Remove center alignment of PDF version description

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-04-27 19:31:34 -05:00
bofdahof 1155f0d752 Base: simplify UnitsSchemas management
Fixes: Maintaining schemas is difficult and error-prone

- Facilitate easy schemas add, remove, change, etc.
- Remove 14 files containing approx 2,190 lines of if/else code and data
- Place data in one file (UnitsSchemasData.h) using a normalized structure (including special functions)
- Isolate and simplify data operations (code)
- Remove schemas enum to keep data independent of code
- Separate responsibilities: Specifications, data, schemas, schema
- Add schema data 'isDefault'
- Add schema data name
- Prefer algorithms to raw loops
- Add schemas unit tests
- Tweak quantity unit tests
2025-04-27 00:45:54 +02:00
Ladislav Michl ef6f60510a Test: fix MaterialTestCases failing on unicode character output 2025-04-27 00:45:54 +02:00
bofdahof fc729762b0 Test: fix typo in UnitTests 2025-04-27 00:45:54 +02:00
bofdahof ab4ede8b6d TechDraw: refactor DimensionFormatter 2025-04-27 00:45:53 +02:00
bofdahof 30fd8d6d60 Sketcher: refactor EditModeConstraintCoinManager::getPresentationString 2025-04-27 00:45:53 +02:00
bofdahof aef1082983 Gui: simplify fractional inch option visibility in DlgSettingsGeneral 2025-04-27 00:45:53 +02:00
bofdahof 65a1742f95 Gui: reformat DlgProjectInformationImp.cpp 2025-04-27 00:45:53 +02:00
bofdahof 77f4515963 Base: refactor QuantityPy class 2025-04-27 00:45:47 +02:00
bofdahof 7c5ce9d256 Base: cleanup Quantity class 2025-04-27 00:42:47 +02:00
Ladislav Michl 47c1565edf Base: remove explicit namespace-name qualifier from *PyImp.cpp
Explicit Base namespace-name is used randomly across PyImp sources.
Remove it.
2025-04-27 00:05:32 +02:00
Ladislav Michl 24d55dc616 Base: cleanup includes in *PyImp.cpp
Sort includes and implicitely add missing ones. While there
consistently explain where generated files some from.
2025-04-27 00:05:32 +02:00
Kacper Donat b14d3a224b Misc: Replace dynamic_cast with qobject_cast 2025-04-26 14:23:25 +02:00
Kacper Donat f2cd99c50a Material: Replace dynamic_cast with qobject_cast 2025-04-26 14:23:25 +02:00
Kacper Donat c704622605 Sketcher: Replace dynamic_cast with qobject_cast 2025-04-26 14:23:25 +02:00
Kacper Donat 119dc079c1 Spreadsheet: Replace dynamic_cast with qobject_cast 2025-04-26 14:23:25 +02:00
Kacper Donat 216166d853 TechDraw: Replace dynamic_cast with qobject_cast 2025-04-26 14:23:25 +02:00
Kacper Donat 6e2583cdcd Gui: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat d586447a7d Sketcher: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat 4487dc84a0 Fem: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat ecdadf7955 Part: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat f2c3b19198 Spreadsheet: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat 5738341584 Robot: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat b5119d996b PartDesign: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat d9d518f905 TechDraw: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat 81c772938e Mesh: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat 6d99872b0f Assembly: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat 76013ab7e0 Points: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat 7accf81bbe App: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat 019a25ad75 Surface: Add missing SurfaceExport in Surface classes 2025-04-26 14:23:25 +02:00
Kacper Donat caa841c960 Part: Add missing PartExports in Part Features 2025-04-26 14:23:25 +02:00
Kacper Donat 01241245a1 Merge pull request #20732 from furgo16/bom-properties
Assembly: enable BOM columns to be autopopulated with given properties
2025-04-25 23:22:49 +02:00
Syres916 b2a9f0f7d2 [Gui] Fix bottomRight index by correcting last row count 2025-04-25 17:50:11 +02:00
aprospero 5f8eac49f3 importSVG - Path generation Overhaul (#20749)
* add precision Parameter for importSVG to preferences

* rewrite svgpath import

reorganize the existing svg interpretation code snippets by dividing the responsibilities for data provision and actual shape generation.
That bears the opportunity to optimize the resulting construction data regarding consistency and precision.

* create cuts from inner paths

organize paths in a tree structure where completely contained paths are children of their sorrounding paths

In a second step the even depth paths are cut with their respective (uneven depth) children.

* move svg path import logic into its own module

* Restructure how the import result is controlled by preferences.

* reintroduce alternative transform function

Using transformGeometry() on shapes results in degenerations like lines mutating to bsplines of 1st order. For non-orthogonal Transformations this can't be avoided. But for orthogonal transformations (the majority) we can apply those transformations without degeneration.

The necessary function including fallback to transformGeometry() is already in the code but was disabled due to a regression.

See: https://tracker.freecad.org/view.php?id=2062

Associated commits: f045df1e 2509e59b d4f3cb72

I reactivate the code since the degeneration of paths seems a bigger issue to me than misformed svg files producing incorrect measurements. Degenrated paths are often the culprit for later arising 3D-calculation errors.

* avoid path degeneration by keeping scale transformations uniform

* repair style application on shapes

the style should be based on the configured svgstyle mode in the svgimport preferences.

* improve logging of face generation.

* refactor: rename _precision_step to _tolerance

naming according to example set in draft utils.

* fix: indentation

* spelling
2025-04-25 16:44:03 +02:00
Roy-043 8487ec7e1d BIM: Hidden objects used for variant Links should not be hosted
If a window is a variant Link there will be a hidden source object in the document. That hidden object shares properties with the visible Link object. The Hosts property may be one of them, yet the hidden object should never be hosted.

Forum topics:
https://forum.freecad.org/viewtopic.php?p=817743#p817743 (sample file)
https://forum.freecad.org/viewtopic.php?t=96115 (code discussion)

To test the code:
1. Open the mentioned sample file.
2. Change the Hosts property of  Window001 to Wall.
3. Recompute.
2025-04-25 15:07:35 +02:00
paul 39afedb077 [BimWindow] Integrate Interactive Creation Tool with SketchArch Parametric Attachment Feature (#20872)
Improvement to User Interactive Experience:
- Now with the stock BIM Window Interactive Tool and SketchArch-addon, the required SketchArch parametric placement information of an Arch Object (Window currently) are automatically completed, no more manual input is required.

FreeCAD Forum Discussion:
- https://forum.freecad.org/viewtopic.php?p=822493#p822493

YouTube Demo:
- https://youtu.be/BNZFk03_eGE
2025-04-25 15:05:51 +02:00
Roy-043 fc90443b98 BIM: Improve grid handling for some commands (#20658)
* BIM: Improve grid handling for some commands

The updated commands did not handle the 2 grid options ("always", "only during commands") correctly. The proposed code follows the example of BimWall.py and ArchStructure.py where this issue has already been addressed.

* Rebase
2025-04-25 14:59:33 +02:00
Ladislav Michl 986a3b4f7a Base, Gui: remove lefovers from xml -> pyi conversion 2025-04-25 11:57:24 +02:00
Kacper Donat 5a2c107608 App: Fix inheritance information for PropertyEnumeration
For some reason PropertyEnumeration in our type information system was
said to be inherited from App::PropertyInteger, wich is not the case.
This commit fixes that mistake.
2025-04-25 11:12:11 +02:00
Kacper Donat 7f69ca2803 github: Remove description header
If PR consists of one commit with long description, github does put it
as the first lines of PR so above our header, it can result in inconsistencies.
The header is also needlessly duplicated in every PR preview.
2025-04-24 21:07:08 -05:00
Furgo c567ed60cf Assembly: BOM, handle enumerations as well 2025-04-25 01:53:11 +02:00
Kacper Donat 2ea84bc336 CMake: Detect changes in .pyi file with the same name 2025-04-24 16:40:24 -05:00
Kacper Donat 2a5114f2d3 CMake: Rebuild .cpp/.h files from .pyi on build 2025-04-24 16:40:24 -05:00
Alex Neufeld d377d43de5 Gui: Use a perceptually uniform color map for Std_RandomColor
Using a restricted set of colrs with uniform lightless improves
the appearance of assemblies with randomly-colored parts.
2025-04-24 21:03:18 +02:00
sliptonic aec251427e move PR template to ./github 2025-04-24 18:30:44 +02:00
dependabot[bot] fe1eb66803 Bump github/codeql-action from 3.28.15 to 3.28.16
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.15 to 3.28.16.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/45775bd8235c68ba998cffa5171334d58593da47...28deaeda66b76a05916b6923827895f2b14ab387)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-24 09:51:51 -05:00
Florian Foinant-Willig d23d3d7ac1 Add locked keyword to Document::addProperty 2025-04-24 16:03:34 +02:00
Furgo cfe797e8f8 Assembly: BOM, use getUserString to simplify code 2025-04-24 14:20:35 +02:00
Furgo 59ea0d6e84 Assembly: BOM, use freecad_cast 2025-04-24 14:20:35 +02:00
Furgo 04af6c5b37 Assembly: BOM, support superset property type only 2025-04-24 14:20:35 +02:00
Furgo d4925e7a04 Assembly: BOM, apply suggestion: do not copy baseName
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-04-24 14:20:35 +02:00
Furgo 3b295f9d43 Assembly: BOM, internationalize strings 2025-04-24 14:20:35 +02:00
Furgo 47b7ae9813 Assembly: BOM properties, update help message 2025-04-24 14:20:35 +02:00
Furgo 57c5b1f987 Assembly: BOM custom columns can now return property values 2025-04-24 14:20:35 +02:00
Roy-043 a1b22388a8 Merge pull request #20952 from Roy-043/Draft-Change-Chain-Mode-GUI-text-to-sentence-case
Draft: Change 'Chain Mode' GUI text to sentence case
2025-04-24 10:51:59 +02:00
Roy-043 262f8d49fe Draft: Change 'Chain Mode' GUI text to sentence case 2025-04-24 10:10:18 +02:00
Chris Hennes fa8bab60ca CI: Update to LibPack 3.1.1.3 2025-04-24 08:36:05 +02:00
Monty Montgomery 0a3677b9eb Fix to sanity checking of ElementMap::restore()
An operator precedence error in new sanity checking code within
ElementMap::restore() causes <X>.Shape.Map.txt files with more than
2 element maps to be rejected as invalid.  This silently corrupts
projects upon loading, potentially unrecoverably.

The preexisting code comment is still appropriate if ironic.
2025-04-23 17:19:32 -05:00
dependabot[bot] 286b4d6cc0 Bump step-security/harden-runner from 2.11.1 to 2.12.0
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.11.1 to 2.12.0.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/c6295a65d1254861815972266d5933fd6e532bdf...0634a2670c59f64b4a01f0f96f84700a4088b9f0)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-23 16:49:34 -05:00
Pieter Hijma 1136bc91f8 Gui: Fix value field for DlgAddPropertyVarSet (#20824)
* Gui: Fix value field for DlgAddPropertyVarSet

The value field would only appear if a name was provided resulting in a
strange user experience.  This commit fixes this and simplifies the
logic of the dialog.

* Process comments from review

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-04-23 22:50:03 +02:00
Furgo bf19a8917f TechDraw: Add BIM view with the page's scale (#20934)
* TechDraw: Add BIM view with the page's scale

* Fix if one-liner syntax
2025-04-23 19:31:57 +02:00
Roy-043 d4dcda1693 Draft: adjust formatting of params.py (#20946) 2025-04-23 19:16:40 +02:00
Roy-043 ed4dfba2a7 Draft: adjust formatting of params.py 2025-04-23 17:03:07 +02:00
tetektoza 5243c4a664 TechDraw: Use static_cast when casting scene's child to TextField 2025-04-23 16:32:31 +02:00
tetektoza b4214fdde6 TechDraw: Return text fields directly as childs of QGISVGTemplate
As the title says. I've noticed during reproducing of #18921, that
after in `PagePrinter::renderPage` we call `setTemplateMarkers`
twice, which results in deleting `childItems` allocated memory
(in `setTemplateMarkers`->`setMarkers`->`updateView`->`clearClickHandles`),
and then we are calling `setTemplateMarkers` (also in `PagePrinter::renderPage`) second time,
accessing `textFields` in `setMarkers` method, which still contain hanging pointers
from the previous deallocation. This results in segfaults as we iterate through `textFields`.

So, instead of keeping sychronization between childs of QGISVGTemplate
and textFields vector - this patch removes this variable at all and uses
childs directly to return text fields.
2025-04-23 16:32:31 +02:00
Abdelhadi Wael 4ff9cb343e Remove filter excluding Spreadsheet objects 2025-04-22 21:37:17 -05:00
Abdelhadi Wael 9000948f6b Update src/Gui/CommandStructure.cpp
Co-authored-by: Florian Foinant-Willig <FlachyJoe@users.noreply.github.com>
2025-04-22 21:37:17 -05:00
Abdelhadi Wael 13be1ad37f Update CommandStructure.cpp 2025-04-22 21:37:17 -05:00
Abdelhadi Wael c9df6e5691 Update src/Gui/CommandStructure.cpp
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-04-22 21:37:17 -05:00
Abdelhadi-Wael 1b08dbddf0 fixed warning 2025-04-22 21:37:17 -05:00
Abdelhadi Wael ffaf2c22a2 Updated PR with fixes 2025-04-22 21:37:17 -05:00
Abdelhadi Wael de4e43e6da Fix: Only add objects when multiple are selected 2025-04-22 21:37:17 -05:00
Pieter Hijma f74a8b9210 Remove requirements.txt 2025-04-22 20:28:27 -05:00
Kacper Donat efbfa34aa1 Merge pull request #20778 from FlachyJoe/LockedProperty2
Prevent user to remove core properties
2025-04-23 00:23:37 +02:00
Lawrence Woestman 8cb1f6fc1c CAM: Fix tool change output errors, with tests 2025-04-22 14:57:45 -07:00
Pieter Hijma 8fb9cbfa3e [Core] Make enum FrameOption boolean
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-04-22 23:56:07 +02:00
Pieter Hijma 4650f426d4 [Core] Enable a frame in VarSet dialog value field
The Add Property Dialog for VarSets creates an editor based on the type.
This editor has no frame by default because it is mostly used in the
property view as part of a table.  With this change we enable the frame
for the editor (the value field)
2025-04-22 23:56:07 +02:00
Pieter Hijma 50bf1cf120 [Core] Allow creating an editor with a frame
The default is to not have a frame as is custom before this change.
2025-04-22 23:56:07 +02:00
Florian Foinant-Willig a7331cbb43 TemplatePyMod: Prevent user to remove core properties 2025-04-22 23:52:17 +02:00
Florian Foinant-Willig 3de57e50c2 Points: Prevent user to remove core properties 2025-04-22 23:52:17 +02:00
Florian Foinant-Willig d6dd100266 PartDesign: Prevent user to remove core properties 2025-04-22 23:52:17 +02:00
Florian Foinant-Willig 1ae550f6f4 Part: Prevent user to remove core properties 2025-04-22 23:52:17 +02:00
Florian Foinant-Willig 286483ff7d OpenSCAD: Prevent user to remove core properties 2025-04-22 23:52:17 +02:00
Florian Foinant-Willig 8a733f450b Measure: Prevent user to remove core properties 2025-04-22 23:52:17 +02:00
Florian Foinant-Willig 6555bdc83c Fem: Prevent user to remove core properties 2025-04-22 23:52:17 +02:00
Florian Foinant-Willig 19c125e898 Draft: Prevent user to remove core properties 2025-04-22 23:52:17 +02:00
Florian Foinant-Willig 4a61a49456 BIM: prevent user to remove core properties 2025-04-22 23:52:17 +02:00
Florian Foinant-Willig b41b294292 Assembly: prevent user to remove core properties 2025-04-22 23:52:17 +02:00
Florian Foinant-Willig 31781a0f43 Add locked keyword to ViewProvider::addProperty 2025-04-22 23:52:17 +02:00
Florian Foinant-Willig 257ea040f8 Add locked keyword argument to DocumentObject::addProperty 2025-04-22 23:52:17 +02:00
Pieter Hijma 01effaaab0 [Gui] Fix "Select dependent objects" with cycles
Doing "Add dependent objects to selection" in the context menu of an
object that has cyclic dependencies triggered an infinite recursive
loop.  This has been solved by using the function to get an outlist
recursively.
2025-04-22 17:23:38 -03:00
3x380V 54549a4a96 Fix SolverCalculiX object refactor (#20913)
Rename original SolverCalculix.ui to SolverCcxTools.ui to prevent
collision on case insensitive filesystems.

Fixes: 4f7a835e22 ("Fem: SolverCalculiX object refactor")
2025-04-22 16:53:58 -03:00
Lawrence Woestman 202c84f73d Merge branch 'main' of https://github.com/FreeCAD/FreeCAD into refactor 2025-04-22 11:17:18 -07:00
Pieter Hijma 84b57d67b5 [Doc] Process comments from review
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-04-22 13:42:50 +02:00
Pieter Hijma 108dafb89d [Doc] Improve documentation PropertyContainer 2025-04-22 13:42:50 +02:00
Pieter Hijma 073bf5d0f3 [Doc] Add documentation top-level namespace App 2025-04-22 13:42:50 +02:00
Jackson Oursland 3b89cd2376 pixi: Match developer dependencies with weekly build and update. (#20711) 2025-04-21 20:56:33 -03:00
theo-vt 774ec2cc93 PartDesign: Center holes on sketch points as well as circles and arcs (#20583)
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-04-21 23:30:57 +02:00
Kacper Donat 9aad08a646 Sketcher: Remove not-needed print statements 2025-04-21 15:08:33 -05:00
Chris Hennes 4428ba3bf2 Start: Apply reviewer suggestion
Co-authored-by: Pieter Hijma <pieterhijma@users.noreply.github.com>
2025-04-21 21:21:52 +02:00
Chris Hennes 42cd4d76f2 Start: Refactor f3d to use worker threads 2025-04-21 21:21:52 +02:00
Adrian Insaurralde Avalos da35868b96 Start: refactor f3d previews, use caching and configurable f3d path 2025-04-21 21:21:52 +02:00
MaxiV c8411bdbba Start: Switch to using QProcess, not std::system 2025-04-21 21:21:52 +02:00
MaxiV a2055d7b90 Start: add f3d previews 2025-04-21 21:21:52 +02:00
FilippoR fd390acd53 App: cmake: add missing Coin_INCLUDE_DIR after #20487 (#20863) 2025-04-21 15:01:03 -03:00
Frank Martinez 23190abeb2 [Core] Fix Color transparency misinterpretation 2025-04-21 11:12:37 -05:00
dependabot[bot] 682f9bce5b Bump github/issue-metrics from 3.1.1 to 3.18.4
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.1.1 to 3.18.4.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](https://github.com/github/issue-metrics/compare/4f29f34d9d831fe224cbc6c8a0d711415ebd01b1...ed6e4b2b46f44ec7cdd2f6c145757a67a07ecf5b)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.18.4
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 11:04:34 -05:00
dependabot[bot] 0924225aa4 Bump peter-evans/create-issue-from-file from 4.0.1 to 5.0.1
Bumps [peter-evans/create-issue-from-file](https://github.com/peter-evans/create-issue-from-file) from 4.0.1 to 5.0.1.
- [Release notes](https://github.com/peter-evans/create-issue-from-file/releases)
- [Commits](https://github.com/peter-evans/create-issue-from-file/compare/433e51abf769039ee20ba1293a088ca19d573b7f...e8ef132d6df98ed982188e460ebb3b5d4ef3a9cd)

---
updated-dependencies:
- dependency-name: peter-evans/create-issue-from-file
  dependency-version: 5.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 11:04:08 -05:00
Chris Hennes 813dc84c65 Merge pull request #20609 from marioalexis84/fem-ccx_refactor
Fem: SolverCalculiX refactor - Add option to import results as pipeline - Fixes #20541
2025-04-21 11:01:23 -05:00
Chris Hennes 318e0a6c45 Merge pull request #20835 from oursland/python-binding-generator-const
python: Make const methods declared const in C++.
2025-04-21 10:58:21 -05:00
Lothaire Sicot 766ee41b55 Sketcher: Prevent bad constraint names (#20717)
* Sketcher: Prevent bad constraint names

Ensures the constraint names only contains alphanumericals and
underscores so that they can always be used in expressions.
That way, there cannot be any unicode character or quotes that
would need to be escaped.

Fixes: https://github.com/FreeCAD/FreeCAD/issues/19767

* Add helper function to check constraint names

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

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

---------

Co-authored-by: Lothaire Sicot <lothaire.sicot@telecom-paris.fr>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-04-21 17:53:37 +02:00
Florian Foinant-Willig 065a8a2226 Core: Part::PartFeature should be Part::Feature 2025-04-21 10:51:15 -05:00
Luz Paz 6735b0c73d FEM: fix source typos
ConstraintDisplacmentPrescribed → ConstraintDisplacementPrescribed
FemConstraintDisplacment → FemConstraintDisplacement
2025-04-21 10:12:49 -05:00
mosfet80 f5ef245eb2 Update sub_lint.yml
removing non-existent folders
2025-04-21 10:12:17 -05:00
marcuspollio 44d3d677eb BIM: cleanup encoding 2025-04-21 10:10:26 -05:00
Alfredo Monclus 70007a28c1 refactor: add disambiguation to clearance hole names and use names from the standard (#19869)
* PD: refactor: threadFit use standard naming and add disambiguation

* PD: fix: do not use variables for tr
2025-04-21 09:54:23 -05:00
sliptonic ebd9eb5d6d Merge pull request #20888 from tarman3/movearea
CAM: Increased moveEye in New Simulator
2025-04-21 09:30:50 -05:00
sliptonic 3c1f7b923e Merge pull request #20840 from tarman3/cam-toolbar
CAM: Dressup combined menu in toolbar
2025-04-21 09:28:23 -05:00
sliptonic 0749068c09 Merge pull request #18880 from dbtayl/adaptive_roughing
[CAM] Adaptive roughing/overhang detection
2025-04-21 09:21:13 -05:00
Roy-043 6082a0844c Draft: close task panels on doc close
Related: #17952.

This PR introduces a document observer to close task panels on doc close.

For now it is for the Draft Workbench only. The BIM Workbench will be dealt with in a future PR.

The basic code is simple, but to make things works some additional things were addressed:
* gui_base.py: the GuiCommandBase class was enhanced to handle App.activeDraftCommand, self.doc, self.view and self.planetracker. Strictly speaking only the first 2 are required for this PR.
* gui_base.py: self.command_name was changed to self.featureName for compatibility with gui_base_original.py. Not required for this PR.
* gui_arcs.py, gui_circulararray.py, gui_polararray.py and gui_orthoarray.py: updated in relation to the GuiCommandBase class.
* gui_arcs.py Arc_3Points: The command now has a ui property and shows a plane tracker. Only the first is required for this PR.
* gui_shapestrings.py: This command had two ui attributes: self.ui and self.task. This was problematic. To fix this the base class of the command was changed from gui_base_original.Creator to gui_base.GuiCommandBase. As a result the getStrings method is no longer available meaning that the useSupport parameter is ignored when creating a ShapeString. But since that mechanism does not work properly anyway, I feel that this is acceptable. Should many user complain the functionality can of course be reintroduced.
2025-04-20 22:53:52 -05:00
Chris Hennes 2883b53e2f CI: Update to LibPack 3.1.1.2 2025-04-20 12:51:55 -05:00
tarman3 6074d7c24b CAM: Increased moveEye in New Simulator 2025-04-20 14:53:14 +03:00
tetektoza e9f2e8fe92 Sketcher: Auto-scroll to selected geometry elements (#20866)
* Sketcher: Auto-scroll to selected geometry elements

Currently if user selects a geometry element on sketch, listview is not
scrolling to it.

So, this patch moves the previously added logic to constraints into a
separate helper function call and calls it for Geometry Elements as
well, resulting in scrolling in both lists - constraints and elements.

* Sketcher: Add QListWidget to enable QListWidget symbols for CI
2025-04-19 15:10:13 +02:00
pre-commit-ci[bot] 58851e89e3 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-04-18 22:31:35 +00:00
Samuel 7be1af1a4a Merge branch 'main' into cam-postprocessor-errors 2025-04-19 00:29:33 +02:00
Samuel Abels 4e75b8cc89 fix KineticNCBeamicon2_post script crash 2025-04-19 00:25:43 +02:00
Samuel Abels 0105dcd468 CAM: fix invalid syntax in snapmaker_post that caused test warnings 2025-04-19 00:25:34 +02:00
captain0xff f60a0a39f2 Gui: forward declare SoTransformDragger in ViewProviderDragger.h 2025-04-19 00:24:46 +02:00
dependabot[bot] 8af66be018 Bump ossf/scorecard-action from 2.4.0 to 2.4.1
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.0 to 2.4.1.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](https://github.com/ossf/scorecard-action/compare/62b2cac7ed8198b15735ed49ab1e5cf35480ba46...f49aabe0b5af0936a0987cfb85d86b75731b0186)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  dependency-version: 2.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-18 17:13:37 -05:00
tetektoza 2a983b587d Draft/BIM: Change Continue behavior and caching among commands (#20748)
* Draft: Cache ContinueMode setting for every tool separately

Currently ContinueMode is done to be held globally, so this patch
changes this to cache it inside `user.cfg` for every cmd separately.

* Draft: Add Chained Mode option for Dimension

Added new option under Dimension, although this is simply porting the
existing logic of "Continue" under "Chained Mode", whereas allowing
existing "Continue" mode to retrigger the command instead of placing
Dimensions in a chain.
2025-04-18 17:56:21 +02:00
Chris Hennes 56421bf73d Merge pull request #20822 from oursland/weekly-build-dependencies
CI: update weekly build dependencies.
2025-04-18 09:46:14 -05:00
jalapenopuzzle 2266dd2875 Merge branch 'main' into jalapenopuzzle/cam_snapmaker_machine_types 2025-04-18 22:05:47 +10:00
Jackson Oursland 5fd17d8dd1 Merge branch 'main' into weekly-build-dependencies 2025-04-17 23:12:20 -07:00
Jackson Oursland 6be09c29f6 App: Use the legacy macOS version functionality for About FreeCAD dialog (#20858) 2025-04-18 06:41:18 +02:00
dependabot[bot] 858ea60b37 Bump configparser from 5.3.0 to 7.2.0
Bumps [configparser](https://github.com/jaraco/configparser) from 5.3.0 to 7.2.0.
- [Release notes](https://github.com/jaraco/configparser/releases)
- [Changelog](https://github.com/jaraco/configparser/blob/main/NEWS.rst)
- [Commits](https://github.com/jaraco/configparser/compare/v5.3.0...v7.2.0)

---
updated-dependencies:
- dependency-name: configparser
  dependency-version: 7.2.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-17 22:19:39 -05:00
dependabot[bot] da47f63885 Bump packaging from 23.0 to 24.2
Bumps [packaging](https://github.com/pypa/packaging) from 23.0 to 24.2.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/23.0...24.2)

---
updated-dependencies:
- dependency-name: packaging
  dependency-version: '24.2'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-17 22:11:37 -05:00
dependabot[bot] 336df3dc1c Bump prefix-dev/setup-pixi from 0.8.3 to 0.8.8
Bumps [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi) from 0.8.3 to 0.8.8.
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](https://github.com/prefix-dev/setup-pixi/compare/v0.8.3...19eac09b398e3d0c747adc7921926a6d802df4da)

---
updated-dependencies:
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.8.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-17 22:32:49 +02:00
dependabot[bot] a807630e81 Bump debugpy from 1.6.7 to 1.8.14
Bumps [debugpy](https://github.com/microsoft/debugpy) from 1.6.7 to 1.8.14.
- [Release notes](https://github.com/microsoft/debugpy/releases)
- [Commits](https://github.com/microsoft/debugpy/compare/v1.6.7...v1.8.14)

---
updated-dependencies:
- dependency-name: debugpy
  dependency-version: 1.8.14
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-17 22:31:33 +02:00
Jacob Oursland 6da501282c CI: reduce disk usage on Ubuntu weekly build. 2025-04-17 11:22:01 -07:00
xtemp09 436b8242c5 [GUI] Layout fixes in DlgActions.ui
Closes #20821
2025-04-17 19:26:00 +02:00
Ajinkya Dahale 5efb8e5e76 Sketcher: Add check for validity of geometry when trimming
Possibly solves #19425.
2025-04-17 15:37:42 +02:00
Jacob Oursland 926757a258 Assembly: align parameter names between decl and impl. 2025-04-17 15:11:36 +02:00
Jacob Oursland ea7845f0fa Assembly: Remove unused headers. 2025-04-17 15:11:36 +02:00
Jacob Oursland c432b28ec2 Assembly: convert if-else to switch. 2025-04-17 15:11:36 +02:00
StepSecurity Bot f65896d403 [StepSecurity] Apply security best practices
Signed-off-by: StepSecurity Bot <bot@stepsecurity.io>
2025-04-17 11:58:01 +02:00
bofdahof 3e24dc6d8c Remove unused code: verbosity 2025-04-17 08:38:38 +02:00
pre-commit-ci[bot] 6135720a78 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-04-17 05:10:24 +00:00
tarman3 71088b00d7 CAM: Dressup combined menu in toolbar 2025-04-17 08:02:03 +03:00
Jacob Oursland 5436ff85e7 Assembly: declare python methods const. 2025-04-16 20:33:08 -07:00
Jacob Oursland bd9907a06d python: use const_cast<> to new() python types. 2025-04-16 20:32:04 -07:00
Jacob Oursland 5b81cd741a python: apply const method annotations to impls. 2025-04-16 20:32:04 -07:00
Jacob Oursland 605c094884 python: remove constmethod from non-const method. 2025-04-16 20:20:31 -07:00
Jacob Oursland fb528dd9fc python: Make const methods declared const in C++. 2025-04-16 20:19:41 -07:00
Tomas Polak c8eb231745 BIM change BIM_Setup dialogue default width 2025-04-17 00:28:51 +02:00
Benjamin Nauck a34c0cb093 TechDraw: Potential fix for snap builds, specify type.. again (#20831)
* TechDraw: Potential fix for snap builds, specify type

* Techdraw: Fix more toDegrees-issues
2025-04-17 00:19:26 +02:00
Max Wilfinger 5384fc5e76 Adding pull request GitHub template 2025-04-16 16:56:15 -05:00
Jacob Oursland b249aef831 CI: update weekly bundle scripts for Windows and Linux. 2025-04-16 12:34:44 -07:00
Jacob Oursland a1488970cd CI: update weekly build dependencies.
Fix broken dependencies for Windows, downgrade to Python 3.11 for compatibility with Blender, and add ifcopenshell.
2025-04-16 12:34:44 -07:00
xtemp09 23e4fe2d8e [Spreadsheet] Add usage of override cursor in SheetViewHeader (#20786)
* [Spreadsheet] Add usage of override cursor in SheetViewHeader

Closes #19863

* Update src/Mod/Spreadsheet/Gui/SheetTableView.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

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

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

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-04-16 20:42:24 +02:00
Florian Foinant-Willig 57b9a41335 PartDesign: Fix #20205 where Placement changes at Suppression 2025-04-16 20:39:58 +02:00
Benjamin Nauck d1a69d6ec5 TechDraw: Potential fix for snap builds, specify type 2025-04-16 17:28:11 +02:00
tarman3 d84d9c9bd1 CAM: Fix postprocessors Help arguments --postamble and --preamble (#20792) 2025-04-16 11:54:04 +02:00
Alex Tran 989a06ea63 App: Running FreeCAD in verbose mode information to reflect Gui -> Help -> About Dialog info (#20487) 2025-04-16 08:29:07 +02:00
Chris Hennes 4c09e6c3d9 CI: Update to LibPack 3.1.1 2025-04-15 22:39:14 -05:00
Jacob Oursland 7ef2448326 Revert "CI: weekly-build debug: do not upload tags or artifacts."
This reverts commit 0747a4f4a1.
2025-04-15 22:38:00 -05:00
Andrea e51e1a10d4 MOD: remove unused variable
the obj variable is not used inside the function
2025-04-15 23:32:31 +02:00
Jacob Oursland f32d102f9f CI: update weekly build dependencies for Linux. 2025-04-15 16:12:59 -05:00
Jacob Oursland a1adf51112 CI: make daily build occur every other hour on the odd hours. 2025-04-15 14:28:53 -05:00
PaddleStroke 82ae162d5f PartDesign: TaskFeaturePick : Fix LCS temporary visibility 2025-04-15 21:19:34 +02:00
Jackson Oursland 78360d443e CI: make daily build occur at 18:00 UTC. (#20814)
* CI: make daily build occur at 18:00 UTC.
2025-04-15 13:59:36 -05:00
Furgo efee3a34bf Stylesheets: fix undo button arrows on FreeCAD Dark/Light themes
Co-authored-by: MisterMakerNL <marijn82@gmail.com>
Fixes: #19372
2025-04-15 20:33:45 +02:00
PaddleStroke 755cabc5ba Sketcher: Refactor SketchObject::Fillet() (#20544)
* Sketcher: Refactor SketchObject::Fillet()

* Update Geometry.h

* Update Geometry.cpp

* Update SketchObject.cpp

* Fix line-circle tangent issue

* Replace M_PI

* Update Geometry.cpp

* Update Geometry.cpp

* Update src/Mod/Part/App/Geometry.cpp

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

* Update Geometry.cpp

---------

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-04-15 20:01:31 +02:00
Sameer Mishra 2768ce7933 BIM: Fix 'Convert to type' dialogue unhandled placeholder #20676 (#20705)
Handle %1 placeholder that was appearing in text strings
in the 'Convert to type' dialogue. This was affecting multiple
language files in the translation system.

This change improves the readability and correctness of the displayed text
in the application interface.

The dialog now dynamically shows the correct type (e.g., 'WallType', 'BeamType')
in the user's interface language.

---------

Co-authored-by: _sameer <sameer.mishra@infra.market>
2025-04-15 12:58:28 -05:00
Alfredo Monclus 2dcdd6ac01 Gui: inputfield only show invalid states 2025-04-15 13:52:33 +02:00
marioalexis 89eb6789c4 Fem: Update command FEM_SolverRun 2025-04-15 08:49:23 -03:00
marioalexis 1126723284 Fem: Add option to set data mode for SolverCalculiX 2025-04-15 08:49:23 -03:00
Jacob Oursland c56ae33493 CMake: use job pools to restrict number of concurrent compilers and linkers.
When using Ninja build system, CMake can specify job pools for number of concurrent compilers
and concurrent linkers.  This PR employes the heuristic of max number of compilers as available
physical ram / 1 GiB and a single linker instance to prevent using excessive RAM.  Modern
linkers are multithreaded and should not be run concurrently due to risk of resource exhaustion.
2025-04-15 13:04:22 +02:00
Jacob Oursland 7b759aae1a pixi: use clang on Linux.
clang uses considerably less memory on Linux allowing more concurrent instances than with g++.
Using clang reduced build times on a machine from 63m to 32m.
2025-04-15 13:04:13 +02:00
Kacper Donat ac02a9a39d Merge pull request #20747 from hyarion/refactor/use-toDegrees-and-toRadians
Use toDegrees and toRadians
2025-04-15 09:21:34 +02:00
Benjamin Nauck 22120fa597 Use Base::toDegrees() instead of manually converting 2025-04-15 07:16:39 +02:00
Benjamin Nauck f932c7e4e0 Use Base::toRadians() instead of manually converting 2025-04-15 07:16:36 +02:00
mosfet80 5a1cdcfd11 Update sub_buildPixi.yml
https://github.com/prefix-dev/setup-pixi/releases

https://pixi.sh/dev/CHANGELOG/
2025-04-15 06:46:27 +02:00
Jacob Oursland bc2aba9618 pixi: Use the mold linker on Linux. 2025-04-15 06:42:55 +02:00
Kacper Donat 61758e5786 Merge pull request #20713 from hyarion/refactor/tighten-up-tools
Tighten up types in Base/Tools.h math functions
2025-04-14 23:58:26 +02:00
Jackson Oursland 5875f0a90c CMake: set optimization of debug builds to -Og. (#20780)
* CMake: set optimization of debug builds to -Og.

* Update cMake/FreeCAD_Helpers/SetGlobalCompilerAndLinkerSettings.cmake

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

* Fix indentation level

---------

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-04-14 21:34:46 +00:00
Roy-043 31b0dbaa79 BIM: fix BIM_WPView command (#20741)
* BIM: fix BIM_WPView command

The BIM_WPView command did not work properly. This was mainly due to a faulty import.

* Updated to avoid a linter warning
2025-04-14 11:28:55 -05:00
Chris Hennes d0f09c3f2b Merge pull request #20549 from davesrocketshop/external_manager_pr
Material: Interface with an external module
2025-04-14 11:23:53 -05:00
Roy-043 2f39daf986 BIM: fix Arch_Schedule column width handling
Fixes #20723.

The clearAll method resets the column widths of the sheet. The code now stores the old widths and restores them after calling the method.

The old problem that the method would remove the custom property no longer occurs so that code was removed.
2025-04-14 11:21:26 -05:00
Bas Ruigrok 921620ba8a Use longest edge in face for horizontal/vertical alignment (#20374)
* App: Add second direction to getCameraAlignmentDirection()

* Part: Find longest face edge for horizontal/vertical alignment

* Gui: Use longest face edge for horizontal/vertical alignment

* App: Improve horizontal/vertical alignment for Datums and LCS
2025-04-14 11:20:49 -05:00
Chris Mayo d91b3e0517 CMake: Fix duplicating DESTDIR in Designer plugin installation path
CMake already handles DESTDIR.
2025-04-14 11:18:26 -05:00
PaddleStroke f9f76a2516 Sketcher: Refactor DrawSketchHandler::seekAutoConstraint (#20476)
* Sketcher: Refactor DrawSketchHandler::seekAutoConstraint

* to squash

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

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

* Update DrawSketchHandler.h

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

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

* move to protected. To squash

* remove arc of ellipse forgotten if

* Update DrawSketchHandler.cpp

* Update src/Mod/Sketcher/Gui/DrawSketchHandler.h

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>

* Update DrawSketchHandler.h

* Update DrawSketchHandler.cpp

* revert hitshapedir

* Remove never used if condition

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-04-14 11:15:00 -05:00
mosfet80 71317baa52 MOD: assembly clean (#20557)
* MOD: assembly clean

clean code

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

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

* Update AssemblyLink.cpp

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-04-14 11:05:55 -05:00
Roy-043 9dffe0d9b4 Draft: Simplify working plane view observer callback
The old callback contained unnecessary checks that prevented the working plane from working correctly if the Tray was missing.
2025-04-14 11:01:48 -05:00
Roy-043 681d056073 BIM: HorizontalArea prop did not detect islands
Forum topic:
https://forum.freecad.org/viewtopic.php?t=95973

This was fixed by using `Part::FaceMakerCheese`.
2025-04-14 11:00:40 -05:00
David Carter 09f71cb40d Dependencies: Add lru-cache library
Adds a generic C++ based caching library to support material external
modules. This is a template based library which means there is nothing
to build or link.

The only modification is to the CMakeLists.txt file to enable
integration with FreeCAD,

Original source: https://github.com/goldsborough/lru-cache
2025-04-14 11:00:05 -05:00
Benjamin Bræstrup Sayoc 393ab112e5 TechDraw: refactor click handles for editable fields
Fixes #19387
2025-04-14 10:46:09 -05:00
Chris Hennes 7ac21c5eff Merge pull request #20649 from pieterhijma/viewprovider-toggle-visibility
[Core] Allow setting visibility toggling in the ViewProvider
2025-04-14 10:45:14 -05:00
Roy-043 04c686b1d7 BIM: BIM_Leader would create a wire with fewer than 2 points
If the BIM_Leader was escaped without clicking a point, or after cicking only 1 point, a Draft_Wire object would still be created.
2025-04-14 10:34:13 -05:00
Jackson Oursland b8031f9205 Add cmake to Ubuntu package dependencies. (#20578) 2025-04-14 10:16:58 -05:00
tarman3 c4b1c830fe Fix typos in warning message 2025-04-14 14:20:20 +02:00
tarman3 cb9e87998a Less warning with Array DressUp 2025-04-14 14:20:20 +02:00
Jacob Oursland d56d902045 pixi: Unset CFLAGS, CXXFLAGS, DEBUG_CFLAGS, and DEBUG_CXXFLAGS.
pixi sets a variety of environment variables, which unfortunately includes compiler optimization flags.
This PR unsets the compiler flags for parity with other environments.

A consequence of this is that debug builds are no longer build with high optimization, which is a desirable outcome.
2025-04-14 10:05:41 +02:00
Benjamin Nauck cc40e522de Base: make our fmod require floating point values 2025-04-14 08:00:57 +02:00
Benjamin Nauck 1370c2101f Base: Make degrees and radians convertions safer and faster 2025-04-14 08:00:57 +02:00
Benjamin Nauck 16a7bf420c Base: Make sgn branchless 2025-04-14 08:00:57 +02:00
Benjamin Nauck 12fa564894 Base: Require clamp to take arithmetic values
use std::clamp internally, function should probably be removed
2025-04-14 08:00:48 +02:00
pre-commit-ci[bot] 3cd0a7d2ff [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-04-13 23:21:39 +00:00
jalapenopuzzle 5f2792968b CAM: Snapmaker use manufacturer's data table instead of calculating boundary offsets 2025-04-14 08:03:17 +10:00
pre-commit-ci[bot] c7773b5d4d [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-04-14 08:03:17 +10:00
jalapenopuzzle 9298ad8ad0 CAM: snapmaker add --quick-swap and --bracing-kit options 2025-04-14 08:03:16 +10:00
jalapenopuzzle 42636926ca CAM: snapmaker clean output_header() 2025-04-14 08:03:16 +10:00
jalapenopuzzle 7e54513e5e CAM: snapmaker add linear module lead screw pitch 2025-04-14 08:03:15 +10:00
jalapenopuzzle 5eaa6326a4 CAM: snapmaker toolheads and spindle speeds
* Removed generic snapmaker machine and toolhead configuration. The idea of running a CNC code that is not matched to the machine's abilities and work area seems dangerous.
* --machine argument is required
* --toolhead argument is required when the selected machine is compatible with more than one toolhead. When the selected machine only supports one toolhead, it is selected as the default.
* --spindle-percent defaults according to the selected toolhead capabilities. If the toolhead can do RPM, then RPM is used, otherwise falls back to percent. This option now functions as an override.
* fixed a bug in convert_spindle() when RPM is selected. The gcode was not returned.
2025-04-14 08:03:14 +10:00
jalapenopuzzle 699a25e243 CAM: snapmaker --machine is a required option 2025-04-14 08:03:14 +10:00
jalapenopuzzle 94140ab2b1 CAM: snapmaker machines separate T machines and capitalise names 2025-04-14 08:03:13 +10:00
jalapenopuzzle c71bca3d49 CAM: snapmaker machines separate boundaries 2025-04-14 08:03:12 +10:00
jalapenopuzzle 42f40115a1 CAM: snapmaker use order {min,max} 2025-04-14 08:03:12 +10:00
jalapenopuzzle b738118718 CAM: snapmaker unit tests fix type lint
NOTE get_gcode() can return an argparse.Namespace if something goes wrong with parsing the arguments.
This is contrary to the str specification.
2025-04-14 08:03:11 +10:00
jalapenopuzzle 1b4b36767d CAM: snapmaker unit tests fix assertTrue() -> assertEqual()
The test was NOT functioning as required.
assert True does NOT compare the expected line with the generated GCode line.
After fixing this, the expected output was updated so that the unit tests pass.
2025-04-14 08:03:11 +10:00
jalapenopuzzle ac80d6e4df CAM: snapmaker fix invalid escape sequences in regular expressions 2025-04-14 08:03:10 +10:00
jalapenopuzzle 322a2f7b3f CAM: snapmaker fix lint on types 2025-04-14 08:03:09 +10:00
jalapenopuzzle 884fca0cc2 CAM: snapmaker fix lint on formatted strings 2025-04-14 08:03:09 +10:00
jalapenopuzzle 424f7d820c CAM: snapmaker fix broken license URL 2025-04-14 08:03:08 +10:00
captain0xff 7f5b1c9f2c Gui: moved dragger classes to separate folder and files
* renamed SoFCCSysDragger to SoTransformDragger
* moved TDragger, RDragger and TPlanarDragger to separate files and also renamed them to be more descriptive
2025-04-13 21:36:54 +02:00
Luz Paz dd16b8053e Fix various typos
Found via codespell
2025-04-13 14:06:26 -05:00
marioalexis f9c4e6e23c Fem: Add preference to create CalculiX result as pipeline - fixes #20541 2025-04-13 15:04:01 -03:00
marioalexis 69fbde7058 Fem: Rename VectorMode view property to Component 2025-04-13 15:04:01 -03:00
marioalexis eaee529002 Fem: Update test 2025-04-13 15:04:01 -03:00
marioalexis 4f7a835e22 Fem: SolverCalculiX object refactor 2025-04-13 15:03:55 -03:00
Kacper Donat a86c300688 Gui: Disable Show Placement for Body Features 2025-04-13 17:54:01 +02:00
Kacper Donat 5dc2ba40ea Gui: Hide Placement Indicator with object 2025-04-13 17:54:01 +02:00
Kacper Donat 2a4c7bc0b5 Gui: Ensure that placement indicator is always on top 2025-04-13 17:54:01 +02:00
marioalexis 47bdf1d01d Fem: Add properties to FemSolverObject 2025-04-12 02:10:25 -03:00
marioalexis d2ddc8e56a Fem: Rename base_femmeshtaskpanel to base_femlogtaskpanel 2025-04-12 02:10:24 -03:00
Jacob Oursland e990b456b9 CI: fix macOS weekly build. 2025-04-11 22:48:47 -05:00
Chris Hennes b2a45feaa3 Merge pull request #20415 from oursland/weekly-build
CI/CD: Implement weekly builds.
2025-04-11 13:47:53 -05:00
Benjamin Nauck 1983052e38 Merge pull request #20640 from marcuspollio/bim-cleanup-license
BIM: cleanup license blocks
2025-04-11 16:31:02 +02:00
Kacper Donat b300c80b90 Base: Use explicit pointer syntax for freecad_cast (#20694)
* Base: Use explicit pointer syntax for freecad_cast

This aligns our custom cast with other casts

* All: Use explicit pointer syntax for freecad_cast
2025-04-11 14:11:33 +00:00
marcuspollio 74e5f7c500 Merge branch 'main' into bim-cleanup-license 2025-04-11 15:13:45 +02:00
Ajinkya Dahale 581fa12e45 Sketcher: Refactor and fix DrawSketchDefaultHandler.h
Fixes the issue in this comment:
https://github.com/FreeCAD/FreeCAD/pull/20476#issuecomment-2758401350.
2025-04-11 08:16:19 +02:00
Pieter Hijma 74ac46175d [Doc] Fix unassociated doc strings
Before this commit, these doc strings were unassociated, which means
that the can appear at random places.  They are now associated with
their namespace an class.
2025-04-11 00:47:54 +02:00
Jacob Oursland 0747a4f4a1 CI: weekly-build debug: do not upload tags or artifacts. 2025-04-10 15:13:09 -07:00
David Carter 5bbb07e24d Materials: Use data classes in interface specification 2025-04-10 06:13:38 -04:00
tarman3 b91c5ef2af CAM: Multiline POSTAMBLE and PREAMBLE arguments in old postprocessors (#20715)
* CAM Multiline POSTAMBLE and PREAMBLE in old postprocessors

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

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

* CAM: Fix preamble and postamble help text

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-04-10 12:05:48 +02:00
Ajinkya Dahale f869bace95 [Sketcher][test] Remove some obsolete TODOs 2025-04-10 09:20:18 +02:00
Ajinkya Dahale c0d469d404 [Sketcher][test] Add tests for fixes done in #20150 2025-04-10 09:20:18 +02:00
Ajinkya Dahale 23ecf94ab6 [Sketcher] Make trimmed curve(s) construction based on original 2025-04-10 09:20:18 +02:00
Ajinkya Dahale 08a66afbc8 [Sketcher] Add missing check when transforming constraints for trim
Fixes https://github.com/AstoCAD/FreeCAD/issues/24.
2025-04-10 09:20:18 +02:00
Ajinkya Dahale 2779f0b29f [Sketcher] Add missing check in deriveConstraintsForPieces
Fixes #19770.
2025-04-10 09:20:18 +02:00
Ajinkya Dahale b6a069dc63 [Sketcher] Attempt to avoid double-trimming in some cases
Possibly fixes #19425 and/or #20081.
2025-04-10 09:20:18 +02:00
Ajinkya Dahale fbac7d737b [Sketcher] Refactor DrawSketchHandlerTrimming::mouseMove() 2025-04-10 09:20:18 +02:00
Ajinkya Dahale 358942b771 [Sketcher] Fix issue in SketchObject::transferConstraints
Small but major oversight.
2025-04-10 09:20:18 +02:00
Ajinkya Dahale f0d30cb570 [Sketcher] Adjust constraint changes when trimming
1. No longer applying equality constraints between new (circular) pieces since
they may cause issues.
2. Only transfer equality with a different curve to one of the pieces.
3. Re-added certain constraints (that applied to both ends of the original
curve) that were incorrectly excluded from modification/deletion at a certain
step.
4. Use C++20 `std::erase_if()` in trim
2025-04-10 09:20:18 +02:00
Jacob Oursland 9b3052cf75 CI/CD: Implement weekly builds.
Brings over the functionality in https://github.com/FreeCAD/FreeCAD-Bundle
to build Linux AppImage, macOS .dmg, and Windows 7z releases.

This version also creates a tagged release for each build, creating an
archive of the weekly builds as well as the ability to easily tie each
build to a git commit.  This will make running 'git bisect' easy to
identify sources of regressions.
2025-04-09 14:55:56 -07:00
Alfredo Monclus de124a72b5 Gui: fix Quantity spinbox margin without an icon (#20695)
* Gui: fix Quantity spinbox margin without an icon

* refactor: apply review suggestions

* refactor: reorder operations as suggested

---------

Co-authored-by: alfre <alfre@localhost.localdomain>
2025-04-09 20:28:54 +02:00
Kacper Donat f258a2639c Gui: Add Origin indicator to SoFCPlacementIndicator
This adds optional origin indicator ofr SoFCPlacementIndicator. This is
something that can be used to clearly indicate origin placement with
small sphere.
2025-04-09 17:48:15 +02:00
Kacper Donat 972f05ba5a Gui: Move color traits to Utilities.h 2025-04-09 17:48:15 +02:00
Kacper Donat ce0080cbae Merge pull request #20712 from oursland/revert-20674-specify_maximum_version
Revert "Build:add maximum cmake compatible version"
2025-04-08 22:56:21 +02:00
Jacob Oursland be34ec2009 CMake: Add CMAKE_POLICY_VERSION_MINIMUM=3.5 to CMakePresets.json 2025-04-08 13:24:58 -07:00
Jackson Oursland 561c1386ee Revert "Build:add maximum cmake compatible version"
This reverts commit 307a4661af.
2025-04-08 12:25:01 -07:00
Pieter Hijma 6f85663bb3 [Doc] Fix a hard requirement in CMake for FEM 2025-04-08 20:58:33 +02:00
Chris Hennes fc782a6c8d Addon Manager: Move to git submodule (#20672) 2025-04-08 16:40:31 +02:00
sliptonic 22d7e421bc Merge pull request #20321 from phaseloop/array-dressup-2
[CAM] Replace Array operation with array dressup
2025-04-08 08:13:17 -05:00
PaddleStroke 5195cb49de PartDesign : New sketch: Fix regression 2025-04-08 14:03:30 +02:00
xtemp09 045ca46114 [TUX] Fix typo in PR #20401 2025-04-08 11:20:43 +02:00
Ladislav Michl 7218e7b030 App: Expression: rename lexer and parser files
Rename files according 7d233dc ("Gui: Rename generated lexer files
to match core naming pattern"). Note that C space errors (space
before tabs, spaces on blank lines, etc.) still need to be fixed
manually after regenerating lexer file.
2025-04-08 11:10:50 +02:00
Ladislav Michl ed00a6673c Base: Quantity: rename lexer and parser files
Rename files according 7d233dc ("Gui: Rename generated lexer files
to match core naming pattern"). Note that C space errors (space
before tabs, spaces on blank lines, etc.) still need to be fixed
manually after regenerating lexer file.
2025-04-08 11:09:36 +02:00
Ladislav Michl f7c8ce50bc Base: Quantity: indent lexer and parser input files 2025-04-08 11:09:36 +02:00
aprospero 4c7fb9625b Draft: parametrize Draft vector utils precision (#20199)
* parametrize draft vector utils precision

* fix: a single function didn't get the complete latest update.

* compatibility: reintroduce DraftVecUtils.precision() as deprecated.
2025-04-07 23:12:02 +00:00
tritao 7d233dc95c Gui: Rename generated lexer files to match core naming pattern.
So as title says, this renames generated lexerfiles from
`SelectionFilter.l` to use the suffix .lex, instead of the
`lex.SelectionFilter.c`.
2025-04-07 22:42:07 +02:00
phaseloop f0e9a6475f CAM: change design of origin axis (#20358)
* change design of CAM origin axis

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

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

* change Inventor example comment

* move to SoFCPlacementIndicatorKit - increase stock point size display

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

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

* Use So3DAnnotation for origin axis

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-04-07 20:04:27 +02:00
Syres916 fa3c6e1068 [PartDesign] Fix spelling of auxiliary and curvilinear…
…but also handle the properties name change from old files
2025-04-07 11:30:51 -05:00
Chris Hennes de13e777f4 Merge pull request #20643 from tritao/python-gen-include-pycxx
Tools: Add PyCXX includes to generated Python binding files.
2025-04-07 11:27:17 -05:00
Andrea cdff0da672 BASE: remove FileTemplate class
Removed unnecessary and old filetemplate class
2025-04-07 11:26:07 -05:00
Chris Hennes ee426de9b9 CMake: Only set /NODEFAULTLIB for MSVC < 19.30
Corresponds to anything earlier than VS 2022.
2025-04-07 11:23:47 -05:00
Andrea 01609b5479 Remove old python files
Remove not necessary python files
2025-04-07 11:22:08 -05:00
Andrea 0bfc022191 MOD: TECHDRAW (Removed unused functions)
Unused functions removed.
2025-04-07 11:19:02 -05:00
drwho495 8963a0d8bc Assembly: Fix hasher missing ref warning and speed bug. (#20405)
* fixed hasher ref bug and fixed speed of updateJCSPlacements

* remove debug info

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

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

* fix hasher mismatch when editing or creating a joint

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

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

* fix issues raised in PR

* add warning

* [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-04-07 11:13:15 -05:00
Andrew Shkolik 967d719bdc Automatically switch to edge selection mode when creating surface 2025-04-07 17:57:07 +02:00
Pieter Hijma 45ee9ad16e [Doc] Fix CMake issues for documentation (#20479)
* [Doc] Ensure to create the target dir in CMake

* [Doc] Fix CMake issue preventing regenerating docs
2025-04-07 10:55:41 -05:00
bdieterm b9aa5c5d83 CAM: fix context menu callbacks for Qt6 2025-04-07 10:50:02 -05:00
Furgo 35b433e566 BIM: add missing ifc_tools import (#20368)
* BIM: add module-level import for ifc_tools

* Do not load ifc_tools at the start of module to avoid breaking tests
2025-04-07 17:49:26 +02:00
Yorik van Havre dde69282e0 Merge pull request #20406 from marcuspollio/bim-cleanup-imports
BIM: cleanup imports
2025-04-07 17:43:36 +02:00
PaddleStroke 5639728e8a PartDesign: Fix use of App::Planes to create sketches (#20453) 2025-04-07 17:34:13 +02:00
Kacper Donat 35a9673a75 Base: Rename Base::freecad_dynamic_cast into freecad_cast
This is to make it shorter and easier to use. QT does the same thing
with their qobject_cast.
2025-04-07 10:32:28 -05:00
runzh-crypto 307a4661af Build:add maximum cmake compatible version 2025-04-07 16:55:03 +02:00
xtemp09 893e4a2ff1 Make some context menu actions translatable (#20401)
* Make some context menu actions translatable

* [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-04-07 08:43:04 -05:00
Benjamin Bræstrup Sayoc 2aba9a86ce TechDraw: fix wrong color on edges
Fixes #20561
2025-04-07 12:05:53 +02:00
Benjamin Nauck acd40ce725 Gui: Fix operator mistake in previous c++constant refactoring 2025-04-07 11:13:36 +02:00
bofdahof 7013f913b6 App: remove redundant qualifier from Application class 2025-04-07 11:09:04 +02:00
bofdahof 6b5030f391 App: constify variables in Application class 2025-04-07 11:09:04 +02:00
jonzirk76 95c1db7e3c Moved DrawUtil.cpp member functions to DrawViewPart.cpp
Updated ownership of member functions & updated headers

Removed redundant ownership lines

Removed reference to removed ownership line

Removed owner from function head

static reference removed from header file, function heads updated

attempt to fix CosmeticExtension.cpp

attempt to fix CosmeticExtension.cpp #2

attempt to fix CosmeticExtension.cpp #3

CosmeticExtension.cpp refactored based on DrawUtil member functions move
2025-04-07 11:07:52 +02:00
Luz Paz 79008331b3 Mesh: Fix source typo
Modified so it wouldn't show up in codespell results.
2025-04-06 12:13:10 -05:00
MisterMaker 9884b67741 Gui: Title bar color fix for windows QT 6.5+
Remove dark mode variable
2025-04-06 14:33:52 +02:00
Francisco Neves ceee26765e Preferences: Fixed a bug in 'Animation curve type' label position
Deleted a line in DlgSettingsAdvanced.cpp that made the label
move after selecting a animation curve type. Fixes #18376.

Signed-off-by: Francisco Neves <francisco.jose.neves@tecnico.ulisboa.pt>
2025-04-06 14:30:35 +02:00
Andrea e537278f12 Cosmetic Fix
Fix double "--" during print configuration  :

----   Version:  7.1.9
-- -- Found OpenCASCADE version: 7.8.1
-- -- OpenCASCADE include directory: /usr/include/opencascade
-- -- OpenCASCADE shared libraries directory: /usr/lib/x86_64-linux-gnu
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so
-- VTK components:
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so  found components: OpenGL GLX

.
2025-04-05 23:00:07 -05:00
Luz Paz 30ce3023fa Draft: fix source typo
Corrected source variable name so it wouldn't show up in codespell check
2025-04-05 22:59:33 -05:00
luzpaz 7a12d2f96f Fix various typos (#20651)
* Fix various typos
Found via `codespell -q 3 -L aci,addmin,ake,aline,alle,alledges,alocation,als,ang,anid,anormal,anull,aply,apoints,ba,beginn,behaviour,bloaded,bottome,brushin,bu,byteorder,calculater,cancelled,cancelling,cas,cascade,centimetre,childrens,childs,colour,colours,commen,connexion,currenty,documentin,dof,doubleclick,dum,eiter,elemente,ende,feld,finde,findf,findn,fle,freez,graphin,groupe,hist,iff,incrementin,indexin,indicies,initialisation,initialise,initialised,initialises,initialisiert,inout,ist,itsel,kilometre,leadin,localy,lod,mantatory,matc,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oce,oder,ontop,orgin,orginx,orginy,ot,pard,parm,parms,pres,programm,que,rady,recurrance,renderin,re-use,re-used,re-using,rin,ro,rougly,sectionin,seperator,sergent,serie,shs,sinc,siz,som,stpo,strack,substraction,te,technic,thist,thru,tread,tru,ue,uint,unter,uupper,uptodate,vas,vertexes,vew,wallthickness,whitespaces -S "./.git,*.po,*.ts,*.pdf,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml,./src/Base/StackWalker.cpp,./build/doc/SourceDoc,./tools/build/WindowsInstaller/lang,./src/Mod/TechDraw/Templates/locale"`

* [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-04-05 22:58:20 -05:00
Kacper Donat 0b3dca895d Merge pull request #20570 from pieterhijma/varset-dialog-units
[Core] Show units in the VarSet add property dialog
2025-04-05 23:19:39 +02:00
Kevin Martin 75b55658a7 Check for a null scene object
Under certain unusual circumstances getSceneGraph can be called when the scene is null, causing a native exception when the scene's reference count is incremented.
This changes the code to return python None in this condition, allowing the calling cod eto handle the no-scene case itself.
2025-04-05 18:45:19 +02:00
marcuspollio 637c21c18f BIM: use FreeCAD Dev Handbook license block 2025-04-05 17:55:51 +02:00
tritao 63ed3e8dff Sketcher: Remove XML binding files.
These are not needed anyore with the Python bindings conversion.
2025-04-05 17:52:38 +02:00
Pieter Hijma 17c601eaca [Core] Disable toggling visibility for objects
- VarSet
- Spreadsheet
- FEM objects
2025-04-05 16:12:49 +02:00
Pieter Hijma 5915575f19 [Core] Remove various DisplayModes from FEM 2025-04-05 15:57:49 +02:00
Pieter Hijma 286ddd0eea [Core] Remove DisplayMode from Spreadsheet 2025-04-05 15:57:49 +02:00
Pieter Hijma 381cb92f0a [Core] Add visibility toggling to ViewProvider
With this extension of the API, view providers can indicate whether
document objects should be able to be toggled for visibility.  There is
both a C++ and Python interface, idiomatic for FreeCAD code.
2025-04-05 15:57:09 +02:00
tritao ccbae8b847 Base: Clean up Python includes in PyObjectBase.h. 2025-04-05 12:14:32 +01:00
tritao 80aca250ad Tools: Add PyCXX includes to generated Python binding files. 2025-04-05 12:03:23 +01:00
Roy-043 440dfa8203 Merge pull request #20634 from Roy-043/Draft-make-Draft_SelectPlane-recognize-the-new-Part_DatumPlane-object
Draft: make Draft_SelectPlane recognize the new Part_DatumPlane object
2025-04-05 10:46:09 +02:00
Kacper Donat 52aec7d639 Merge pull request #20594 from captain0xff/icon-res
Gui: make BitmapFactory::pixmapFromSvg dpi aware
2025-04-05 00:32:21 +02:00
tritao 7986ea0cba PartGui: Convert XML bindings to Python bindings model. 2025-04-04 23:00:34 +02:00
tritao 770dbe5580 Sketcher: Convert XML binding files to Python API bindings model. 2025-04-04 22:59:32 +02:00
Patryk Skowroński cab9053be8 Added sanity check for an action pointer 2025-04-04 12:31:11 -05:00
marcuspollio fcd0be749c BIM: add FreeCAD notice in license 2025-04-04 18:15:43 +02:00
marcuspollio d57339ee19 BIM: cleanup license and add SPDX 2025-04-04 17:46:58 +02:00
Roy-043 9ada83aebd Merge pull request #20574 from luzpaz/typo-source-draft
Draft: fix source typo in draftobjects/patharray.py
2025-04-04 14:42:30 +02:00
Roy-043 83db2c260c Draft: make Draft_SelectPlane recognize the new Part_DatumPlane object
Forum topic:
https://forum.freecad.org/viewtopic.php?t=96058
2025-04-04 14:26:28 +02:00
captain0xff 5e8d048524 techdraw: remove QGVPage::getDevicePixelRatio() in favor of getMaximumDPR 2025-04-03 19:55:27 +05:30
captain0xff 08381b1d18 remove some code setting pixel density ratio for pixmaps
update
2025-04-03 19:55:27 +05:30
captain0xff d4de12061e Gui: make BitmapFactory::pixmapFromSvg dpi aware
added getMaximumDPR method and removed a overload of pixmapFromSvg with dpr parameter

update
2025-04-03 19:55:27 +05:30
PhaseLoop 63dcbd548e Revert "fix issues"
This reverts commit 5a6fd53b3a.
2025-04-03 10:32:25 +02:00
Leticia Vong 72c1659e4d GUI: Fix #18806 Toggle freeze behavior
Previously, StdCmdToggleFreeze only unfroze child objects using
getInListRecursive(). This update ensures that dependent objects
are properly unfrozen.
Freezing behavior remains unchanged.
2025-04-02 22:28:51 -05:00
mosfet80 f7882c99c4 MOD: ReverseEngineering clean (#20555)
* MOD: ReverseEngineering

clean code .
removed old code pcl lib is alwais >then  1.7 (ubuntu 20.04 use pcl 1.10)

* [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-04-02 22:11:09 -05:00
Andrea 6d7336cc7a MOD: SANDBOX clean
clean code
2025-04-02 22:10:11 -05:00
mosfet80 c78e8ae4ce MOD: OPENSCAD clean (#20558)
clean code
2025-04-02 22:07:52 -05:00
Dan Taylor 5ed1435dd0 CAM: Adaptive: Rename tests with descriptive names; remove empty dummy test; minor test cleanups/comments/clarifications 2025-04-02 20:55:51 -05:00
Dan Taylor 1c27258e08 CAM: Adaptive: Machine entire model if no faces/edges are selected ("adaptive roughing") 2025-04-02 20:55:21 -05:00
Dan Taylor 31ca3e742f CAM: Adaptive: Add Z stock to leave (separate from XY stock to leave) and order-by-region/order-by-depth cut ordering options 2025-04-02 20:47:44 -05:00
Dan Taylor eece614172 CAM: Adaptive: Make machined regions respect stock and model in 3D, not just the 2D projections of the stock and selected machining bounding box 2025-04-02 20:35:15 -05:00
Benjamin Nauck 8f35742f1f Addon Manager: Fix call to get home_dir for pip 2025-04-02 13:36:20 -05:00
marioalexis84 f4adf2e0e9 Fem: Update modification time for FemFrameSourceAlgorithm - fixes #20543 (#20548) 2025-04-01 23:19:53 -05:00
Chris Hennes 837f6fa788 App: Change element name warning to log 2025-04-01 23:57:13 +02:00
Benjamin Bræstrup Sayoc 644b902615 Build: force CMake to 3.31.6 version in CI (#20581)
* Update sub_buildUbuntu.yml
* Update sub_buildWindows.yml
2025-04-01 21:29:52 +02:00
Kacper Donat db08735e10 Merge pull request #20559 from hyarion/refactor/add-limits
Add `#include <limits>` in all files where it is used
2025-04-01 17:11:50 +02:00
Roy-043 2e45e8d6e1 Merge pull request #20395 from paullee0/DraftFaces_05_Bind_Improve-Fuse_and_Warning
[Draft-Faces] Bind: Improve fuse and warning
2025-04-01 16:16:43 +02:00
Roy-043 62a64e0613 Merge pull request #20529 from Roy-043/Draft-fix-alignment-of-dim-arrows
Draft: fix alignment of dim arrows
2025-04-01 16:13:01 +02:00
Luz Paz b9d03abc7b Draft: fix source typo in draftobjects/patharray.py 2025-04-01 10:05:08 -04:00
Pieter Hijma efcd787777 [Core] Fix value field unit selection
Qt automatically selects the text in the value field on creation.  This
interferes with the selection when the field has focus.  This commit
ensures that the automatic selection is undone.
2025-04-01 13:21:50 +02:00
Pieter Hijma 84468fbc25 [Core] Show units in value editor VarSet dialog
Before this change, the units were not shown in the editor for values.
With this change the units (if applicable) are shown in the editor.
2025-04-01 13:21:50 +02:00
Pieter Hijma 4bbc59d309 [Core] Make PropertyItem column usage more clear
- Renamed dataProperty -> dataPropertyName because the function returns
  variants for the property name.
- Add an enum for the column to remove magic numbers
2025-04-01 13:21:50 +02:00
Benjamin Nauck bad0daf9dc Refactor mapToInt/mapToUint 2025-04-01 08:02:42 +02:00
Chris Hennes b3d8020e77 CMake: Allow external libE57Format 2025-04-01 07:55:25 +02:00
tringenbach 03dd780ef3 Gui: Task overlay HiDPI vertical alignment 2025-04-01 07:53:22 +02:00
marioalexis 6d376dc77a Fem: Add method to rename pipeline VTK data arrays 2025-04-01 06:35:17 +02:00
David Carter 81b7b0c457 Material: Interface with an external module
The ExternalManager class calls python functions in an external module
to create, read, update, and delete material definitions. The API
provided by the modules must conform to that defined in the
MaterialManagerExternal.py file.

All communications with the external module is routed through this
class.
2025-03-31 22:46:12 -04:00
Benjamin Nauck c97ce5b5e9 Tools: Add #include <limits> where used 2025-03-31 23:53:16 +02:00
Benjamin Nauck d61dcb2e6d Web: Add #include <limits> where used 2025-03-31 23:53:10 +02:00
Benjamin Nauck d0320b494d TechDraw: Add #include <limits> where used 2025-03-31 23:53:03 +02:00
Benjamin Nauck 3462c165d8 Surface: Add #include <limits> where used 2025-03-31 23:52:55 +02:00
Benjamin Nauck 8073075301 Spreadsheet: Add #include <limits> where used 2025-03-31 23:52:48 +02:00
Benjamin Nauck 4b589088f6 Sketcher: Add #include <limits> where used 2025-03-31 23:52:38 +02:00
Benjamin Nauck 5b436f2a83 ReverseEngineering: Add #include <limits> where used 2025-03-31 23:52:33 +02:00
Benjamin Nauck 30ff61f7c0 Point: Add #include <limits> where used 2025-03-31 23:52:24 +02:00
Benjamin Nauck 65a0fb0ed4 PartDesign: Add #include <limits> where used 2025-03-31 23:52:18 +02:00
Benjamin Nauck d5447df72d Part: Add #include <limits> where used 2025-03-31 23:52:08 +02:00
Benjamin Nauck 0ac87c8a27 MeshPart: Add #include <limits> where used 2025-03-31 23:52:00 +02:00
Benjamin Nauck 368f1fc296 Mesh: Add #include <limits> where used 2025-03-31 23:51:52 +02:00
Benjamin Nauck 1aeb594c80 Inspection: Add #include <limits> where used 2025-03-31 23:51:38 +02:00
Benjamin Nauck 1669427449 Import: Add #include <limits> where used 2025-03-31 23:51:31 +02:00
Benjamin Nauck a6e1b894fe Fem: Add #include <limits> where used 2025-03-31 23:51:06 +02:00
Benjamin Nauck 1dc1cc8d1b Cloud: Add #include <limits> where used 2025-03-31 23:50:57 +02:00
Benjamin Nauck df6a76ba84 CAM: Add #include <limits> where used 2025-03-31 23:50:49 +02:00
Benjamin Nauck 17dc7fce06 Gui: Add #include <limits> where used 2025-03-31 23:50:37 +02:00
Benjamin Nauck d9af862627 Base: Add #include <limits> where used 2025-03-31 23:50:30 +02:00
Benjamin Nauck 27f5699588 App: Add #include <limits> where used 2025-03-31 23:50:19 +02:00
sliptonic f1258e36b2 Merge pull request #20169 from phaseloop/vcarve-speed
[CAM] Improve Vcarve path generation speed on complex shapes
2025-03-31 23:32:42 +02:00
marioalexis b601629b2a Fem: Capitalize label in material task panel 2025-03-31 23:00:50 +02:00
Luz Paz f809e34ea0 Fix typos
Found via `codespell -q 3 -L aci,addmin,ake,aline,alle,alledges,alocation,als,ang,anid,anormal,aply,apoints,ba,beginn,behaviour,bloaded,bottome,brushin,bu,byteorder,calculater,cancelled,cancelling,cas,cascade,centimetre,childrens,childs,colour,colours,commen,connexion,currenty,documentin,dof,doubleclick,dum,eiter,elemente,ende,feld,finde,findf,findn,fle,freez,graphin,hist,iff,incrementin,indexin,indicies,initialisation,initialise,initialised,initialises,initialisiert,inout,ist,itsel,kilometre,leadin,localy,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oce,oder,ontop,orgin,orginx,orginy,ot,pard,parm,parms,pres,programm,que,rady,recurrance,renderin,rin,ro,rougly,sectionin,seperator,serie,shs,sinc,siz,som,strack,substraction,te,technic,thist,thru,tread,tru,ue,uint,unter,uptodate,vas,vertexes,vew,wallthickness,whitespaces -S "./.git,*.po,*.ts,*.pdf,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml,./src/Base/StackWalker.cpp,./build/doc/SourceDoc,./tools/build/WindowsInstaller/lang,./src/Mod/TechDraw/Templates/locale"`
2025-03-31 23:00:32 +02:00
David Carter 31e43a8381 Materials: Build external materials support conditionally
Adds a new build option BUILD_MATERIAL_EXTERNAL which is off by default.

When disabled, the external interface is not built. This allows the
code to be tested thoroughly before reaching the end user.
2025-03-31 22:24:53 +02:00
Rafael Pronto 1d4a09366c Sketcher: Prevent renaming interruption when hovering task elements. (#20458)
* Sketcher: Prevent renaming interruption when hovering task elements.

Fixes #11842.

* Sketcher: Refactored input focus check based on PR feedback (PR #20458)

* Update src/Mod/Sketcher/Gui/TaskSketcherElements.cpp

---------

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-03-31 17:45:33 +00:00
marioalexis b655de3ea6 Fem: Simplify label in material task panel 2025-03-31 18:36:20 +02:00
Pieter Hijma ba4ee26ebc [Doc] Add an up-to-date Doxygen configuration file
This is currently only for the WebDoc target and not for teh DevDoc
target.
2025-03-31 11:32:15 -05:00
Kevin Martin 0986dadb2f Correct non-gui DXF C++ importer to not generate pending python exceptions (#20328)
* Add a test case for DXF import

* Test gui flag rather than look for import error to make gui decision

The new code is cleaner and faster and avoids any exception stuff

* Properly avoid trying to use Layer's View object in non-GUI

The code was trying to avoid this but had a Python None object rather than a null C++ pointer and so tried setting a property on None. This left an unhandled exception state which acted as a booby trap that caused the later failure of some unrelated code.

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

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

* De-lint, remove wong "unsupported" message
Hidden layers have been supported for a while but still generated an import note about this being unsupported.

* [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-03-31 11:20:37 -05:00
Tiago Almeida 9153926cbf fix #20005: material editor issue
-Changed info.baseName() to
info.fileName().remove(QStringLiteral(".FCMat"), Qt::CaseInsensitive)
in MaterialLibrary.cpp to ensure that only the extension ".FCmat"
is removed from the file name bacause the previous version was removing
 everything in front of the first dot
2025-03-31 11:16:12 -05:00
Andrea c197032384 update libkdtree
switch to version 0.7.4
fix for a compiler warning inkdtree++/region.hpp
fixes of warnings, latest c++ standard compatibility.

.
2025-03-31 11:05:09 -05:00
Andrea 85179089b1 [mod] clean
code clean
2025-03-31 11:01:39 -05:00
mosfet80 a8cf308ea0 Update SetupLibFmt.cmake
update fmt to last version
2025-03-31 10:49:16 -05:00
Chris Hennes 9c99e73d65 Navlib: Eliminate compiler warnings
A few unused variables, and a few cases where clang would prefer it be made clear that an initializer is initializing two separate sub-objects, rather than using a flat list.
2025-03-31 17:47:23 +02:00
Kevin Martin 7441ae36d3 Base: UniqueNameManager support for very long numbers in name (#19943)
* Add unit tests for large digit count in unique names

* Updated to use arbitrary-precision unsigneds

Passes the new unit tests, all diagnostics, and resolves Issue 19881

* Place UnlimitedUnsigned at top level and add unit tests

* [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-03-31 10:45:58 -05:00
Jonathan Zirkle ee6f757c57 Mod: Convert from dynamic to static casts (#20452) 2025-03-31 15:17:51 +02:00
Alfredo Monclus 487c62a663 Gui: fix Inputfield valid/invalid icon placement and size (#20466)
* Gui: fix inputfield icon size placement

* chore:Update inputfield comment to be more clear

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>

---------

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-03-31 00:14:19 +02:00
Roy-043 1c588e6614 Draft: fix alignment of dim arrows
Forum post (issue 3):
https://forum.freecad.org/viewtopic.php?t=95898#p819131

The `invert` value of dim arrows should always be `False` for the 1st and `True` for the 2nd. It should not depend on their X coords.
2025-03-30 21:20:26 +02:00
Tomas Polak e581142ff6 BIM adjust BIM_Classification tooltip 2025-03-30 20:54:50 +02:00
Benjamin Bræstrup Sayoc 3a7712bc68 Tests: move Color.cpp to Base 2025-03-30 18:11:00 +02:00
jonzirk76 025155fbe7 TechDraw: remove double type checking
Fixes #20131
2025-03-30 10:42:08 -05:00
Roy-043 b1294af5df Draft: fix Dim Auto Flip Tex angle checks (#20523)
When checking angles Dim Auto Flip Text did not consider that angles can be almost -180 degrees and should then be treated the same as 180 degree angles.
2025-03-30 16:07:54 +02:00
Roy-043 f5d98e6e5d Draft: fix Dim Auto Flip Tex angle checks
When checking angles Dim Auto Flip Text did not consider that angles can be almost -180 degrees and should then be treated the same as 180 degree angles.
2025-03-30 14:01:10 +02:00
marcuspollio 80847bb45f Merge remote-tracking branch 'upstream/main' into bim-cleanup-imports 2025-03-30 12:44:55 +02:00
Paul Lee b05c02b6f1 [Draft-Faces] Bind: Improve fuse and warning - Further Fix
Github Discussion:
- Fix problem Roy-043 pointed out https://github.com/FreeCAD/FreeCAD/pull/20395#pullrequestreview-2726624360

FC Forum:
- https://forum.freecad.org/viewtopic.php?p=819121#p819121
2025-03-30 10:29:36 +08:00
Chris Hennes e7156aa326 Merge pull request #20496 from hyarion/refactor/cppify-constants 2025-03-29 18:43:40 -05:00
Pieter Hijma cf1a5c5c18 [Doc] Make naming groups consistent in App
The identifier for groups/topics such as "Document" that have a class
with the samen name are suffixed with "Group", so the identifier becomes
"DocumentGroup".  For groups/topics with no ambiguity the identifier
matches the topic name closely, for example "ExpressionFramework" for
topic "Expression Framework".
2025-03-29 15:11:01 -05:00
Pieter Hijma 1ba6a40472 [Doc] Add links between topics and relevant items
The documentation has topics, for example topic App which contains
namespace App or topic Document that contains class Document.  This
commit makes sure that the topic has a link to the relevant class or
namespace, whereas the relevant class or namespace refers back to the
topic for a more high-level overview.
2025-03-29 15:11:01 -05:00
Pieter Hijma ec4ea7f8d3 [Doc] Improve topics within App
- The location of the documentation is improved (not in the cpp file
  anymore but in core-app.dox).  This prevents cluttering source with
  high-level overviews typical of topic documentation.
- The formatting has been made consistent.
2025-03-29 15:11:01 -05:00
Pieter Hijma 52317683f7 [Doc] Show topics instead of modules 2025-03-29 15:11:01 -05:00
Benjamin Nauck 8145be8c2b Update src/App/ExpressionParser.l
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-03-29 20:56:55 +01:00
Benjamin Nauck 1dc34ffcd4 Update src/App/ExpressionParser.l
Fixes issue in expression parser

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-03-29 20:56:30 +01:00
Andrea 0f4f47e313 [Mod] assembly clean
clean code
2025-03-29 14:31:40 -05:00
Chris Hennes e33b427224 Fem: Remove unused variables 2025-03-29 14:31:22 -05:00
Chris Hennes 168815b6d1 Merge pull request #20286 from marioalexis84/fem-calculator_filter
Fem: Add calculator filter
2025-03-29 14:30:48 -05:00
ashimabu 0317206930 Sketcher: Explicitly check fullyConstrainedChanged on solve (#20236) 2025-03-29 14:25:58 -05:00
Kacper Donat caab5fba78 Gui: Fix saving light sources 2025-03-29 14:14:04 -05:00
Pieter Hijma b263b407ed [Doc] Improve the main page for WebDoc
For the web version, the main page has improved with more information
about the organization with respect to the topics.  The most important
topics are listed prominently on the main page as well.
2025-03-29 12:14:37 -05:00
Kacper Donat f5199145a4 Merge pull request #20379 from chennes/baseEliminatePy_GetPath
Replace it with a piece of code that replicates the functionality. Also eliminate the round-trip through char * that this function was using (the final variable is stored as a std::string anyway).
2025-03-29 18:13:08 +01:00
Benjamin Nauck 8d228090de Web: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:39 +01:00
Benjamin Nauck f773550a47 Tools: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:39 +01:00
Benjamin Nauck bfdaa9aab2 Techdraw: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:39 +01:00
Benjamin Nauck f5244d404c Surface: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:39 +01:00
Benjamin Nauck dc19a631a5 Spreadsheet: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:39 +01:00
Benjamin Nauck b4eb28e50e Sketcher: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:39 +01:00
Benjamin Nauck e8d836f390 Robots: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck 7efa4c1830 ReverseEngineering: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck 044997b1ac Point: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck 98876d070d PartDesign: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck aad5e58955 Part: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck 9086f0ff14 MeshPart: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck a9c66476f8 Mesh: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck bc462c44cc Measure: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck 42e219a9fd Material: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck eb69b72a2b Inspection: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck 821327b4cd Import: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck d0dc4c00ef FEM: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck fd28d6f27f Drawing: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck a7b71335b7 CAM: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck 984c0d43fd Assembly: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck 34bc1d45ea Gui: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:38 +01:00
Benjamin Nauck ae686942a7 Base: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:37 +01:00
Benjamin Nauck 81e0b408fa App: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:37 +01:00
mosfet80 96e8a9e83c Remove old GCC<=8 (#20508)
GCC version is always greater than 8
2025-03-29 12:21:36 +01:00
Andrea 2f5f8f32e7 Remove old Coin code <=3
ubuntu 22.04 use libcoin v 4. https://launchpad.net/ubuntu/jammy/+package/libcoin-dev
2025-03-29 12:16:09 +01:00
PhaseLoop 5a6fd53b3a fix issues 2025-03-28 19:46:28 +01:00
marioalexis db8b58f73e Fem: Fix return value in FemPostPipelinePy::read 2025-03-28 16:39:34 +01:00
marioalexis 8c6e77ee97 Base: Improve schema translation for electrical units 2025-03-28 07:43:15 +01:00
Roy-043 4ac8f0b141 Draft: fix status bar widgets display timing issue
Fixes #17044.
2025-03-28 06:09:54 +01:00
Leif-Jöran Olsson fb5ded6e53 Fixing ambiguiguous python shebang in installed script freecad-thumbnailer. Removed skip ci according to instruction. 2025-03-27 21:42:49 -05:00
marioalexis d8b9681a8f Fem: Update test 2025-03-27 21:13:21 +01:00
marioalexis 10426ca011 Fem: Add electric charge density object 2025-03-27 21:13:21 +01:00
marioalexis a8372c1f55 Fem: Rename property SurfaceChargeDensity to ElectricFluxDensity 2025-03-27 21:13:21 +01:00
marioalexis 406a834a6d Base: Add volume charge density unit 2025-03-27 21:13:21 +01:00
marioalexis c8ccbeb421 Fem: Add calculator filter 2025-03-27 15:46:57 -03:00
marioalexis 9744dc5527 Fem: Remove function based on Elmer results 2025-03-27 15:46:57 -03:00
Roy-043 354cc84935 Draft: add font name dropdown to preferences (#20400)
Fixes #20330.
2025-03-27 13:11:47 +01:00
Roy-043 b7e4294768 Merge pull request #20483 from Roy-043/Draft-remove-obsolete-param-functions
Draft: remove obsolete param functions
2025-03-27 11:51:16 +01:00
Lawrence Woestman 1dddbb2aa5 CAM: Enabled coolant in the refactored_grbl post, with test 2025-03-27 07:31:13 +01:00
Lawrence Woestman 730d0a567d CAM: Enabled coolant in the refactored_grbl post, with test 2025-03-26 15:14:35 -07:00
PaddleStroke 4631e11230 TechDraw: Section task: Fix spinbox (#20413)
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-03-26 21:41:17 +01:00
João Martins 83c1c76b04 Assembly: Allow more than one assembly deactivation (#20461)
Fixes #18631.
2025-03-26 19:25:53 +01:00
Syres916 06b0cbc59f [Gui] Fix Seg Fault when deleting a Link Array 2025-03-26 17:44:49 +01:00
xtemp09 9d9ee7d9c3 Disconnect signals in destructor to avoid the assert
Closes #20272.
2025-03-26 17:42:34 +01:00
Roy-043 0c9c23dc18 Draft: remove obsolete param functions
See #20198

These functions are no longer used in the Draft WB or in the BIM WB.

There is a small risk that 3rd party code relies on them and breaks, but that can be addressed when such is reported as a problem.
2025-03-26 15:52:40 +01:00
Roy-043 bac9ef0fcc BIM: Remove calls to obsolete Draft.getParam
See #20198.
2025-03-26 13:09:17 +01:00
tritao 8ae48c3c8a Material: Remove XML binding files. 2025-03-26 13:01:41 +01:00
Joao Matos e9fda68693 Material: Convert XML bindings to Python. 2025-03-26 12:18:02 +01:00
tritao c3e10d4331 Tools: Improve handling of sequence_protocol in Python bindings generator.
This allows SequenceProtocol being initialized without all members which
simplifies Python authoring of binding files.
2025-03-26 12:18:02 +01:00
Joao Matos f76d559395 CMake: Fix generate_from_py macro for temporary pyi files. 2025-03-26 12:18:02 +01:00
Roy-043 d18ba9010d BIM: Remove calls to obsolete Draft.getParam
See #20198.
2025-03-26 11:03:21 +01:00
Benjamin Bræstrup Sayoc c106e1fdc6 TechDraw: arc dimensions should not have fill
Fixes #20418. Regression by commit 998f713c97
2025-03-26 11:02:57 +01:00
Roy-043 ed388aa60f Merge pull request #20436 from Roy-043/Draft-Update-checked-state-of-grid-button-when-switching-the-grid
Draft: Update checked state of grid button when switching the grid
2025-03-26 10:40:46 +01:00
mosfet80 9a5ea74f1f Update pixi
Switch to last veraion.
Important fix : propagate error diagnostics from backends https://github.com/prefix-dev/pixi/pull/3426

https://github.com/prefix-dev/pixi/releases
2025-03-26 06:46:15 +01:00
Yorik van Havre daf8a4f736 Update src/Mod/BIM/bimcommands/BimMaterial.py
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-03-25 20:02:11 -05:00
Yorik van Havre 47d6ad847a BIM: Fixed material dialog's merge duplicates button - fixes #20124 2025-03-25 20:02:11 -05:00
Joao Matos faabc3d7d6 Part: Remove XML binding files.
This PR removes the Part XML API bindings files now that we have
equivalent Python binding files.
2025-03-25 21:28:52 +01:00
Joao Matos 6083315b04 Part: Convert XML bindings to Python (Part 2) 2025-03-25 19:55:36 +01:00
Ladislav Michl 56bcc0fc55 Gui: Language: Sort mapLanguageTopLevelDomain 2025-03-25 18:29:11 +01:00
Joao Matos e825ebe99d Part: Clean up XML bindings (Part 2)
This cleans up the XML bindings for Part in preparation for an upcoming
migration to Python bindings model.
2025-03-25 17:51:32 +01:00
phaseloop 40ace3241a CAM: fix estlcam postprocessor (#20407) 2025-03-25 10:24:27 +01:00
Adrian Insaurralde 065c1fe0fd Enable pcl by default on non windows systems 2025-03-25 10:14:56 +01:00
Furgo 5b882756a7 BIM: add missing import 2025-03-25 09:46:54 +01:00
Furgo ddc7035fbc BIM: also install test files 2025-03-25 09:46:54 +01:00
Furgo 518e2a8346 BIM: move more functions to their own modules, standardize logging 2025-03-25 09:46:54 +01:00
Furgo aa1a5c135b BIM: move tests to own module, separate App/Gui tests, add TestArchBase 2025-03-25 09:46:54 +01:00
Furgo 40e0c60338 BIM: move Arch wall tests to their own module 2025-03-25 09:46:54 +01:00
Chris Hennes 59bfee2cfe Mesh: catch exceptions in destructor 2025-03-25 09:45:25 +01:00
Chris Hennes b6924ff744 Inspection: catch exceptions in destructor 2025-03-25 09:45:25 +01:00
Chris Hennes ccbbe3d708 Fem: catch exceptions in destructor 2025-03-25 09:45:25 +01:00
Chris Hennes 67982f3963 Base: Add Console::DestructorError as noexcept
Create a new console output that eats exceptions so it is safe to use in a destructor.
2025-03-25 09:45:25 +01:00
Furgo 4bb372ef87 Start: set specific zoom level for new BIM projects (#20271)
* Gui: allow viewDefaultOrientation function to accept the None value, as per the docstring

* Start, BIM: set specific zoom level for new BIM projects
2025-03-25 09:36:43 +01:00
Joao Matos ee4c9a6e8b PartDesign: Remove XML binding files. 2025-03-25 06:11:22 +01:00
Chris Hennes 2526ef9f68 Fem: Add missing VTK headers from PCH 2025-03-24 23:16:02 -05:00
Andrea fe951f6332 Update Eigen Requirement
ubuntu 22.04 use eigen 3.4. The minimum eigen version is raised to 3.4.
Old cmake code is also removed.
2025-03-24 21:09:48 -05:00
Chris Hennes 50bc99c3eb Merge pull request #20428 from pieterhijma/fix-doxygen-structural-warnings
Fix doxygen structural warnings
2025-03-24 21:07:53 -05:00
Joao Matos 74493358da Gui: Remove XML binding files. 2025-03-24 22:47:33 +01:00
karliss f0fe00e16a PartDesign: Update counterbore min size in reaction to diameter changes (#20217)
Can't rely purely on `TaskHoleParameters::threadDiameterChanged` to update it since the signal is intentionally blocked while syncing state to GUI.

Closes #19744
2025-03-24 21:18:40 +00:00
Joao Matos 0206ff59cd CMake: Fix build dependency tracking for Python bindings generation.
This caused a rebuild to always happen due to incorrect dependency
tracking.

Fixes https://github.com/FreeCAD/FreeCAD/issues/20402.
2025-03-24 21:43:31 +01:00
Roy-043 5ba1c2c9b4 Typo in docstrings 2025-03-24 20:58:31 +01:00
Roy-043 f7a7d4ed61 Draft: Update checked state of grid button when switching the grid
The checked state of the grid button was not updated when the grid was only displayed during Draft commands.
2025-03-24 20:53:39 +01:00
mosfet80 b33c236322 Clean QGTracker.cpp
Clean code
2025-03-24 19:02:34 +01:00
j-hap aa725c6866 TechDraw: Replace annotation edit dialog with QPlainTextEdit (#20092)
* TechDraw: Replace annotation edit dialog with QPlainTextEdit

* Remove useless include introduced in previous commit

* Remove trailing _ for members to conform with rest of the codebase

* Add const & to string vectors that don't need copying

* Fix IWYU linter warnings

* Forward all annotation double clicks to the StringList property editor

* Remove unused dialog

* Fix Qt 5 build error

* Fix missing exports with MSVC
2025-03-24 13:27:55 -04:00
Kacper Donat 4c5c88bcf4 Gui: Remove -1 min-width from dialog buttons
This ensures that minimum width from QStyle is still applied while buttons still respect minimum size hint
2025-03-24 12:25:56 -05:00
hasecilu fd44970530 Linux: Add Spanish translation to desktop file 2025-03-24 14:09:41 -03:00
Chris Hennes c0b14e6b77 Merge pull request #20369 from WandererFan/SplineAsCircleYetAgain20347
[TD] Spline as circle yet again  (fix 20347)
2025-03-24 12:05:59 -05:00
tritao ce8a545fb6 Part: Convert XML bindings to Python API bindings model. 2025-03-24 12:00:16 -05:00
sliptonic d71cfabd4c Merge pull request #19910 from LarryWoestman/refactor
CAM:  Used inheritance to simplify the refactored postprocessors even more
2025-03-24 17:58:58 +01:00
tritao 7cbbe403cc Gui: Convert XML bindings to Python API bindings model.
This converts the existing XML binding files to the new Python bindings
generator model.
2025-03-24 11:56:53 -05:00
Chris Hennes 325ae6fd9a Addon Manager: Create AddonCatalog class 2025-03-24 17:52:09 +01:00
aprospero 7dab93abac get rid of get/set_param doublette in Draft utils
we have the same functionality already in params from draftutils
2025-03-24 11:48:42 -05:00
mosfet80 b1395a7b04 Update sub_buildPixi.yml
changelog 
switch from 0.41.3 to 0.42.1
https://github.com/prefix-dev/pixi/releases
2025-03-24 11:46:41 -05:00
Johannes Thyssen Tishman c8b1ea2836 Configure and install thumbnailer
Currently the file "src/XDGData/FreeCAD.thumbnailer" gets installed, but
the associated freecad-thumbnailer script isn't. Install the script,
too.

While here, have the paths to the default icon and freecad-thumbnailer
script follow ${CMAKE_INSTALL_DATAROOTDIR} and ${CMAKE_INSTALL_BINDIR}
respectively.
2025-03-24 13:46:17 -03:00
Chris Hennes 2fe3631fd9 Merge pull request #19908 from davesrocketshop/external_modules_part1_pr2
Materials: External Modules Part 1
2025-03-24 11:41:02 -05:00
Pieter Hijma aa768e2a90 [Doc] Fix Robot kdl documentation issues 2025-03-24 16:33:54 +01:00
Pieter Hijma 00428ff014 [Doc] Fix multiple use section label 2025-03-24 16:33:54 +01:00
Pieter Hijma b3ae844792 [Doc] Fix CAM documentation problems
- Fix nested comments
- Fix section labels
2025-03-24 16:33:54 +01:00
Pieter Hijma d1ed87073e [Doc] Fix nested groups in FEM 2025-03-24 16:33:54 +01:00
Pieter Hijma d0c1f2c073 [Doc] Fix nested comment problem 2025-03-24 16:33:54 +01:00
Pieter Hijma 2a99c26c95 [Doc] Fix missing CXX directory 2025-03-24 16:33:54 +01:00
Chris Hennes 26b2ba2a7e FEM: Add missing vtkTransform.h header to PCH file
Also sort the VTK includes.
2025-03-24 10:29:00 -05:00
PhaseLoop cb6188944d Merge branch 'array-dressup-2' of https://github.com/phaseloop/FreeCAD into array-dressup-2 2025-03-24 00:05:42 +01:00
PhaseLoop 81ccf9cc5a update cmake list 2025-03-24 00:05:29 +01:00
pre-commit-ci[bot] f072bde2d0 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-03-23 22:44:10 +00:00
PhaseLoop 2bca01f0cf unit tests for array dressup 2025-03-23 23:38:14 +01:00
marcuspollio ba67de4c05 BIM: cleanup imports at module root 2025-03-23 23:32:16 +01:00
marcuspollio 6eb6e44232 BIM: cleanup imports in utils 2025-03-23 23:31:38 +01:00
marcuspollio 0798d1ca9e BIM: cleanup imports in nativeifc 2025-03-23 23:30:55 +01:00
marcuspollio 7bbfa68698 BIM: cleanup imports in importers 2025-03-23 23:30:31 +01:00
marcuspollio 8ab6bd7d4b BIM: cleanup imports in bimcommands 2025-03-23 23:29:43 +01:00
tritao d5a1098add Part: Remove Py_UNICODE usage from Part.makeWireString and FT2FC. 2025-03-23 22:49:13 +01:00
Chris Hennes 97638e0c82 Gui: Check return value from getDetail()
Coverity issue 251377. Every other use of this method follows this idiom, update the last call to match.
2025-03-23 22:47:30 +01:00
Chris Hennes af8a86f6bf Base: Eliminate use of deprecated PyWeakref_GetObject
Co-authored-by: João Matos <joao@tritao.eu>
2025-03-23 22:43:03 +01:00
Chris Hennes ebc0dc165d Base: Initialize tp_versions_used in PyTypeObject (3.13)
This field is undocumented, but exists in the source code for 3.13
(see https://github.com/python/cpython/blob/3.13/Include/cpython/object.h#L232)
and gives a compiler warning if left uninitialized.
2025-03-23 22:42:08 +01:00
J-Dunn d3f617bb4b CAM: thread-mill Shape , more robust model (#20320)
* CAM:  thread-mill Shape , more robust model 

Purpose: prevent solver dumping arcane coding errors to report window if "crest" value is (legitimately) set to zero by user. 

Single tooth thread-mill tools exist which have a sharp point, ie zero flat "crest " surface. Thus the user can reasonably expect to configure a zero dimension to the truncated end of the tool if it is not truncated. This should not provoke an error condition and certainly not crash the model and dump lots of arcane developer info on the machinist user. 

The problem is that a zero dimension makes two points concurrent and removes an edge from the model. This leads to and ill-defined model which crashes the solver. The user should not be exposed to this kind of coding breakage when entering legitimate data for a tool shape. The solution (or workaround) here is to add a very small faction of the shaft diameter to the user supplied zero to prevent the solver crashing. Since this is proportional to the tool shaft it will scale to any use of the tool shape without disrupting path accuracy.

This is a drop in replacement for the existing file and caters for both types of this tool:  truncated tip and pointed tip.

* threadmill Shape update

This thread-mill Shape file uses max()  in the expression for crest. 
This allows user setting zero crest by adding a small finite dimension to prevent the solver crashing, while not making any change to finite crest tools. 
Best of both worlds.
2025-03-23 19:12:36 +01:00
Chris Hennes 723d16fcff PD: Eliminate unused variable in FeatureHole 2025-03-23 18:25:40 +01:00
Chris Hennes 90432f967f Gui: Eliminate implicit capture of this via =
Per clang: "implicit capture of 'this' with a capture default of '=' is deprecated"
2025-03-23 18:23:37 +01:00
Kacper Donat 2a81e9d18d Merge pull request #20216 from alfrix/start_fixes_5
Start: fix newbuttons vertical sizing
2025-03-23 17:10:19 +01:00
Roy-043 996fbe5410 Part: remove rogue margins from ui file
Added margin=0. Same as in DlgExportStep.ui:
https://github.com/FreeCAD/FreeCAD/blob/718ac63365cd93f1800e2bdfcbe3d0b0dc807230/src/Mod/Part/Gui/DlgExportStep.ui#L17-L19
2025-03-23 14:09:11 +01:00
Roy-043 718ac63365 Merge pull request #20355 from Roy-043/Draft-move-statusbar-widget-delays-to-init_draft_statusbar.py
Draft: move statusbar hide delay to init_draft_statusbar.py
2025-03-23 10:19:53 +01:00
Roy-043 cff93fbbf0 Merge pull request #20354 from Roy-043/Draft-show-and-hide-Tray-with-delay
Draft: show and hide Tray with delay
2025-03-23 10:19:16 +01:00
Chris Hennes fabe25bd06 FEM: myStudyId not needed when SMESH >= 9
Put guards not just around its use, but also its creation.
2025-03-23 08:56:31 +01:00
Chris Hennes 74dd1b15f4 Fem: remove unused variable in Command 2025-03-23 08:53:55 +01:00
Chris Hennes 867e4507cc App: Prevent exceptions in destructors
Coverity issues 251332 and 356538. These destructors call methods
that could throw exceptions. Catch them and convert to console
print statements to prevent calls to `terminate()`.
2025-03-23 08:52:44 +01:00
Chris Hennes a546517588 Gui: Check return value
Coverity issue 513113
2025-03-23 08:51:38 +01:00
Paul Lee 07fcf551d0 [Draft-Faces] Bind: Improve fuse and warning
1. Face fuse per segment
   (original code has a whole face/segment disappear when a face is self-intersecting or reversed)
2. Return warning if face is self-intersecting Or reversed

Github Issue:
- https://github.com/FreeCAD/FreeCAD/issues/19721#issuecomment-2744738019
FreeCAD Forum:
- https://forum.freecad.org/viewtopic.php?p=816758#p816758
- https://forum.freecad.org/viewtopic.php?p=813062#p813062
2025-03-23 12:06:27 +08:00
Chris Hennes 3cbcab042e Main: Replace uses of Py_GetPath()
Deprecated in Python 3.13
2025-03-22 21:57:00 -05:00
Chris Hennes f0fc6ccde1 Base: Remove deprecated Py_GetPath call
Replace it with a piece of code that replicates the functionality. Also eliminate the round-trip through char * that this function was using (the final variable is stored as a std::string anyway).
2025-03-22 18:59:05 -05:00
pre-commit-ci[bot] c15e45e7e2 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-03-22 23:27:10 +01:00
Stefan Tröger 9fb0d7b0bb FEM: Update multiframe code after review 2025-03-22 23:27:10 +01:00
Stefan Tröger f264e0c932 FEM: Multistep test fix for vtk 7.x 2025-03-22 23:27:10 +01:00
Stefan Tröger 22c8d389d4 FEM: Port elmer transient analysis to multiframe results 2025-03-22 23:27:10 +01:00
Stefan Tröger c815612dc6 FEM: Fix multiframe bugs and add correct units for all cxx analysis types 2025-03-22 23:27:10 +01:00
Stefan Tröger 9738b9b6ea FEM: Modernize multiframe code and incorporate review feedback 2025-03-22 23:27:10 +01:00
Stefan Tröger 0a1cc21b5c FEM: Make post object placement work 2025-03-22 23:27:10 +01:00
Stefan Tröger c8a4ff0a70 FEM: Backward compatibility for post pipeline and multiple fixes 2025-03-22 23:27:10 +01:00
Stefan Tröger 53a7e5ab34 FEM: Correctly implement Drag/Drop for post objects 2025-03-22 23:27:10 +01:00
Stefan Tröger 4bc2a1d6f3 FEM: Add post pipeline branch 2025-03-22 23:27:10 +01:00
Stefan Tröger a65a7feb87 FEM: Switch post groups to extension based system 2025-03-22 23:27:10 +01:00
Stefan Tröger 1cff507a7f FEM: Multiframe adoptions
- To support timedata and the relevant filters the pipeline needs to be fully setup, hence not only working on data
 - Multiblock source algorithm is needed to supply the time data for the algorithms
2025-03-22 23:27:10 +01:00
xtemp09 2119f9dfb4 [Spreadsheet] Code base update in SheetModel.cpp (#20343)
* [Spreadsheet] Code base update in SheetModel.cpp

* [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-03-22 21:19:11 +00:00
Furgo d4f99901ae Do not specify a version in FindOCC.cmake 2025-03-22 16:49:33 -03:00
Alfredo Monclus 45ddcf8317 start: fix file cards not respecting styling 2025-03-22 18:59:11 +00:00
Alfredo Monclus 2513c056d6 start: fix newfilebuttons sizehint and split it into it's own widget 2025-03-22 15:52:55 -03:00
Alfredo Monclus 1ba9e693bd start: modify the flowlayout to have homogeneous rows 2025-03-22 15:39:46 -03:00
PaddleStroke 3b6cb37dd9 Assembly: ignore joints in error (#20253)
Co-authored-by: drwho495 <drwho495555@gmail.com>
2025-03-22 18:27:24 +01:00
PaddleStroke 0f00c6d2d1 Sketcher: Slot tool: Enforce correctly when angle is set (#20269) 2025-03-22 18:21:24 +01:00
Chris Hennes f15ba6b681 Merge pull request #20110 from WandererFan/HeadlessViewCreation20024
[TD]Headless view creation (fix #20024)
2025-03-22 12:20:58 -05:00
PaddleStroke 1fc61423f3 Sketcher: Line tool: Enforce correctly when angle is set (#20267) 2025-03-22 18:20:26 +01:00
Yorik van Havre c1614001a0 BIM: Fixed project manager's save/restore - fixes #20288 2025-03-22 11:51:01 -05:00
pre-commit-ci[bot] 82e57fdeb6 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-03-22 11:38:48 -05:00
pre-commit-ci[bot] 0b077fc914 [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pre-commit/mirrors-clang-format: f9a52e87b6cdcb01b0a62b8611d9ba9f2dad0067 → 458d954d175f16d216d7d04d5c182e3b10ddfbb4](https://github.com/pre-commit/mirrors-clang-format/compare/f9a52e87b6cdcb01b0a62b8611d9ba9f2dad0067...458d954d175f16d216d7d04d5c182e3b10ddfbb4)
2025-03-22 11:38:48 -05:00
Bas Ruigrok ffc12e2892 Gui: Align to selection using a smaller rotation 2025-03-22 11:35:46 -05:00
hasecilu c1d03b24a9 Mesh: change context for strings on task panel 2025-03-22 11:30:55 -05:00
xtemp09 b3008feaa1 [Spreadsheet] Fix input in expression editor (#19934)
* [Spreadsheet] Fix input in expression editor

Closes #19804

* [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-03-22 11:25:17 -05:00
PaddleStroke 8353c44958 PartDesign : Subshapebinder tooltip (#20023)
* PartDesign : Subshapebinder tooltip

* Update src/Mod/PartDesign/Gui/Command.cpp

Co-authored-by: Furgo <148809153+furgo16@users.noreply.github.com>

---------

Co-authored-by: Furgo <148809153+furgo16@users.noreply.github.com>
2025-03-22 11:21:31 -05:00
WandererFan b255deb354 [TD]fix view loses dimensions (fix #19968) (#20122)
* [TD]fix view loses dimensions (fix #19968)

* [TD]Apply review comment
2025-03-22 11:12:42 -05:00
Adrian Insaurralde 9f9610076e cmake: remove distutils usage for python < 3.10 2025-03-22 11:08:36 -05:00
Chris Hennes f33687535d FEM: Ensure node is initialized before use
Coverity issue 545328
2025-03-22 07:15:15 +01:00
Chris Hennes 8f2e330a53 PD: Check threadType before using to index
Coverity issue 545314
2025-03-22 07:15:15 +01:00
Chris Hennes 23824028c1 FEM: Initialize scalar
Coverity issue 545304
2025-03-22 07:15:15 +01:00
Chris Hennes 1092c9704a FEM: Ensure node is valid before accessing
Coverity issue 545293
2025-03-22 07:15:15 +01:00
Chris Hennes 47615b8464 Spreadsheet: Ensure copy of temp string is kept
Coverity issue 545269. A temporary string is constructed, and its address stored via c_str(). That pointer is then used after the string is destroyed. The fix is to store the std::string.
2025-03-22 07:15:15 +01:00
Chris Hennes 28b62eb52b Sketcher: Ensure copy of temp string is kept
Coverity issue 545249. A temporary string is constructed, and its address stored via c_str(). That pointer is then used after the string is destroyed. The fix is to store the std::string.
2025-03-22 07:15:15 +01:00
Chris Hennes eb86151307 Mesh: Sanity-check old file format size 2025-03-22 07:15:15 +01:00
Chris Hennes 69bbee9583 Part: Ensure ShapeHistory is fully initialized
Coverity issue 515690
2025-03-22 07:15:15 +01:00
Chris Hennes e12deea20e Sketcher: Ensure loop can exit
Coverity issue 513796
2025-03-22 07:15:15 +01:00
Chris Hennes 5502fafafb CAM: Add missing destructor
Coverity issue 513026
2025-03-22 07:15:15 +01:00
Chris Hennes 5aa1842dcc Part: Remove inefficient vector reserve()
Coverity issue 356645
2025-03-22 07:15:15 +01:00
Chris Hennes 0bfc459298 Part: Don't cast time_t to a potentially 32-bit type
Coverity (and possibly other static analyzers) detect when we attempt to use a time_t as what might be a 32-bit value, warning about Y2K38 safety. It is irrelevant in this case, but make the change to avoid the warning (so it doesn't hide any real problems).
2025-03-22 07:15:15 +01:00
Chris Hennes 28e07eeda5 Gui: Don't allow manipulator to delete the menubar
Same for the toolbar or context menu.
2025-03-22 07:15:15 +01:00
Chris Hennes 00e648220a App: Check for an invalid enum before proceeding 2025-03-22 07:15:15 +01:00
Chris Hennes c2df0a1315 TD: Ensure WalkerEdge is fully initialized
Coverity thinks that the edge_t is not getting fully initialized, so add a constructor to WalkerEdge that ensures the two components in question are set to zero (resulting in an invalid edge).
2025-03-22 07:15:15 +01:00
Chris Hennes c252f40b6f App: Don't use std::forward inside loop
std::forward implies that sometimes its argument will be *moved*, leaving it invalid in the calling code. If that call is inside a loop that tries to reuse the data we have undefined behavior.
2025-03-22 07:15:15 +01:00
bofdahof 4ceecd0857 Replace std::endl with '\n' 2025-03-21 23:30:41 -05:00
bofdahof e4ebaba805 Exception.cpp 2025-03-21 22:39:41 -05:00
tritao 16968aa3ee PartDesign: Convert XML bindings to Python API bindings model. 2025-03-21 23:14:24 +01:00
Roy-043 3bb1358f32 Remove import that has become superfluous 2025-03-21 20:38:58 +01:00
Roy-043 a3fd3bc546 Draft: move statusbar widget hide delay to init_draft_statusbar.py
With this PR both the delays for `show_draft_statusbar` and `hide_draft_statusbar` are defined in the same file. This is more consistent.
2025-03-21 20:31:37 +01:00
Roy-043 037d8244f5 Draft: show and hide Tray with delay
Without this delay the Tray may not display if Draft is the start-up workbench.

When the Draft workbench is autoloaded the Tray is shown and then immediately hidden. Because of this, hiding the tray must also happen with a delay.
2025-03-21 19:56:38 +01:00
tritao 176f91eea8 App: Remove XML binding files.
This PR removes the App XML API bindings files now that we have
equivalent Python binding files.
2025-03-21 16:43:59 +01:00
tritao 997982ad20 Tools: Use ModuleName when determining which modules to compare against XML bindings. 2025-03-21 16:43:59 +01:00
wandererfan c0d6d71896 [TD]use Ptolemy's Theorem for bspline to circle conversion 2025-03-21 11:10:17 -04:00
wandererfan 06346da2a5 [TD]fix reversed condition prevents 3d dimension 2025-03-21 11:01:20 -04:00
wandererfan 8ac44a2c9c [TD]clean annoying lint messages 2025-03-21 11:01:15 -04:00
wandererfan 1bbeb21eec [TD]apply review comments 2025-03-21 09:49:14 -04:00
mosfet80 3dd7a1cc52 Remove support to oldest occ <7.5 (#20084)
* remove support to oldest occ <7.5

The  os ubuntu 22.04 not supported use occ 7.5.1.
There is a lot of code implemented to support even older versions.
The patch removes support for versions lower than occ 7.5.0

* .

* move include library

#pieterhijma  change request :

* removed deprecated functions

get/setAngle functions has been removed with OCC 7.5
2025-03-21 13:06:47 +01:00
Benjamin Nauck e987441542 Chore: Add myself (hyarion) as Contributor 2025-03-21 10:23:58 +01:00
Lawrence Woestman f680ee7af9 CAM: Used inheritance to simplify the refactored postprocessors more
Updated the Masso tests now that it is using the new API.
2025-03-20 19:22:50 -07:00
Florian Foinant-Willig 7bf1b5d787 Fix FreeCAD#19588 2025-03-20 20:14:50 +01:00
PaddleStroke 9bd9fe1551 Update src/Mod/PartDesign/Gui/Command.cpp
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-03-20 19:51:18 +01:00
PaddleStroke 9a38673774 PartDesign: clone tooltip 2025-03-20 19:51:18 +01:00
Roy-043 95aa28cc30 BIM: Generate curtain wall panels in spanned grid openings
Fixes #20235.
2025-03-20 15:04:53 +01:00
PhaseLoop c249b62b6c update CMake imports 2025-03-20 15:02:56 +01:00
PhaseLoop e8cd9a61d6 add missing dressup import 2025-03-20 14:28:09 +01:00
PhaseLoop 585ac82c34 log error on invalid base object 2025-03-20 14:26:36 +01:00
Alfredo Monclus 02f37bf598 Gui: spinbox use getmargin 2025-03-20 14:23:36 +01:00
Alfredo Monclus ad95704832 Gui: spinbox add patch for qt<6.3 2025-03-20 14:23:36 +01:00
Alfredo Monclus 1012b66f4f Gui: fix spinbox numbers should not go under the icon 2025-03-20 14:23:36 +01:00
Alfredo Monclus 6693947ca1 Gui: correct the size and position of the expression (fx) icon 2025-03-20 14:23:36 +01:00
PaddleStroke 7076989ead Remove unecessary if in DrawSketchHandlerArc.h 2025-03-20 13:40:24 +01:00
PhaseLoop 41d20a62cd Replace Array operation with array dressup 2025-03-20 12:48:52 +01:00
Tomas Polak ea247c1540 BIM_ProjectManager typo fix 2025-03-20 12:25:09 +01:00
Roy-043 fc4aa06f96 BIM: HumanFigure.brep: fix typo in create_qrc.py
Fixes #20289

My bad. Because of this typo the brep file was not included in Arch_rc.py.
2025-03-20 12:07:19 +01:00
Tomas Polak 895fe5ea1c BIM_Classification dialgue - change tooltips and text to better represent their functions (#20274)
* Change Ifc Classification dialgue tooltips and text

* Update src/Mod/BIM/bimcommands/BimClassification.py

Co-authored-by: Yorik van Havre <yorik.vanhavre@gmail.com>

---------

Co-authored-by: Tomas Polak <semhustej@users.noreply.github.com>
Co-authored-by: Yorik van Havre <yorik.vanhavre@gmail.com>
2025-03-20 12:06:20 +01:00
Furgo bf55cdaecd BIM: move add/removeSpace boundaries implementation to Arch module (#20222)
* BIM: move add/removeSpaceBoundaries definitions to the Arch module

* BIM: make add/removeSpaceBoundaries implementation consistent

* BIM: update and expand docstrings
2025-03-20 11:47:03 +01:00
Furgo a3fd9423ec BIM: add unit test for addSpaceBoundaries (#20146)
* BIM: add unit test for addSpaceBoundaries

* BIM: remove test dependency on FreeCADGui
2025-03-20 11:44:56 +01:00
tritao e1c51becdc App: Modernize Python bindings with new API model. 2025-03-20 11:07:27 +01:00
Joao Matos 4ed1c54ab2 Tools: Improve identation handling for attribute docstring comments. 2025-03-20 11:07:27 +01:00
Paul Lee 356d89f1bb [ArchStairs] ArchSketch Support and Refactoring Phase 1
FC Forum Discussion:-
https://forum.freecad.org/viewtopic.php?p=814274#p814274

ArchSketch Support, PropertySet, and Refactoring to enable more complex Stairs shape.
2025-03-20 10:24:03 +01:00
Roy-043 ea82500560 Draft: make Near snap obey 'Always snap' setting
Fixes: #19553.

Additionally:
* Removed 2 unused attributes (`self.lastSnappedObject` and `self.active`).
* Improved the readability of `snapToObject` a little bit.
* Made the return value of that function consistent (vector or None).
2025-03-20 10:14:49 +01:00
tritao 8d36987f16 Base: Remove XML binding files. 2025-03-19 20:04:19 -05:00
tritao 723a25c57d Tools: Re-enable XML comparison mode Python API bindings generator. 2025-03-19 08:32:06 -05:00
Johannes Thyssen Tishman d9e731ca94 The PCL point_traits.h header was renamed (and deprecated) since
1.11.0 and removed in 1.15.0.
2025-03-19 08:29:46 -05:00
Joao Matos cc708d28d0 CI: Refactor C++ checks linting setup. 2025-03-19 07:56:44 -05:00
Guillaume Roguez e127f2c884 fix dialogs button size in case of long text
Let the layout engine computes the size of all QPushButton by unset
the minimalSize value set by "min-width" QSS property in themes.

Fix #18019.
2025-03-19 13:37:47 +01:00
Furgo 47cec43aae BIM: allow boundaries to be defined from a single object (e.g. wall) (#20158)
* BIM: Add test for space from single wall boundaries

* BIM: Arch_Space, enable creation of spaces from single objects with
boundaries

* BIM: update and expand docstring
2025-03-19 10:45:26 +01:00
Chris Hennes 64d658e38a FreeCAD: Compiler warning fixes 2025-03-19 10:13:34 +01:00
ljo afe23a432c Fix RPM packaging and add support for building with Qt6 and PySide6 for Fedora 40+ (#19565) 2025-03-19 03:31:21 +00:00
xtemp09 6cfec14545 [App] Fix the crash reported in #20212 2025-03-19 00:23:22 -03:00
David Carter 507c3ba352 Linter fixes 2025-03-18 20:33:10 -05:00
David Carter befa9844a9 Update src/Mod/Material/App/Materials.cpp
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-03-18 20:33:10 -05:00
David Carter ce97507c32 Update src/Mod/Material/App/Library.cpp
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-03-18 20:33:10 -05:00
David Carter 17d5dc89eb Update src/Mod/Material/App/Model.cpp
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-03-18 20:33:10 -05:00
David Carter 592406a328 Materials: External Modules Part 1
Refactored code to support local and external material sources

This is the first PR in a series to support external modules. External
modules allow materials to be stored in external data sources such as
databases or web services. No new functionality is introduced in this
PR, rather it is a refactoring of code that will allow for changes to
be introduced in future PRs. Minor performance improvements have also
been made in the model and material managers.

The Python API has been enhanced for many data types to allow for
modification within Python.
2025-03-18 20:33:10 -05:00
Joao Matos 382720b82e CI: Temporarily disable Clazy checks. 2025-03-18 19:35:33 -05:00
Chris Hennes c1ada6bc40 App: Coverity fixes 2025-03-18 15:59:22 +01:00
Chris Hennes d850e87567 Base: Coverity cleanup 2025-03-18 15:59:22 +01:00
Lawrence Woestman f3bb974855 CAM: Added three options to the refactored postprocessors
with tests.

Removed extra spaces in comments to work around auto-fix
removal of spaces at the end of lines in multi-line python strings.
2025-03-17 20:59:29 -05:00
Thomas Gimpel dbfc0b47b6 App: reverted commit 8ff4b1b and improved comments in order to fix the MacOS build (#20068) 2025-03-17 20:23:01 +01:00
Chris Hennes e574fa1efc Merge pull request #19899 from tritao/cmake-cleanup-targets
CMake: Cleanup targets with transitive dependencies
2025-03-17 13:15:37 -05:00
bofdahof f8be6f5233 Base: Switch small enum base type to std::uint8_t
int and size_t are much larger than necessary for storage of these
enum types.
2025-03-17 12:34:14 -05:00
PaddleStroke 4ab281bd7d Assembly: Fix: Select datum should not show dragger. (#20051)
* Assembly: Fix: Select datum should not show dragger.

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

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

* Update ViewProviderAssembly.cpp

* [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-03-17 18:13:20 +01:00
Furgo c47507bad0 BIM: include selected objects when creating a level 2025-03-17 18:12:36 +01:00
Captain 384fcdf006 TechDraw: changed CosmeticVertex point picker dashed circle to filled dot. (#20095)
* techdraw: changed the cosmetic vertex shape

* add back the call to prepareGeometryChange

* add getVertexSize and getLineWidth methods to QGIViewPart

* use doubles for sizes

* update setRadius in QGMarker to use double instead of float
2025-03-17 12:05:29 -05:00
Chris Hennes 3d03bb45f8 Merge pull request #20201 from Roy-043/Draft-make-Draft_Edit-also-detect-key-up-events
Draft: make Draft_Edit also detect key up events
2025-03-17 11:57:24 -05:00
Chris Hennes c43fd51588 Merge pull request #20177 from captain0xff/flickering-cursor
TechDraw: Fix flickering cursor issue
2025-03-17 11:15:40 -05:00
Chris Hennes 0400673e1d Merge pull request #20149 from phaseloop/vcarve-improvements
[CAM] Change VBit tip diameter to 0.1 mm.
2025-03-17 11:13:51 -05:00
Chris Hennes 061876db82 Merge pull request #14176 from mosfet80/cleanmodPart
[mod:part] clean code
2025-03-17 11:13:19 -05:00
Benjamin Bræstrup Sayoc d80795b2e4 Gui: fix centering in color button 2025-03-17 15:19:00 +01:00
tritao 6c2c6847eb CMake: Cleanup targets with transitive dependencies 2025-03-17 12:12:06 +00:00
Chris Hennes 5f623390fb Merge pull request #20142 from bofdahof/ranges
Apply C++20 std::ranges (mainly to std::find)
2025-03-17 03:08:27 -05:00
Chris Hennes 72bf250859 Merge pull request #20040 from PaddleStroke/patch-12
QuickMeasure: Do not measure datums
2025-03-17 00:26:37 -05:00
Chris Hennes 42cc0d93be Merge pull request #20160 from karliss/popup-parent
Add missing parent for messagbox and other popups.
2025-03-17 00:16:49 -05:00
Chris Hennes 4fcdac28fb Merge pull request #19583 from hyarion/refactor/base-type
Refactor Base::Type
2025-03-17 00:03:22 -05:00
Chris Hennes ca4f99103b Merge pull request #20172 from PaddleStroke/patch-17
Sketcher: Fix negative angle rendering negative bug
2025-03-17 00:02:37 -05:00
Chris Hennes 998f713c97 Merge pull request #19788 from benj5378/state2
TechDraw: remove unneeded state, part 1
2025-03-17 00:02:20 -05:00
Chris Hennes 8d29aabe4d Merge pull request #19924 from benj5378/codeDupEditor
Gui: avoid code duplication in PythonEditor
2025-03-17 00:02:03 -05:00
Chris Hennes 9765a6cb69 Merge pull request #20140 from yorikvanhavre/bim-classification-fix
BIM: Fixed classification dialog's Cancel button
2025-03-17 00:01:47 -05:00
Chris Hennes cb03c8f402 Merge pull request #20114 from mosfet80/CleanShibokenCmake
Clean Salome Cmake
2025-03-17 00:01:33 -05:00
Chris Hennes 001d1377be Merge pull request #20061 from alfrix/start_fixes_3
start: fix listview height always being too small
2025-03-17 00:01:14 -05:00
Chris Hennes fdb3f70719 Merge pull request #19661 from jbaehr/cam-improve-unit-warning
CAM: Improve warning text for improper unit scheme
2025-03-17 00:00:52 -05:00
Chris Hennes d09d2c02bb Merge pull request #17779 from wwmayer/noboostpy
Remove support for Boost.Python
2025-03-17 00:00:32 -05:00
Chris Hennes 31db67d375 Merge pull request #19252 from pmjdebruijn/thread
PartDesign: explicitly thread pitch for regular profile ISO threads
2025-03-17 00:00:14 -05:00
Chris Hennes fd4fd6ccf7 Merge pull request #19890 from Shkolik/sketcher_defining_color
Sketcher: Preference color added for External defining geometry
2025-03-17 00:00:02 -05:00
Chris Hennes b89ad30bc0 Merge pull request #19917 from tritao/refactor-document-recompute
Core: Refactor code around document and feature recompute
2025-03-16 23:59:12 -05:00
Chris Hennes 89e20d561d Merge pull request #20105 from PaddleStroke/patch-15
Sketcher: DSH: add OVP constraints before AutoConstraints.
2025-03-16 23:58:57 -05:00
Chris Hennes c6012c514a Merge pull request #20141 from semhustej/change_IfcElements_window_size
Change IfcElements window width
2025-03-16 23:58:40 -05:00
Chris Hennes 75bcc7d316 Merge pull request #20165 from PaddleStroke/patch-16
Sketcher: Add parameter to combine line and polyline
2025-03-16 23:58:07 -05:00
Chris Hennes 58400121eb Merge pull request #20179 from mosfet80/patch-11
Update sub_lint.yml
2025-03-16 23:57:51 -05:00
Chris Hennes 9ecd7b7d16 Merge pull request #20184 from tritao/apt-install-script-fix-vtk
Package: Fix apt install script to handle VTK for newer Ubuntu releases.
2025-03-16 23:57:33 -05:00
Chris Hennes 1ad5bc1284 Merge pull request #20207 from yorikvanhavre/bim-space-text
BIM: Fixed space text display
2025-03-16 23:57:19 -05:00
Chris Hennes 8d3c98c6b3 Merge pull request #20191 from mosfet80/patch-12
clean  Gui/CMakeLists.txt
2025-03-16 23:57:01 -05:00
Chris Hennes 269eee4efd Merge pull request #20173 from luzpaz/typos-Mar-2025
Fix various typos
2025-03-16 23:56:47 -05:00
Chris Hennes b8f834415c Merge pull request #20202 from tritao/fix-python-shiboken-regression
Fix regression in Python setup with old Shiboken.
2025-03-16 23:56:31 -05:00
bofdahof 1043767919 Points: apply std::ranges 2025-03-16 17:19:22 -05:00
bofdahof 8b31b5c92d Mesh: apply std::ranges 2025-03-16 17:19:03 -05:00
bofdahof 20141d7f19 TechDraw: apply std::ranges 2025-03-16 17:18:23 -05:00
bofdahof 34881bc82e Sketcher: apply std::ranges 2025-03-16 17:18:12 -05:00
bofdahof de16fe094a Part: apply std::ranges 2025-03-16 17:17:37 -05:00
bofdahof 965af2bf9a PartDesign: apply std::ranges 2025-03-16 17:17:15 -05:00
bofdahof 2e2f872da6 Measure: apply std::ranges 2025-03-16 17:16:56 -05:00
bofdahof 49cc124a68 Import: apply std::ranges 2025-03-16 17:16:42 -05:00
bofdahof 4dd92724b6 FEM: apply std::ranges 2025-03-16 17:16:30 -05:00
bofdahof 07aafd78c6 Drawing: apply std::ranges 2025-03-16 17:15:49 -05:00
bofdahof b89f3353ce CAM: apply std::ranges 2025-03-16 17:15:38 -05:00
bofdahof c4eeaa2d11 Assembly: apply std::ranges 2025-03-16 17:15:26 -05:00
bofdahof e5b06ae736 Gui: apply std::ranges 2025-03-16 17:15:14 -05:00
bofdahof 77689e3bb1 Base: apply std::ranges 2025-03-16 17:14:51 -05:00
bofdahof 4a16ea41a7 App: apply std::ranges 2025-03-16 17:14:38 -05:00
Karliss fa61131590 Add missing parent for messagebox and other popups
Unparented popups can easily get lost in backround, but they still block top level event loop when run with ::exec() thus preventing interactions with main window.  This mainly happens on wayland. Setting the parent ensures they are always kept on top and reasonably positioned.
2025-03-16 16:02:36 -05:00
PaddleStroke db5dafaf2f QuickMeasure: Do not measure datums 2025-03-16 15:48:46 -05:00
Yorik van Havre d3aaa4cfa6 BIM: Fixed space text display - fixes #20126 2025-03-15 14:35:17 +01:00
Captain 41acfc8109 Merge branch 'FreeCAD:main' into flickering-cursor 2025-03-15 03:28:34 +05:30
tritao 35f89deb80 Fix regression in Python setup with old Shiboken.
https://github.com/FreeCAD/FreeCAD/pull/19635#issuecomment-2725612407
2025-03-14 21:11:11 +00:00
Roy-043 8b070255d0 Draft: make Draft_Edit also detect key up events
The key down events can be claimed by shortcuts from other workbenches. Detecting both the down and up events does not seem to cause problems.
2025-03-14 21:09:20 +01:00
Luz Paz 17102251e5 Fix various typos 2025-03-14 12:37:12 -04:00
Joao Matos 17fc5b5bc7 Package: Fix apt install script to handle VTK for newer Ubuntu releases. 2025-03-14 13:42:29 +00:00
mosfet80 3d674ed27e clean Gui/CMakeLists.txt
clean code
2025-03-14 09:20:02 +01:00
Chris Hennes 9a6a98f824 Merge pull request #20178 from hasecilu/fix/measure_translation_file
Measure: add translation source file for uploading to Crowdin
2025-03-14 04:47:53 +00:00
Chris Hennes dced463dc6 Merge pull request #19428 from tritao/base-tracy-profiler
Base: Add Tracy frame profiling support.
2025-03-14 04:12:05 +00:00
Joao Matos 7ae14d6bd5 Base: Add build support and instrumentation for the Tracy profiler. 2025-03-14 03:41:30 +00:00
pre-commit-ci[bot] cec8aca628 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-03-13 18:25:19 +00:00
PhaseLoop e4c9484139 migrate isInside to isPartOfDomain 2025-03-13 19:20:12 +01:00
mosfet80 22b1882f0f Update sub_lint.yml
./src/CXX and /src/zipios++ folders have been moved to src/3rdParty
2025-03-13 18:36:29 +01:00
hasecilu 289a9a8dc1 Measure: add Spanish translation 2025-03-13 10:56:18 -06:00
hasecilu 31379fcb8f Measure: add translation source file for uploading to Crowdin 2025-03-13 10:21:10 -06:00
captain0xff 18b6b07a57 stop the cursor from flickering while picking a cosmetic vertex in techdraw 2025-03-13 21:30:44 +05:30
PaddleStroke 0900baaf10 Sketcher: Fix negative angle rendering negative bug 2025-03-13 15:28:23 +01:00
PaddleStroke 0814df7488 Update src/Mod/Sketcher/Gui/SketcherSettings.ui
Co-authored-by: Furgo <148809153+furgo16@users.noreply.github.com>
2025-03-13 15:05:00 +01:00
PaddleStroke 2d5d1397a9 Update src/Mod/Sketcher/Gui/SketcherSettings.ui
Co-authored-by: Furgo <148809153+furgo16@users.noreply.github.com>
2025-03-13 15:04:52 +01:00
PaddleStroke 255949134f Add line group checkbox to SketcherSettings.cpp 2025-03-13 14:47:02 +01:00
PaddleStroke 8ae1d9bbde add line group checkbox in SketcherSettings.ui 2025-03-13 14:45:40 +01:00
sliptonic a375752aa4 Merge pull request #20154 from clsergent/snapmaker_post
CAM: add Snapmaker postprocessor
2025-03-13 13:32:18 +00:00
Benjamin Bræstrup Sayoc e397c73a45 Gui: avoid code duplication in PythonEditor 2025-03-13 14:23:05 +01:00
Chris Hennes 98ef21698b Merge pull request #20166 from mosfet80/updateGSL
Update GSL
2025-03-13 13:07:27 +00:00
Benjamin Bræstrup Sayoc 2607c74e47 TechDraw: remove unneeded state from QGIFace 2025-03-13 13:44:30 +01:00
Benjamin Bræstrup Sayoc 8af47beaac TechDraw: remove unneeded state from QGIDecoration 2025-03-13 13:42:02 +01:00
Benjamin Bræstrup Sayoc 9a323909e1 TechDraw: remove unneeded state from QGCustomText 2025-03-13 13:42:02 +01:00
Benjamin Bræstrup Sayoc aead9ac8c7 TechDraw: remove unneeded state from QGIPrimPath 2025-03-13 13:41:59 +01:00
PhaseLoop 34ab659cd7 Improve Vcarve generating speed 2025-03-13 13:19:32 +01:00
Andrea 4aa60e3482 Update GSL
switch to version 4.2.0
https://github.com/microsoft/GSL/releases/tag/v4.2.0
2025-03-13 12:16:36 +01:00
pre-commit-ci[bot] fde9be13bc [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-03-13 11:12:48 +00:00
PaddleStroke b940863353 Sketcher: Add parameter to combine line and polyline 2025-03-13 12:08:56 +01:00
Chris Hennes ba2a377e7e Merge pull request #20097 from chennes/sketcherCompilerWarnings
Sketcher: Clean up compiler warnings
2025-03-13 02:22:28 +00:00
clsergent 3995d91c96 Added snapmaker postprocessor to CAM 2025-03-12 20:00:55 +01:00
Roy-043 2ad23cec23 Merge pull request #20151 from Roy-043/Draft-fix-handling-of-fillet-radius-input
Draft: fix handling of fillet radius input
2025-03-12 16:27:41 +00:00
Roy-043 1b17da9bf4 Draft: fix handling of fillet radius input
Fixes #20145.
2025-03-12 17:00:52 +01:00
Yorik van Havre 09aa120ffd Merge pull request #20138 from Syres916/BIM_Material_Buttons_Fix
[BIM] Material dialog - fix the minimum width of four buttons in new …
2025-03-12 15:47:32 +00:00
Roy-043 2352557048 Merge pull request #20125 from Roy-043/Draft-Fix-error-in-20118
Draft: Fix error in #20118
2025-03-12 15:31:57 +00:00
PhaseLoop 4ed09be936 fix tip length 2025-03-12 14:50:04 +01:00
PhaseLoop 2170375f11 [CAM] Change VBit tip diameter to 0.1 mm. 2025-03-12 14:40:26 +01:00
Tomas Polak 5c3dbe7ed0 Change IfcElements window width 2025-03-12 11:12:55 +01:00
Yorik van Havre c9e95bdce8 BIM: Fixed classification dialog's Cancel button - fixes #19857 2025-03-12 10:42:14 +01:00
Roy-043 5688a41c4c Updated based on comment 2025-03-12 09:47:03 +01:00
Syres916 f4468f21f2 [BIM] Material dialog - fix the minimum width of four buttons in new group box 2025-03-12 06:05:08 +00:00
Chris Hennes 53c4c2ef50 Merge pull request #20136 from chennes/inventorAllIncludeFix
Mesh: Fix mistaken deletion of #include <Gui/InventorAll.h>
2025-03-12 04:23:27 +00:00
Chris Hennes 16eb057553 Mesh: Fix deletion of #include <Gui/InventorAll.h> 2025-03-11 22:54:16 -05:00
Chris Hennes 3359fee251 Sketcher: Clean up compiler warnings
* numpoints from double to int
* Remove redundant out-of-line definition for constexpr static data member
2025-03-11 22:33:32 -05:00
Chris Hennes 71906499c4 Merge pull request #19843 from Shkolik/sketcher_spline_intersection
fix #19831 Sketcher: Create external Intersection geometry not working with complex surfaces
2025-03-11 21:44:28 +00:00
Chris Hennes 886f2a5949 Merge pull request #19929 from tringenbach/feature/hidpi-navicube-fix
Gui: HiDPI NaviCube fix
2025-03-11 21:34:29 +00:00
Chris Hennes c9e88a31f2 Merge pull request #19911 from jffmichi/fix_boolean_cut
Part: fix infinite recursion in boolean cut
2025-03-11 21:03:03 +00:00
Chris Hennes 357cddabc7 Merge pull request #20117 from hyarion/ps-move-func-to-cpp
Sketcher: Move getStandardButtons to cpp file
2025-03-11 20:55:40 +00:00
Chris Hennes be8b92182c Merge pull request #19921 from mosfet80/QT_CLEAN
REMOVE old QT<= 5.14 code
2025-03-11 20:54:59 +00:00
Chris Hennes 6de034bf84 Merge pull request #19926 from benj5378/toStringasd
Gui: clean up PropertyItem::toString
2025-03-11 20:38:15 +00:00
Chris Hennes 5281e07029 Merge pull request #19946 from j-hap/fix_double_free
TechDraw: Fix double free when resetting line formats
2025-03-11 20:29:06 +00:00
Chris Hennes 6be9683ca9 Merge pull request #20113 from mosfet80/cleanCheck
Remove unnecessary check (duplicated)
2025-03-11 20:26:04 +00:00
Roy-043 fcc3061746 Draft: Fix error in #20118
The code in #20118 would fail if only Near snap was active.
2025-03-11 15:57:37 +01:00
Yorik van Havre 61eedbddc4 Merge pull request #20072 from Roy-043/Draft-Implement-Dim-Auto-Flip-Text
Draft: Implement Dim Auto Flip Text
2025-03-11 12:58:03 +00:00
Yorik van Havre a3d862839f Merge pull request #20109 from Syres916/IFCPropertiesWindow_Fix
[BIM] Correct styling of DeleteIFCProperties button and add GroupBox for the two lower comboboxes and the button
2025-03-11 12:48:45 +00:00
Yorik van Havre df15aca379 Merge pull request #20118 from Roy-043/Draft-Correct-Near-snap-override-behavior
Draft: Correct Near snap override behavior
2025-03-11 12:19:44 +00:00
Yorik van Havre f107aa55a1 Merge pull request #20108 from furgo16/patch-15
BIM: fix adding/removing boundaries to BIM Spaces
2025-03-11 12:18:32 +00:00
Roy-043 849cf3fa75 Draft: Correct Near snap override behavior
Fixes #15017.

Currently Near snap overrides all other 'on-object' snaps such as Midpoint snap and Endpoint snap. With this PR Near snap no longer 'wins' if a different snap point is within snapRange of the cursor.
2025-03-11 10:48:12 +01:00
Benjamin Nauck 2db9ae7bdf Remove outdated comment 2025-03-11 10:17:12 +01:00
PaddleStroke 0bb47bc0d8 Move getStandardButtons to cpp file 2025-03-11 10:09:09 +01:00
Chris Hennes 25c71dd99d Merge pull request #20107 from 3x380V/pip_pyside6
CMake: Fix PySide6 pip search
2025-03-11 04:21:12 +00:00
Chris Hennes ee50b0f25b Merge pull request #20050 from captain0xff/gp_pnt-conversion
TechDraw: removed gp_* conversion code from TechDraw workbench
2025-03-11 02:28:37 +00:00
captain0xff f7441510b1 remove gp_* conversion code from TechDraw workbench 2025-03-11 05:21:58 +05:30
Andrea c5813c332f Clean Salome Cmake
clean cmake
2025-03-10 22:13:56 +01:00
pre-commit-ci[bot] af8dd75185 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-03-10 20:59:11 +00:00
Andrea cd5c46ba18 Remove unnecessary check (duplicated)
before including the library, it is uselessly checked if the variable __QtAll__ and __InventorAll__ have been defined. The same check is performed again once the library is included
2025-03-10 21:53:00 +01:00
Pascal de Bruijn f7dc6dc245 PartDesignTests: explicitly thread pitch for regular profile ISO threads, fix enum 2025-03-10 18:54:48 +01:00
Chris Hennes e9c6a2ea72 Merge pull request #20031 from PaddleStroke/patch-11
App::Link : deleting it deletes its elements if any
2025-03-10 17:27:59 +00:00
Chris Hennes 71843a937e Merge pull request #19941 from WandererFan/PropertiesAndSpinBoxes
[TD]Properties and spin boxes
2025-03-10 16:55:13 +00:00
Chris Hennes bfd1fa47d8 Merge pull request #20049 from hyarion/fix/ppa
Refactor static type checks
2025-03-10 16:53:00 +00:00
Chris Hennes f311bfc839 Merge pull request #19649 from alfrix/taskpanel_improvements
refactor(Gui): improve the taskpanel
2025-03-10 16:51:09 +00:00
Chris Hennes d15cec2bcf Merge pull request #20059 from marioalexis84/fem-heat_flux
Fem: Change from radio buttons to combo box to reduce space in heat flux task panel
2025-03-10 16:50:14 +00:00
Chris Hennes ae01fcc3de Merge pull request #20064 from bofdahof/application-remove-some-using-namespace
[App] Application remove some using namespace
2025-03-10 16:42:28 +00:00
Chris Hennes 66b7eec0e2 Merge pull request #20053 from marioalexis84/fem-elmer_equation_references
Fem: Use disambiguation for solid references in Elmer equation task panels
2025-03-10 15:53:31 +00:00
Chris Hennes 872ac0c37d Merge pull request #19998 from chennes/silenceCoinWarning
CMake: Silence Coin3D deprecation warning
2025-03-10 15:49:59 +00:00
Chris Hennes 2ab256e6d5 Merge pull request #19976 from clsergent/patch-1
CAM: Fix an error in CAM/Path/Post/UtilsParse.py
2025-03-10 15:49:47 +00:00
Syres916 ef0252f935 [BIM} Correct styling of DeleteIFCProperties window and add GroupBox 2025-03-10 13:49:57 +00:00
Furgo fb3c4d90c9 BIM: Arch imports ArchSpace methods 2025-03-10 14:42:49 +01:00
Ladislav Michl f488074088 CMake: Fix PySide6 pip search
Since ac77cd779e ("CMake: PySide cleanup") compatibility variables depends
on PySide6_FOUND, but setting that was later removed, leaving pip installed
PySide6 undetected.

Fixes: 9119d392c9 ("CMake: Fix PySide6 search")
2025-03-10 14:15:49 +01:00
PaddleStroke f9eaf9b568 Sketcher: DSH: add OVP constraints before AutoConstraints. 2025-03-10 12:49:17 +01:00
wandererfan ac4ba822b4 [TD]allow view creation in main thread if gui no available 2025-03-09 19:48:22 -04:00
wandererfan 1fc53e5f27 [TD]add check for Gui up 2025-03-09 19:48:12 -04:00
wandererfan a6b89251a4 [TD]prevent crash when no event loop
- threaded hlr operations do not return if qApplication is not available
2025-03-09 19:48:08 -04:00
Benjamin Nauck ad59054918 Refactor static type checks 2025-03-09 17:50:20 +01:00
marioalexis 6aa8ddbfe7 Fem: Change from radio buttons to combo box to reduce space in heat flux task panel 2025-03-09 12:18:14 -03:00
Jonas Bähr b0947a7a64 CAM: Improve warning text for improper unit scheme
The previous text suggested to change the scheme in the preferences,
however, the preferences only take effect for new documents. Now, that
we have the "ProjectUnitSystem" in place, the setting for the current
document needs to be changed.

The text is restructured accodring to the UX pattern for warnings:
 - What is the problem
 - How can I fix it
 - What happens if I don't
and includes a link to the wiki for further details.

In addition, the 'US Customary' was removed from the proposed schemes as
suggested during review.

Finally, the button text was decapitalized and aligned with the
style used in other parts of FreeCAD, e.g. the Start page.
2025-03-09 16:09:12 +01:00
Jonas Bähr 345778ac3a CAM: Refactor schema warning at job creation
This is a pure refactoring to clean up the code for upcomming changes.
It does not change any functionality or UI messages.
2025-03-09 16:03:36 +01:00
Max Wilfinger 844cceb04f Merge pull request #20077 from marioalexis84/fem-gmsh_qsb_alignment
Fem: Use left alignment in Gmsh task panel
2025-03-09 13:41:26 +00:00
marioalexis c97cb7aa06 Fem: Use left alignment in Gmsh task panel 2025-03-08 18:32:16 -03:00
Alfredo Monclus 9abea00484 refactor: qsint fix clazy property without notify 2025-03-08 15:54:32 -03:00
Roy-043 5f7f9cb7ba Draft: Implement Dim Auto Flip Text
Fixes #19993.

* To determine the `FlipText` value the normal (either the working plane Z axis or its reverse) and the working plane X axis are used.
* A new fine-tuning parameter `DimAutoFlipText` can be used to disable the functionality. Its default value is `True`.
* The `FlipText` property did not work for angular dimensions and the `TextSpacing` property of angular dimensions was not multiplied by `ScaleMultiplier`. This has been corrected.
2025-03-08 15:30:31 +01:00
bofdahof 2d3f0d714d cleanup commented lines 2025-03-08 13:37:46 +10:00
bofdahof ae9eec20a6 remove using namespace Base::FileInfo 2025-03-08 13:37:46 +10:00
bofdahof 65619fae39 remove using namespace boost::program_options 2025-03-08 13:20:32 +10:00
bofdahof 00173ebe02 remove using namespace std 2025-03-08 13:18:06 +10:00
bofdahof f66561b23a remove using namespace boost 2025-03-08 13:14:35 +10:00
bofdahof 00ce73dc45 remove using namespace Base 2025-03-08 13:13:38 +10:00
Chris Hennes 50e80f4a03 Merge pull request #20052 from mosfet80/CleanPython
removed old python code <3.10
2025-03-08 01:10:58 +00:00
Chris Hennes a028d8d299 Merge pull request #20058 from tritao/fix-app-document-main-doc-load
App: Fix regression for document creation requests coming from the main document.
2025-03-07 23:28:27 +00:00
Chris Hennes 05780c4f7f Merge pull request #20030 from PaddleStroke/patch-10
PartDesign: Fix App::Line as ref for polar pattern
2025-03-07 23:07:33 +00:00
Chris Hennes f3567bce8b Merge pull request #20011 from FEA-eng/fem_example_rigid_body
FEM: Add ccx rigid body constraint example
2025-03-07 22:40:07 +00:00
Chris Hennes c845969a54 Merge pull request #20008 from PaddleStroke/patch-4
QuantitySpinbox: Fix right padding when not bound
2025-03-07 22:38:23 +00:00
Chris Hennes 5baa847a72 Merge pull request #20055 from marioalexis84/fem-magnetization
Fem: Improve magnetization
2025-03-07 22:37:11 +00:00
mos c70a7933e6 Removed old Python code <3.10 2025-03-07 16:34:08 -06:00
Joao Matos 668b0acc00 App: Fix regression when creating new document coming from the main document. 2025-03-07 20:54:16 +00:00
Joao Matos 9bcdd2d44c Rename DocumentCreateFlags to DocumentInitFlags. 2025-03-07 20:54:16 +00:00
Joao Matos d6510061b3 App: Fix memory leak regression in ApplicationPy::newDocument. 2025-03-07 20:42:51 +00:00
Joao Matos 1c2ac570f8 Convert DocumentCreateFlags instances to use designated initializer list. 2025-03-07 20:42:51 +00:00
marioalexis 14692ef526 Fem: Improve magnetization 2025-03-07 14:30:54 -03:00
Chris Hennes 8db175189f Merge pull request #20017 from chennes/applicationCleanupFixNames
App: Cleanup parameter names in Application.*
2025-03-07 15:38:18 +00:00
Chris Hennes 187630077f Merge pull request #20028 from PaddleStroke/patch-9
Assembly: Make it possible to select LCS elements when the LCS is in a body
2025-03-07 15:26:29 +00:00
PaddleStroke d2721aaadd Assembly: Select LCS elements when LCS is in body
* Make it possible to select LCS elements the the LCS is in a body
2025-03-07 08:55:09 -06:00
Chris Hennes 750d8c6a96 App: Cleanup parameter names in Application.*
* Unify names in header and cpp files
* Make names consistent across methods with similar uses
* Fix spacing

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-03-07 08:47:49 -06:00
marioalexis cdb8c22b2a Fem: Use disambiguation for solids in equation task panel 2025-03-07 11:47:46 -03:00
marioalexis 4941203b2f Fem: Move label to tooltip in selection widget 2025-03-07 11:47:46 -03:00
Chris Hennes d8ca8766b1 Merge pull request #20036 from hyarion/fix/remove-pyexport-warnings
Suppress erroneous warnings for GCC in python template
2025-03-07 14:41:22 +00:00
Pascal de Bruijn 599f100c4f PartDesign: explicitly thread pitch for regular profile ISO threads 2025-03-07 08:27:58 -06:00
Alfredo Monclus eb7d85605a start: fix listview height alwasys being too small 2025-03-07 00:07:11 -03:00
Chris Hennes aa90da1541 Merge pull request #20015 from chennes/addGitHubFilesToPrecommit
Add GitHub files to precommit
2025-03-06 21:29:39 +00:00
Benjamin Nauck 486fb593db Tools: Suppress erroneous warnings for GCC 2025-03-06 21:47:50 +01:00
Benjamin Nauck a0a64c1fb8 Base: Make Type::importModule private 2025-03-06 20:50:04 +01:00
Benjamin Nauck e7119ee243 Base: Add documentation of Type 2025-03-06 20:50:04 +01:00
Benjamin Nauck ece25df768 Base: Add asserts to check that Type has been initialized 2025-03-06 20:50:04 +01:00
Benjamin Nauck 280c1c610d Base: Minor cleanup
* Add const
* Add final
* [[nodiscard]]
* Fix parameter names
* Add TypeId instead of unsigned int
* Add "BadType" string constant

Some some other tweaks
2025-03-06 20:49:58 +01:00
Chris Hennes e12dd64d06 Merge pull request #19901 from alfrix/start_fixes_1
Start: fix text visbility
2025-03-06 17:32:31 +00:00
PaddleStroke dcaddb9488 App::Link : deleting it deletes its elements if any 2025-03-06 17:46:30 +01:00
PaddleStroke 077745d737 PartDesign: Fix App::Line as ref for polar pattern 2025-03-06 17:31:38 +01:00
Chris Hennes b864b46f55 Merge pull request #20026 from PaddleStroke/patch-8
Assembly: Fix use of datum axis in joints
2025-03-06 15:29:52 +00:00
Chris Hennes dc084c0208 Merge pull request #20012 from tritao/ci-lint-refactor-python
CI: Refactor Python checks linting setup.
2025-03-06 14:45:17 +00:00
Chris Hennes 65527974fb Merge pull request #20019 from PaddleStroke/patch-5
Core: Text object: Fix icon of the tab.
2025-03-06 14:39:25 +00:00
PaddleStroke a67080a777 Assembly: Fix use of datum axis in joints 2025-03-06 15:39:11 +01:00
Chris Hennes 4590289e4f Merge pull request #19953 from hyarion/fix/remove-pyexport-warnings
Python bindings: Use designated initializers and remove zero-initialized fields
2025-03-06 14:38:45 +00:00
Chris Hennes 621bebc1e3 Merge pull request #20016 from kpemartin/Issue19980
Fix the Measure Tool which will crash the app with a stack overflow if you measure the same amount twice
2025-03-06 14:37:19 +00:00
Chris Hennes 480f6c9bbe Merge pull request #19948 from furgo16/startpage-option-multiplefolders
Start: enable multiple custom folder paths
2025-03-06 13:30:46 +00:00
Furgo 59ddb94aba Start: enable multiple custom folder paths
* Update tooltip to indicate support for multiple custom folder paths
* Remove migration step that worked around lack of multiple folder support
* Remove obsolete migration method
* Address linter warnings: build/include_what_you_use
* Add QStringList as requested on https://github.com/FreeCAD/FreeCAD/pull/19948/files#r1982267583
2025-03-06 10:13:40 +01:00
pre-commit-ci[bot] 1fc630413f [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-03-06 08:35:01 +00:00
FEA-eng f4bfbfb493 FEM: Update ccx_rigid_body.py 2025-03-06 09:30:09 +01:00
Max Wilfinger 86b80483a7 Merge pull request #20013 from tringenbach/feature/show-device-pixel-ratio
Add devicePixelRatio to about info
2025-03-06 08:00:08 +00:00
PaddleStroke 59aae0fad8 Core: Text object: Fix icon of the tab. 2025-03-06 08:47:04 +01:00
Kevin Martin a0d0fc1498 Only do Label Change notification if the label truly changes
The code for setting the value of a Label property would do a quick return if the new label was equal to the current one, but otherwise the proposed new label might be modified to make it unique. If the modified new value were equal to the current value, a Change notification would still be generated. This no longer occurs.
2025-03-05 22:23:43 -05:00
Kevin Martin bf55e4e258 Deregister DocumentObject's Label before deleting the object
Under certain circumstances the existing code would try to obtain the Label of a DocumentObject after that object had been deleted, causing an access to freed memory and failing to deregister the Label. The latter would lead to phanton Label collisions and unexpected generation of unique labels.
2025-03-05 22:23:42 -05:00
Chris Hennes d961be1ab6 GitHub: Run pre-commit on all files 2025-03-05 21:04:33 -06:00
Chris Hennes 323f463f28 GitHub: Add to pre-commit 2025-03-05 21:04:23 -06:00
Tim Ringenbach f78eef19cd update label 2025-03-05 20:29:25 -06:00
jffmichi abacccb690 Part: fix infinite recursion in boolean cut 2025-03-06 02:33:56 +01:00
Joao Matos 7fdd000477 CI: Refactor Python checks linting setup. 2025-03-06 00:27:49 +00:00
Tim Ringenbach f47e642c77 Add devicePixelRatio to about info 2025-03-05 18:05:21 -06:00
Chris Hennes da3baddf8d Merge pull request #20002 from marioalexis84/fem-static_current_elmer
Fem: Some changes in static current features
2025-03-05 22:39:58 +00:00
Chris Hennes 2c052dcbd0 Merge pull request #19995 from hyarion/fix/create-light-sources-group
Fixes light direction configuration issues between 1.0 and 1.1dev
2025-03-05 22:38:01 +00:00
clsergent 7c0b65ad2d Merge branch 'main' into patch-1 2025-03-05 22:01:34 +01:00
mosfet80 8709e1f5a9 Merge branch 'FreeCAD:main' into QT_CLEAN 2025-03-05 21:53:36 +01:00
pre-commit-ci[bot] fe43ab7bbe [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-03-05 20:11:44 +00:00
FEA-eng b885e8a90f FEM: Update CMakeLists.txt 2025-03-05 21:05:42 +01:00
FEA-eng 2d17269a11 FEM: add rigid body FEM example 2025-03-05 21:04:40 +01:00
Max Wilfinger a14f6f18ea Merge pull request #19994 from marioalexis84/fem-cut_filter_crash
Fem: Fix crash in Cut filter
2025-03-05 19:36:33 +00:00
Max Wilfinger d9b1d6b227 Merge pull request #20007 from FEA-eng/fem_example_joule_heating
FEM: Add Joule heating to FEM Examples
2025-03-05 19:32:03 +00:00
Benjamin Nauck 6a226c9469 Gui: Workaround for lighting issue 2025-03-05 20:29:10 +01:00
marioalexis 8ed98ab27f Fem: Add nonlinear options to static current solver 2025-03-05 16:27:47 -03:00
marioalexis 613b29a28e Fem: Fix direction of current density symbol 2025-03-05 16:27:47 -03:00
pre-commit-ci[bot] 91dd0c9492 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-03-05 17:58:37 +00:00
PaddleStroke 2390be5b3a Fix https://github.com/FreeCAD/FreeCAD/issues/20004 2025-03-05 18:58:35 +01:00
FEA-eng 06725a39d5 FEM: Update CMakeLists.txt 2025-03-05 18:54:29 +01:00
FEA-eng d95505e717 FEM: add example file 2025-03-05 18:53:02 +01:00
Alfredo Monclus ed8e8ae774 start: simplify cardspacing 2025-03-05 13:24:07 -03:00
Alfredo Monclus 635839029f start: fix filecard text visibility on classic theme also fixes hover and pressed states 2025-03-05 13:23:39 -03:00
Alfredo Monclus ce2cae5bc3 start: fix new file button layout size
fixes #15758
2025-03-05 13:23:28 -03:00
Alfredo Monclus cfb1197fc0 start: fix visibility by removing hardcoded styling from newfile buttons
this allows the new file buttons to change from light to dark dynamically
2025-03-05 13:23:00 -03:00
Roy-043 c2cf154bd6 Merge pull request #19986 from Roy-043/Draft-fix-make_sketch-hang
Draft: fix make_sketch hang
2025-03-05 11:10:28 +00:00
mosfet80 c06c584a55 Update MenuManager.cpp 2025-03-05 09:54:32 +01:00
mosfet80 9834729b05 Update TaskBooleanParameters.cpp 2025-03-05 09:48:07 +01:00
Andrea 5464ada40c Remove old qt code
new round of removal following the report of @benj5378  .

.
2025-03-05 09:46:35 +01:00
pre-commit-ci[bot] fdd21e95b0 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-03-05 09:32:06 +01:00
Andrea 5f6f2d04ad Update PythonWrapper.cpp
.
2025-03-05 09:32:06 +01:00
Andrea da66720d3a REMOVE old QT<= 5.14 code
Ubuntu 22.04  use qt 1.15.3.
In the code is still used qt code <5.10.
A cleanup was done by removing qT code version used in ubuntu 18.04.
2025-03-05 09:32:06 +01:00
clsergent 97645765f8 Merge branch 'main' into patch-1 2025-03-05 07:46:56 +01:00
Chris Hennes ea0f447cfc Merge pull request #19977 from chennes/bofdahofApplicationTidyUpEasyOnes
Application tidy up (the easy ones)
2025-03-05 05:20:01 +00:00
Chris Hennes 63102e6f46 Merge pull request #19211 from Syres916/Drag_Drop_File_Checks
[Gui] Trigger the same checks for Drag & Dropping files as File > Open
2025-03-05 04:13:59 +00:00
Chris Hennes 133cf6de89 Merge pull request #19889 from Shkolik/sketcher_external_point
fix #18356 Sketcher: External reference line defaults to geometry, but vertex does not
2025-03-05 04:03:36 +00:00
Andrew Shkolik 27dd14174e fix #18356 Sketcher: External reference line defaults to geometry, but vertex does not 2025-03-04 21:29:54 -06:00
Syres916 46b2ec526b [Gui] Trigger the same checks for Drag & Drop files as File > Open 2025-03-04 20:45:15 -06:00
Chris Hennes a1a9d370b2 CMake: Silence Coin3D deprecation warning 2025-03-04 20:37:47 -06:00
Chris Hennes 6e269b0f81 CMake: If using Libpack, require at least v3.1
Previous versions did not include pybind11, but the error message from that failure is not terribly informative. This way the exact means of fixing the problem is provided in the message.
2025-03-04 19:26:18 -06:00
Chris Hennes 293ac923ce Merge pull request #19997 from chennes/chennesCIMergeGroupTrigger
CI: Add merge_group as trigger
2025-03-05 01:19:28 +00:00
Chris Hennes 56a87cbf55 CI: Add merge_group as trigger
Required to force CI run on merge queue
2025-03-04 18:28:07 -06:00
Chris Hennes edca54767b Merge pull request #19992 from oursland/build-date-clipboard
About: Add build date to clipboard data.
2025-03-05 00:12:30 +00:00
Chris Hennes f3c6ea92d6 Apply suggestions from code review
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-03-04 18:12:10 -06:00
Jacob Oursland f8032e9ddb About: Add build date to clipboard data. 2025-03-04 18:12:10 -06:00
Chris Hennes 90e0b21422 Merge pull request #19932 from alfrix/start_fixes_2
Start: fix fileview use scrollbars as needed
2025-03-05 00:01:57 +00:00
Chris Hennes d4b97db9ab Merge pull request #19928 from furgo16/startpage-option-showonlyfcstd
Start: add option to show only FreeCAD native files in custom folder
2025-03-04 23:59:50 +00:00
mosfet80 1ab8bed308 clean FindOCC.cmake (#19755)
* clean FindOCC.cmake

cmake version is always major then 3.16.3
.

* Update cMake/FindOCC.cmake

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>

* Update cMake/FindOCC.cmake

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>

---------

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-03-04 16:10:12 -06:00
Chris Hennes 7f465825a4 Merge pull request #19933 from tritao/ci-initial-lint-refactor
CI: Refactor generic whitespace checks linting setup.
2025-03-04 15:26:10 -06:00
Benjamin Nauck 71cac77a59 Gui: Remove unused static function 2025-03-04 21:06:17 +01:00
Benjamin Nauck 7a5ae8bd5c Gui: Create light sources parameter group
* categorizes light sources into its own group
* fixes config file issues between 1.0 and 1.1
2025-03-04 21:06:17 +01:00
Chris Hennes 3c77bd4fcf Addon Manager: Adjust use of QDialogButtonBox 2025-03-04 13:52:38 -06:00
Tim Ringenbach 7f70feb9f4 Gui: HiDPI NaviCube fix 2025-03-04 12:29:38 -06:00
marioalexis 29546324b9 Fem: Fix crash in Cut filter 2025-03-04 15:10:56 -03:00
j-hap 922ceb8b9e TechDraw: Fix double free when resetting line formats 2025-03-04 18:41:29 +01:00
pre-commit-ci[bot] 400863889b [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-03-04 16:22:36 +00:00
mosfet80 e38de93dfd Merge branch 'FreeCAD:main' into cleanmodPart 2025-03-04 15:26:14 +01:00
wmayer c532683060 CMake: Remove FREECAD_USE_PYBIND11 as a build option 2025-03-04 08:07:46 -06:00
Jookia 1489015caf ci: Add python3-pybind11 to Ubuntu CI 2025-03-04 08:05:38 -06:00
Jookia 287b0a2510 Remove support for Boost.Python 2025-03-04 08:03:19 -06:00
Furgo fc35a58346 BIM: make ifcopenshell version upgrade more robust (#19823)
* BIM: make ifcopenshell version detection and comparison more robust

* Add reference to FreeCAD bug

* Use create_pip_call for compatibility with different platforms/packages

* Demote workaround logging category for quieter output

* Correct ifcopenshell's actual version in the workaround as well

* Allow upgrading packages

* Provide more verbose output if there is an error with the pip call

* Really print the exception message

* Fix catch-all exception syntax

* Remove ifcopenshell version workaround

Weekly build 40444 containing the fix (https://github.com/FreeCAD/FreeCAD/pull/19861) has been released at https://github.com/FreeCAD/FreeCAD-Bundle/releases/tag/weekly-builds
2025-03-04 11:37:22 +01:00
mosfet80 11255e83ad Update actions/stale
https://github.com/actions/stale/releases/tag/v9.1.0
2025-03-04 10:39:55 +01:00
Roy-043 9eca869c95 Draft: fix Trimex visibility change
Fixes #19966
2025-03-04 10:13:44 +01:00
Roy-043 29c03a43a3 Draft: fix make_sketch hang
Fixes #19978

The onebyone argument of makeMissingPointOnPointCoincident and makeMissingVerticalHorizontal should be set to False.
2025-03-04 10:12:44 +01:00
Andrew Shkolik 1155182ac3 Sketcher: Preference pattern and width added for External defining geometry 2025-03-03 23:51:26 -06:00
Chris Hennes 01092f66b1 TD: Add missing Boost headers to PCH 2025-03-03 23:18:47 -06:00
Chris Hennes b090e27dcf App: Switch to isNullOrEmpty() 2025-03-03 19:24:15 -06:00
Chris Hennes 66e1710956 App: Minor formatting from review
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-03-03 19:21:05 -06:00
bofdahof 091f73f09f Calling static via instance 2025-03-03 19:21:04 -06:00
bofdahof 035d789ffa Narrowing conversion 2025-03-03 19:21:04 -06:00
bofdahof 3ddf2fe67b Don't use endl 2025-03-03 19:21:04 -06:00
bofdahof 4811be9881 Reserve vector size 2025-03-03 19:21:04 -06:00
bofdahof 8ff4b1b018 Redundant c_str() 2025-03-03 19:21:04 -06:00
bofdahof 31825c28aa Else after return 2025-03-03 19:21:04 -06:00
bofdahof 4bfe65b48c Declaration hides previous 2025-03-03 19:21:04 -06:00
bofdahof ee849b6349 C++ style cast instead of C 2025-03-03 19:21:04 -06:00
bofdahof 78696bdaee Join declaration and assignment 2025-03-03 19:21:04 -06:00
bofdahof 2ab03306ca Use auto 2025-03-03 19:21:04 -06:00
bofdahof c3eee2dc99 Simplify expression 2025-03-03 19:21:04 -06:00
bofdahof 819faf71ed DRY 2025-03-03 19:20:59 -06:00
Maxim Moskalets b59cd79427 Add support of compile/link jobs pooling 2025-03-03 18:51:27 -06:00
clsergent 545553557a Update UtilsParse.py
Fixed an error where strings were added to a list (gcode) using the addition assignment operator ('+=') rather than the 'list.append' method, resulting in adding every character as a list member
2025-03-03 22:49:42 +01:00
Joao Matos 77203eaa06 App: Capitalize exception message in Document.cpp. 2025-03-03 21:22:22 +00:00
Joao Matos 0ba8e3f769 App: Reorder includes in App/private/DocumentP.h. 2025-03-03 21:22:22 +00:00
Joao Matos f9a6044828 PartDesign: Refactor ViewProviderTransformed::recomputeFeature. 2025-03-03 21:22:22 +00:00
Joao Matos 8710bbd825 Part/PartDesign/TechDraw: Simplify calls to DocumentObject::recomputeFeature. 2025-03-03 21:22:22 +00:00
Joao Matos ea8ff59c27 App: Refactor with early exit in Document::recomputeFeature. 2025-03-03 21:22:22 +00:00
Joao Matos 9f6810adc8 Gui: Remove unused Command::updateAll. 2025-03-03 21:22:22 +00:00
Joao Matos 97bd38f6f9 PartDesign: Refactor Command::finishFeature. 2025-03-03 21:22:22 +00:00
Joao Matos 527e7eae22 Gui: Refactor StdCmdRefresh::activated. 2025-03-03 21:22:22 +00:00
Joao Matos 855ad6c709 CMake: Add GCC/Clang -fdiagnostics=color compiler option. 2025-03-03 18:13:39 +01:00
wandererfan d7e98b61cc [TD]change scaling default for Draft & BIM views 2025-03-03 10:44:03 -06:00
paul 1f695e36f8 [ArchWindow] Improve SubVolume() HoleDepth deduction algorithm (#19774)
* [ArchWindow] Improve SubVolume() HoleDepth deduction algorithm

https://github.com/FreeCAD/FreeCAD/issues/19559
https://forum.freecad.org/viewtopic.php?t=92360
https://forum.freecad.org/viewtopic.php?p=812844#p812844

Current HoldeDepth deduction algorithm is too 'agressive' and may punch holes in adjacent wall segment.

With improved algorithm, ArchComponent pass the Window's host information to ArchWindow getSubVolume() to deduce HoleDepth taking into account of Wall's Width /getWidths for Wall Base is ArchSkech

TODO: For future development - More robust approach
With ArchSketch, on which wall segment an ArchObject is attached to is declared by user and saved.
The extrusion of each wall segment could be done per segment, and punch hole in the exact wall segment before fusing them all. No need to care about each wall segement thickness.

* [ArchWindow] Typo Lint reported

* [ArchWindow] Fix getSubFace(self) raise NotImplementedError

Github comment - https://github.com/FreeCAD/FreeCAD/pull/19774#discussion_r1972052310
2025-03-03 17:38:22 +01:00
Chris Hennes 72d8a7be71 Merge pull request #19411 from benj5378/enums2
TechDraw: hard type enums, part 2
2025-03-03 10:37:21 -06:00
Chris Hennes 215e966c3e Merge pull request #19753 from benj5378/tag
TechDraw: centralize tag functionality
2025-03-03 10:36:24 -06:00
Aurélien Pascal e97aa7d47e TechDraw: Fix hatch drawing (#19458)
* TechDraw: Fix hatch drawing (#16353)

* TechDraw: Fix hatch drawing in Tech View
2025-03-03 10:35:13 -06:00
WandererFan b4b93763ae Broken view no compress19647 (#19688)
* [TD]fix broken view does not collapse

* [TD]delint and clean up code

* Update src/Mod/TechDraw/App/DrawBrokenView.cpp

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>

* Update src/Mod/TechDraw/App/DrawBrokenView.cpp

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>

* Update src/Mod/TechDraw/App/DrawBrokenView.h

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>

* Update src/Mod/TechDraw/App/DrawBrokenView.h

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>

* Update src/Mod/TechDraw/App/DrawBrokenView.cpp

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>

* [TD]fix merge errors

---------

Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-03-03 10:34:23 -06:00
Chris Hennes b08a259b50 Merge pull request #19930 from marioalexis84/fem-current_density
Fem: Improve current density boundary condition
2025-03-03 10:32:35 -06:00
xtemp09 4cb8384145 [Spreadsheet] Fix unset zoom level 2025-03-03 10:27:39 -06:00
tritao 7d28636e05 Remove Python-generated bindings comparison against XML-generated version. 2025-03-03 10:22:41 -06:00
PaddleStroke 50394a6ef3 Update PreCompiled.h 2025-03-03 10:21:37 -06:00
Roy-043 4d48c0de55 Draft: fix Draft_Trimex boundary subelement selection
Fixes #19614

Instead of using the whole object, the hovered subelement should be used for the boundary.

With this PR the handling of the boundary is also  'nesting-aware'. This is however still not the case for the object being extended/trimmed. That object has to be in the global space.
2025-03-03 17:18:25 +01:00
Roy-043 8a0d6a23bb Draft: fix Draft_Edit isAttachedToDocument issue
Fixes #19939

The `isAttachedToDocument` method only works in certain circumstances.
https://forum.freecad.org/viewtopic.php?t=94709
2025-03-03 17:17:55 +01:00
Roy-043 ff9e84e181 Draft: fix NaN issue with Draft_Rotate
Fixes #19690

The issue was caused by a zero distance between the center and the point picked for the rotation angle.
2025-03-03 17:09:11 +01:00
Roy-043 084a0b3b4a Draft: fix polar coords regression
Fixes #19961

Regression caused by #19179.
2025-03-03 17:07:20 +01:00
Alfredo Monclus 8925ccc91a refactor: add if braces for linters 2025-03-03 11:30:43 -03:00
Alfredo Monclus 19ea0f625c revert: icon to manually painted one
windows icon is very different let's try to keep the look unified
2025-03-03 11:21:44 -03:00
Alfredo Monclus 94f2fa30fa revert: review suggestion from constexpr to const 2025-03-03 11:10:51 -03:00
Alfredo Monclus 2dfcacea7e taskpanel lineup comments 2025-03-03 10:49:27 -03:00
Alfredo Monclus ed1193edbb taskpanel group early return 2025-03-03 10:49:26 -03:00
Alfredo Monclus acee460dd3 Apply suggestions from code review
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-03-03 10:45:22 -03:00
Benjamin Nauck 0952d4de63 Use designated initializers and remove zero-initialized fields 2025-03-03 11:02:19 +01:00
Chris Hennes 6f44ab3522 Gui: Add QOpenGLWidget to QtAll.h 2025-03-02 22:59:30 -06:00
marioalexis 8a2d4aeb19 Fem: Update constraint symbol rotation 2025-03-03 00:02:11 -03:00
marioalexis 2b1cd6fe95 Fem: Fix Elmer magnetodynamic boundary condition keyword 2025-03-03 00:02:11 -03:00
marioalexis 8e07da0a29 Fem: Improve current density boundary condition 2025-03-03 00:02:02 -03:00
Chris Hennes 2bde30a4c5 Merge pull request #19951 from chennes/missingColorFix
Misc. compilation fixes
2025-03-02 17:32:51 -06:00
Chris Hennes c762d56603 Spreadsheet: Fix old ref to name in doc 2025-03-02 17:23:26 -06:00
Chris Hennes 20050d002d Inventor: Fix old color ref 2025-03-02 17:09:19 -06:00
Chris Hennes 7f1c43a335 Merge pull request #19636 from kadet1090/color-in-base
Base: Move App::Color to Base
2025-03-02 16:36:40 -06:00
Joao Matos a9b7490a82 CI: Extract apt packages installation into a script.
This provides a few benefits, as regular users can just call this script
as well and not need to copy this from the CI files to know which files
to install.
2025-03-02 16:35:30 -06:00
Chris Hennes 0c4ed644c4 Merge pull request #19450 from tritao/base-python-api-model
Base: Modernize Python bindings APIs
2025-03-02 16:34:25 -06:00
Chris Hennes 729f09ede4 Merge pull request #19626 from tritao/qt-gl-cleanup
Gui: Remove QtOpenGL.h.
2025-03-02 16:22:57 -06:00
Andrew f3643af82b Merge pull request #19747 from Shkolik/sketcher_datums_projection
fix #18894 Sketcher: Create external projection geometry not working with datum objects
2025-03-02 16:20:45 -06:00
Chris Hennes 6512dc69e9 Merge pull request #19761 from chennes/coverityFixesFeb2025
Base: Coverity fixes from February 2025 run (round 1)
2025-03-02 16:15:17 -06:00
mosfet80 5375025e8b Clean AppPartPy.cpp
Python version is always greater than 3.9
2025-03-02 16:13:55 -06:00
Roy-043 6c40857f0e Draft: fix Draft_Edit issue with Gesture navigation
Fixes #19519
2025-03-02 16:13:13 -06:00
João Matos 5e72c0afe5 Apply suggestions from code review
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-03-02 19:47:55 +00:00
Benjamin Bræstrup Sayoc b386e461c2 Remove magic number and hard type enums in DrawViewPart.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 738608db07 Remove magic number and hard type enums in DimensionValidator.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 ee11eb188f Remove magic number and hard type enums in DrawViewDimension.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 6184ed19aa Remove magic number and hard type enums in BalloonPropEnum.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 e60c800a0b 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
wandererfan b343e3cc59 [TD]Property types and spinboxes for Detail 2025-03-02 09:05:10 -05:00
wandererfan d616b229e7 [TD]use correct property types and spinboxes for Section 2025-03-02 09:05:10 -05:00
wandererfan 28a6ca7ce2 [TD]use correct property type for directions 2025-03-02 09:05:10 -05:00
Joao Matos 5d97c20cc7 CI: Refactor generic whitespace checks linting setup. 2025-03-02 10:13:56 +00:00
Alfredo Monclus 1b755ab29d start: fileview use scrollbars as needed
if for whatever reason the viewport failed to resize let qt add the scrollbars
2025-03-02 05:49:08 -03:00
Furgo cf2e0e06b9 Start: add option to show only FCStd files to the preferences dialog 2025-03-02 07:41:28 +01:00
Furgo 779e1efa55 Start: add option to show only FreeCAD native files in custom folder 2025-03-02 06:44:54 +01:00
Chris Hennes 0c65673a6f Merge pull request #19789 from hyarion/spreadsheet-tests
Spreadsheet: Break down large tests into smaller units
2025-03-02 01:08:00 +00:00
Mino-Tsuzuku 9aef91b3ca fix #19723 SVG: transform attribute is not handled collectly (#19845)
* * Move pyopen with encoding to utils.
 and modify all importing library to use pyopen with encoding.
with this change, DXF OCA AirfoilDAT with multibyte sequence always read as utf-8.

* Fix SVG transform attribute is not handler collectly.
2025-03-01 19:06:46 -06:00
Chris Hennes 18ea2bf9d5 Merge pull request #19918 from furgo16/startpage-prefs
Start: add initial preferences page
2025-03-02 01:04:49 +00:00
Furgo 7a0fba1294 Move CustomFolder parameter migration to more appropriate location 2025-03-02 01:04:19 +00:00
Furgo e23249ff45 Remove dead code 2025-03-01 20:11:59 +01:00
Joao Matos c71e11101a Base: Modernize Python bindings APIs 2025-03-01 16:32:22 +00:00
Joao Matos 8e7c3e9f2f Tools: Update binding generator. 2025-03-01 16:23:54 +00:00
Furgo aa1b6db5d4 Add Start label for Start page PRs 2025-03-01 16:17:08 +01:00
Benjamin Bræstrup Sayoc 3765455ebe Gui: clean up PropertyItem::toString
I have no idea why the return type of toString was ever QVariant
2025-03-01 16:10:46 +01:00
Furgo 4abbbe2adb Use the correct file chooser mode for folders, update tooltip 2025-03-01 01:31:07 +01:00
Furgo a1f01bfd3b Add icon for Start page preferences tab 2025-03-01 01:10:36 +01:00
Andrew Shkolik e0cc02f730 Merge branch 'sketcher_spline_intersection' of https://github.com/Shkolik/FreeCAD into sketcher_spline_intersection 2025-02-28 12:34:14 -06:00
Andrew Shkolik ec24bd8c21 fixes #19831 - additional code to cover projection of split curve edge 2025-02-28 12:33:56 -06:00
Furgo 77e75fec01 Add initial preferences page for Start 2025-02-28 19:10:46 +01:00
Chris Hennes 089605bb4d CI: Remove readability/todo check 2025-02-28 14:33:13 +00:00
Joao Matos 006feaf276 App: Remove old DAG implementation. 2025-02-28 14:32:32 +00:00
Kacper Donat 46b9ff9c50 Gui: Properly reset light directions
This fixes lights not getting reset after user demands so.
2025-02-28 14:25:57 +00:00
marioalexis 05a6b702a1 Fem: Update test 2025-02-28 14:53:27 +01:00
marioalexis 1c91ba9a95 Fem: Add support for Elmer static current solver - fixes #11895 2025-02-28 14:53:27 +01:00
paul fcbbe9535f [BimShape2DView] Bug-Fix : Shape2DCut Not Working (#19316)
* [BimShape2DView]  Bug-Fix : Shape2DCut Not Working

GitHub Issue - https://github.com/FreeCAD/FreeCAD/issues/18947

* Update src/Mod/BIM/bimcommands/BimShape2DView.py

Co-authored-by: Yorik van Havre <yorik.vanhavre@gmail.com>

---------

Co-authored-by: Yorik van Havre <yorik.vanhavre@gmail.com>
2025-02-28 10:08:56 +01:00
mosfet80 9164f82740 Clean ifc_tools.py (#19395)
* Clean ifc_tools.py

Removed dead code

Auto stash before rebase of "patch-47" onto "main"

* Update ifc_tools.py

revert wrong remove
2025-02-28 10:07:53 +01:00
Chris Hennes d57e00812b Addon Manager: Show versions in update all 2025-02-27 18:36:07 +00:00
Chris Hennes e80ee07d63 Addon Manager: Add <bundle> and <other> 2025-02-27 18:15:53 +00:00
Roy-043 6d353393ff Gui: put SolidWorks navigation style in A-Z order
#19568 adds the SolidWorks navigation style. In the Gui the new style appeared at the bottom of the list below 'Touchpad'. This PR restores the A-Z order of the list.
2025-02-27 15:03:27 -03:00
Roy-043 0ca76cc464 Draft: Fix error in #19738 (#19896)
My bad. Goes to show that even 'simple' PRs must be tested.
2025-02-27 14:06:01 +01:00
Gaël Écorchard 71dc06cf90 Fix error on missing attribute IfcProject.Declares (#19398)
* [BIM] Use relative imports

Also fix other issues with imports.

Signed-off-by: Gaël Écorchard <gael@km-robotics.cz>

* [BIM] Avoid two bare except

Signed-off-by: Gaël Écorchard <gael@km-robotics.cz>

* [BIM] Replace not ... in with ... not in

Also fix whitespace between functions.

Signed-off-by: Gaël Écorchard <gael@km-robotics.cz>

* [BIM] Fix error with missing IFC2X3.IfcProject.Declares

Fix `entity instance of type 'IFC2X3.IfcProject' has no attribute 'Declares'`.

Signed-off-by: Gaël Écorchard <gael@km-robotics.cz>

---------

Signed-off-by: Gaël Écorchard <gael@km-robotics.cz>
Co-authored-by: Gaël Écorchard <gael@km-robotics.cz>
2025-02-27 13:58:13 +01:00
Roy-043 9d700d9826 BIM: fix ArchAxis index errors
Fixes #19577

Apparently the ViewObject can be updated before the Shape of the objects has been changed. To catch this the number of edges is checked in the `onChanged` method of the ViewObject.

There was an additional index error if the Limit property was not zero.
2025-02-27 11:15:26 +01:00
Roy-043 2a645d36b8 Draft: Fix error in #19738
My bad. Goes to show that even 'simple' PRs must be tested.
2025-02-27 10:41:54 +01:00
pre-commit-ci[bot] f7c1e7f8a5 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-02-27 06:42:55 +00:00
Andrew Shkolik 411cdadf49 Sketcher: Preference color added for External defining geometry 2025-02-27 00:28:20 -06:00
Chris Hennes b74ead4ffa Merge pull request #19886 from chennes/tdAddMissingPrecomp
TD: Adding missing PCH include
2025-02-27 03:58:52 +00:00
xtemp09 4d4073c042 [Spreadsheet] Remove prepended apostrophe if cell content is copied into clipboard (#19781)
* [Spreadsheet] Remove prepended apostrophe if cell content is copied into
clipboard

Closes #10058.
2025-02-26 21:27:55 -06:00
Chris Hennes 5217c2864b Spacemouse: Add #include <chrono> 2025-02-26 21:21:58 -06:00
Chris Hennes c6fef04ab0 TD: Adding missing PCH include 2025-02-26 17:41:27 -06:00
Chris Hennes 0e5d1f1bd8 Merge pull request #19875 from marioalexis84/cmake-find_pyside
CMake: Fix PySide search
2025-02-26 21:19:31 +00:00
marioalexis 84681f0123 CMake: Add FREECAD_USE_PYSIDE and FREECAD_USE_SHIBOKEN to final report 2025-02-26 14:25:40 -03:00
marioalexis 9119d392c9 CMake: Fix PySide6 search 2025-02-26 14:25:40 -03:00
marioalexis 191b71c0cc CMake: Fix PySide major version comparison 2025-02-26 14:25:40 -03:00
Furgo 56f0f64015 Do not decrease reference counting for string 2025-02-26 13:36:45 +00:00
Chris Hennes f9bb6508ff Merge pull request #19860 from chennes/cmakeOpenGLLegacy
CMake: Force OpenGL to use legacy
2025-02-26 01:29:19 +00:00
Joao Matos 7d60b697ea Gui: Group Inventor headers in View3DInventorViewer.h. 2025-02-25 23:03:51 +00:00
Joao Matos 3b05b61de2 Gui: Remove QtOpenGL.h. 2025-02-25 23:03:51 +00:00
Joao Matos 91e94ba1dd Gui: Cleanup Qt OpenGL usings in QtOpenGL.h.
Previously the code defined compatiblity usings in `QtOpenGL.h` header,
which I think was added for backwards compatiblity with previous Qt
OpenGL widgets.

As far as I can tell, this is not necessary anymore, and can be cleaned
up.
2025-02-25 23:03:51 +00:00
Chris Hennes 64e5e4a137 CMake: Force OpenGL to use legacy 2025-02-25 13:26:02 -06:00
Chris Hennes cf477695f9 Merge pull request #19671 from kadet1090/placement-indicator
Gui: Add Show Placement helper
2025-02-25 17:40:58 +00:00
PaddleStroke bf40ed1376 FEM Update PreCompiled.h to fix build 2025-02-25 16:58:25 +00:00
Benjamin Bræstrup Sayoc 755229df23 Build: suppress warnings from 3rd party libraries
Warnings from 3rd parties are not relevant and are only polluting the warning output. Marking these libraries as SYSTEM suppresses warning.

https://gcc.gnu.org/onlinedocs/cpp/Invocation.html#index-I
https://gcc.gnu.org/onlinedocs/cpp/System-Headers.html
2025-02-25 14:39:05 +00:00
Chris Hennes 3de97a43fe Sketcher Tests: add [[maybe_unused]] 2025-02-25 14:35:12 +00:00
Benjamin Bræstrup Sayoc b5885936d3 TechDraw: extract QGIDatumLabel 2025-02-25 14:25:31 +00:00
tritao 742627868e Gui: Fix regression in SelectionObserverPython::removeObserver. 2025-02-25 14:21:48 +00:00
Andrea 0fbb300fe4 [mod:part] fix compile warning
.
2025-02-25 08:49:20 +01:00
pre-commit-ci[bot] ceac12c388 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-02-25 07:45:29 +00:00
Andrew Shkolik 0921ed2969 fix #19831 Sketcher: Create external Intersection geometry not working with complex surfaces
Co-authored-by: Zheng Lei <realthunder.dev@gmail.com>
2025-02-25 01:36:25 -06:00
Max Wilfinger b07caa732e Remove hack around geometry visibility in active sketch.
Revert #14386 and #16378
2025-02-24 22:09:37 +00:00
Furgo c0569a35b8 Add-On Manager: collapse up-level vendor_path reference for better legibility (#19828) 2025-02-24 12:10:26 -06:00
Adrian Insaurralde a2b15f1d34 pixi: use cos7 packages on linux-64 2025-02-24 14:33:48 -03:00
mosfet80 6ae36bc1e7 [Mod] clean Idf.py 2025-02-24 17:22:39 +00:00
Chris Hennes 30d5e0198f Merge pull request #19719 from Rexbas/navicube-accumulative-animation
Gui: Accumulate orientation for NaviCube flat button animations
2025-02-24 17:15:45 +00:00
Roy-043 bf5e28a502 Draft: fix alignment of sketches in SVG and legacy DXF export
Fixes #5990
Supersedes #13652

This solution only works for sketches. The export of other planar objects remains the same.

This is similar to the way the C++ DXF exporter handles things. What is different here is that if multiple sketches are exported they are assumed to have the same normal, and their position relative to each other is preserved.
2025-02-24 17:13:51 +00:00
Roy-043 074807c378 Draft: change 'Filled' to 'Make face' in UI
Fixes #19715.

The related parameter has been renamed as well and other references to 'fill mode' have been updated.
2025-02-24 17:10:13 +00:00
Roy-043 14f15c4a50 Assembly: fix doCommand code in CommandExportASMT.py
See:
https://forum.freecad.org/viewtopic.php?t=94952
2025-02-24 17:06:28 +00:00
André Althaus 84d850afc9 Always update the element map version if it's not valid or unknown
_Ver can contain "?" after loading and in some circumstances this is not
cleared (often by setValue()) before saving (MultiPattern children or empty Part::Feature).
When saved the same "?" is then written again to the file causing the
recomputing dialog to pop up again and again.

This not only checks for an empty _Ver but also explicitly for "?" and
then regenerating the version if necessary.
2025-02-24 17:00:18 +00:00
Andrew Shkolik a6c92e19f6 Surface - Fill boundary curves not honor SplitCurve edge if it's part of BSpline 2025-02-24 16:59:31 +00:00
Benjamin Bræstrup Sayoc bf1f99c070 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
theepicviolin 38797d1fa4 Add SolidWorks navigation style (#19568) 2025-02-24 10:57:00 -06:00
mosfet80 8ea4046685 Update build-with-conda.sh
Fix freecad version
2025-02-24 16:54:43 +00:00
mosfet80 0d359a515b 3rd party: Updated json lib (#19617)
Serialize empty tuple into '[]'
Optimize binary get_number implementation by reading multiple bytes at once
fix: integer parsed as float when EINTR set in errno
2025-02-24 10:53:47 -06:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ cf21e9a542 [ Doxygen ] Improved Parameter Group - Copy & Insert (#19563) 2025-02-24 10:52:34 -06:00
Chris Hennes c3381617f2 Merge pull request #19084 from tritao/gui-selection-viewproviderfeaturepy
Gui: Provide `ViewProviderFeaturePython` selection callbacks
2025-02-24 16:46:36 +00:00
Chris Hennes 479716d4c5 Merge pull request #19426 from marioalexis84/fem-ccx_vtk
Fem: Add frd format converter to VTK
2025-02-24 16:43:07 +00:00
Chris Hennes 5f35875c46 Merge pull request #19516 from tritao/tools-python-bindings-gen
Tools: Introduce a new Python-based C++ bindings generator
2025-02-24 16:39:24 +00:00
Joao Matos cc6ffb44de Core: Move PyCXX library to src/3rdParty. 2025-02-24 16:36:06 +00:00
sliptonic 01dbe102f2 Merge pull request #19725 from chennes/cmakeUpdates2025
CMake: Clean up policies
2025-02-24 17:33:10 +01:00
Kacper Donat 2ee47b4f1d Gui: Add Show Placement utility 2025-02-24 17:30:27 +01:00
Kacper Donat cc7d067478 Gui: SoFrameLabel text color from base color support
This adds support for obtaining text color from the state of the graph
(base color) to SoFrameLabel nodes.
2025-02-24 17:30:27 +01:00
Kacper Donat 9e2865a8d4 Gui: Add SoFCPlacementIndicatorKit node
This adds SoFCPlacementIndicatorKit - a node that can be used to
show position of object to the user. It can be configured in various
ways so it should be a good base for future unification of features like
this across the application.
2025-02-24 17:30:27 +01:00
Kacper Donat 7078982660 Base: Add Vector3*::Unit* axis constants
This is simple helper that can be used to replace hardcoded values of
base axis with properly labeled ones.
2025-02-24 17:30:27 +01:00
Kacper Donat 62432046bf Gui: Fix empty sketch plane rendering 2025-02-24 17:30:27 +01:00
Kevin Martin 41f09db9e1 Address performance of existing unique-name generation (Part 2) (#18676)
As described in Issue 16849, the existing Tools::getUniqueName method
requires calling code to form a vector of existing names to be avoided.

This leads to poor performance both in the O(n) cost of building such a
vector and also getUniqueName's O(n) algorithm for actually generating
the unique name (where 'n' is the number of pre-existing names).

This has  particularly noticeable cost in documents with large numbers
of DocumentObjects because generating both Names and Labels for each new
object incurs this cost. During an operation such as importing this
results in an O(n^2) time spent generating names.

The other major cost is in the saving of the temporary backup file,
which uses name generation for the "files" embedded in the Zip file.
Documents can easily need several such "files" for each object in the
document.

This update includes the following changes to use the newly-added
UniqueNameManager as a replacement for the old Tools::getUniqueName
method and deletes the latter to remove any temptation to use it as
its usage model breeds inefficiency:

Eliminate Tools::getUniqueName, its local functions, and its unit tests.

Make DocumentObject naming use the new UniqueNameManager class.

Make DocumentObject Label naming use the new UniqueNameManager class.
This needs to monitor DocumentObject Labels for changes since this
property is not read-only. The special handling for the Label
property, which includes optionally forcing uniqueness and updating
links in referencing objects, has been mostly moved from
PropertyString to DocumentObject.

Add Document::containsObject(DocumentObject*) for a definitive
test of an object being in a Document. This is needed because
DocumentObjects can be in a sort of limbo (e.g. when they are in the
Undo/Redo lists) where they have a parent linkage to the Document but
should not participate in Label collision checks.

Rename Document.getStandardObjectName to getStandardObjectLabel
to better represent what it does.

Use new UniqueNameManager for Writer internal filenames within the zip
file.

Eliminate unneeded Reader::FileNames collection. The file names
already exist in the FileList collection elements. The only existing
use for the FileNames collection was to determine if there were any
files at all, and with FileList and FileNames being parallel
vectors, they both had the same length so FileList could be used
for this test..

Use UniqueNameManager for document names and labels. This uses ad hoc
UniqueNameManager objects created on the spot on the assumption that
document creation is relatively rare and there are few documents, so
although the cost is O(n), n itself is small.

Use an ad hoc UniqueNameManager to name new DymanicProperty entries.
This is only done if a property of the proposed name already exists,
since such a check is more-or-less O(log(n)), almost never finds a
collision, and avoids the O(n) building of the UniqueNameManager.
If there is a collision an ad-hoc UniqueNameManager is built
and discarded after use.
The property management classes have a bit of a mess of methods
including several to populate various collection types with all
existing properties. Rather than introducing yet another such
collection-specific method to fill a UniqueNameManager, a
visitProperties method was added which calls a passed function for
each property. The existing code (e.g. getPropertyMap) would be
simpler if they all used this but the cost of calling a lambda
for each property must be considered. It would clarify the semantics
of these methods, which have a bit of variance in which properties
populate the passed collection, e.g. when there are duplicate names..
Ideally the PropertyContainer class would keep a central directory of
all properties ("static", Dynamic, and exposed by ExtensionContainer and
other derivations) and a permanent UniqueNameManager. However the
Property management is a bit of a mess making such a change a project
unto itself.
2025-02-24 10:23:53 -06:00
Chris Hennes 2780c9b13e Merge pull request #19397 from kadet1090/three-point-lighting
Add three-point lighting
2025-02-24 16:22:34 +00:00
mosfet80 ab8f178e0e Clean StartupProcess.cpp (#19642)
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-02-24 10:21:26 -06:00
Andrew 0aed23ca81 fixes #19582 Sketcher - cannot project BSpline from another sketch (#19700)
Also fixes some other types of external geo

---------

Co-authored-by: Andrew Shkolik <andrew.shkolik@selerix.com>
Co-authored-by: realthunder <realthunder.dev@gmail.com>
2025-02-24 10:17:24 -06:00
Kaung Zin Hein df2c6637e6 Gui: "Open File Location/Reveal in Finder" in Tree view (#19805)
* Add: barebone openFileLocation on linux
* Feat: Add handling for different types of os
* Fix: Use preprocessors
* Fix: directive typo

---------

Signed-off-by: Kaung Zin Hein <83657429+Zen-cronic@users.noreply.github.com>
2025-02-24 10:15:28 -06:00
Furgo e55f0cef4b Add-On Manager: generalize removal of non-compatible pip options for the snap package (#19814) 2025-02-24 09:38:47 -06:00
Furgo b48952a281 Add-On Manager: list correct vendor path for snaps (#19816) 2025-02-24 09:36:07 -06:00
tritao b1a24deac6 Gui: Provide ViewProviderFeaturePython selection callbacks
Adds support for Python-based selection callbacks to
`ViewProviderFeaturePython` objects.

It follows the same conventions as `SelectionObserverPython`, follows an
example:

```python
    def setPreselection(self, document, object, element):
        print("setPreselection: %s.%s.%s"%(document, object, element))

    def removePreselection(self, document, object, element):
print("removePreselection: %s.%s.%s"%(document, object,
element))

    def addSelection(self, document, object, element, position):
print("addSelection: %s.%s.%s at %s"%(document, object, element,
str(position)))

    def removeSelection(self,document, object, element):
        print("removeSelection: %s.%s.%s"%(document, object, element))

    def setSelection(self,doc):
        sel = FreeCADGui.Selection.getSelection(doc)
        print("setSelection: %s"%sel)

    def clearSelection(self,doc):
        print("clearSelection\n")
```
2025-02-24 15:02:38 +00:00
Benjamin Nauck 140527d64a Base: Use pass by value instead of reference as size is small 2025-02-24 08:30:18 +01:00
Benjamin Nauck e956bc2101 Base: Constrain size of Base::Type 2025-02-24 08:30:18 +01:00
Benjamin Nauck 65c6614081 Sketcher: Use constant for Type::BadType instead Type::badType() 2025-02-24 08:30:18 +01:00
Benjamin Nauck 211b3209ac Part: Use constant for Type::BadType instead Type::badType() 2025-02-24 08:30:18 +01:00
Benjamin Nauck 17ed01bbf2 Measure: Use constant for Type::BadType instead Type::badType() 2025-02-24 08:30:18 +01:00
Benjamin Nauck 44a7704ad9 Gui: Use constant for Type::BadType instead Type::badType() 2025-02-24 08:30:18 +01:00
Benjamin Nauck e840c840c0 App: Use constant for Type::BadType instead Type::badType() 2025-02-24 08:30:18 +01:00
Benjamin Nauck 27222321c6 Base: Use constant for Type::BadType instead Type::badType() 2025-02-24 08:30:18 +01:00
Benjamin Nauck 142c061a90 Sketcher: Use isBad() instead of comparing types with == 2025-02-24 08:30:18 +01:00
Benjamin Nauck 2c966f5020 Part: Use isBad() instead of comparing types with == 2025-02-24 08:30:18 +01:00
Benjamin Nauck 8af7f1b043 Gui: Use isBad() instead of comparing types with == 2025-02-24 08:30:18 +01:00
Benjamin Nauck 69ffc443d6 App: Use isBad() instead of comparing types with == 2025-02-24 08:30:18 +01:00
Benjamin Nauck a9828d6fea Base: Use isBad() instead of comparing types with == 2025-02-24 08:30:18 +01:00
Chris Hennes 2c485cf998 Merge pull request #19253 from Jonezzzzz/SketcherGroupCommandsFix
Sketcher: Fixed Inconsistency between button tooltips and labeling for shortcuts.
2025-02-23 22:20:07 +00:00
Kacper Donat 2f35f1c561 Base: Add fromPercent and toPercent helpers 2025-02-23 22:51:13 +01:00
Kacper Donat 7f984811e8 Gui: Add 3 point lighting 2025-02-23 22:51:13 +01:00
Chris Hennes 49c2888cde Base: change exception to (...)
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-02-23 14:25:30 -06:00
Roy-043 2aaf67029b Assembly: Make 2 menu texts more consistent
Menu texts in the Assembly WB are in title case without articles.

The following menu texts did not follow that 'standard':
* Insert a new part
* Create a Fixed Joint
2025-02-23 13:39:25 -06:00
Adrian Insaurralde 8fe4b0f7b4 CI: fix assembly unit tests executable name 2025-02-23 13:23:25 -06:00
Syres916 236de12a5f [Gui] Expression dialog OK, capitalised and Alt+O shortcut applied 2025-02-23 16:51:04 +01:00
mosfet80 4698639206 clean QGSPage.cpp
-removed unused variable

-clean code
2025-02-23 09:17:53 -05:00
wandererfan f1d10268e2 [TD]fix page selection from list 2025-02-23 09:16:33 -05:00
wandererfan f831b34378 [TD]prevent quiet no-result on no page 2025-02-23 09:16:33 -05:00
WandererFan a2827acf7e Update src/Mod/TechDraw/Gui/ViewProviderPage.cpp
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-02-23 09:15:47 -05:00
WandererFan f86bc82709 Update src/Mod/TechDraw/Gui/ViewProviderPage.cpp
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-02-23 09:15:47 -05:00
WandererFan bae98e071d Update src/Mod/TechDraw/Gui/ViewProviderPage.cpp
Co-authored-by: Benjamin Bræstrup Sayoc <benj5378@outlook.com>
2025-02-23 09:15:47 -05:00
wandererfan 8e868c3c1f [TD]lint removal 2025-02-23 09:15:47 -05:00
wandererfan 1a7ed84278 [TD]fix maximize tab on view insertion 2025-02-23 09:15:47 -05:00
WandererFan 0c7245dba2 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 d5317ead9e [TD]fix bad formatting 2025-02-23 09:14:23 -05:00
WandererFan 0026766183 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 713e6e6462 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 ae38fb51e2 [TD]lint removal 2025-02-23 09:14:23 -05:00
wandererfan 9ee3bd5629 {TD]Set Arrow end property at Dimension level. 2025-02-23 09:14:23 -05:00
Chris Hennes 38f9fecaf6 CMake: Correct formatting to match existing 2025-02-22 20:48:44 -06:00
Chris Hennes 86e8355478 CAM: Remove C++14 workaround for boost 2025-02-22 20:48:44 -06:00
Chris Hennes 99b088e94e Mesh: Remove explicit C++17 requirement 2025-02-22 20:48:44 -06:00
Chris Hennes 2064703154 CMake: Remove support for old CMake versions 2025-02-22 20:48:44 -06:00
Chris Hennes 0d46a72396 CMake: Add policy 0177 to normalize install paths
Also sort policies by number.
2025-02-22 20:48:44 -06:00
Chris Hennes 3b5f560975 CI: Update LibPack version in action
Also requires deleting the cached copy.
2025-02-22 20:48:44 -06:00
Chris Hennes 20e4d25d70 CMake: Adopt policy CMP0144
All-uppercase find_package()
2025-02-22 20:48:44 -06:00
Chris Hennes b46aa342e4 CMake: Correct use of CACHE 2025-02-22 20:48:44 -06:00
Chris Hennes ac77cd779e CMake: PySide cleanup 2025-02-22 20:48:44 -06:00
Chris Hennes e25efd4fb9 CMake: Expand note about BOOST_PP_VARIADICS=1 2025-02-22 20:48:43 -06:00
Chris Hennes 699e1bd463 Gui: Change variable name import->importCommand
import is a reserved word in c++latest
2025-02-22 20:48:43 -06:00
Chris Hennes 84b3f39785 CMake: Set CMP0153 to NEW 2025-02-22 20:48:43 -06:00
Chris Hennes d127610ccf CMake: Add details about why CMP0148 is needed 2025-02-22 20:48:43 -06:00
Chris Hennes 87ce62f8ac CMake: Update compiler and standard mins 2025-02-22 20:48:43 -06:00
Chris Hennes 16ac5f0a50 CMake: Remove old policy 0072 2025-02-22 20:48:43 -06:00
Chris Hennes 7a4e20e7f7 CMake: Add policy CMP0175 2025-02-22 20:48:43 -06:00
bofdahof 62415907ee current src path no longer required 2025-02-22 20:48:30 -06:00
Jacob Oursland 9af828d15a CMake: Remove unsupported DEPENDS args to CMake macros. 2025-02-22 20:41:15 -06:00
tritao 9c0b95b569 Gui: Split SelectionObserverPython call logic into separate handler class. 2025-02-23 00:05:23 +00:00
Benjamin Nauck 78a1a81661 Spreadsheet: Move "arrange" and "act" to the tests 2025-02-22 20:04:46 +01:00
bofdahof d1e5c3340e Response to code review 2025-02-22 20:04:46 +01:00
bofdahof 0f362ebcfe break down some large tests into single-assert tests
More still to do
2025-02-22 20:04:46 +01:00
Chris Hennes f92fcbd089 Addon Manager: Fix pip usage on Snap and Appimage 2025-02-22 12:02:06 -06:00
GHDE f494c2059b fixed openExternalLinks in DlbAbout (FreeCAD#16423) 2025-02-22 12:00:39 -06:00
marioalexis 5042b94463 Fem: Add metadata info to blocks 2025-02-22 14:46:50 -03:00
marioalexis e84eb920dc Fem: Add frd format converter to VTK 2025-02-22 14:46:50 -03:00
Andrea f001b8a10a update conda
switch to last 24 version
fix:
https://github.com/conda/conda-libmamba-solver/releases
2025-02-22 17:37:24 +01:00
Bas Ruigrok ad84f57ceb Gui: Accumulate orientation for NaviCube flat button animations 2025-02-21 21:57:00 +01:00
Bas Ruigrok 0d1e41ee5c Gui: Return animation from setCameraOrientation and translateCamera 2025-02-21 21:57:00 +01:00
Colin Rawlings f74efa319c Add check that the solid_name is valid
Avoid errors when hovering on the menu's label
2025-02-21 14:22:40 -06:00
bofdahof 34639e777d Remove OpenCascade Community Edition 2025-02-21 14:21:21 -06:00
Chris Hennes 574579196b Merge pull request #19660 from adrianinsaval/fix-spnav-regression
Fix spnav not enabled by default on linux after #19226 and #19407
2025-02-21 14:20:55 -06:00
bofdahof b73a403ab0 Remove second vtk listing. See #19607 2025-02-21 14:18:10 -06:00
Chris Hennes 6fedb9da7d Merge pull request #19739 from kadet1090/is-null-or-empty
Base: Add isNullOrEmpty string helper
2025-02-21 13:49:10 -06:00
Chris Hennes 318d6e1555 Base: Stop exception from leaking from Console().*
These are sometimes used in destructors, where a raised exception calls terminate()
2025-02-21 10:56:41 -06:00
tritao 8ba573712c Tools: Introduce a Python-based API bindings template generator.
This extends the existing XML-based template generator to allow an
additional kind of Python-based input.

The Python code is read as source code to an AST to a typed model
equivalent to the existing XML model, and processed by the existing
code templates into compatible code.

This provides a few benefits, namely readability is much increased,
but more importantly, it allows associating the APIs with Python's new
typing information, which will allow to provide accurate type hinting
without additional downstream processing in the future.

Right now this is just a proof-of-concept but if the approach is
well received, then a more complete implementation can be done with
further conversion of existing binding files.

Here is an example of how it looks, though I still think the metadata
is too verbose and can be made to look nicer with some further work.

```python
from ..Base.Metadata import metadata
from ..Base.Persistence import PersistencePy
from typing import Any, Optional, List

@metadata(
    Father="PersistencePy",
    Name="DocumentPy",
    Twin="Document",
    TwinPointer="Document",
    Include="Gui/Document.h",
    Namespace="Gui",
    FatherInclude="Base/PersistencePy.h",
    FatherNamespace="Base"
)
class DocumentPy(PersistencePy):
    """
    This is a Document class.

    Author: Werner Mayer (wmayer@users.sourceforge.net)
    Licence: LGPL
    """

    def __init__(self, *args: Any, **kwargs: Any) -> None:
        """
        Constructor for DocumentPy.
        """
        super(DocumentPy, self).__init__(*args, **kwargs)
        pass

    def show(self, objName: str) -> None:
        """
        show(objName) -> None

        Show an object.

        Parameters:
            objName (str): Name of the `Gui.ViewProvider` to show.
        """
        pass
```
2025-02-21 16:32:13 +00:00
Joao Matos b67ab979af CMake: Update minimum Python version to 3.10 2025-02-21 09:45:13 -06:00
Kacper Donat 7a067ed464 Update src/App/Application.cpp
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-02-21 15:04:43 +01:00
Kacper Donat 12a69fe296 Base: Add isNullOrEmpty string helper
This adds isNullOrEmpty string helper that cheks if string is... well
null or empty. It is done to improve readability of the code and better
express intent.
2025-02-21 15:04:43 +01:00
tritao 8bb8a36012 Tools: Add documentation for the Python-based bindings system. 2025-02-21 13:18:36 +00:00
tritao 55ec098719 CMake: Rename generate_from_py macro to generate_embed_from_py. 2025-02-21 13:18:36 +00:00
Benjamin Bræstrup Sayoc 2bbf6c7f6e Move Tag to separate translation unit
- Avoid code duplication
- Reduces compile time
2025-02-21 13:01:28 +01:00
Benjamin Bræstrup Sayoc 22058b2c82 Remove unused function assignTag 2025-02-21 11:25:52 +01:00
Lukas Neubert 928556c5e5 readme: fix discord invite 2025-02-21 08:06:16 +01:00
Chris Hennes 9c097eba60 App: Small fixes caught by Coverity scan 2025-02-20 22:00:40 -06:00
Chris Hennes dabcb2e506 Spreadsheet: Fixes for coverity defects Feb 2025 2025-02-20 21:17:55 -06:00
Alfredo Monclus c4a4ce3ae0 style: simplify fx icon to be more legible at small sizes 2025-02-20 19:59:56 +01:00
lorenz ba60cc61e6 add option to disable check for pivy at build-time (#19718)
Co-authored-by: João Matos <joao@tritao.eu>
2025-02-20 08:32:58 -03:00
xtemp09 e1512dc009 [Spreadsheet] Fix popup close issue (#19676)
* [Spreadsheet] Fix popup close issue
2025-02-19 15:49:11 -06:00
Roy-043 5087c1949f Draft: improve upgrade and downgrade
Fixes #16333.
Follow-up of #19487.

* The functions have been made nesting-aware. New objects are put in the same container (Group, Part) as the original objects. As a consequence for some operations the original objects must be in the same container as well.
* New objects receive the visual properties of the original objects. This is not always perfect. For example when upgrading to multiple wires there is currently no check to see which edge came from which orginal object. The fact that the `format_object` function is called from the Draft `make*` functions is problematic here. If construction mode is active `make_wire` puts new objects in the construction group and we don't always want that. This has been solved with a workaround (see 'cludge' in the code).
* The 'de-parametrize' downgrade option has also been enabled for features of PartDesign Bodies that have the `Profile` property.
* Before deleting objects there is a check to see if they are in use elsewhere (`InList` check). Base objects of arrays are not deleted if they are visible. If a PartDesign Body, or an object inside a Body is selected, the whole Body is deleted.
* The force options did not work for functions that take a single object.
* The `getShapeFromMesh` function in ArchCommands.py could return a solid that was not closed. A check for that has been added.
2025-02-19 18:06:12 +01:00
Yorik van Havre 463c7f72a1 BIM: Do not change important pref options without user's consent - fixes #19163 2025-02-19 12:27:32 -03:00
Joao Matos 80c82b852d Git: Ignore extra suffixed build directories.
Its pretty helpful when developing to have multiple build directories
for different branches.

This adds such pattern to .gitignore to be able to have a sane Git
experience.
2025-02-19 10:08:46 -03:00
Benjamin Bræstrup Sayoc dda05369c4 Base: remove unneeded includes 2025-02-18 11:07:57 -06:00
Furgo e7763236bc Fix one last instance of NativeIFC 2025-02-18 13:22:23 +01:00
Furgo 6d48d6fe39 Use correct case 2025-02-18 13:22:23 +01:00
Furgo aad16b2391 Improve legibility of NativeIFC in preferences 2025-02-18 13:22:23 +01:00
JULIEN MASNADA 065c5cff22 [BIM] SH3DImporter: miscellaneous improvments (#19335)
* Fix duplicated groups

* Fixed windows spaning several floors

* Fixing doorOrWindow positioning. Allowing to DEBUG_GEOMETRY

* Fixed default color for floor and ground

* Fixed some windows positioning issue

* Fixed invalid modification of wall array. Changed default window type to allow opening

* fixed some import failures. Added some new windows

* Fixed some more edge cases

* Use doc transaction. Fixed import of room based on self-intersecting polygon.

* Added default furniture color. Fixed wall reference face to fix slab creation

* Replace Debug setting by DebugGeometry

* Fixed corner cases when importing Door & Furniitures

* Fix emissive color and shininess

* Remove external package dependency

* Fixed furniture placement and transformation

* Make sure lights are properly imported

* Fixed duplicated camera and ground when merging
2025-02-18 11:45:40 +01:00
luzpaz a4f2b2882d FEM: Misc. uniformity fix in CreateLabels.py 2025-02-18 07:59:17 +01:00
Adrian Insaurralde a7ba57c708 Gui: hide legacy spacemouse support PrefCheckBox if navlib isn't enabled 2025-02-18 00:11:16 -03:00
Adrian Insaurralde a862071e3e Fix spnav not enabled by default on linux after #19226 and #19407 2025-02-17 23:58:13 -03:00
Kacper Donat 1ce7c678bb Base: Add Color parameter Type
This adds Color parameter type to the ParameterGroup. Internally colors
are stored as unsigned longs so it only is convienance layer.
2025-02-17 21:10:26 +01:00
Kacper Donat a72a63232a 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 Nauck 145af5cddc Make modulo require units to be same or dimensionless
Fixes #19517
2025-02-17 11:31:17 -06:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ d546b9d219 [ Doxygen ] Improved Param Group Subgroup Methods (#19546) 2025-02-17 11:24:05 -06:00
Florian Foinant-Willig e1e75082ed TechDraw: Add a format spec. to round a value 2025-02-17 12:18:26 -05:00
Benjamin Bræstrup Sayoc e2446c4076 Remove magic number and hard type enums in DrawBrokenView.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 79fdfb2cad Remove magic number and hard type enums in CenterLine.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 f115ed4bb1 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 63d9806b86 Remove magic number and hard type enums in Geometry.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
Lawrence Woestman b9c4bee4e3 CAM: Fixed F parameter handling for only rotary axes
with tests
      and the commit for converting the refactored*
      postprocessors to the new API
2025-02-17 11:10:40 -06:00
Chris Hennes 68e934ba18 Merge pull request #15690 from bgbsww/bgbsww-toponamingAddFeatureRefine
Toponaming add feature refine class
2025-02-17 10:28:32 -06:00
Chris Hennes 248aad0d4c Merge pull request #19591 from benj5378/qStringLiteral2
Use QStringLiteral 2
2025-02-17 10:25:31 -06:00
mac-the-bike a84bf88e1d FEM: Animation of Results (#18496) 2025-02-17 10:24:09 -06:00
Chris Hennes 1cbd010427 Merge pull request #19524 from marioalexis84/fem-zrefine
Fem: Add Z-refinement support for Netgen
2025-02-17 10:19:26 -06:00
Furgo 2e07d3be95 Start: add optional custom folder view (#19473)
* Start: add optional additional folder view

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

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

* Added logic to migrate ShowCustomFolder parameter

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

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

* Rename Additional to Custom folder

* Change Start page text to sentence case for consistency

* Fix breakage created by pre-commit.ci

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

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

* Rearrange migration logic to make it more explicit

* Revert "Change Start page text to sentence case for consistency"

This reverts commit 8a31a1238c0380ddbe13e6e5838a3be6b13400a5.

* Make parameterGroup local

* Apply suggestions and linter improvements

* Adapted suggestion to simplify migration logic

* Start: Warning -> Message for rename of ShowCustomFolder

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-02-17 10:18:35 -06:00
tritao cc21acb325 Part: Clean up XML bindings. 2025-02-17 10:18:01 -06:00
bofdahof 6fe40b1fbb CMP0167 re Boost 2025-02-17 10:17:32 -06:00
mosfet80 a0f0909800 Update pixi (#19625) 2025-02-17 10:17:03 -06:00
Chris Hennes 5d83f6dfdf Merge pull request #19627 from alfrix/featurehole_refactors
refactor(PD): Featurehole optimizations and cleanups
2025-02-17 10:16:37 -06:00
Alfredo Monclus 0bad3cc37b refactor: hole taskpanel tweak layout spacing 2025-02-17 10:16:06 -06:00
Benjamin Bræstrup Sayoc b45c19fa05 Tests: use QStringLiteral 2 2025-02-17 12:44:27 +01:00
Alfredo Monclus 70b00c0613 revert: unique_ptr actionbox 2025-02-16 20:13:06 -03:00
Alfredo Monclus 40e871e180 revert: unique_ptr actiongroup 2025-02-16 20:12:51 -03:00
Chris Hennes c50cb07974 Update src/Mod/PartDesign/App/FeatureRefine.h
Co-authored-by: Florian Foinant-Willig <FlachyJoe@users.noreply.github.com>
2025-02-16 13:56:54 -06:00
Benjamin Bræstrup Sayoc 5626a43ccd TechDraw: use QStringLiteral 2 2025-02-16 19:52:30 +01:00
Benjamin Bræstrup Sayoc ed4a630a43 Gui: use QStringLiteral 2 2025-02-16 19:52:30 +01:00
Benjamin Bræstrup Sayoc a4c3b4c06f Base: use QStringLiteral 2 2025-02-16 19:52:23 +01:00
Benjamin Bræstrup Sayoc f68ec76277 Material: use QStringLiteral 2 2025-02-16 19:50:34 +01:00
Chris Hennes a2cef23dbd PD: Combine onlyHaveRefined and onlyHasToRefine
Co-authored-by: Florian Foinant-Willig <FlachyJoe@users.noreply.github.com>
2025-02-16 11:25:45 -06:00
mosfet80 04d2bcbf45 Update CMakeLists.txt
cmake version is always greater than 3.8.
2025-02-16 10:22:31 -06:00
Joao Matos 27ebc68a11 CMake: Modernize build files using outdated Python variables. 2025-02-16 10:21:26 -06:00
Alfredo Monclus 9f34f15a4b refactor: setup and use a single base scheme 2025-02-16 10:19:48 -03:00
Alfredo Monclus cbd811f2ec refactor: remove check for qt<5.15 2025-02-16 10:15:40 -03:00
Alfredo Monclus a5d2af4e16 refactor headers 2025-02-16 10:13:13 -03:00
Alfredo Monclus 741e780f46 refactor: remove scheme dependencies from group 2025-02-16 10:02:23 -03:00
Alfredo Monclus 5cdf80357b refactor: remove unneeded setscheme from taskgroup 2025-02-16 10:02:23 -03:00
Alfredo Monclus 6cbb778edf refactor: remove unneeded setscheme from actiongroup 2025-02-16 10:02:23 -03:00
Alfredo Monclus c5f99e7df4 refactor: implement unique_ptr on actiongroup 2025-02-16 10:02:23 -03:00
Alfredo Monclus 55507942f2 refactor: implement unique_ptr in actionbox 2025-02-16 10:02:23 -03:00
Alfredo Monclus 70138efe4e fix: task groups jumping when folding 2025-02-16 10:02:23 -03:00
Alfredo Monclus 3865577118 refactor: actionpanel with more moder structure 2025-02-16 10:02:23 -03:00
Alfredo Monclus e3927a0105 refactor: actionlabel clenup and improve size calculation 2025-02-16 09:56:45 -03:00
Alfredo Monclus bf5b6dd95c refactor: cleanup and modernize actiongroup 2025-02-16 09:54:18 -03:00
Alfredo Monclus b71c80d3f3 refactor: modernize and cleanup actionbox 2025-02-16 09:54:18 -03:00
Alfredo Monclus 69651d384d refactor: minimize styling as much as possible 2025-02-16 09:54:18 -03:00
Alfredo Monclus c7aeceba73 refactor: actionpanel style without color move to minimum 2025-02-16 09:54:18 -03:00
Alfredo Monclus ed1bfa20bf refactor: reduce qsint schemes to 1 2025-02-16 09:54:16 -03:00
Alfredo Monclus 5c512d6ff8 refactor: qsint style should be minimum plus mods 2025-02-16 09:53:57 -03:00
Alfredo Monclus f19235330b refactor: remove old taskpanel styles 2025-02-16 09:52:34 -03:00
Andrea de9bd5e1ce change MIN_boost_version
ubuntu version 20.04 is no longer supported.
The minimum boost version used for freecad is now 1.74 (ubuntu 22.04) https://launchpad.net/ubuntu/jammy/+package/libboost-system-dev
2025-02-15 13:33:32 -06:00
Alfredo Monclus f93396e566 refactor(PD): simplify setreadonly on type switch 2025-02-15 16:12:49 -03:00
bofdahof c7eb97c972 Add Vtk to cmake report 2025-02-15 10:22:09 -06:00
Alfredo Monclus dff79b6b08 refactor(PD): reduce the number of comparisons 2025-02-15 06:29:04 -03:00
marioalexis c27cc09f27 Fem: Do not update mesh if process ends with errors 2025-02-14 18:13:52 -03:00
marioalexis f5de900f8d Fem: Add Z-refinement support for Netgen 2025-02-14 18:13:52 -03:00
Ziad eb886449c2 PartDesign: Allow Draft negative angles 2025-02-14 14:57:14 -06:00
Chris Hennes 7412fce041 Merge pull request #19468 from hyarion/AIRCAP_fixCompoundCuts
Part: OCCWrapper: Fix compound cuts
2025-02-14 14:16:17 -06:00
Benjamin Nauck 7ff8382ae7 Add [[nodiscard]] to Vector3 (#19544)
* Add nodiscard to vector3
2025-02-14 14:14:45 -06:00
tritao 9636068460 Base: Move zipios library to 3rdParty folder. 2025-02-14 13:08:28 -06:00
tritao 05bdb40c12 Gui: Clean up XML bindings. 2025-02-14 13:05:29 -06:00
Ulices e16c462916 Core: Remove link from tooltip (#19120)
It's impossible to click on the link because the tooltip fades away

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-02-14 10:56:52 -06:00
Chris Hennes 4dc8b26e8d Merge pull request #18791 from CalligaroV/toponaming-ElementMapVersion-code-from-LS3
[Toponaming] Import code releted to _ElementMapVersion from LS3
2025-02-14 10:54:38 -06:00
Chris Hennes 2086d297c6 Part(toponaming): Remove support for OCCT 6.x 2025-02-14 10:54:13 -06:00
Alfredo Monclus 5c97fc094b fix(Gui): transparencies issues when using overlays
refactor: use replace to avoid numbering

refactor: fix the lint warnings

refactor: fix clazy complaints

refactor: apply review recommendation
2025-02-14 10:50:26 -06:00
Benjamin Nauck 1d89f9c23c CAM: Fix finish passes by avoiding fuzzy in Area.cpp (#19525) 2025-02-14 10:31:32 -06:00
Benjamin Bræstrup Sayoc 4473aa029f TechDraw: Set symbol dir
Fixes #19496
2025-02-14 10:27:53 -06:00
Chris Hennes cd64b9a7d2 Merge pull request #19549 from tritao/xml-bindings-cleanup-app
App: Clean up XML bindings.
2025-02-14 10:26:48 -06:00
paul 56b180f3b1 [ArchSketchObject / Window] Links of Window to support Individual Hosts (#19378)
* [ArchSketchObject / Window]  Links of Window to support Individual Hosts

Currently, Links of Window's Hosts property (and in generall all properties other than e.g. Placement) is shared with its Linked Window object, i.e. all Windows Links instances can only has a common Host(s) which is not flexible for the purpose of Links.

AND, at the same time, Links in linked document suffer from the 'scope' of the original Linked Window, which is in the external Document.

This commit adds feature to support:
  1/ each Links instance of Windows has their own individual setting of Hosts, and
  2/ it see the 'scope' of the Links in its document (rather than the Linked Window in the external document)

FreeCAD Forum:
- https://forum.freecad.org/viewtopic.php?p=808569#p808569

FreeCAD GitHub:
- https://github.com/FreeCAD/FreeCAD/issues/19361

* [ArchSketchObject]  Fix indentation
2025-02-14 13:46:44 +01:00
Furgo 3623f8baf5 BIM: fix ability to cancel file dialog on BIM_TDPage command (#19518)
* BIM: use tuple return value from QFileDialog.getOpenFileName

Fixes: https://github.com/FreeCAD/FreeCAD/issues/19466

* BIM: remove filename assignment from tuple
2025-02-13 17:45:27 +01:00
Roy-043 dd3ae90fe7 Draft: task_scale.py fix circular imports (#19574)
See:
https://forum.freecad.org/viewtopic.php?t=94748
2025-02-13 16:02:24 +01:00
Roy-043 ee7f52060b Draft: gui_utils.py fix error in select function (#19539)
* Draft: gui_utils.py fix error in select function

PR #18795 changed the select function to also handle tuples. This PR adds a check to ensure the referenced objects in the tuple still exist before calling `Gui.Selection.addSelection()`.
2025-02-13 16:00:30 +01:00
Chris Hennes 9fccfa115d TD: Add missing #include "PreCompiled.h" (#19547)
* TD: Add missing #include "PreCompiled.h"

* Update src/Mod/TechDraw/Gui/CommandAlign.cpp

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

* TD: Add guards around QMessageBox include

---------

Co-authored-by: WandererFan <WandererFan@gmail.com>
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-02-12 21:28:34 -06:00
Chris Hennes d2f1589898 Tests: remove superfluous NOLINTs 2025-02-12 14:22:41 -06:00
Chris Hennes 0bf76de638 Part: Add comment explaining element map version string 2025-02-12 14:19:37 -06:00
Syres916 d044d3da84 [BIM] fix name 'self' is not defined error 2025-02-12 14:23:31 +01:00
Syres916 d92bb8611e [BIM] Fix translate error 2025-02-12 14:23:31 +01:00
Chris Hennes 8899e3476e Merge pull request #19548 from oursland/update-ci-ubuntu
CI: Update Ubuntu 20.04 to Ubuntu 22.04
2025-02-11 22:03:31 -06:00
Chris Hennes cb93a4ae18 Merge branch 'main' of https://github.com/FreeCAD/FreeCAD into bgbsww-toponamingAddFeatureRefine 2025-02-11 20:58:58 -06:00
Chris Hennes 23d98b8d0b PD: address FeatureRefine reviewer comments 2025-02-11 20:56:41 -06:00
tritao defb77af73 App: Add more concrete types to Metadata API bindings. 2025-02-12 01:54:56 +00:00
tritao 9e08039ab6 App: Clean up XML bindings. 2025-02-12 01:54:27 +00:00
Jacob Oursland 546bd59ecf CI: Update Ubuntu 20.04 to Ubuntu 22.04. 2025-02-11 16:45:51 -08:00
Jacob Oursland 9ffbb6d128 CI: Rename Ubuntu 20.04 to just Ubuntu. 2025-02-11 16:45:51 -08:00
jffmichi 72c37f9b75 PartDesign: fix crash when opening a file with a metric hole 2025-02-11 17:35:35 -06:00
Chris Hennes c962dbbeb6 Merge pull request #19167 from alfrix/hole_new_taskpanel
feat(PD): hole taskpanel: new image based cut panel
2025-02-11 17:22:16 -06:00
Syres916 62c5267e64 [Gui] fix the FPS text visibilty issues raised in #19371 (#19385)
* [Gui] fix the FPS text visibilty issues
* [Gui] code efficiency based on suggestions
* [Gui] update color parameter
* [Gui] Fix Lint feedback
* [Gui] check if string is empty
2025-02-11 13:16:29 -06:00
GS-GOAT 271c446493 Measurement: save 'Show Delta' state between commands #19204 (#19430)
* Measurement: save 'Show Delta' state between commands #19204

When users set Show Delta option to off in the Measure tool, the setting
was not being preserved when the tool was invoked again. This was due to    
using an uninitialized value as the default when loading the preference.  

Changes staged in: FreeCAD\src\Mod\Measure\Gui\TaskMeasure.cpp 

Fixed by:
- Using explicit 'true' as default value when loading Show Delta
preference 
- Maintains existing save functionality
- Ensures consistent behavior on first use
Fixes #19204

* Changed few things to ensure the delta state is saved #19204

added changes:-
1. settings.endGroup()
When we call beginGroup(), it creates a prefix for all subsequent settings operations, All settings will be stored under the "TaskMeasure" group.
endGroup() is needed to close this grouping scope
Without it, subsequent settings operations would still use the "TaskMeasure" prefix

2. settings.sync()
By default, QSettings caches changes in memory and writes them to disk later
sync() makes an immediate write to the settings file
This ensures the setting is saved right away rather than waiting for Qt to decide when to save.
Makes the setting change immediately available for future commands.

-Fixes Measurement: save 'Show Delta' state between commands #19204

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

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

* Added proposed changes to autoSaveChanged() and newMeasurementBehaviourChanged() functions #19204 #19430

Added settings.endGroup() to the following functions:-
1.autoSaveChanged()
2.newMeasurementBehaviourChanged() 
Each beginGroup() should be followed by endGroup().

No need for explicitily calling sync() as it is called automatically from QSettings's destructor and by the event loop at regular intervals.(Refer documentation for more info)

-Fixes Measurement: save 'Show Delta' state between commands #19204 #19430

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-02-11 13:10:53 -06:00
Alfredo Monclus da4f584a50 PD(hole taskpanel): apply review suggestions
* refactor: change to ternary op
* refactor: apply recommendations to widgets
* refactor: use QSignalBlocker
* refactor: address some compiler complaints
* refactor: add namespace Gui to new widgets
2025-02-11 12:23:13 -06:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ 0ece6f3201 Base: [ Doxygen ] Improved parameter attribute methods (#19491) 2025-02-11 11:44:52 -06:00
Alfredo Monclus 3202dde7ca PD(hole taskpanel): Add custom widget for font-scaled SVGs
* feat: add custom widget for font scaled svgs
* refactor(PD): hole taskpanel svg tweaks
* fix(PD): build link on windows
2025-02-11 11:31:38 -06:00
Alfredo Monclus de7a237a8a PD(hole taskpanel): Include depth on diagram
feat(PD): hole diagram add include depth
refactor(PD): hole taskpanel: images add background
2025-02-11 11:31:38 -06:00
Alfredo Monclus be3ce13a7c PD(hole taskpanel): Add image-based hole cut panel
* feat(PD): hole taskpanel: new image based cut panel
* fix(PD): hole taskpanel fix dynamic cut types
* refactor(PD): hole taskpanel: renames and vlayouts to keep labels closer
* fix(PD): hole diagram tweaks
2025-02-11 11:31:17 -06:00
Ian Hunter 67f8852697 Fix bug preventing filtering named constraints (#19339)
* Fix bug preventing filtering named constraints

There was a bug (see issue #11843) that displayed a filter for Named
constraints in the Sketcher Workbench whose toggling did not affect the
UI in any way. This enables this feature by checking if a given
constraint has a custom name or not and then appropriately toggling its
visibility.

* Use `std::string::empty()` per reviewer suggestion

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-02-11 11:03:04 -06:00
Chris Hennes e7c86d7710 Core: Update copyright date range to include 2025 (#19520)
* Main: Update copyright date range to include 2025
* GUI: Update copyright date range to include 2025
2025-02-11 10:59:12 -06:00
Chris Hennes a4901e2ccb Merge pull request #19142 from hyarion/refactor/add-template-addobject
Add new addObject<T>() function
2025-02-11 09:42:47 -06:00
Karliss cb8c193408 Workaround for transparency problems on wayland.
Reset alpha channel value to 1 at the end of 3d  rendering. The way Qt handles OpenGL widgets with transparent pixels in their final output is inconsistent.
2025-02-11 07:59:28 -06:00
Chris Hennes 1350dd6bd0 Merge pull request #19502 from benj5378/QStringLiteral
Use QStringLiteral
2025-02-11 07:34:12 -06:00
Benjamin Bræstrup Sayoc 4d9e4efc87 [TechDraw] Add ability to align points by rotating view
Fixes #7061
2025-02-10 19:31:39 -05:00
Chris Hennes 516595fbce Merge pull request #18594 from Flast/performance/base/find_element
Base: Improved FindElement performance by reducing call of transcode
2025-02-10 14:33:49 -06:00
Benjamin Nauck fdf59be4cd PD: Light refactoring of TaskFeaturePick::makeCopy 2025-02-10 18:35:38 +01:00
Benjamin Nauck b4bb86948f Mod: Use new GroupExtension::addObject<T>(...) 2025-02-10 18:35:38 +01:00
Benjamin Nauck d71325d83e App: Add GroupExtension::addObject<T>(...) 2025-02-10 18:35:38 +01:00
Benjamin Nauck 8cc98b9a88 Mod: Use new addObject<T>(...) that requires additional changes 2025-02-10 18:35:38 +01:00
Benjamin Nauck a1c5767643 Mod: Use new addObject<T>(...) using regex 2025-02-10 18:35:38 +01:00
Benjamin Bræstrup Sayoc 546d973337 App: Use QStringLiteral 2025-02-10 18:34:58 +01:00
Benjamin Bræstrup Sayoc b96d24638a Test: Use QStringLiteral 2025-02-10 18:34:57 +01:00
Benjamin Bræstrup Sayoc f647d4a1eb Gui: Use QStringLiteral 2025-02-10 18:34:57 +01:00
Benjamin Bræstrup Sayoc bad9499d50 Test: Use QStringLiteral 2025-02-10 18:34:57 +01:00
Benjamin Bræstrup Sayoc e0fb77bcdc Surface: Use QStringLiteral 2025-02-10 18:34:57 +01:00
Benjamin Bræstrup Sayoc adf2051003 Robot: Use QStringLiteral 2025-02-10 18:34:57 +01:00
Benjamin Bræstrup Sayoc fa94693a2b ReverseEngineering: Use QStringLiteral 2025-02-10 18:34:57 +01:00
Benjamin Bræstrup Sayoc e192045bfc Sandbox: Use QStringLiteral 2025-02-10 18:34:57 +01:00
Benjamin Bræstrup Sayoc 5159a84402 Points: Use QStringLiteral 2025-02-10 18:34:57 +01:00
Benjamin Bræstrup Sayoc e9456f7115 Spreadsheet: Use QStringLiteral 2025-02-10 18:34:57 +01:00
Benjamin Bræstrup Sayoc ee90eb6ebc PartDesign: Use QStringLiteral 2025-02-10 18:34:57 +01:00
Benjamin Nauck 0712b481e9 App: Add Document::addObject<T>(...) to simplify code 2025-02-10 18:33:00 +01:00
Benjamin Nauck ddb0113ded Base: Minor code cleanup in Type 2025-02-10 18:33:00 +01:00
Benjamin Nauck 8a7f886458 App: Add compile time checks for type system class name
Ensures:
* _class_ is based on BaseClass
* _class_ parameter includes a namespace

And when _class_ is a document object
* namespace is not global namespace
* namespace name is in path after /src/ or /src/Mod/

The document object requirements are needed to auto import modules when using addObject
2025-02-10 18:33:00 +01:00
Benjamin Nauck 7c4ff290a8 Mod: Fix mistakes in type system class names 2025-02-10 18:33:00 +01:00
Benjamin Nauck a619c2ffd9 App: Fix _class_ passing in PROPERTY_HEADER_WITH_EXTENSIONS 2025-02-10 18:32:59 +01:00
Benjamin Nauck 0226ba1fc7 Base: Add missing const to Type::createInstance 2025-02-10 18:32:59 +01:00
Benjamin Bræstrup Sayoc 85d0884f43 Import: Use QStringLiteral 2025-02-10 18:32:45 +01:00
Benjamin Bræstrup Sayoc 63c8e4b55c Measure: Use QStringLiteral 2025-02-10 18:32:45 +01:00
Benjamin Bræstrup Sayoc e1b39ad1f6 Fem: Use QStringLiteral 2025-02-10 18:32:45 +01:00
Benjamin Bræstrup Sayoc f2e43191ec MeshPart: Use QStringLiteral 2025-02-10 18:32:45 +01:00
Benjamin Bræstrup Sayoc 6c61769d8c Material: Use QStringLiteral 2025-02-10 18:32:45 +01:00
Benjamin Bræstrup Sayoc b5517aa9f4 Start: Use QStringLiteral 2025-02-10 18:32:45 +01:00
Benjamin Bræstrup Sayoc 4c066b68b4 Mesh: Use QStringLiteral 2025-02-10 18:32:45 +01:00
Benjamin Bræstrup Sayoc 249f11f6db CAM: Use QStringLiteral 2025-02-10 18:32:45 +01:00
Benjamin Bræstrup Sayoc c0c6df10ec Sketcher: Use QStringLiteral 2025-02-10 18:32:45 +01:00
Benjamin Bræstrup Sayoc bada65edc3 Part: Use QStringLiteral 2025-02-10 18:32:44 +01:00
Benjamin Bræstrup Sayoc 835905f76e TechDraw: Use QStringLiteral 2025-02-10 18:32:44 +01:00
Chris Hennes 2745f43602 Merge pull request #17082 from benj5378/useTemplates
[TechDraw] Use templates
2025-02-10 11:17:26 -06:00
mosfet80 cf5d66d201 clean SketchObject.cpp (#15728)
* clean SketchObject.cpp

Code clean 
small optimization

* Restore comment

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-02-10 11:04:26 -06:00
Chris Hennes 86e2ae8a6b Merge pull request #18916 from AjinkyaDahale/sk-refactor-stage-3
[Sketcher] Round 3 of refactors
2025-02-10 11:01:55 -06:00
tritao d60358443e App: Improve Document.copyObject Python API.
This updates the `Document.copyObject` Python API by allowing for
keyword arguments and aligning the documentation with the C++ API.

This can make the Python code more readable, by using the keywords form:

```python
document.copyObject(obj, recursive=True, return_all=False)
```

Previous keyword-less version tested and still working for backwards
compatibility.
2025-02-10 10:57:17 -06:00
Chris Hennes aa76a63abf Merge pull request #19420 from tritao/gui-selection-refactor
Gui: Selection code cleanups
2025-02-10 10:56:23 -06:00
tritao e94d1cf872 Base: Remove Boost-based filesystem and switch to standard <filesystem> 2025-02-10 10:48:54 -06:00
Joao Matos 1eb7468710 CMake: Improve Pivy Coin3D version mismatch checking. 2025-02-10 10:41:47 -06:00
LarryWoestman 0edcb29f09 CAM: converted the refactored* postprocessors to the new (more object-oriented) API (#19006)
* CAM:  converted the refactored* postprocessors to the new API

      with corresponding tests

* [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-02-10 10:37:57 -06:00
herbkonik 1de6c974c0 Update SurfaceSupport.py (#18724) 2025-02-10 10:35:26 -06:00
tritao ad584fa351 Gui: Check if document exists in View3DInventorViewer::setOverrideMode. 2025-02-10 10:33:22 -06:00
Alfredo Monclus dc53d3dba2 feat(PD): guess closest thread designation
fixes metric to metric-fine not working when switching threadtype from cli and property panel and the cases when changing from metric to inch based types and vice-versa
2025-02-10 10:32:52 -06:00
Chris Hennes 6b59e4b2ec Merge pull request #19479 from tritao/base-cleanup-xml-generation
Base: Minor cleanups to base XML bindings generation
2025-02-10 09:34:50 -06:00
Roy-043 5bcc0d9612 Merge pull request #19477 from Roy-043/Draft-Introduce-Edit-option-for-Draft-Clone-scaling
Draft: Introduce Edit option for Draft Clone scaling
2025-02-10 16:16:59 +01:00
Roy-043 9df36e8fc6 Merge pull request #19487 from Roy-043/Draft-make-arrays-explodable
Draft: make arrays explodable
2025-02-10 16:16:18 +01:00
Furgo dc422e1f35 BIM: fix error on double-clicking on non-IFC objects 2025-02-10 14:32:20 +01:00
Roy-043 340f446654 BIM: Panel does not require a Base
https://forum.freecad.org/viewtopic.php?t=94657
2025-02-10 14:28:26 +01:00
Roy-043 4fb0425375 BIM: ifc_viewproviders.py make context menus translatable 2025-02-10 14:28:26 +01:00
Yorik van Havre e38ead30e9 Bim project manager upgrade (#17909)
* BIM: NativeIFC 2D support - basic import/export + linework annotations

* BIM: NativeIFC 2D support - texts

* BIM: NativeIFC 2D support - dimensions

* BIM: NativeIFC 2D support - optimized export of FreeCAD dimensions

* BIM: NativeIFC 2D support - section planes

* BIM: NativeIFC 2D support - misc fixes cf comment #2383181661

* BIM: NativeIFC 2D support - axes

* BIM: Project manager upgrade

* BIM: Fixed rebase leftover
2025-02-10 10:40:46 +01:00
Chris Hennes f74a44ab4f CI: Update linter settings
* Updates Clazy to only run on changed files
* Ensures clazy does not analyze #included files
* Disables a few unnecessary cpplint checks
2025-02-09 18:51:36 -06:00
Benjamin Bræstrup Sayoc 7bc9304a21 [TechDraw] Use templates instead of duplicate code: formatVector 2025-02-08 22:35:57 +01:00
Benjamin Bræstrup Sayoc 1d7e7c86a0 [TechDraw] Use templates instead of duplicate code: toGp 2025-02-08 22:35:57 +01:00
Roy-043 c26264ec98 Draft: make arrays explodable
Fixes #13085.

This PR adds the `PlacementList` property to non-link arrays.
2025-02-08 19:20:33 +01:00
tritao adf8e62ec0 Tools: Move bindings generator into generator folder. 2025-02-08 16:11:01 +00:00
tritao 0fda88daeb Tools: Add verbose mode to Python bindings generator. 2025-02-08 13:14:22 +00:00
tritao f4f0b6affc Tools: Refactor existing XML generator for extra readability. 2025-02-08 13:14:22 +00:00
tritao 90374c641b Base: Minor cleanups to base XML bindings. 2025-02-08 13:14:22 +00:00
tritao 10513144d9 Base: Standardize on Py::Long type for Python bindings. 2025-02-08 13:14:22 +00:00
tritao 19fd9e6c7e Base: Clean documentation for PyObjectBase.h. 2025-02-08 13:14:22 +00:00
Roy-043 c88b44f0da Draft: Introduce Edit option for Draft Clone scaling
Fixes #13324.

The Edit option is available from the Tree view context menu, but you can also double-click the clone in the Tree view.

The task panel is based on that of the Draft Scale command. The "Uniform scaling" checkbox is (un)checked depending on the current scaling of the clone.
2025-02-08 11:22:20 +01:00
Chris Hennes a56756d814 PD: Add onlyHaveRefined() to FeatureRefine 2025-02-07 21:44:43 -06:00
pre-commit-ci[bot] ef39aebe70 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-02-08 02:44:47 +00:00
Chris Hennes 71732dcb5b Base: Add comments to new macros 2025-02-07 20:41:44 -06:00
mosfet80 20ac96f4c8 Delete src/Tools/RegExp directory
remove unnecessary tool
2025-02-07 20:29:34 -06:00
xtemp09 5317d25254 Assembly: Fix the crash described in #18475 2025-02-07 17:39:03 -06:00
colinRawlings 293c8b0bc6 Fem: Display popup menu when MeshGroup solid selection is ambiguous (#18812)
* Fem: Display popup menu when MeshGroup solid selection is ambiguous

* FEM: Update license to new language

---------

Co-authored-by: Chris Hennes <chennes@gmail.com>
2025-02-07 16:25:55 -06:00
Benjamin Nauck dbbd07510f Fix lint issues 2025-02-07 20:53:59 +01:00
Roy-043 7ec76ffc9b Merge pull request #19470 from Roy-043/Draft-add-some-checks-for-font-file-of-shapestring
Draft: add some checks for font file of shapestring
2025-02-07 20:38:06 +01:00
Roy-043 c6ce42a383 Draft: add some checks for font file of shapestring
Fixes #19447.
2025-02-07 20:03:49 +01:00
Chris Hennes c1dddaeadc Merge pull request #19444 from chennes/addonManagerChangeBranchCleanup
Addon manager: change branch cleanup
2025-02-07 11:41:56 -06:00
Roy-043 b17904a2e9 Merge pull request #19427 from Roy-043/Draft-implement-Draft_AddToLayer-command
Draft: implement Draft_AddToLayer command
2025-02-07 18:40:34 +01:00
Roy-043 4f45d9b259 Draft: Fix line length input issue (#19461)
Fixes #19451.
2025-02-07 18:24:05 +01:00
Chris Hennes a3e436d211 Addon Manager: Update background UI earlier
The modal confirmation dialog blocks, so update the UI before showing it.
2025-02-07 10:17:16 -06:00
Chris Hennes 5dbc5c95ca Addon Manager: Linter cleanup 2025-02-07 08:57:33 -06:00
Chris Hennes 2dd2381c70 Addon Manager: Add GUI tests for branch change dialog
Further protect utils gui code during testing so the same utils file can be used
for CLI and GUI tests.
2025-02-07 08:52:49 -06:00
Chris Hennes d4ea028edf Addon Manager: improve git branch changing 2025-02-07 08:52:49 -06:00
Chris Hennes fd126aba1b Merge pull request #19394 from FreeCAD/pre-commit-ci-update-config
Update Black to 25.1.0 so that it is in sync with the CI. Updates code to correspond to new Black standards, mostly changing the Addon Manager to eliminate spaces around docstrings.
2025-02-07 08:52:20 -06:00
Chris Hennes 9eed1922d0 CI: Make black line length match pre-commit 2025-02-07 08:37:16 -06:00
Roy-043 235f8de27f Rebase... 2025-02-07 14:43:17 +01:00
Roy-043 8b124b659c Draft: Fix line length input issue
Fixes #19451.
2025-02-07 13:38:56 +01:00
michaesc 0e579d5de0 Material: Add the polycarbonate material physical property #19431 (#19432)
* Material: Add the polycarbonate material physical property (#19431.)

* Material: Add the PC material physical property to the buildconf (#19431.)

---------

Co-authored-by: Michael Schloh von Bennewitz <michael+scm@getmonero.org>
2025-02-06 19:53:41 -06:00
Chris Hennes 9986dfe4f2 Gui: Disable spacemouse init if not legacy 2025-02-06 16:49:18 -05:00
Chris Hennes b051185ae0 Merge pull request #19433 from tritao/gui-general-code-cleanups
Gui: General code cleanups
2025-02-06 11:33:44 -06:00
Yorik van Havre eb5037937c Draft: Fixed small bug in draftgeoutils.edges 2025-02-06 13:56:08 +01:00
Roy-043 0dc0372570 Draft: improved handling of 'crazy' edges in hatch
See #14114.
2025-02-06 13:43:52 +01:00
tritao 4de3a1a99e Gui: Use SO_SWITCH_NONE instead of -1. 2025-02-06 10:06:04 +00:00
tritao 1e6bdc9fd3 Gui: Update MSVC legacy code comments from ViewProviderLink. 2025-02-06 10:06:04 +00:00
tritao 48f0f07176 Gui: Reorganize the navigation files into a top Navigation folder. 2025-02-05 20:21:00 -06:00
Mark Ganson TheMarkster 48c1d309dd [Start page] Implement ShowExamples parameter (#19376)
* [Start page] Implement ShowExamples parameter
2025-02-05 20:01:54 -06:00
tritao 3b47599e43 Gui: Minor cleanups. 2025-02-05 22:13:07 +00:00
tritao 9e6c6682d8 Gui: Cleanup legacy code. 2025-02-05 19:19:40 +00:00
Roy-043 be0f3f9c4a Draft: implement Draft_AddToLayer command
Fixes #17323.

* Instead of extending Draft_AddToGroup a separate, but similar, command has been created.
* The three "Add to" tools have been grouped in the menu and the toolbar.
* The Draft_AddToGroup icon is provisional. Ideally the "Add to" tools should have related icons (it would then be nice to keep the trowel image in some way for the construction group). Draft_AddNamedGroup.svg and Draft_SelectGroup.svg probably also need to be updated in that context.
2025-02-05 16:21:58 +01:00
Paweł Pohl aef46ad56d Draft: New path array features - reverse path, etc (#19017)
Some missing quality-of-life features in Path Array:
1. A setting to reverse path
2. A "Fixed spacing" mode
3. Ability to use spacing patterns
2025-02-05 15:16:25 +01:00
marioalexis 703a1b52ff Fem: Check reference temperature - fixes #19375 2025-02-05 14:54:45 +01:00
tritao 9e1fa947e5 Gui: Fix single usage of SelectionSingleton::instance(). 2025-02-05 13:14:00 +00:00
tritao 8d6775e837 Gui: Rename SoFCHighlightAction to preselect terminology. 2025-02-05 13:14:00 +00:00
tritao 0f675bb635 Gui: Rename SoFCEnableHighlightAction to preselection terminology. 2025-02-05 13:14:00 +00:00
tritao 18299a6d83 Gui: Change SoFCSelection from highlight to preselection terminology. 2025-02-05 13:14:00 +00:00
tritao 4ace865b91 Gui: Some SoFCUnifiedSelection code readability improvements. 2025-02-05 13:13:59 +00:00
tritao b4e5614bff Gui: Change SoFCUnifiedSelection from highlight to preselection terminology. 2025-02-05 13:13:59 +00:00
tritao ee078645d7 Gui: Document ResolveMode directly. 2025-02-05 13:13:58 +00:00
tritao ae56e62049 Gui: Cleanup mystery comments around ResolveMode. 2025-02-05 13:11:05 +00:00
Furgo 81040d684d Core: add Ifcopenshell version in about info clipboard (#19264)
* Core: return information about ifcopenshell version in About info clipboard

* Core: remove whitespace introduced by mistake

* Core: handle case where ifcopenshell is not installed

* Core: remove colon for consistency with other library versions

* Core: change type of cmd to const char* to avoid allocating memory

* Core: make failure to import ifcopenshell a debug message

* Core: fix non-existing Debug message with DeveloperWarning

* Core: go back to Log() to show info about non-installed ifcopenshell
2025-02-05 10:18:54 +01:00
Furgo be7b1acefd BIM: add support for array elements in BIM Schedule (#19219)
* BIM: add support for array elements in BIM Schedule

* BIM: reintroduce Arch.pruneIncluded

* BIM: support expanded arrays in BIM schedule

* BIM: support elements belonging to multiple arrays
2025-02-05 10:16:47 +01:00
Paul Lee de0ec8d6ce [Draft_shape2dview] Fix Bug : Closed Wall Wrong Fill
Git-hub issues : https://github.com/FreeCAD/FreeCAD/issues/16363#issuecomment-2619643946

"Problem description

In a group of closed walls, the entire interior is completely filled, which should not be the case."
2025-02-05 10:09:09 +01:00
Furgo 2567c22300 BIM: fix unassigned variable reference 2025-02-05 09:40:41 +01:00
tritao 3dd184d9da BIM: Improve checking of IfcOpenShell imports in ifc_tools.py . 2025-02-05 09:23:08 +01:00
tritao 20276324c0 Gui: Cleanup SoFCUnifiedSelection::handleEvent. 2025-02-05 00:25:56 +00:00
tritao 763fc0159b Gui: Rename SoFCUnifiedSelection::selectionRole for clarity. 2025-02-05 00:25:56 +00:00
Chris Hennes fbb1225f90 Addon Manager: Use pip utility function
Also attempts to fix some bugs when dep installation fails.
2025-02-04 14:10:49 -06:00
Chris Hennes afae617e45 Addon Manager: Create utility function to get pip 2025-02-04 14:10:49 -06:00
Chris Hennes 7b11862723 Addon Manager: Use FreeCAD QUiLoader wrapper when available 2025-02-04 14:10:25 -06:00
Roy-043 3f9f7168d0 Draft: Avoid setRadiusValue error message (#19405)
Fixes #19386.
2025-02-04 19:38:44 +01:00
Patryk Skowroński af2ad11115 Fixed CMake files 2025-02-04 11:04:27 -06:00
Roy-043 e21be6d39f Draft: Avoid setRadiusValue error message
Fixes #19386.
2025-02-04 16:25:53 +01:00
james f84052cb95 fix non compressed read 2025-02-04 15:57:26 +01:00
james 60e99474c4 Add option to hide shape also hidden on double click 2025-02-04 15:57:26 +01:00
james 4b7ce7ca8c upgrade threejs and encoding fix 2025-02-04 15:57:26 +01:00
Furgo d1bf201337 BIM: Connect "only visible" checkbox signal to corresponding slot (#19201)
* BIM: Classification dialog => connect only visible checkbox to signal, save its state

* BIM: rename classification dialog, do not use default name

* BIM: add icons to classification dropdown box
2025-02-04 14:52:26 +01:00
Roy-043 5528ec58f6 Draft: improvements for gui_groups.py (#19312)
* Draft: improvements for gui_groups.py

* All actions are handled as transactions to make them undoable.
* In the Draft_AutoGroup menu groups are separated from layers.
* The Draft_NewLayer.svg icon is used for the New layer option.
* Selecting that option prompts for a layer name and also activates that layer.
* Icons and separators have been added to the Draft_AddToGroup menu.
* The task panel of that command has been replaced with a QInputDialog.getText dialog for consistency.

* Forgot "..." somewhere

* Wrong year in the copyright notice.

* Minor tooltip tweaks
2025-02-04 11:54:33 +01:00
Roy-043 6b76430cee Draft: fix three issues with DraftGui.py (#19343)
Fixes #19305.
Fixes #19324.

Issues above caused by #19179.

Also removes automask code as it did not work properly in several cases. For example if the working plane was set to Front and the Global option was checked only the X coordinate could be entered.
2025-02-04 11:53:05 +01:00
Mino-Tsuzuku b4a8ddcc5a * Move pyopen with encoding to utils. (#19377)
and modify all importing library to use pyopen with encoding.
with this change, DXF OCA AirfoilDAT with multibyte sequence always read as utf-8.
2025-02-04 11:33:43 +01:00
pre-commit-ci[bot] c8b72c144e [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-02-03 22:51:14 +00:00
pre-commit-ci[bot] f192259824 [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/psf/black: 1b2427a2b785cc4aac97c19bb4b9a0de063f9547 → 8a737e727ac5ab2f1d4cf5876720ed276dc8dc4b](https://github.com/psf/black/compare/1b2427a2b785cc4aac97c19bb4b9a0de063f9547...8a737e727ac5ab2f1d4cf5876720ed276dc8dc4b)
2025-02-03 22:48:06 +00:00
mwganson a85756b1c9 [Mesh Python] Mesh.show() returns python object, update documentation for Mesh.show(), Part.show(), and Points.show() 2025-02-03 18:27:21 +01:00
mwganson d5b0f686e1 [Part TopoShapeExpansion] move shape transform from make element copy into ruled surface function since it does not work well when copying vertex objects 2025-02-03 18:17:14 +01:00
Roy-043 488d931a69 Material: rename Materials_Edit command
For consistency it should be Material_Edit.
2025-02-03 18:14:18 +01:00
xtemp09 ea9190bac4 Change FocusPolicy of some PrefWidgets to StrongFocus
This commit mollifies the issue #17684 by making the PrefWidgets receive
mouse wheel events only when they have both focus and the mouse pointer
at the widget.
2025-02-03 18:13:35 +01:00
Chris Hennes e10d34ada5 Merge pull request #16995 from benj5378/axisColors
[Gui] Axis colors changeable
2025-02-03 18:11:46 +01:00
Chris Hennes ea878d4abd Drawing: Migrate to using App::Application::getNameWithVersion 2025-02-03 12:05:16 -05:00
Chris Hennes 411c7c0961 TD: Migrate to using App::Application::getNameWithVersion 2025-02-03 12:05:16 -05:00
Chris Hennes f7495654e7 Spreadsheet: Migrate to using App::Application::getNameWithVersion 2025-02-03 12:05:16 -05:00
Chris Hennes 0f7b758b1e Gui: Migrate to using App::Application::getNameWithVersion 2025-02-03 12:05:16 -05:00
Chris Hennes d2194bbeda App: Add utility method to get app name with version included 2025-02-03 12:05:16 -05:00
pre-commit-ci[bot] b94aa0eb5f [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-02-03 12:05:16 -05:00
Pascal de Bruijn f980fdaede Add proper PDF creator metadata 2025-02-03 12:05:16 -05:00
Chris Hennes 7c32d9780b GUI: Disable legacy spnav code when legacy is false
We don't ever want to connect to both libspnav and NavLib
2025-02-03 12:03:34 -05:00
tritao 123569823e App: Provide temporary document creation flag to Python App.loadDocument. 2025-02-03 18:01:18 +01:00
Chris Hennes 396e09a4d6 Merge pull request #18682 from alfrix/threads_enums
refactor(PD): ThreadSize enum simplification
2025-02-03 17:59:15 +01:00
Daniel Wood 2e9e496b57 CAM: Tool Bit Library Fixes (#18973)
* remove unused else
* Enable reloading / re-selection of libraries
* Reload the libraries when exiting the editor
* Clear the model to prevent duplicate entries
* add missing docstring to reduce linting warnings
* Maintain any previous library selection when editing
2025-02-03 10:58:24 -06:00
tritao 65466d580b Gui: Reorganize the selection files into a top Selection folder. 2025-02-03 17:56:57 +01:00
Bas Ruigrok 63f6f35856 Add CLion pixi toolchain script (#19119)
* Add CLion pixi toolchain script

* Add CLion pixi toolchain script for Windows
2025-02-03 10:55:24 -06:00
Chris Hennes 5e9dd297fe Merge pull request #19232 from WandererFan/miscSmallFixes
[TD]minor fixes x3
2025-02-03 17:54:20 +01:00
wandererfan d26812e048 [TD]fix crash on delete while dialog open (#18120) 2025-02-03 17:51:46 +01:00
FEA-eng 1e573241c5 FEM: Constraint transform - selection error message update (#19192)
* FEM: Update TaskFemConstraintTransform.cpp
2025-02-03 10:47:01 -06:00
Pascal de Bruijn 11c77e4099 TechDraw: Export with default filename (#19033)
* TechDraw: Export with default filename

* TechDraw: templates consistent drawing_number/revision_index
2025-02-03 11:34:14 -05:00
Syres916 34d9ac0050 [Gui] Fix Close without Saving button size (#19342) 2025-02-02 23:24:27 +01:00
Furgo 04aea5e9f3 PrefPacks: reset font size in FreeCAD Classic theme 2025-02-02 09:08:29 +01:00
Benjamin Nauck 64a4f6e366 Update ondselsolver 2025-01-30 15:50:38 +01:00
panintended b2d5a48fb6 QuickMeasure: display correct angle units
Add angle unit user string getter, fix typos for length unit equivalent

Fixes #19307
2025-01-30 15:48:30 +01:00
Mino-Tsuzuku 6c20224379 #18458 fix SVG import error at non-utf8 native environment. (#19280) 2025-01-30 13:13:56 +01:00
Ajinkya Dahale 80fa694270 [Sketcher] Incorporate suggestions by hyarion from #18916 2025-01-30 09:34:03 +01:00
Ajinkya Dahale 9238a7c1fd [Sketcher] More refactor of delConstraintOnPoint 2025-01-30 09:34:03 +01:00
Ajinkya Dahale 0358ff7ce2 [Sketcher] Refactor SketchObject::delConstraintOnPoint()
Note that for distance constraints we remove even if the constraint is not on the point.
2025-01-30 09:34:03 +01:00
Ajinkya Dahale ab2e4adb31 [Sketcher] Refactor deleteUnusedInternalGeometryWhenBSpline 2025-01-30 09:34:03 +01:00
Ajinkya Dahale c48f21585d [Sketcher][test] Divide SketchObject tests into multiple files
...for managability.
2025-01-30 09:34:03 +01:00
Ajinkya Dahale 31457746c2 [Sketcher][test] Move helper functions away for reusability
...in other tests
2025-01-30 09:34:03 +01:00
Ajinkya Dahale 502b7b9a3f [Sketcher] Fix some issues in trim
1. Don't bother deleting internal geometry first.
2. Don't assume all new constraints are well formed.
2025-01-30 09:34:03 +01:00
Ajinkya Dahale 909e5bfafb [Sketcher] Use replaceGeometries() in trim 2025-01-30 09:34:03 +01:00
Ajinkya Dahale c8c8c2c208 [Sketcher] Move trim sub-steps to different functions 2025-01-30 09:34:03 +01:00
Ajinkya Dahale 77bb7ab2d4 [Sketcher] Move internal functions out of trim
Towards making it a function class or similar.
2025-01-30 09:34:03 +01:00
luzpaz 0d96954bca Remove superflous whitespace + trailing newlines 2025-01-29 07:59:05 -06:00
tritao 1e05c59ce8 CMake: Provide build flag to enable compile time tracing. 2025-01-29 06:50:37 -06:00
tritao ade3ae02ff CMake: Provide build flag to enable libc++ standard library. 2025-01-29 06:50:37 -06:00
tritao 767150102d Gui: Add bounding box data to scene inspector. 2025-01-29 06:49:35 -06:00
FEA-eng e267508901 FEM: Thermal expansion reference temperature for CalculiX analyses (#19285)
* FEM: Update task_material_common.py

* FEM: Update write_femelement_material.py

* FEM: Update Material.ui

* Fem: Enable material expansion reference temperature

* FEM: Update thermomech_bimetal.py

* FEM: Update thermomech_bimetal.inp

---------

Co-authored-by: marioalexis <mario.passaglia@gmail.com>
2025-01-29 13:37:02 +01:00
Chris Hennes 21b29a1a7e Ext: Correct user preference specified in comment 2025-01-29 05:15:31 -06:00
Max Wilfinger 6246c9ee22 Adding DPI info to the copied information in the about dialog (#19251)
* Adding DPI info to the copied information in the about dialog.

* Update DlgAbout.cpp

changed screen() to QApplication::primaryScreen()
2025-01-29 12:14:26 +01:00
filson1 44435bf9de Helix tooltip spelling update in FeatureHelix.cpp 2025-01-29 08:31:26 +01:00
luzpaz 67c772553b Fix typos
Found via codespell
2025-01-29 08:31:01 +01:00
Roy-043 dfe670e1ae Draft: allow objects in layers to have overrides (#19207)
* Draft: allow objects in layers to have overrides

Fixes #17844.

1. When an object is put in a layer it always adopts the properties of that layer.
2. Properties of the object that are subsequently changed are considered overrides.
3. When the properties of the layer, or the object in the layer, are then changed so that they match again, there is no longer an override, and properties are synced again.
4. The layer and the layer container object get an extra Tree view context menu option "Reassign properties of layer"/"Reassign properties of all layers".
2025-01-28 20:42:45 +01:00
Roy-043 05a3e8d750 Merge pull request #19296 from Roy-043/Draft-fix-handling-of-annotation-Links-in-TD-DraftViews
Draft: fix handling of annotation Links in TD DraftViews
2025-01-28 20:35:59 +01:00
Roy-043 d0dfed25e1 Merge pull request #19298 from Roy-043/Draft-Increase-max-value-for-gridEvery-in-ui
Draft: Increase max value for gridEvery in ui.
2025-01-28 20:31:26 +01:00
Roy-043 49a5dd8e32 Draft: Increase max value for gridEvery in ui.
Fixes #19267.
2025-01-28 18:12:00 +01:00
Roy-043 830b2aada7 Draft: fix handling of annotation Links in TD DraftViews
Fixes #19199.
2025-01-28 17:37:29 +01:00
Roy-043 dda4b3429d Merge pull request #19287 from Roy-043/Draft-remove-faulty-code-from-importDXF.py
Draft: remove faulty code from importDXF.py
2025-01-28 16:53:39 +01:00
wandererfan 61b90ed98b [Units]fix bad length multiplier in MeterDecimal 2025-01-28 01:55:25 -06:00
Roy-043 c4811fa812 Draft: introduce new Draft_Layers icon
The current Draft_Layer.svg icon shows multiple layers. It is used for the Draft_Layer command but also for the LayerContainer. This is confusing. There should be separate icons, one with a single layer and one with multiple layers.
2025-01-28 08:49:39 +01:00
Chris Hennes d38b6fc3c5 Merge pull request #19011 from marioalexis84/fem-electromagnetic_boundary_condtion 2025-01-27 15:15:59 -06:00
Roy-043 99d69afb5b Draft: remove faulty code from importDXF.py
The Group property of the 'new' layer object is not an attribute of its Proxy.
2025-01-27 21:01:50 +01:00
Max Wilfinger 45897379e6 Merge pull request #19097 from hyarion/refactor/template-based-is-derived-from
Simplify code by using BaseClass' isDerivedFrom<> and is<>
2025-01-27 20:40:08 +01:00
Benjamin Guest 9990408035 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
Alfredo Monclus 11125be89d refactor: taskpanel ui on linux 2025-01-27 18:06:22 +01:00
phaseloop dc33932555 CAM: Fix finishing pass (#17960)
* CAM: Fix finishing pass

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

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

* add finishing pass unit (by @baehr)

* [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-01-27 18:03:43 +01:00
Lawrence Woestman 77a05049d5 CAM: Fixed script-style postprocessors getting the wrong __name__
Also added a test that the __name__ of the postprocessor is correct
2025-01-27 18:02:26 +01:00
mwganson d3ffef0df7 [VectorListEditor] Set precision to 12 digits when copying table data 2025-01-27 18:00:41 +01:00
marcuspollio 40392c37c4 TechDraw: rename user-facing strings Arch to BIM 2025-01-27 17:58:45 +01:00
Dan Taylor 5535c1bd0b TechDraw: Fix finding outlines consisting of a single closed edge 2025-01-27 17:55:50 +01:00
Stan Tomlinson ef79d67510 improved checks in GUI/Jobs.py/claimChildren
eliminate some error messages when a Job is not fully loaded
  (or when not properly constructed via scripting)

TESTED ON V0.21 -- code hasn't changed since then
2025-01-27 17:52:16 +01:00
tritao 18d8c181a3 Gui: Fix invalid scene graph mutation in EditableDatumLabel.
`EditableDatumLabel` uses `activate`/`deactivate` methods for showing or
hiding its widgets in the scene.

However, `activate`/`deactivate` methods can end up being called as part
of a scene graph / Coin action (`SoAction`) handler, in the context of
`SoFCUnifiedSelection`, and this ended up in a Coin warning and eventual
crash due to the scene graph being manipulated (nodes being removed),
which Coin has checks for in debug mode:

```
Coin error in SoGroup::removeChild(): tried to remove non-existent child
0x5555579c5290 (Annotation)
```

Fix this issue by using a `SoSwitch` node instead and by controling the
child visibility using it instead.
2025-01-27 17:51:40 +01:00
Pascal de Bruijn b95b500e5b TechDraw: fix editable/autofill scale in Templates 2025-01-27 17:50:18 +01:00
MisterMaker a593893ccc [stylesheets] Gathering of stylesheet fixes (#18929)
* this is a workaround to remove caps

pelase ignore this hackery

* And now the caps are gone

* a bunch of small tweaks and fixes.

* Update FreeCAD Light.qss

updated menubar color light theme

* updated the buttons a tiny bit

* Fix for to short buttons.

Couldn't test it since my macro window is broken.

Co-Authored-By: Syres916 <46537884+Syres916@users.noreply.github.com>

* qspinbox disabled tweaks.

* Update FreeCAD Dark.qss

Tweaked the buttons a bit so they are more in line with the light theme.

* Update FreeCAD Dark.qss

small tweaks

* reversed the spreadsheet headers gradient for dark

* Update light with undo arrows position

Co-Authored-By: Syres916 <46537884+Syres916@users.noreply.github.com>

* Update undo buttons arrow position dark

Co-Authored-By: Syres916 <46537884+Syres916@users.noreply.github.com>

* added an offset to qcombobox

* removed the fix since it ruined every Qcombobox.

* Tabs update more clean less gradients.

* Update DlgMacroExecuteImp.cpp

fixing conflicts

* Update DlgMacroExecuteImp.cpp

* Delete DlgMacroExecuteImp.cpp

* Create DlgMacroExecuteImp.cpp

* Revert "Create DlgMacroExecuteImp.cpp"

This reverts commit 8de8f7506177d773bb356fd0e22a66466c25b668.

* Revert "Delete DlgMacroExecuteImp.cpp"

This reverts commit 41315f31abdad79afd4b696ee15c603de3e4a6a1.

* Revert "Update DlgMacroExecuteImp.cpp"

This reverts commit aa792291684e2d674f6961c641c8e2f8b9af12c8.

* Revert "Update DlgMacroExecuteImp.cpp"

This reverts commit e8376a8fdf11d7fd014f2c46f189afdca42833ce.

* Delete src/Gui/DlgMacroExecuteImp.cpp

* Update DlgMacroExecuteImp.cpp

finally realized what was going on lol

---------

Co-authored-by: Syres916 <46537884+Syres916@users.noreply.github.com>
2025-01-27 17:49:20 +01:00
Jonas Bähr 9ffa56765c Main: Avoid Popups in Console Mode
When in console mode, some messages from CLI interaction still resulted
in popup dialogs, e.g. the response from `--help` or `--version`. This
is becasue those information are communicated via exceptions and those
exceptions prevented the console mode from being properly set.
By using a scope guard the console mode flag is now evaluated in all
cases. The code to display those messages got refactored into dedicated
methods which now also take care of console mode.
2025-01-27 17:47:16 +01:00
marioalexis ddf4421db1 Material: Add mapping and sequence protocols to MaterialPy object 2025-01-27 17:45:21 +01:00
marioalexis 6eea417eba App: Set PropertyMap using Python objects with mapping protocol 2025-01-27 17:45:21 +01:00
dzid26 2eca0a0367 Gui: show tooltips when window is not focused 2025-01-27 17:43:57 +01:00
Dan Taylor b77d762f8b Make adaptive toolpaths use actual stock outline instead of bounding box 2025-01-27 17:42:50 +01:00
Shai Seger 4d1cedaa06 [CAM Simulator] Add ifdef to fix OpenGL compatibility on linux. issue #18707 (#18746)
* Add ifdef to fix compilation on linux. issue #18707

* remove multisample line altogether
2025-01-27 17:41:49 +01:00
CandL eee51e5237 Addition of CAM postprocessor for the Masso controller (#18845)
* Mods to accommodate tool order in Gcode. Some controllers want T# M6 others want M6 T#. Masso wants T# M6.

Added file refactored_masso_g3_post.py (based on refactored_linuxcnc_post.py) and modified UtilsParse.py

* Added tests and additional comments

* Working on the testing framework

* Tried to make refactored linux and masso as compatable line by line to support fil diffing

* A space in the file name caused all sorts of grief ... Thanks Larry

* added files to , swapped tool order in testrefactored_masso

* Added note regarding how files are "clones" of one another

* Added space in comment line for consistent formatting.

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

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

* Updated formatting and comments

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-01-27 17:41:18 +01:00
wandererfan 01f4e08f47 [TD]fix front view position in projection group (fix #19085) 2025-01-27 17:34:13 +01:00
Benjamin Nauck cb4ee4737d Simplify logic using freecad_dynamic_cast 2025-01-27 16:08:19 +01:00
Benjamin Nauck 45c997f40a Manual changes to improve isDerivedFrom usage 2025-01-27 16:08:19 +01:00
Benjamin Nauck d3fa11a77c Add constraints to templates in BaseClass using static_asserts 2025-01-27 16:08:18 +01:00
Benjamin Nauck dd6aa9f3c7 Prefer to use BaseClass's isDerivedFrom<T> over non template or Base::Type's
Regex based changes, manually verified
2025-01-27 16:08:18 +01:00
Benjamin Nauck ae15d98fd3 Use is<T>() when possible 2025-01-27 16:08:18 +01:00
Benjamin Nauck 5e72f6e5e1 Export subclasses of Part::Feature 2025-01-27 16:08:18 +01:00
Paul Lee d7f0ce2a97 [ArchWall] Fix Regression Single-edge Wall w/ Multi-Material
Forum Discussion
- https://forum.freecad.org/viewtopic.php?t=93610&start=10#p806296

Github Issues
- https://github.com/FreeCAD/FreeCAD/issues/19147#issuecomment-2607946858
2025-01-27 14:29:04 +01:00
Julien Masnada da1e9a2e29 Improve decoration of walls, floors and ceilings. Improve creation of floor's slab 2025-01-27 14:25:51 +01:00
Roy-043 6d64dcfd88 Merge pull request #19245 from Roy-043/PrefPacks-Add-spreadsheet-colors-to-classic-theme
PrefPacks: Add spreadsheet colors to classic theme
2025-01-27 09:52:37 +01:00
Joona 855bce62cd Initialize sketcher group command shortcuts
Set the first subcommand's shortcut as the group command's shortcut for all sketcher group commands.
2025-01-26 15:49:24 +02:00
Joona 268f672d90 Added set shortcut to group command's Setup function
Implemented set shortcut in the group command's Setup function.
This change allows the group command icon to display the tool's shortcut,
but the shortcut appears only after the tool is selected once.
2025-01-26 15:45:14 +02:00
Joona d18a48ddb1 Updated tools to use group command class.
Updated rectangle, polygon and spline group commands to use group command class.
Added separator comments with tool names for better code organization.
2025-01-26 15:18:38 +02:00
jffmichi ab311f1f9b Sketcher: fix seg-fault on loading sketch with redundant constraints 2025-01-26 06:46:34 -06:00
Tim da43cb842b [AddonManager] Fix construct_git_url return urls with '.git'. (#19242)
* [AddonManager] Fix construct_git_url return urls with '.git'.
2025-01-26 06:45:14 -06:00
Joona b50659ea55 Added rearrangement commit to blame ignore file 2025-01-26 13:21:46 +02:00
Joona f9d6609687 Rearranged file for better logical grouping
Reorganized the functions in the file to improve logical grouping and readability.
No actual code changes were made—only the order of functions was adjusted.
2025-01-26 13:15:54 +02:00
Roy-043 bad2b8b046 PrefPacks: Add spreadsheet colors to classic theme
Fixes #17984.
2025-01-25 21:30:27 +01:00
Andrea 29ea277b3b Clean importCSG.py
Clean code
Update importCSG.py
2025-01-25 05:35:43 -06:00
Chris Hennes b3818aa583 PD: Migrate onlyHasToRefine
This was a later addition that got missed when merging.
2025-01-25 04:25:41 -06:00
wandererfan 85fcf8c1b8 [TD]fix cosmetic circle arc handling 2025-01-24 17:29:22 -05:00
tritao 8aa50c4380 Gui: Reorganize the dialog files into a top Dialogs folder. 2025-01-24 16:28:02 -06:00
wandererfan d8227d0683 [TD]control svg scaling at object level 2025-01-24 16:34:18 -05:00
wandererfan a1933ff64f [TD]allow showing units on individual dimensions 2025-01-24 13:04:00 -05:00
Chris Hennes d621f59a88 Merge branch 'main' into bgbsww-toponamingAddFeatureRefine 2025-01-24 09:33:57 -06:00
pre-commit-ci[bot] 09bd285c1d [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-01-24 15:45:43 +01:00
Benjamin Bræstrup Sayoc 38e4e5a62e [Sketcher] Make axis colors changeable 2025-01-24 15:45:43 +01:00
Benjamin Bræstrup Sayoc 15157ad48c [Gui] Make axis colors of corner axis changeable 2025-01-24 15:45:43 +01:00
Benjamin Bræstrup Sayoc ce35c95e18 [Gui] Make axis colors of axis kit (world origin axis) changeable 2025-01-24 15:45:42 +01:00
Benjamin Bræstrup Sayoc 084e43c160 [Gui] Make NaviCube axis colors changeable 2025-01-24 15:45:42 +01:00
Benjamin Bræstrup Sayoc 2acd412f10 [Gui] Add ability to change axis colors 2025-01-24 15:45:42 +01:00
Chris Hennes 836ad91f3d Merge pull request #17000 from pskowronskiTDx/tdx-mac
Enabling 3Dconnexion NavLib integration for MacOS
2025-01-24 08:09:29 -06:00
xtemp09 c7620fd916 Fix arrow navigation in TreeWidget
Closes #10488. This commit removes the code fragment that "swallowed"
the key press events.
2025-01-24 06:51:52 -06:00
Ulices 9ae74916b6 AddonManager: open addon's location directory (#19209)
* AddonManager: open addon's location directory
* AddonManager: account for macros when setting addon location
2025-01-24 06:48:46 -06:00
Roy-043 076899205c Draft: DraftGui.py fix displayPoint
Fixes #18744.
2025-01-23 11:44:26 +01:00
Ulices ee2f327a96 Add units to some spinboxes on preferences pages (#19143)
* Add units to some spinboxes on preferences pages
* Ensure units have a space, ex: " px"
* FEM: Don't mark units for translation
2025-01-22 09:05:49 -06:00
marioalexis 6db962e7e5 Fem: Rename enable/disable electromagnetic properties 2025-01-22 11:17:59 -03:00
marioalexis 67803b3bc1 Fem: Update electromagnetics boundary conditions 2025-01-22 11:17:59 -03:00
marioalexis 15c2f33fb8 Fem: Fix vector potential unit and use enumeration property for boundary condition 2025-01-22 11:17:59 -03:00
André Kapelrud 10ad2ec955 Fem: Add Neumann boundary condition for electrostatic potential 2025-01-22 11:17:59 -03:00
André Kapelrud 39a5fdc315 Base: Add surface charge density unit 2025-01-22 11:17:59 -03:00
marioalexis b990fb129e Fem: return from Python setEdit methods 2025-01-22 08:13:08 -06:00
pre-commit-ci[bot] 433a51b4b9 [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pre-commit/mirrors-clang-format: 57e96cfddb3b0e0e11df353f5124cfd8e930a802 → f9a52e87b6cdcb01b0a62b8611d9ba9f2dad0067](https://github.com/pre-commit/mirrors-clang-format/compare/57e96cfddb3b0e0e11df353f5124cfd8e930a802...f9a52e87b6cdcb01b0a62b8611d9ba9f2dad0067)
2025-01-22 06:21:55 -06:00
Benjamin Bræstrup Sayoc 81a27a9252 [Gui] Make autocompletion global
Now auto complete is in all TextEdit objects. Fixes #12850
2025-01-22 06:12:43 -06:00
Roy-043 44221711f8 Added is not None checks
Also added two local variables in BimLayers.py.
2025-01-22 10:41:11 +01:00
Roy-043 1b3f8aba8d Draft and BIM: Layer manager minor code improvements
The code should not add the LinePrintColor property. That should be done elsewhere.
2025-01-22 10:41:11 +01:00
JULIEN MASNADA df1334fad4 SH3DImporter: Miscellaneous improvements (#19178)
* Fixed documentation and confusing variable name

* Prepare for joined wall fix

* Fixed invalid Part::Sweep on certain joined walls

* Calculate the Length in case of a curved segment

* Adding Arch::Space for each room, and group furnitures in these spaces

* Fixed baseboard import

* Add baseboard to Space and wall to Space.Boundaries

* Fixed space attribution when importing furniture as Arch::Equipment

* Adding site properties

* Allow creation of reference ground mesh

* Make sure get_space takes level into account

* Added sh3dCreateGroundMesh preferences

* Sensible ordering for import preferences

* Move furniture at least up to the floor upper facewq

* Avoid gap between floors. Adjusted wall height and furniture placement

* Preparing to allow model_rotation attribute in furniture

* Fixed tipo in model_rotation

* Make space upper face does exists

* Use Facebinder to paint walls. do not offset by floor thickness.

* Use Draft.make_facebinder()

* Workaround for issue #19172. Refreshing the list of Faces and removing the extra '?' character
2025-01-22 10:08:46 +01:00
Roy-043 3d6d2a4039 BIM: Fix BIM Schedule
Fixes #18934.
2025-01-22 10:07:35 +01:00
Roy-043 2ad98aa84b Draft: updates related to transparency to alpha change 2025-01-22 10:04:47 +01:00
Roy-043 dd4c462199 Draft: DraftGui.py fix updateSnapper and implement display_point_active
* The updateSnapper function did not work properly.
* Added display_point_active attribute to prevent the displayPoint function from triggering the changeXValue etc. functions. This would lead to a loss of accuracy as the rounded displayed values would be read from the inputboxes.
2025-01-22 10:03:36 +01:00
João Matos 97d4c952af CMake: Allow using symlinks for installed files. (#19043)
* CMake: Allow using symlinks for installed files.
2025-01-21 11:35:53 -06:00
Beep6581 a1f5d36584 Auto scroll to constraint on click (#18859)
* Auto scroll to constraint on click

When clicking on a contrasint in Sketcher, that constraint is now
automatically scrolled to in the Constraints listview. If selecting
multiple constraints, the last one is scrolled to.
Closes #17361

* Check model() for nullptr

* scrollTo only on select, not de-select #18859
2025-01-21 11:33:51 -06:00
mosfet80 1ae8524dce Update pixi.toml
fix version
2025-01-21 09:50:43 -06:00
wmayer 98997c4d1e PD: Fix build failure 2025-01-21 09:34:30 -06:00
wmayer 4521f8a740 Gui: Fix warning about unused variable 2025-01-21 09:34:30 -06:00
Roy-043 c9e0eceda3 Merge pull request #19166 from Roy-043/Draft-DraftGui.py-improve-some-tooltips
Draft: DraftGui.py improve some tooltips
2025-01-21 15:46:00 +01:00
Roy-043 840786ac6c Changed one tooltip as requested 2025-01-21 15:17:03 +01:00
Chris Hennes 666ede9019 Sketcher: Refactor C++20 code 2025-01-20 20:57:34 -06:00
wmayer 034ad6582a Part: Fix wrong attachment of datum lines
Fixes #19113
2025-01-20 16:40:46 -06:00
Jacob Oursland 4dfab6e07d Fix call to setTemporaryVisibility() post API change. 2025-01-20 16:39:52 -06:00
Roy-043 49e960364f Draft: DraftGui.py improve some tooltips
Avoid 'new point' and 'next point' in tooltips as this does not always apply.
2025-01-20 20:53:25 +01:00
PaddleStroke a61db12828 PartDesign NewSketch: Add a parameter to use attachment dialog instead of feature pick 2025-01-20 12:27:04 -05:00
Roy-043 ddd86bd7b3 Draft: DXF export: add handling of text justification
Fixes #18964.
2025-01-20 18:24:30 +01:00
Roy-043 d587e6a91a Draft: make move, rotate and scale commands link-aware (#18795)
* Draft: make move, rotate and scale commands link-aware

Fixes #12836.
Fixes #15681.

These changes are presented as a single ('big') PR because the mentioned commands have several similarities. Working on them seperately would have made less sense.

The commands have been made 'link-aware' meaning they can now handle Links and objects in linked containers.

This required several changes in the following main files. For each command all options are handled by a single function now (the `move`, `rotate` and `scale` functions). This was the only reasonable solution to correctly handle nested placements. As a result there is no longer a need to build very complex 'cmd' strings in the gui_*.py files (which is a good thing IMO).

Main files:

* move.py
* rotate.py
* scale.py
* gui_move.py
* gui_rotate.py
* gui_scale.py
* gui_trackers.py

The following files have also been updated:

* Draft.py: Imports updated.
* DraftGui.py: If `CopyMode` is changed the ghosts have to be updated. The move and rotate commands now also show previews of movable children. But since those are not copied they should be removed from the ghosts if `CopyMode` is changed to `True`.
* utils.py: Some helper functions have been added. An existing helper function (only used internally) has been renamed.
* gui_utils.py: The `select` function has been updated to accept a list of tuples to allow the reselection of nested objects.
* clone.py: A new property `ForceCompound`, necessary for non-uniform scaling, has been added.
* join.py: The `join_wires` function now returns the resultant wire objects.
* task_scale.py: Updated to allow negative scale factors. Support for `SubelementMode` preference added.
* dimension.py: `transform` methods added.
* layer.py: `get_layer` function added.
* svg.py: Updated to use `get_layer`.
* view_text.py: Instead of two added `coin.SoTransform()` nodes the main transform node is used instead. This was done so that ghosts of Draft Texts can be handled properly without requiring dedicated code in gui_trackers.py.

Notes:

* Support for "App::Annotation" is limited. Only their `Position` is handled (by the move and rotate commands).
* Support for "Image::ImagePlane" has been removed from the scale command. The object has its own calibrate feature (see https://wiki.freecad.org/Std_Import).
* Copies and clones are always created in the global space.

* Fix several unit test issues.

* Reset value that was changed while testing

* Rebase and update test_modification.py

* Reintroduce scaling of image planes
2025-01-20 18:23:36 +01:00
wmayer 8d46ba6414 Import: Fix transparency issues when loading STEP files 2025-01-20 12:18:16 -05:00
Vincent Belpois f3efb5a7e8 Fix missing constrain type in type2str 2025-01-20 12:17:25 -05:00
Joona Okkonen 17c3286e52 Sketcher: Fixed mapping error when attempting to create a sketch inside a group. (#18971)
* Sketcher mapping error fix

Fixed an issue in the Sketcher where attempting to create a sketch while a group is selected caused a mapping error. Now, when a sketch is created with a group selected, the sketch will be placed inside the group.

* Update to use new templated countObjectsOfType

This commit updates the code to use the new templated version of countObjectsOfType, aligning with recent changes in the main branch.

---------

Co-authored-by: Joona <jookkone@edu.lapinamk.fi>
2025-01-20 11:11:09 -06:00
mosfet80 f2c049bc34 Update sub_buildPixi.yml
Update checkout to version 4 -> default runtime to node20
2025-01-20 12:05:53 -05:00
Boots 14319a31f8 GDB/LLDB debugger pretty printers w/QString support and vscode launch config (#18960)
* GDB/LLDB debugger pretty printers w/QString support and vscode launch  config

* Python code now adheres to pep8.  Slight refactor to lldb printer for readability.

* Resolved a few missed trailing whitespace errors from pylint

* Added missing trailing newline I missed in my last commit

* Apply suggestions from code review

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-01-20 10:55:20 -06:00
Marcus Bannerman 5e3eab1b97 Update ubuntu.sh dependencies to include libyaml-cpp-dev
Building on ubuntu 24.04 requires the libyaml-cpp-dev library. This adds the library to the dependencies for ubuntu.
2025-01-20 11:44:19 -05:00
Syres916 32f7d08602 [Gui] Allow power users to set their own max toggle transparency 2025-01-20 11:43:18 -05:00
Kacper Donat 83807826cf Gui: Fix render order of datum planes 2025-01-20 11:38:57 -05:00
Kacper Donat 7a39746fa3 Gui: Fix crash on scrolling workbench tab bar in Qt 5.15.3 2025-01-20 11:34:17 -05:00
pre-commit-ci[bot] b108a2a830 [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pre-commit/mirrors-clang-format: fed9a1f62c22af0bc846a260ebfeb0844368fd93 → 57e96cfddb3b0e0e11df353f5124cfd8e930a802](https://github.com/pre-commit/mirrors-clang-format/compare/fed9a1f62c22af0bc846a260ebfeb0844368fd93...57e96cfddb3b0e0e11df353f5124cfd8e930a802)
2025-01-20 11:33:17 -05:00
xtemp09 2fcbe6ee19 Fix the crash in the interface for managing preference packs (#18726)
* Fix the crash in the interface for managing preference packs

Closes #18725

* Modernize the code by removal of redundant void
2025-01-20 10:32:47 -06:00
Mark Ganson TheMarkster 49b304ae55 [Python console] add Execute in console context menu item (#18716)
* [Python console] add Execute in console context menu item

* Update src/Gui/PythonEditor.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-01-19 15:36:33 -06:00
Chris Hennes f38127739b Merge pull request #18807 from marioalexis84/fem-netgen_object_constraint
Fem: Use property constraints on mesh netgen object
2025-01-19 16:03:10 -05:00
Chris Hennes d1c860e735 Merge pull request #18809 from wwmayer/datum_fixes
Datum fixes
2025-01-19 16:01:18 -05:00
marioalexis bf1ea8e223 Fem: Use new material editor in Reinforced material task panel - fixes #18692 2025-01-19 15:36:43 -05:00
Kacper Donat 738a044f3c Gui: Add Show Plane utility to 2D Objects 2025-01-19 15:27:15 -05:00
PaddleStroke 14f37f732d PartDesign: Fix context menu (#18919) 2025-01-19 13:41:55 -06:00
xtemp09 37c47ef972 Prevent selection of an item in TreeWidget when user presses an eye icon
Closes #18922
2025-01-19 14:35:32 -05:00
dzid26 7ece9241bf Fix conda docker path 2025-01-19 14:35:01 -05:00
Bas Ruigrok fb85c92dd0 Gui: Fix camera position shift when starting rotation 2025-01-19 14:34:31 -05:00
João Matos 8a384a2b70 CMake: Improve Import dependency check for TechDraw module. (#19036)
* CMake: Fix missing Import dependency check for TechDraw module.

* CMake/TechDraw: Conditionally use Import library.

* CMake: Fix missing dependency check for Module and PartDesign measure in TechDraw.
2025-01-19 13:33:16 -06:00
Yorik van Havre ead1c43de9 BIM: Make sure we have a default context when exporting to IFC 2025-01-19 14:32:03 -05:00
Chris Hennes f639705762 Merge pull request #19052 from alfrix/hole_ui_hide
feat(PD): Hole UI Taskpanel: hide elements that are not applicable or useful
2025-01-19 11:31:03 -05:00
Kacper Donat bf42236763 Contributing: Add information about breaking changes
This adds list item for the contribution requirements to ensure that each breaking change is handled properly and documented.
2025-01-19 10:34:28 -05:00
anselm-baur e22b226866 Assembly: fix missing space
Co-authored-by: Anselm Baur <anselm-baur@live.de>
2025-01-18 14:45:50 -05:00
Chris Hennes be2a45e767 Merge pull request #18783 from tritao/cmake-coin-target
CMake: Coin3D build fixes
2025-01-18 12:50:57 -05:00
Alfredo Monclus 0fdb02c6eb feat(PD): create a test to check the thread enums and positions 2025-01-18 11:07:23 -03:00
Alfredo Monclus 932c8d6476 refactor(PD): change threadDescription into a vector 2025-01-18 10:07:19 -03:00
PaddleStroke 4c25c96d75 PartDesign: replace part design datum commands by the core ones 2025-01-18 11:39:44 +01:00
tritao 08c1275ec4 Gui: Introduce Gui::Document::createView to Python. 2025-01-17 12:35:14 -06:00
tritao 1a5f620b7a Gui: Bind View3DInventorViewer::setOverrideMode to Python. 2025-01-17 12:33:47 -06:00
Joao Matos 318e6f7158 Gui: Avoid unnecessary exception in View3DSettings::OnChange.
This gets caught in the debugger at startup, in this case its easy to
avoid it.
2025-01-17 12:28:50 -06:00
David Carter a977fade2d Macros: Save last used debugger (#18946)
* Macros: Save last used debugger

Typically users use the same debugger repeatedly. The current dialog
required users to change tabs each time the debugger is launched. This
change saves the last used debugger tab and sets that as the selected
tab when relaunching the debugger.

* Save VSCode address and port
2025-01-17 11:45:47 -05:00
Chris Hennes 49c77303c7 Merge pull request #18665 from AjinkyaDahale/sk-refactor-stage-2
[Sketcher] Round 2 of refactors
2025-01-17 10:41:52 -06:00
Roy-043 a66da9b3d2 Merge pull request #19089 from Roy-043/Draft-Clone-avoid-B-spline-faces-in-more-cases
Draft: Clone: avoid B-spline faces in more cases
2025-01-16 19:57:08 +01:00
Roy-043 caca0ac994 Merge pull request #19067 from Roy-043/Draft-Save-fillet-settings
Draft: Save fillet settings
2025-01-16 19:52:31 +01:00
Roy-043 b31ada686f Draft: Clone: avoid B-spline faces in more cases
B-spline faces can be avoided if the absolute values of the scaling factors are the same. The `transformShape` method can handle this if two additional arguments are provided.
2025-01-16 13:39:11 +01:00
Roy-043 3385ac8a74 Clean up
The recompute and the `try` structure are no longer required.
2025-01-16 11:53:55 +01:00
Roy-043 e7e41bb001 BIM: ArchWall use moveGeometry to move sketch point
The movePoint function is no longer available in V1.1.
2025-01-16 11:53:55 +01:00
Ajinkya Dahale 51cf34a596 [Sketcher] Refactor and fix an issue in transferConstraints 2025-01-16 15:56:22 +05:30
Ajinkya Dahale 73253bd2d4 [Sketcher] Fix issues in knot operations
For some reason this is not caught in the tests.
2025-01-16 15:56:22 +05:30
Ajinkya Dahale b2e414c407 [Sketcher] Make replaceGeometries protected
This should be a `protected` or `private` operation since it doesn't handle
constraints. However, this is intended to be used by external classes that
modify a `SketchObject` (instead of these modifications like `split`, `trim`,
`join` etc. being methods of `SketchObject`). In that case, it may be best to
use the `friend` keyword.
2025-01-16 15:56:22 +05:30
Ajinkya Dahale aa1122c774 [Sketcher] Fix "used" B-spline poles being deleted 2025-01-16 15:56:22 +05:30
Ajinkya Dahale 8f7a6628ca [Sketcher][test] Add new test for internal geometry deletion
...when some are "used"
2025-01-16 15:56:21 +05:30
Ajinkya Dahale 821bc2ecdf [Sketcher] Incorporate review of #18665 by kadet
1. Replace `find_if` with `any_of` when the iterator is not used.
2. Use PascalCase for templated class.
2025-01-16 15:56:19 +05:30
Ajinkya Dahale c6f5739763 [Sketcher] Refactor SketchObject::split
1. Now uses `Part::Geometry::createArc`.
2. Removed type-specific codes. It can be generalized now.
2025-01-16 15:55:14 +05:30
Ajinkya Dahale e6becd0b61 [Sketcher] Further refactor modifyBSplineKnotMultiplicity 2025-01-16 15:55:14 +05:30
Ajinkya Dahale 12102abd6b [Sketcher] Incorporate review of #18665
...by hyarion on December 29.
2025-01-16 15:55:14 +05:30
Ajinkya Dahale 226d24792d [Sketcher] Fix some issues in trim
Fixes fails at cases where one (or both) of the remaining segments is (are)
degenerate. This existed pre-refactor.

Fixes cases where there are some constraints on internal geometry that do not
get deleted cleanly.

Also fixes a memory leak.
2025-01-16 15:55:14 +05:30
Ajinkya Dahale e4f906c23b [Sketcher] Refactor SketchObject::trim
Cognitive complexity down to 57.
2025-01-16 15:55:14 +05:30
Ajinkya Dahale 3832db01ff [Sketcher] Refactor SketchObject::modifyBSplineKnotMultiplicity 2025-01-16 15:55:14 +05:30
Ajinkya Dahale 6ba1b0b7a9 [Sketcher] Refactor SketchObject::insertBSplineKnot() 2025-01-16 15:55:14 +05:30
Ajinkya Dahale 8c53b2ded5 [Sketcher][test] Add tests for B-spline operations 2025-01-16 15:55:14 +05:30
Ajinkya Dahale 0ded3a4af1 [Sketcher] Refactor SketchObject::trim()
1. Use `Part::GeomCurve::createArc()`
2. Refactor constraint logic in `trim`
2025-01-16 15:55:14 +05:30
Ajinkya Dahale 5a01d438f2 [Sketcher] Refactor internal geometry operations
* Use range-for and rearrange for understandability.
* Break down into individual functions by geomtype.
* Also refactor `exposeInternalGeometryForType<Part::GeomBSplineCurve>`
* Use `Constraint::involves...()` in delete internal

Suppress clang-tidy/clazy warnings by using `[[maybe_unused]]`.

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-01-16 15:54:47 +05:30
Ajinkya Dahale 23cd6cb54e [Sketcher][test] Tests for expose/delete internal geometry 2025-01-16 15:52:03 +05:30
Ajinkya Dahale 568f984b0b [planegcs] Refactor pointer vector freeing
Remove the type-checks in `free(std::vector<Constraint*>& constrvec)` as well as
checks for `nullptr` before deleting.
2025-01-16 15:52:03 +05:30
Ajinkya Dahale 2025c009cd [planegcs] Refactor conditions & loops in GCS.cpp for readability 2025-01-16 15:52:03 +05:30
Ajinkya Dahale a2521d0798 [planegcs] Refactor identifyConflictingRedundantConstraints() 2025-01-16 15:52:03 +05:30
Ajinkya Dahale bd522fe189 [planegcs] Refactor GCS::System::initSolution() 2025-01-16 15:52:02 +05:30
Ajinkya Dahale bc2b35da4e [Sketcher] Helper functions for deleting geometry
Some tests probably needed
2025-01-16 15:52:02 +05:30
Ajinkya Dahale 2249c99b33 [Sketcher] Write SketchObject::replaceGeometries() 2025-01-16 15:52:02 +05:30
Ajinkya Dahale 5c52353480 [Sketcher] Refactor SketchObject::join() (expected trivial)
No tests are added since this commit only adjusts if-then statements.
2025-01-16 15:52:02 +05:30
Ajinkya Dahale 5a4072587b [Sketcher] Some trivial for loop changes in SketchObject
No tests added since this should be no more different than existing code.
2025-01-16 15:52:02 +05:30
Ajinkya Dahale 0f3aff0eac [Sketcher][test] Create test for getConstraintAfterDeletingGeo+
[Sketcher] Add null case to constraint change on deletion checks
2025-01-16 15:52:02 +05:30
Tim 201eca4d02 Addon Manager: Improve proxy URL parsing & enhanced the error messaging (#19078) 2025-01-15 13:39:04 -06:00
Alfredo Monclus 001ce1b479 refactor(PD): hole taskpanel remove minimumSize 2025-01-15 14:57:49 -03:00
Boots 4cb01753ed File export: generate a default filename if the selected object chang… (#18907)
* File export: generate a default filename if the selected object changed since the last export

* Renamed variable to be more clear as per PR review feedback
2025-01-14 16:20:09 -06:00
Chris Hennes 115cd050bc Merge pull request #19019 from hyarion/refactor/countObjectsOfType
Refactor countObjectsOfType in selection and document
2025-01-14 16:05:12 -06:00
tritao 70423b7d59 CMake: Issue a non-fatal error when module dependency is not found. 2025-01-14 15:45:21 -06:00
tritao 19cfb363b8 Gui: Bind NavigationStyle to Python. 2025-01-14 15:11:09 -06:00
Roy-043 288f3aad09 Draft: Save fillet settings
Fixes #16248.
2025-01-14 21:48:16 +01:00
Chris Hennes 5e9ee22c75 Merge pull request #19024 from hyarion/fix-macro-execute-window
Fix missing user macros in macro execute window
2025-01-14 13:50:17 -06:00
tritao 35d2106594 Gui: Rename View3DInventorPy::getView3DIventorPtr() due to typo. 2025-01-14 13:37:33 -06:00
wmayer cb4dd89d55 Fix several compiler warnings 2025-01-14 13:34:18 -06:00
mosfet80 344ae40024 Update sub_buildPixi.yml 2025-01-14 08:43:08 -06:00
Benjamin Nauck ef27cc7d17 Make old type countObjectsOfType functions protected 2025-01-14 14:23:46 +01:00
Benjamin Nauck 3ea3ae0132 Modernizing countObjectsOfType functions 2025-01-14 14:23:46 +01:00
Benjamin Nauck 7b22027b90 Add template based Document::countObjectsOfType
Also convert code to use this new method
2025-01-14 14:23:46 +01:00
Yorik van Havre 00c00ed595 BIM: Fixed late global declaration - fixes #19049 2025-01-14 13:32:23 +01:00
tritao 13cc6a8d22 BIM: Only import TechDraw when its actually needed.
Allows FreeCAD BIM module to load without TechDraw module compiled.
2025-01-14 11:14:16 +01:00
Alfredo Monclus 4b2fdd4ff4 refactor(PD): hole taskpanel alias/promote QuantitySpinBox from QDoubleSpinBox instead of QWidget to represent it correctly on the designer 2025-01-14 06:04:10 -03:00
Chris Hennes 0b1d7349b0 MSVC: Add missing PreCompiled.h includes 2025-01-14 09:28:47 +01:00
João Matos 6222b935f0 Gui: Scene inspector improvements (#18781)
* Improve naming for root scene graph switch/separator nodes.

* Improve scene graph inspector.

This commit improves the scene graph inspector by improving the UI
layout and displaying information in a more human-readable way.

Instead of having a main generic string column for all node-specific
data, introduce specific columns for node name, memory address and data.

Better visualization was also added for `SoDrawStyle`, `SoPickStyle`
and `SoCoordinate3` node types.
2025-01-13 21:38:41 -06:00
Yorik van Havre fe60505c17 Translations (#18923)
* Updated ts files

* Merged crowdin translations

* [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-01-13 21:30:30 -06:00
wandererfan 4ba83f0f50 [TD]use transformShape instead of transformGeometry 2025-01-13 21:14:10 -06:00
Alfredo Monclus 4dae03a994 feat(PD): hole taskpanel ui hide thread options if profile is none 2025-01-13 18:24:07 -03:00
Alfredo Monclus 4e5f5c4481 feat(PD): hole taskpanel ui hide hole cut options if not cut 2025-01-13 16:59:28 -03:00
Alfredo Monclus 36682bcee8 refactor(PD): remove the ui file connections, this are handled in the task code 2025-01-13 16:59:28 -03:00
Alfredo Monclus 6077317d12 feat(PD): hole taskpanel ui hide thread group if not threaded hide threadFit if threaded 2025-01-13 16:22:21 -03:00
Alfredo Monclus 5e8e2224d1 feat(PD): hole taskpanel ui hide thread model options if not applicable 2025-01-13 16:22:21 -03:00
Alfredo Monclus e832973601 refactor(PD): hole taskpanel ui reorganize the layout of the thread group to be more manageable 2025-01-13 16:22:21 -03:00
Benjamin Nauck 08c9a191e2 Add template based SelectionSingleton::countObjectsOfType
Also convert code to use this new method
2025-01-13 18:55:15 +01:00
Tobias Frost 7a5a3d1ffc spelling fixes (#18688)
* Fixes spelling of "Allow to" to "Allow one to"

and those variants:
Allows to -> Allows one to
allow to -> allow one to
allows to -> allows one to

* Fix "Let's -> Lets"

(and lower case variant.)

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

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

* Update src/3rdParty/salomesmesh/inc/MED_Wrapper.hxx

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

* Update src/Base/PyObjectBase.cpp
Update src/App/ExtensionContainer.h
Update src/App/PropertyContainer.h

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

* Use gerund in user-facing texts.

* Use gerund for two more user-facing strings.

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

* Update src/Mod/Fem/App/FemMeshShapeNetgenObject.cpp

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

* Update src/Mod/Fem/App/FemMeshShapeNetgenObject.cpp

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

* Update src/Mod/Fem/App/FemMeshShapeNetgenObject.cpp

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

---------

Co-authored-by: Tobias Frost <tobi@debian.org>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-01-13 11:22:20 -06:00
PaddleStroke f30139367a Stylesheet toolbar background (#18831) 2025-01-13 11:21:17 -06:00
FEA-eng 43dd1e32e8 FEM: Print contact forces (#18840)
* FEM: Update write_step_output.py

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

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

* FEM: Update constraint_contact_shell_shell.inp

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-01-13 11:19:50 -06:00
Chris Hennes 7bb4302eaf Merge pull request #17564 from kadet1090/new-transform-dialog
Gui: New transform dialog
2025-01-13 11:18:26 -06:00
WandererFan e9c30cf370 [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
Jonas Bähr 382d13ee77 PD: Make GearTests independent of "single solid" setting
When enabling the experimental "Allow multiple solids in Part Design Body
by default" some involute gear tests broke. As a quick measure,
`AllowCompound` was disabled for the respective body. This commit now
makes the tests independent of this setting and removes the workaround.
2025-01-13 11:05:31 -06:00
Pascal de Bruijn c4116daf99 TechDraw: Component Drawing as default document type (#18827)
Presumably Component Drawings are more common as opposed to Assembly Drawing's
therefore FreeCAD's default should reflect this.

find src/Mod/TechDraw/Templates -iname "*.svg" -exec sed -i 's#Assembly Drawing#Component Drawing#g' "{}" \;
2025-01-13 11:59:57 -05:00
Kevin Martin 6c6904453d Address the poor performance of the existing unique-name generation (part 1) (#18589)
* Change Address the poor performance of the existing unique-name generation

As described in Issue 16849, the existing Tools::getUniqueName method
requires calling code to form a vector of existing names to be avoided.

This leads to poor performance both in the O(n) cost of building such a
vector and also getUniqueName's O(n) algorithm for actually generating
the unique name (where 'n' is the number of pre-existing names).

This has  particularly noticeable cost in documents with large numbers
of DocumentObjects because generating both Names and Labels for each new
object incurs this cost. During an operation such as importing this
results in an O(n^2) time spent generating names.

The other major cost is in the saving of the temporary backup file,
which uses name generation for the "files" embedded in the Zip file.
Documents can easily need several such "files" for each object in the
document.

This is the first part of the correction, adding an efficient class for
managing sets of unique names.

New class UniqueNameManager keeps a list of existing names organized in
a manner that eases unique-name generation. This class essentially acts
as a set of names, with the ability to add and remove names and check if
a name is already there, with the added ability to take a prototype name
and generate a unique form for it which is not already in the set.

a new unit test for UniqueNameManager has been added as well.

There is a small regression, compared to the existing unique-name code,
insofar as passing a prototype name like "xyz1234" to the old code would
yield "xyz1235" whether or not "xyz1234" already existed, while the new
code will return the next name above the currently-highest name on the
"xyz" model, which could be "xyz" or "xyz1" or "xyz0042"..
2025-01-13 10:57:53 -06:00
Chris Hennes 9459b85081 Merge pull request #18704 from wwmayer/fix_line_dir
App: Add methods to get base and direction of datum element
2025-01-13 10:56:55 -06:00
wwmayer f43339ad23 Fix issues in ellipse creation (#18800)
* Sketcher: Handle exceptions in onViewValueChanged

Because the method onViewValueChanged is used as a Qt slot it must handle all possibly raised exceptions as otherwise
they will slip through GUIApplication::notify() that usually results into a crash on some platforms like macOS

* Sketch: Handle undefined values in calculateThroughPointMinorAxisParameters

* The argument of acos() must be in the range [-1, +1], otherwise it returns nan (not a number)
* The value of sin(0) = 0. So, it cannot be used in the denominator of a fraction
2025-01-13 17:42:40 +01:00
PaddleStroke f6e15f15ad Extend branding options (#18804) 2025-01-13 10:37:14 -06:00
Alfredo Monclus cd6f2fa6df refactor(PD): hole taskpanel ui move Threaded to the grid above 2025-01-13 09:36:57 -03:00
Alfredo Monclus 81508663f1 refactor(PD): hole taskpanel ui move ThreadFit into its own widget near the thread options 2025-01-13 09:27:20 -03:00
Alfredo Monclus 32820ac425 feat(PD): hole taskpanel: hide drill point options if not applicable 2025-01-13 08:45:43 -03:00
Alfredo Monclus dc73208f08 refactor(PD): hole taskpanel ui open and save with QT designer 5.15 2025-01-13 08:45:24 -03:00
Roy-043 326d1eb70b BIM: improve roof getSubVolume function
Fixes #19013.

* Check direction of plane axis with a tolerance.
* Check the produced solids. Notably check for a min. volume. Required for solids created from non-planar faces.
* Apply placement to created compound.
2025-01-13 10:07:13 +01:00
Benjamin Nauck 8d07665c97 Light refactoring of macro execute window 2025-01-13 08:24:44 +01:00
Benjamin Nauck e9123e4649 Clear correct macro list box 2025-01-13 08:23:50 +01:00
Roy-043 7829fcc488 Merge pull request #18988 from Roy-043/Draft-Bim-Layer-manager-transp-zero
Draft and BIM: Layer manager did not accept zero transparency
2025-01-10 23:40:27 +01:00
Roy-043 27ac5c4277 Draft and BIM: Layer manager did not accept zero transparency 2025-01-10 22:29:03 +01:00
Paul Lee 73f0e165be [ArchSpace] Improve Space Creation and ensureBase
Refer to discussion at -
https://github.com/FreeCAD/FreeCAD/issues/18917

Like Wall and Stairs, Space should do without Base. Base validity tested in execute() prevented the desired and documented behaviour.

EnsureBase() is remarked out in execute() and to be run in getShape(). With this improvement, if there is no Base, or Base is not valid, Space would be created if it could be defined by obj.Boundaries.
2025-01-10 10:44:48 +01:00
Gaël Écorchard fe597c1933 BIM: Colors in DAE import + code improvements (#18965)
* BIM: Fix color support for DAE import

There was some mention of color in the original code but it was not
working on my system.

Signed-off-by: Gaël Écorchard <gael@km-robotics.cz>

* BIM: Use `BIM` rather than `Arch` for translation context

* BIM: remove Python 2 compatibility

* BIM: improve style of importDAE.py

Signed-off-by: Gaël Écorchard <gael@km-robotics.cz>

---------

Signed-off-by: Gaël Écorchard <gael@km-robotics.cz>
Co-authored-by: Gaël Écorchard <gael@km-robotics.cz>
2025-01-10 09:15:43 +01:00
Patryk Skowroński 1baee311bc Merge branch 'main' into tdx-mac 2025-01-09 16:07:02 +01:00
Patryk Skowroński f2fb3f6b07 Fixed CMake files for a runtime switch 2025-01-09 16:03:51 +01:00
Roy-043 558eb19103 Merge pull request #18949 from Roy-043/Draft-and-Pref-Packs-fix-snapcolor
Draft (and Pref Packs): fix snapcolor
2025-01-09 11:31:22 +01:00
Roy-043 09573f4ad4 Merge pull request #18959 from Roy-043/Core-fix-sWhatsThis-for-Std_LinkActions
Core: fix sWhatsThis for Std_LinkActions
2025-01-09 11:29:56 +01:00
Roy-043 89101ff4cc Merge pull request #18905 from Roy-043/Part-Rename-new-datum-commands
Part: Rename new datum commands
2025-01-09 11:27:14 +01:00
Roy-043 38ef33e272 Merge pull request #18942 from Roy-043/Draft-fix-selection-for-FacebinderTaskPanel
Draft: fix selection for FacebinderTaskPanel
2025-01-09 11:25:46 +01:00
Roy-043 3b258b6178 Draft: fix axis calculation in make_sketch
Fixes #18713.

The code follows the suggestion by imm/webmite:
https://forum.freecad.org/viewtopic.php?p=799014#p799014

@webmite Thank you.
2025-01-09 09:40:33 +01:00
Roy-043 bee46bca68 Core: fix sWhatsThis for Std_LinkActions 2025-01-08 22:25:25 +01:00
Roy-043 f6f11ac429 Draft (and Pref Packs): fix snapcolor
Fixes #17978.
2025-01-08 18:11:42 +01:00
Roy-043 89b95fc938 Draft: fix selection for FacebinderTaskPanel
See:
https://forum.freecad.org/viewtopic.php?t=93682
2025-01-08 14:36:07 +01:00
Yury Shvedov c420316903 about: handle additional modules in clipboard
We are able to pass extra modules path with command line arguments.
Handle such modules when copying about information to clipboard.

Change-Id: I158b6ea021cc0a5dfd27693d22f6c56a6bdcd239
2025-01-07 15:40:23 +01:00
je-cook 278ce80390 BIM: Speedup and refactor WebGL exporting (#18843)
* Stylistic changes and slight refactor

* speed up compression algorithm
2025-01-07 10:43:50 +01:00
Yorik van Havre b5e2e8c007 BIM: Added classifications support to nativeifc (#18444)
* BIM: Added classifications support to nativeifc

* BIM: Fixed lint warnings
2025-01-07 10:35:37 +01:00
Roy-043 6deb424539 Draft: Closed corners for extruded Facebinders (#18901)
* Draft: props_changed_placement_only should ignore material props

The new material related properties (Density, Volume and Mass) must be ignored by the `props_changed_placement_only` function.

Without this moving a Draft_Point will fail for example.

* Draft: Closed corners for extruded Facebinders

Fixes #13816.

The `makeOffsetShape` method that creates the extruded shape is quite picky. For example, it will work for a pyramidal shell (4 triangles) with a square floorplan, but not if the floorplan is slightly rectangular. To get closed corners the `Sew` property of the Facebinder must be set to `True`. If extruding does not work properly, the code will retry with `Sew` disabled.

There is also some code that tries to convert flat B-spline faces created between the main offset faces into planar faces. In some cases that code will fail (the results of `makeOffsetShape` can already contain errors). If that is the case the original shape created by `makeOffsetShape` is used.

* Rebase to restore base.py
2025-01-07 10:23:33 +01:00
JULIEN MASNADA 049f42c887 SH3DImporter: Fix walls Length attribute (#18854)
* Make IFC project optional

* make sure wall.Length is properly set

---------

Co-authored-by: Yorik van Havre <yorik@uncreated.net>
2025-01-07 10:03:02 +01:00
Roy-043 f34a8b5bfd Merge pull request #18899 from Roy-043/Draft-props_changed_placement_only-should-ignore-material-props
Draft: props_changed_placement_only should ignore material props
2025-01-06 20:33:41 +01:00
Roy-043 8c5a87e894 Part: Rename new datum commands
Fixes #18853.
2025-01-06 20:28:00 +01:00
lorenz 013eb6e635 pixi: update to py3.13 (#18832)
* pixi: update to py3.13

* pixi: Update gh-action to use pixi v0.39.4

* Pixi: add dep. xorg-xproto for linux

* update lock-file
2025-01-06 14:34:17 -03:00
Syres916 b86e1adb22 [Techdraw] Import SVG files with UTF-8 encoding (#18816)
* [Techdraw] Fix importing SVG files with UTF-8 encoding

* [Techdraw] fix Lint feedback
2025-01-06 18:32:56 +01:00
FEA-eng 5236541045 FEM: Add accuracy parameter for CalculiX buckling analysis (#18790)
* FEM: Update solver.py

* FEM: Update write_step_equation.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-01-06 18:24:56 +01:00
FEA-eng 73ce3b15d6 FEM: Update magnetodynamic_writer.py 2025-01-06 18:24:05 +01:00
Roy-043 af667d6fd8 Part: copy_visual_attributes did not handle Draft Link arrays
Fixes #16541.
Fixes #18760.
2025-01-06 18:16:46 +01:00
Benjamin Nauck af1aa403e2 Spreadsheet: Center text (v+h) vertical headers 2025-01-06 18:15:30 +01:00
Yury Shvedov f48ccba2d9 Macro: allow to specify extra system paths for macro
This introduce new option `-E [ --macro-path]` to specify extra system
paths of macros. The macro found in this paths will appear in `Macros`
dialog at `System macros` tab.

Change-Id: Ic21631ec0ebe8af5c7f42b4fe95400cfb67807d5
2025-01-06 18:14:15 +01:00
WandererFan 93aa3b312f [TD]Fix RichText parent in scene (fix #18283) (#18768)
* [TD]allow DrawViewAnno to be attached to another view

* [TD]allow image and spreadsheet attach to view

* [TD]ensure correct parent in scene

* [TD]refactor command helpers to separate file

- gathering the helpers in one place
- helper redundancy to be address in another change

* [TD]create symbol, spreadsheet, image with parent

* [TD]fix claimChildren for some views

- also includes many lint fixes
2025-01-06 18:11:25 +01:00
wmayer b1d6a82178 Gui: Check for exising layout before accessing it
It still must be checked if the crash in #18747 will be fixed.
2025-01-06 18:09:46 +01:00
David Carter 3576640691 Materials: Physical properties reversion
Reverts PR #17438

The PR experienced sever performance issues when the file contained
objects with errors. This PR removes the physical properties attributes
and its associated calculations.

It retains changes to the material filter funtions which were not
affected by the errors.
2025-01-06 18:07:59 +01:00
mosfet80 d8794b3a14 Clean OpenSCAD2Dgeom.py 2025-01-06 18:04:07 +01:00
wmayer d0eb91c4cc Part: Fix doc string of TopoShape.inTolerance 2025-01-06 18:03:10 +01:00
WandererFan a3e49023d1 [TD]Symbol scaling (fix #14400) (#18757)
* [TD]add legacy/new svg scaling pref

* [TD]Change Svg scaling logic (fix 14400)
2025-01-06 18:02:37 +01:00
marioalexis 9e6f3660e5 Fem: Add suppressible extension to mesh element objects 2025-01-06 17:56:30 +01:00
marioalexis 3d830b5b2e Fem: Add suppressible extension to objects - fixes #12115 2025-01-06 17:56:30 +01:00
Yorik van Havre 6edd0daa1e BIM: Quantities support for nativeIFC objects (#18689)
* BIM: Quantities support for nativeIFC objects

* BIM: Added nativeIFC support for schedules
2025-01-06 11:55:50 -05:00
MisterMaker 6acd1fe3d0 Stylesheets spreadsheets visual fix. (#18719)
* this fixes the spreadsheet alignment and the corner button

* missed a line
2025-01-06 17:55:13 +01:00
wmayer d979235a48 Gui: Remove code duplication in PythonConsole class 2025-01-06 17:53:59 +01:00
wmayer 0dba0a3b31 Gui: Hide line marker and do not highlight current line in Python console 2025-01-06 17:53:59 +01:00
wmayer 35700db40e Sketcher: Add an option to always add ext. geometry as reference 2025-01-06 17:48:00 +01:00
wmayer 7566200f0a Fix German translation
until the next download from crowdin
2025-01-06 17:25:44 +01:00
Roy-043 f773dfad91 Draft: props_changed_placement_only should ignore material props
The new material related properties (Density, Volume and Mass) must be ignored by the `props_changed_placement_only` function.

Without this moving a Draft_Point will fail for example.
2025-01-06 17:23:37 +01:00
Roy-043 b359a2c46c Draft: make_sketch.py: Use sketcher methods to add constraints (#18805)
* Draft: make_sketch.py: Use sketcher methods to add constraints

A sketch object has its own methods to add coincident, horizontal and vertical constraints. Using those methods allows to simplify the make_sketch.py code. The new code applies the mentioned constraints to the whole sketch,  instead of per object. The old code would not add coincident constraints between seperate, but connected, objects. the new code does.

Note that the code for point objects (not changed in this PR) does not work properly.

* Fix 2 issues

* The Sketcher detect functions need a tolerance argument.
* obj.Shape.copy() does not work properly for a Draft_Point. As a workaround a Part Vertex is created instead.
2025-01-06 14:56:53 +01:00
Yorik van Havre 2a726471ce BIM: Fixed nativeIFC license - issue #18622 2025-01-06 14:36:34 +01:00
Paul Lee 742ca3204c [ArchWall] Fix Regression - EnsureBase prevent creation without Base
Refer to discussion at -
https://github.com/FreeCAD/FreeCAD/pull/18651
https://github.com/FreeCAD/FreeCAD/issues/16409

Wall should do without Base. Base validity tested in execute() prevented the desired and documented behaviour.

EnsureBase() is remarked out in execute() and to be run in getExtrusionData().  With this fix, if there is no Base, or Base is not valid, Wall would be created as declared.
2025-01-06 11:49:50 +01:00
Paul Lee 23284cd08d [ArchStairs] Improve Stairs Creation and ensureBase
Refer to discussion at -
https://github.com/FreeCAD/FreeCAD/pull/18864
https://github.com/FreeCAD/FreeCAD/pull/18651
https://github.com/FreeCAD/FreeCAD/issues/16409

Like Wall, Stairs should do without Base. Base validity tested in execute() prevented the desired and documented behaviour.

With this improvement, EnsureBase() is now only to be run when there is Base. If there is no Base, or Base is not valid, Stairs would be created as declared.
2025-01-06 11:46:10 +01:00
SurajDadral e15285ae41 BIM: fixes stirrups placement in ifc export
Fixes: https://github.com/amrit3701/FreeCAD-Reinforcement/issues/223
2025-01-06 10:32:23 +01:00
Roy-043 03c167ec47 BIM: getDefaultColor: change transparency to alpha 2025-01-06 10:03:44 +01:00
Roy-043 26536c9725 Merge pull request #18863 from Roy-043/Draft-comment-out-3-test-files-with-only-dummy-tests
Draft: comment out 3 test files with only dummy tests
2025-01-05 16:10:16 +01:00
Kacper Donat 8062779ffe Gui: Initialize reference rotation properly 2025-01-04 16:32:52 +01:00
Kacper Donat 62cdaaff56 Gui: Zero out rotation only if more than 1 axis changed 2025-01-04 16:32:52 +01:00
Kacper Donat 178535980e Gui: Use extrinsic angles for absolute position mode in transform dialog 2025-01-04 16:32:52 +01:00
Kacper Donat 27c1eaa39c Gui: Disable controls when selecting origin in transform dialog 2025-01-04 16:32:52 +01:00
Kacper Donat df2e0ba895 Gui: Fix crash on qBounds for imperial units 2025-01-04 16:32:52 +01:00
Kacper Donat fe96e7e194 Gui: Reset UVW coordinate system in transform when rotation changes 2025-01-04 16:32:52 +01:00
Kacper Donat d08810c649 Part: Extract methods from AttachEngine::readLinks 2025-01-04 16:32:52 +01:00
Kacper Donat a3bf63bae2 PD: Forward transform requests to Body 2025-01-04 16:32:52 +01:00
Kacper Donat 736fbee539 App: Fix GeoFeature::getGlobalPlacement when rootObj is Link
This fixes a case when in case of rootObj being Link placement was not
calculated correctly due to not changing of the document. While for
original use it was fine as this was mostly used in case where there was
defined non-link root for general case Links can be root objects of the
document.
2025-01-04 16:32:52 +01:00
Kacper Donat 25cf119c60 Gui: Add Dragger placement preview in Transform dialog 2025-01-04 16:32:52 +01:00
Kacper Donat fab235682d Gui: Make ViewProviderLink based on ViewProviderDragger 2025-01-04 16:32:52 +01:00
Kacper Donat 1df3b5be6c Gui: Rework TaskCSysDragger into new Transform Dialog
This commit refactor ViewProviderDragger and TaskCSysDragger to be more
modern and to support selecting TransformOrigin.
2025-01-04 16:32:52 +01:00
Kacper Donat b470f74398 Gui: Add QuantitySpinBox normalization 2025-01-04 16:32:52 +01:00
Kacper Donat 8813a0c115 Gui: Refactor TDragger 2025-01-04 16:32:52 +01:00
Kacper Donat 2a69e3d878 Base: Add ComplexGeoData::centerOfGravity helper
This adds a simple quality of life helper returning center of gravity as
std::optional instead of C style method accepting reference and
returning bool to indicate method success.
2025-01-04 16:32:52 +01:00
Kacper Donat 88141d6dce Part: Add midpoint attachement mode
This adds midpoint attachement mode to Attacher. It works just like
method for finding placement of JCS in Assembly.
2025-01-04 16:32:52 +01:00
Kacper Donat 49ff7b8bf0 Part: Use TopoShape instead of TopoDS_Shape
This changes Attacher to use more our own TopoShape class which is more
information rich.
2025-01-04 16:32:52 +01:00
Kacper Donat 23bdfeb672 ServiceProvider: Use std::string as key for services map
This fixes potantial crash that can happen on certain platforms like
macOS due to `typeid(T).name()` returning different pointers to string
which does not happen on all platforms.
2025-01-04 16:32:47 +01:00
Kacper Donat 878dd55ed0 ServiceProvider: Better naming of methods
This commit renames methods of ServiceProvider to be easier to
understand. It also replaces the misleading singleton with more correct
here global instance of class.
2025-01-04 16:32:47 +01:00
Roy-043 19b4470ce9 Draft: comment out 3 test files with only dummy tests
Some Draft test files contain only dummy tests (`aux.fake_function`). Running them will just open a new file and then immediately close it. This can result in issues with code that is called with a delay. See #18679. Disabling these tests by commenting them out avoids this.
2025-01-04 12:20:33 +01:00
Roy-043 a974e413fa Merge pull request #18857 from Roy-043/Draft-Minor-cosmetic-changes-to-test-files
Draft: Minor cosmetic changes to test files
2025-01-04 01:16:48 +01:00
Roy-043 2b35ad2281 Draft: Minor cosmetic changes to test files 2025-01-03 22:11:05 +01:00
Roy-043 b639b20148 Merge pull request #18851 from Roy-043/Draft-Introduce-base-classes-for-Draft-tests
Draft: Introduce base classes for Draft tests
2025-01-03 21:04:21 +01:00
Roy-043 28d177a725 Add another missing import 2025-01-03 20:32:17 +01:00
Roy-043 4ba16cebb7 Add missing import 2025-01-03 20:10:47 +01:00
Roy-043 4d37256877 Update CMakeLists.txt 2025-01-03 19:56:20 +01:00
Roy-043 0bc9737ca6 Draft: Introduce base classes for Draft tests
To avoid code duplication.
2025-01-03 16:51:42 +01:00
Roy-043 7b548bee7f Merge pull request #18841 from Roy-043/Draft-Make-test_modification-tests-independent-of-fillmode
Draft: Make test_modification tests independent of fillmode
2025-01-03 14:42:31 +01:00
Zheng, Lei 89ec079fbf Toponaming: import code related to ElementMapVersion from LS3
*Imported original code
2025-01-03 14:15:19 +01:00
Vincenzo Calligaro e5b1d05813 Toponaming: import code related to ElementMapVersion from LS3
*Added test

Signed-off-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>
2025-01-03 14:12:04 +01:00
Roy-043 c7630ac065 Draft: Make test_modification tests independent of fillmode
Fixes #18315.

In the issue discussion the more obvious solution (change the MakeFace property of the Draft_Wires) was missed.
2025-01-03 11:38:51 +01:00
wmayer 7cfa0df4ad Gui: Remove migration warning 2025-01-02 13:34:26 +01:00
wmayer ad314fea7e Core: Fixes #18717
Neither in #18332 nor in any of the referenced issues a reason is given why the placement of the coordinate axes must be changed.
Only doing it to make the client code look more consistent is not a valid reason.

This change breaks forward and backward compatibility and with #18717 we already have a hard to solve issue. Furthermore, at this
point of time it's not even clear what other collateral damage the change may cause.

So, this commit hides all the implementation details of the DatumElement and restores the original placement for the axes.
This commit makes the line migration code obsolete
2025-01-02 13:27:54 +01:00
wmayer 90d8c34631 App: Fix const correctness 2025-01-02 13:24:57 +01:00
wmayer b3a1fd9676 App: Add methods to get base and direction of datum element
Add the methods DatumElement::getBasePoint() and DatumElement::getDirection() to hide implementation details and guarantee consistent behaviour.

Using the methods fixes several regressions in:
* Constraint::getDirection
* PolarPattern::getTransformations
2025-01-02 13:24:57 +01:00
marioalexis 604a764a6f Fem: Use property constraints on mesh netgen object 2025-01-01 11:21:44 -03:00
marioalexis 96aea8545b App: Assign constraints for integer and float properties using dictionary 2025-01-01 11:21:37 -03:00
wmayer cbd116b451 Gui: Use bitmask instead of three booleans in setTemporaryVisibility to improve readability 2024-12-31 13:29:01 +01:00
Kohei Takahashi cc77739c6d Base: Expanded FindAttribute() to get rid of frequent constant transcode 2024-12-31 10:30:23 +09:00
wmayer 63088a29a9 Gui: Reduce cognitive complexity of ViewProviderCoordinateSystem::setTemporaryVisibility 2024-12-30 19:03:58 +01:00
wmayer 8d4ddac85e Gui: Reduce code duplication in ViewProviderCoordinateSystem 2024-12-30 18:42:50 +01:00
wmayer 72cfd14768 Gui: const correctness in ViewProviderPlane 2024-12-30 17:44:04 +01:00
PaddleStroke e977eb49e3 Core datums: Rework to improve new sketch 2024-12-30 09:05:44 +01:00
Joao Matos 9eb55a0414 CMake: Try searching for Coin3D in config mode 2024-12-28 20:49:36 +00:00
Joao Matos 11af126717 CMake: Use Coin3d CMake target directly if one exists. 2024-12-28 20:49:01 +00:00
Roy-043 7083362acb Merge pull request #18737 from Roy-043/Draft-Remove-unnecessary-CamelCase-names
Draft: Remove unnecessary CamelCase names
2024-12-27 18:53:32 +01:00
Roy-043 9b8b962f56 Draft: Remove unnecessary CamelCase names
The related functions were introduced in V0.19. They should not be also available under CamelCase names.
2024-12-26 12:06:29 +01:00
Kohei Takahashi f032b44f44 Base: Added helper macro for caching transcode-ed string literal 2024-12-26 17:16:45 +09:00
Paul Lee 6bb424b5d1 [ArchStairs] Regression-fix : EnsureBase preventcreation
Stairs can do without Base.  Base validity is tested in code.

EnsureBase() is remarked out.
2024-12-24 13:54:54 +01:00
Tobias Frost 5957a9118e Fix compilation issue if KuKa files have been removed.
(Background is issue #18622)

CMake errors out when the Kuka files are removed with:

```
CMake Error at cMake/FreeCadMacros.cmake:79 (ADD_CUSTOM_COMMAND):
  ADD_CUSTOM_COMMAND called with wrong number of arguments.
Call Stack (most recent call first):
  src/Mod/Robot/CMakeLists.txt:47 (fc_target_copy_resource)
```

The problem is that while the CMake code checks whether /src/Mod/Robot/Lib/Kuka is there befor setting Robot_Resources, but then later still uses the variable, even if it hasn't been set.

The patch just guards the failing fc_target_copy_resource with another if that checks whether the variable has been defined.

CMake install would also fail when Lib is empty, so another guard is required for the `INSTALL( DIRECTORY Lib` … section.
2024-12-24 07:00:48 -05:00
Tobias Frost 7fb80448f2 Remove unused ifndefs for GL_MULTISAMPLE
(found while searching for the build error on armhf/armel on Debian
buildds, once resolved will make an additional PR for that.)

$grep -r GL_MULTISAMPLE src/
yields:

 src/Mod/Sandbox/Gui/Overlay.cpp: #ifndef GL_MULTISAMPLE
 src/Mod/Sandbox/Gui/Overlay.cpp: #define GL_MULTISAMPLE  0x809D
 src/Mod/Sandbox/Gui/GLGraphicsView.cpp:#ifndef GL_MULTISAMPLE
 src/Mod/Sandbox/Gui/GLGraphicsView.cpp:#define GL_MULTISAMPLE  0x809D

-> The defines are defined, but never used in the compilation unit
2024-12-24 10:41:40 +01:00
WandererFan abb50a4daa [TD]Long and link dim refs (fix #13375) (#18641)
* [Meas]Changes for TD dimension refs for links

* [TD]App changes for dim refs to links

* [TD]Gui changes for dim refs to links

* [TD]fix 2 lint messages

* [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>
2024-12-23 17:36:22 -05:00
FEA-eng 0d128517de FEM: Update checksanalysis.py 2024-12-23 18:50:10 +01:00
wandererfan 8e653ca7fb [TD]fix highlight style preference 2024-12-23 12:32:19 -05:00
Chris Hennes 40681a9d3d CI: Add missing C++ tests to CI run
The current structure of the CI system explicitly lists the tests to run, and several recently-added test executables were not included in the list.
2024-12-23 18:27:19 +01:00
Chris Hennes 8edb649d97 Addon Manager: Add fallbacks for PySide to WidgetFilterSelector
Ensure that this part of the Addon Manager can be tested outside
FreeCAD by falling back to explicit PySide imports.
2024-12-23 18:24:37 +01:00
Chris Hennes 98fbe71a54 Clang-Tidy: Remove AnalyzeTemporaryDtors
Deprecated in clang-tidy 16 and removed in clang-tidy 18.
2024-12-23 18:23:58 +01:00
wmayer 9cd919d0b9 Gui: Fix copying elements in the tree view by holding CTRL key
In older versions it was possible to copy elements with drag and drop by holding the CTRL key. Since v0.20 or v0.21 this wasn't possible any
more so that elements are always moved.

Note: Copying is only allowed for elements that have a parent object.
2024-12-23 12:21:12 -05:00
Mark Ganson TheMarkster c0210c2d3c [Spreadsheet] fix isValidAlias() (#18567) 2024-12-23 14:18:30 -03:00
WandererFan 300f3bca4c [TD]Section line and rotation fix 17831 (#18663)
* [TD]fix SectionLine colour (fix 17831 part 1)

* [TD]fix wrong rotation in Section task (fix 17831 part 2)
2024-12-23 11:03:31 -06:00
Chris Hennes 9bab070632 Merge pull request #18608 from marioalexis84/fem-netgen_log_verbosity
Fem: Add preference entry to set Netgen (new implementation) log verbosity and number of threads for meshing
2024-12-23 12:02:32 -05:00
Chris Hennes 9ef57818be Addon Manager: refactor process_string_to_datetime (#18492)
* Addon Manager: Refactor utilities tests to remove filesystem use

* Addon Manager: Move process_date_string_to_python_datetime to utilities

Also add unit tests and modify the exception type

* Addon Manager: Add tests for other date separators

* Addon Manager: Refactor to reduce duplication

* Addon Manager: add explanation of why the function exists

* Addon Manager: use exception chaining

* Addon Manager: Remove unused test files
2024-12-23 18:01:02 +01:00
Roy-043 b7cae54666 Part: remove rogue margins from ui file 2024-12-23 11:59:34 -05:00
Chris Hennes 5688e81ed4 Measure: Pass empty arg to QStringLiteral macro
Silences compiler warning about missing expected macro argument (MSVC warning C4003).
2024-12-23 17:55:15 +01:00
mwganson 9db4e89467 [PythonEditor] Make converting tabs to spaces the default 2024-12-23 11:53:05 -05:00
wmayer 4ba6e8e150 App: Fix possible crash when postponing the destruction of a removed property
Fixes #18601
2024-12-23 11:49:38 -05:00
Ladislav Michl c0f0376ac6 Base: Quantity: use std::nan 2024-12-23 17:48:42 +01:00
Ladislav Michl 4d6ed9d531 Base: UnitsSchema: return std::string 2024-12-23 17:48:42 +01:00
Ladislav Michl 2ea8a633ac Base: Quantity: return std::string 2024-12-23 17:48:42 +01:00
Ladislav Michl c11b37e312 Base: Units: remove unused defines 2024-12-23 17:48:42 +01:00
Ladislav Michl 0907c7bfda Base: Units: return std::string 2024-12-23 17:48:42 +01:00
Ladislav Michl 6b6e1fbd26 Base: Units: reimplement getTypeString() using container 2024-12-23 17:48:42 +01:00
Ladislav Michl 2d0ce24496 Base: Units: hide internals 2024-12-23 17:48:42 +01:00
FEA-eng 970beb4457 Fix typos in TechDraw advanced preferences - tooltips (#18510) 2024-12-23 10:38:12 -06:00
Julien Masnada e930fd6f17 Remove invalid assert on unit test 2024-12-23 17:20:48 +01:00
Julien Masnada b137c6c3f4 Removing IFC project by default 2024-12-23 17:20:48 +01:00
Alfredo Monclus 3f58f83f2d refactor(PD): dynamically set threadSize enums 2024-12-22 17:21:36 -03:00
wmayer 3b50235935 smesh: Fix build failure with vtk 9.4
Fixes #18423
2024-12-22 09:00:46 -05:00
luzpaz 7782fd6827 Trim lines ending with superfluous whitespace 2024-12-22 08:50:37 -05:00
luzpaz 0758630103 Fix various typos 2024-12-22 08:47:13 -05:00
marcuspollio ab508f99c7 GUI: cleanup Privacy Policy formatting 2024-12-22 08:44:57 -05:00
wmayer cad2f33b4e MSVC: Fix linking error when 3Dconnexion support is set to 'Raw input' 2024-12-20 18:32:09 -05:00
Chris Hennes 173ff4da1e Merge pull request #15744 from alfrix/threads
feature: add more thread types: BSP NPT  and tapered
2024-12-20 12:22:38 -05:00
Yorik van Havre 2b201dd19a BIM: Added frame to welcome dialog - supersedes #17393 2024-12-20 12:20:43 -05:00
wmayer 3c367b85cd Part: Fix getIcon() of several view providers to return full path name of the icon file 2024-12-20 12:19:47 -05:00
Tobias Frost 0d628cb5fc Fix SPDX Identifier to match license 2024-12-20 12:05:44 -05:00
Alfredo Monclus ca3cb78ad5 fix(PD): size should be enabled if profile is not none 2024-12-20 12:03:18 -05:00
Andrea d4f6fda055 [Mod] clean DrawingExport.cpp
Removed dead code
[pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci
2024-12-20 12:01:38 -05:00
Benjamin Nauck 344b655f16 Move where icons in menus attribute is set
Without this, icons are not visible on macOS
2024-12-20 11:55:21 -05:00
wmayer a8f2ddb038 Gui: Move Python functions from Application to ApplicationPy
This reduces build time when adding new Python functions because only one file must be compiled.
Handles also many linter warnings.
2024-12-20 11:50:07 -05:00
marioalexis a58c3caac1 Fem: Fix mesh export to vtk formats 2024-12-20 11:46:46 -05:00
wwmayer a0e1a31623 Test: Support of parallel execution of reader tests (#18587)
* Tests: Initialize xerces sub-system in order to parse XML files

* Test: Support of parallel execution of reader tests

Fixes #18549
2024-12-20 10:42:02 -06:00
Yorik van Havre b62f971ed4 BIM: Fixed structures calculation mode - fixes #18453 2024-12-20 11:40:24 -05:00
PaddleStroke cac8eb0859 Assembly: Joint creation presolve: move part2 rather than part1 when both are unconnected. 2024-12-20 11:37:04 -05:00
David Carter 7e1b1abddd Materials: Change display of Quantity values
The default display type of quantity objects is fixed point resulting
in insufficient accuracy when changing unit systems, or when the values
are small. This fix changes the default format from 'Fixed' to the more
apt 'Default' format. This allows the displayed values to scale as
appropriate.

Fixes #18149
2024-12-20 11:31:43 -05:00
Bas Ruigrok 939506007d Gui: Fix Blender and Revit navigation issues with shift key in sketcher 2024-12-20 11:31:10 -05:00
Alfredo Monclus 58344a5904 refactor(PD): rename CoreHole to TapDrill
using a drill and cutting tap is not the only method to create a thread, and this sizes should be optional. i would prefer using the minor diameter of threads, leaving full thread depth and let the user adjust according to their needs using the custom clearance
2024-12-20 07:51:34 -03:00
Alfredo Monclus 003e239daf feat(PD): set the proper angle for threads and countersinks
apply the recommended thread angle only if the user hasn't set an angle
2024-12-20 07:51:34 -03:00
Alfredo Monclus ce91285e4d feat(PD): BSF threads 2024-12-20 07:51:34 -03:00
Alfredo Monclus edb565046d feat(PD): BSW threads 2024-12-20 07:51:34 -03:00
Alfredo Monclus 17283b6290 fix(Test): sketcher external geometry removed test 2024-12-20 07:51:34 -03:00
Alfredo Monclus 80d4185c09 refactor(PD): new cut profile for threads
fixes tapered threds
removing 2 points increases performance around 10% when doing an M1 in my imprecise testing
2024-12-20 07:51:33 -03:00
Alfredo Monclus 3e161f9c96 refactor(PD): change tabs to whitespaces 2024-12-20 07:51:33 -03:00
Alfredo Monclus df22f8060d feat(PD): tapered threads support, NPT and BSPT are now possible 2024-12-20 07:51:33 -03:00
Alfredo Monclus 588f4c3b00 feat(PD): ANSI pipe threads 2024-12-20 07:51:33 -03:00
Alfredo Monclus acf04c7f1e feat(PD): BSP - British standard pipe threads 2024-12-20 07:51:33 -03:00
Alfredo Monclus db1b0c56bf fix(PD): complete ISO-273 2024-12-20 07:51:33 -03:00
Yorik van Havre a7c550da98 BIM: Several fixes to nativeIFC lock/unlock system - fixes #17862 2024-12-20 10:15:39 +01:00
JULIEN MASNADA bcdfcce95c Improved SweetHome 3D importer (#17165)
* Fixed access to Addon::Metadat::Url attributes

* Fixed invalid vector in distance calculation

* SH3D importer initial version

* Cleaned up and added baseboard

* Make sure notificationWidth is properly enabled/disabled

* Added furnitureGroup, color prefs, light weight mesh object

* Allow to join walls

* Prepare to join wall, improved status feedback

* Removing trailing white space

* SH3D importer initial version

* Cleaned up and added baseboard

* Make sure notificationWidth is properly enabled/disabled

* Added furnitureGroup, color prefs, light weight mesh object

* Allow to join walls

* Prepare to join wall, improved status feedback

* Removing trailing white space

* fixing tipo, 80 charlines, etc

* Adding a basic import test

* Work in local but fails on pipeline. Commenting out.

* Adding testcase and join wall path

* Use ruled surface to fix failed sweep

* Fixed faces order when joining walls

* Fixed missing sample importer file

* Allow to change pref just before import

* Fixed excessive debug output

* Allow to import from string. Test use embedded string

* Fixed tipo in comment

Co-authored-by: João Matos <joao@tritao.eu>

* Improved door import

Also added coloring for wall section's edges when debuging

* Moved debug init script to FreeCAD-Docker repo

---------

Co-authored-by: João Matos <joao@tritao.eu>
Co-authored-by: Yorik van Havre <yorik@uncreated.net>
2024-12-20 09:46:39 +01:00
marioalexis bfa0998eb1 Fem: Set default CalculiX number of threads to Qt idealThreadCount 2024-12-19 14:38:30 -03:00
marioalexis ad414a1878 Fem: Add preference entry to set Gmsh number of threads 2024-12-19 14:38:30 -03:00
marioalexis d9c117a151 Fem: Add preference entry to set Netgen number of threads 2024-12-19 14:38:30 -03:00
marioalexis 401f01a9a3 Fem: Add preference entry to set Netgen log verbosity 2024-12-19 14:38:30 -03:00
Jacob Oursland 0609fa2335 pixi: Add run freecad configuration for Windows.
Windows requires running from an installed FreeCAD, not simply the build environment.  This
commit performs the install and execution from the installation environment.
2024-12-19 14:46:09 +01:00
wmayer 44065bfff4 Core: Format Placement::toString() and fix const correctness 2024-12-19 11:15:50 +01:00
Kohei Takahashi 6e5b6e3ead Base: Improved FindElement performance by reducing call of transcode 2024-12-18 20:19:12 +09:00
PaddleStroke 8e0bf192df Placement::tostring Fix fmt expression 2024-12-18 11:31:22 +01:00
Roy-043 7d2c10f4c1 BIM: fix Wiki links in BIM Tutorial 2024-12-18 09:40:36 +01:00
marioalexis b64549b348 Fem: Add electrostatic constraint symbol 2024-12-17 14:46:19 +01:00
luzpaz 82c7d013fb BIM: add docstrings to Arch.py
Closes #18560
2024-12-17 14:26:48 +01:00
Roy-043 d507cf3453 Merge pull request #18558 from Roy-043/Draft-Fix-handling-of-coin-nodes
Draft: Fix handling of coin nodes
2024-12-17 12:07:38 +01:00
PaddleStroke 1289997dfd Placement: Adds a helper to print the value of the placement. 2024-12-16 12:30:25 -05:00
Roy-043 db12b31b76 Draft: Fix handling of coin nodes
Fixes #18523.
2024-12-16 18:24:36 +01:00
Ladislav Michl 2afdd58a88 TechDraw: Ensure tolerance font size is > 0 2024-12-16 12:23:51 -05:00
PaddleStroke e657ce9473 TechDraw: Assembly exploded views : revert #17726 2024-12-16 11:22:26 -06:00
wmayer bbb5b45133 Part: Fix segmentation fault in Feature::getExportElementName
Calling ShapeType() on a null shape is not allowed and causes a segmentation fault. So, check beforehand if the shape is not null.

Fixes #18537
2024-12-16 12:17:19 -05:00
Chris Hennes a88f30877c Update src/Mod/TechDraw/Gui/QGILeaderLine.cpp 2024-12-16 18:16:03 +01:00
wandererfan 3cadb489d9 [TD]allow weld symbol on rotated leader 2024-12-16 18:16:03 +01:00
wandererfan a92acbd457 [TD]fix leader autohorizontal on rotated base view 2024-12-16 18:16:03 +01:00
luzpaz 23354b57cb CAM: Linting Path/Post/Processor.py (#18539)
Added various docstrings + fixed a typo
2024-12-16 11:09:17 -06:00
Jiří Pinkava 973ad7b5c8 Sketcher: clean-up geometry history configuation
Keep code almost 1:1 with LS3 branch, just ensure the variable is
initialized and code is documented
2024-12-16 12:07:40 -05:00
Chris Hennes b2619f339c Addon Manager: PythonDeps Cleanup and Testing 2024-12-16 17:51:29 +01:00
Chris Hennes 6254cb910b Addon Manager: Correct run_interruptable_subprocess
communicate() has to be called after a final kill() to get the output
2024-12-16 17:51:29 +01:00
Florian Foinant-Willig e607b5757e PartDesign: Add Std_ToggleFreeze to context menu 2024-12-16 11:47:52 -05:00
WandererFan fa327ec152 [TD]Fix transparent area in pdf (fix #18443) (#18507)
* [TD]fix transparent areas in pdf (#18443)

* [TD]restore use of PDF/A-1b format

- was not working in older versions of QPdfWriter
2024-12-16 10:47:08 -06:00
Chris Hennes e6e281e295 Addon Manager: Arch->BIM in list of known internal WBs 2024-12-16 17:43:51 +01:00
Syres916 74abfd39d9 [Gui] Show Preferences page by name rather than index 2024-12-16 11:43:13 -05:00
Chris Hennes 8d110b3b0b Merge pull request #18354 from CalligaroV/pd-hole-restore-missing-refineShapeIfActive
[PartDesign] Hole: restore missing call to FeatureAddSub::refineShapeIfActive()
2024-12-16 11:41:50 -05:00
marioalexis84 d1e65a47f3 Fem: Add smoothing filter extension to contours filter (#18088)
* Fem: Add smoothing filter extension to contours filter
2024-12-16 10:40:02 -06:00
wmayer 8fdbdccd8f Core: Move LCS migration warning to Std_Open command 2024-12-16 11:34:39 -05:00
Benjamin Nauck a2c980f7d6 Revert "Address the poor performance of the existing unique-name generation (#17944)"
This reverts commit 83202d8ad6.

# Conflicts:
#	src/Base/Tools.cpp
#	src/Base/Tools.h
2024-12-16 17:31:43 +01:00
Roy-043 844d88fb7a BIM: Fix ArchReference problem caused by TNP code
Due to TNP code Document.xml can contain (for example)` <Part ElementMap="0.4" file="Box001.Shape.brp"/>` instead of `<Part file="Box001.Shape.brp"/>`.
2024-12-16 15:23:47 +01:00
wmayer e698c73a3a Part: Fix crash due to infinite recursion 2024-12-15 16:20:30 +01:00
wmayer aa228f2b32 Core: Fix false-positive in migrateXAxisPlacement()
Use a looser tolerance to compare the rotations of the axes and planes of the coordinate system
2024-12-15 11:34:03 +01:00
Furgo e458526279 Disable external zipios usage for Debian builds 2024-12-14 10:49:32 -05:00
Jacob Oursland e3d81eaf69 CI: Enable GitHub Problem Matchers for compiler warnings. 2024-12-14 10:46:06 -05:00
Chris Hennes 7c1d984b7a App: Fix encoding of Datums.cpp 2024-12-14 14:31:41 +01:00
Chris Hennes b25b83c1a5 Addon Manager: Support case of repo=None in worker 2024-12-13 20:29:19 -05:00
Chris Hennes 1500264079 Base: Add missing PCH include to ServiceProvider 2024-12-13 20:28:42 -05:00
Chris Hennes f663e4fce4 Gui: Rename variable to eliminate macro conflict
Windows.h defines 'near' and 'far' macros, and they are actually used in the Inventor codebase (so we can't just undefine them).
2024-12-13 20:28:18 -05:00
wmayer 5a6535d908 Fix several compiler warnings:
* Fix [-Wsign-compare]
* Fix [-Wc++20-designator]: designated initializers are a C++20 extension
* Fix [-Wunused-parameter]
2024-12-13 20:28:04 -05:00
Chris Hennes c80bb958f3 Merge pull request #18332 from Ondsel-Development/core_LCS3
Core Datums: Card4 : implement part subclasses.
2024-12-13 15:59:10 -05:00
Chris Mayo 21411fcf3a Remove LibPack FLANN comment
cMake/UseLibPack10x.cmake was removed in:
e0220e7830 ("Remove unused cMakes", 2022-02-22)
2024-12-13 21:19:36 +01:00
Chris Hennes 032a70140e CI: Remove readability-identifier-length check (#18403) 2024-12-13 16:23:50 -03:00
marioalexis 8ad0395e21 Gui: Add missing header <optional> 2024-12-13 13:53:15 -05:00
PaddleStroke fa8b273f7d Merge branch 'main' into core_LCS3 2024-12-13 18:48:35 +01:00
Andrea f5a4ec01f8 [Mod] Clean AssemblyObject.cpp
Removed dead code

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

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

.
2024-12-13 12:34:46 -05:00
kwahoo2 a4c85232c9 Gui: add method to select objects with a 3D ray (#16789)
* Implementation of ray picking method for 3d picking

* Ray picking logic moved to C++

(cherry picked from commit ed23214c0bce7b70fd1003a7c4612e2d0d7da4cb)

* formatting, do not return unecessary dict keys, near plane clipping
2024-12-13 11:32:37 -06:00
Vincent Belpois d4b7d074ee Sketcher: Fix double RMB to quite polyline after closed shape 2024-12-13 12:30:41 -05:00
mosfet80 29d685b452 Clean ViewProviderAssembly.cpp 2024-12-13 12:27:40 -05:00
Yorik van Havre 9efa615fb4 BIM: Fixed shape loading - fixes #18391 2024-12-13 12:22:04 -05:00
David Kaufman 1955f28053 [CAM] implement multipass profile operations (#17326)
* implement multipass profile operations

* [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>
2024-12-13 11:20:32 -06:00
wmayer 00f6fbeaa3 PD: Fix possible crash in up to shape 2024-12-13 12:15:49 -05:00
wmayer e7e410323e Sketch: Fix possible crash in BSpline::splineValue
There is an underflow of an unsigned int in the calling instance that sets the parameter 'p' to 2**32-1.
But the size of the passed vector is 0. To fix the crash first check if p is less then the size of the vector.

See: https://forum.freecad.org/viewtopic.php?t=92815
2024-12-13 12:08:31 -05:00
WandererFan f12999724b [TD]respect locale for date autofill (#18132)
* [TD]respect locale for date autofill

* [TD]fix merge conflict

* Apply suggestions from code review

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2024-12-13 11:07:54 -06:00
PaddleStroke 7620e0a958 TaskAttacher: Refactoring 2024-12-13 18:04:10 +01:00
PaddleStroke e517400ed9 LCS migration : replace warning by a QMessageBox. 2024-12-13 18:04:10 +01:00
PaddleStroke 1ce8f2c859 AssemblyObject: Use std::unordered_set instead of vector. 2024-12-13 18:04:10 +01:00
PaddleStroke 024fee7f97 Assembly: Enable the use of App::Datums 2024-12-13 18:04:10 +01:00
PaddleStroke 5d02008227 Remove PartDesign Datums commands from the UI. 2024-12-13 18:04:10 +01:00
PaddleStroke 4066100a79 Attacher.cpp: Remove special handling of App::Datums since it is already done in Part::Feature::getTopoShape 2024-12-13 18:04:10 +01:00
PaddleStroke c5fbbb3830 SubShapeBinder: Add support for point. 2024-12-13 18:04:10 +01:00
PaddleStroke 9504b7e569 PartDesign: Enable the use of the core datums as references. 2024-12-13 18:04:10 +01:00
PaddleStroke e76b638298 Task attacher: Handle initial selection when no refs. 2024-12-13 18:04:10 +01:00
PaddleStroke deb6ebd276 TaskAttacher: Fix the string maker such that it does not show TNP string. 2024-12-13 18:04:10 +01:00
PaddleStroke a6efacdf24 TaskAttacher: Make sure hierarchy is respected when adding references. 2024-12-13 18:04:10 +01:00
PaddleStroke 0a9a97fc63 Run precommit on TaskAttacher.cpp 2024-12-13 18:04:10 +01:00
PaddleStroke 32bf49cb8a Part: AttachExtension: Refactor to remove code duplicates. 2024-12-13 18:04:10 +01:00
PaddleStroke 48dbdacdbd Part: add datum objects and commands to create them. 2024-12-13 18:04:10 +01:00
PaddleStroke fc56730648 Core: Datums: Fix axis placement and add migration script. 2024-12-13 18:04:10 +01:00
Kacper Donat aed305da64 Base: Add Services and ServiceProvider
This is intended to be used for intra-module communication. Modules can
specify service that are then implemented by other modules. This way
we can use features from for example part in Core without relying on the
Part module explicitly.

Base does provide Service definition - which is basically an abstract
class with pure virtual methods. This service then can be implemented
in other modules and accessed in runtime via ServiceProvider class that
stores all implementations.

ServiceProvider does store multiple implementations so in theory it is
possible to use it to provide granular implementations. For example,
part can provide CenterOfMass service that provides center of mass for
part features, mesh can implement another one for meshes and then we can
iterate over all implementations and find one that can provide center of
2024-12-13 12:01:13 -05:00
Syres916 752b5dcf68 [Gui] Tree, set FontSize on start of application 2024-12-13 11:58:24 -05:00
LarryWoestman f1e67c9641 CAM: fixed A, B, and C axis handling; added relevant tests (#18103)
* CAM:  fixed A, B, and C axis handling; added relevant tests

* [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>
2024-12-13 10:55:47 -06:00
Kevin Martin 83202d8ad6 Address the poor performance of the existing unique-name generation (#17944)
* Address the poor performance of the existing unique-name generation

As described in Issue 16849, the existing Tools::getUniqueName method
requires calling code to form a vector of existing names to be avoided.

This leads to poor performance both in the O(n) cost of building such a
vector and also getUniqueName's O(n) algorithm for actually generating
the unique name (where 'n' is the number of pre-existing names).

This has  particularly noticeable cost in documents with large numbers
of DocumentObjects because generating both Names and Labels for each new
object incurs this cost. During an operation such as importing this
results in an O(n^2) time spent generating names.

The other major cost is in the saving of the temporary backup file,
which uses name generation for the "files" embedded in the Zip file.
Documents can easily need several such "files" for each object in the
document.

This update includes the following changes:

Create UniqueNameManager to keep a list of existing names organized in
a manner that eases unique-name generation. This class essentially acts
as a set of names, with the ability to add and remove names and check if
a name is already there, with the added ability to take a prototype name
and generate a unique form for it which is not already in the set.

Eliminate Tools::getUniqueName

Make DocumentObject naming use the new UniqueNameManager class

Make DocumentObject Label naming use the new UniqueNameManager class.
Labels are not always unique; unique labels are generated if the
settings at the time request it (and other conditions). Because of this
the Label management requires additionally keeping a map of counts
for labels which already exist more than once.
These collections are maintained via notifications of value changes on
the Label properties of the objects in the document.

Add Document::containsObject(DocumentObject*) for a definitive
test of an object being in a Document. This is needed because
DocumentObjects can be in a sort of limbo (e.g. when they are in the
Undo/Redo lists) where they have a parent linkage to the Document but
should not participate in Label collision checks.

Rename Document.getStandardObjectName to getStandardObjectLabel
to better represent what it does.

Use new UniqueNameManager for Writer internal filenames within the zip
file.

Eliminate unneeded Reader::FileNames collection. The file names
already exist in the FileList collection elements. The only existing
use for the FileNames collection was to determine if there were any
files at all, and with FileList and FileNames being parallel
vectors, they both had the same length so FileList could be used
for this test..

Use UniqueNameManager for document names and labels. This uses ad hoc
UniqueNameManager objects created on the spot on the assumption that
document creation is relatively rare and there are few documents, so
although the cost is O(n), n itself is small.

Use an ad hoc UniqueNameManager to name new DymanicProperty entries.
This is only done if a property of the proposed name already exists,
since such a check is more-or-less O(log(n)), almost never finds a
collision, and avoids the O(n) building of the UniqueNameManager.
If there is a collision an ad-hoc UniqueNameManager is built
and discarded after use.
The property management classes have a bit of a mess of methods
including several to populate various collection types with all
existing properties. Rather than introducing yet another such
collection-specific method to fill a UniqueNameManager, a
visitProperties method was added which calls a passed function for
each property. The existing code would be simpler if existing
fill-container methods all used this.
Ideally the PropertyContainer class would keep a central directory of
all properties ("static", Dynamic, and exposed by ExtensionContainer and
other derivations) and a permanent UniqueNameManager. However the
Property management is a bit of a mess making such a change a project
unto itself.

The unit tests for Tools:getUniqueName have been changed to test
UniqueNameManager.makeUniqueName instead.
This revealed a small regression insofar as passing a prototype name
like "xyz1234" to the old code would yield "xyz1235" whether or
not "xyz1234" already existed, while the new code will return the next
name above the currently-highest name on the "xyz" model, which could
be "xyz" or "xyz1".

* Correct wrong case on include path

* Implement suggested code changes
Also change the semantics of visitProperties to not have any short-circuit return

* Remove reference through undefined iterator

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

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

* Fix up some comments for DOxygen

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-12-13 10:54:46 -06:00
xtemp09 b1f93bc51e [Spreadsheet] Enable zoom in Spreadsheet (#16130)
* [Spreadsheet] Enable zoom in Spreadsheet

Closes #6094. This commit also fixes page tab order of Spreadsheet
settings in Preferences.

* Spreadsheet: apply clang-format

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2024-12-13 10:52:51 -06:00
Chris Hennes 0416ec1b4e Merge pull request #18405 from FreeCAD/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2024-12-13 11:52:03 -05:00
marioalexis c02aa87a35 Fem: Make it possible to run CalculiX with one core - fixes #18339 2024-12-13 11:50:59 -05:00
marioalexis 7550d54a01 Base: Add electromagnetic potential unit 2024-12-13 11:49:44 -05:00
efferre79 fe57e3176d cmake fixes for external OndselSolver building (#18379)
* Assembly: fix building with external OndselSolver

This commit pairs with f35b075e271e9cb3451f3439f7dc0274841a0838.
It solves two issues:

- remove hardcoded includes of 3rdparty files
- add missing include_directories()

* Assembly: add check for external OndselSolver includes
2024-12-13 10:46:46 -06:00
wasd845 f4f611163d Add export config directory specification feature (#15235) 2024-12-13 10:44:30 -06:00
mosfet80 eef368ae63 Cleqn BaseTests.py
Clean code
2024-12-13 11:42:37 -05:00
Florian Foinant-Willig c4528eb3a5 PartDesign: fix helix with negative angle 2024-12-13 11:41:55 -05:00
Kacper Donat d1f706050d TopoNaming: Refine - mark joined faces as modified not generated
This is parity change with LS3: https://github.com/realthunder/FreeCAD/blob/a9810d509a6f112b5ac03d4d4831b67e6bffd5b7/src/Mod/Part/App/TopoShapeEx.cpp#L3357
2024-12-13 11:41:29 -05:00
Chris Hennes 426a079262 Merge pull request #18200 from wwmayer/refactor_ply
Refactor and optimize PLY reader
2024-12-13 11:40:29 -05:00
Snow Faerie 8bc062b6e8 Fix and add menu accelerators (#15532)
* Fix and add menu accelerators: menus common to all workbenches

I use menu accelerators fairly often, so I find it very frustrating when
they are missing, or worse, they don't work due to the same letter being
assigned to several commands.

This patch adds accelerators to lots of menu entries missing them and
fixes broken accelerators.

Wherever possible, standard accelerator keys are used:
https://doc.qt.io/qt-5/accelerators.html

This commit covers accelerator fixes that are common to all workbenches.
Accelerator fixes for specific workbenches will be done in separate
commits.

* Add missing accelerators: Spreadsheet workbench
2024-12-13 10:39:30 -06:00
Chris Hennes 9a7063395a Merge pull request #18346 from wwmayer/fix_sketch
Fix SketchObjectPy::addExternal
2024-12-13 11:37:51 -05:00
Patryk Skowroński ad419828b0 Update for 3Dconnexion NavLib integration (#18433)
* Fixed QuickZoom crash & picking in ortho view

* Fixed QuickZoom for high DPI screens

* Fixed return value for SetHitLookFrom

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

* Removed whitespace from GetPointerPosition

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

---------

Co-authored-by: Patryk Skowroński <pskowronski@3dconnexion.com>
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2024-12-13 08:41:11 -06:00
wmayer 7c3164ff61 Part: Fix compiler warnings [-Wodr]
Type 'struct EdgePoints' violates the C++ One Definition Rule because it's defined in two different translation units
2024-12-13 09:24:19 -05:00
PaddleStroke 6780d8a514 Dark theme: tweak error color (#18468)
* Update FreeCAD Dark.cfg

* Update FreeCAD Dark.cfg

* Update FreeCAD Dark.cfg
2024-12-13 13:55:17 +01:00
Ronny Standtke d057fd7960 fixed loading of bim tutorial images 2024-12-12 10:46:08 +01:00
Yorik van Havre 2cc8c3e4c5 BIM: Fixes appearance defects coming from recent transparency and #18298 2024-12-12 09:43:02 +01:00
Yorik van Havre 7f456d854f BIM: Fixed whitespace 2024-12-11 10:24:43 +01:00
Yorik van Havre 1d6e60f558 BIM: NativeIFC 2D support - axes 2024-12-11 10:24:43 +01:00
Yorik van Havre a8b4fb485e BIM: NativeIFC 2D support - small fixes 2024-12-11 10:24:43 +01:00
Yorik van Havre a62ce903d3 BIM: NativeIFC 2D support - better context detetcion 2024-12-11 10:24:43 +01:00
Yorik van Havre 8577d1bb46 BIM: NativeIFC 2D support - misc fixes cf comment #2383181661 2024-12-11 10:24:43 +01:00
Yorik van Havre af84424a77 BIM: NativeIFC 2D support - section planes 2024-12-11 10:24:43 +01:00
Yorik van Havre 8406eae6c1 BIM: NativeIFC 2D support - optimized export of FreeCAD dimensions 2024-12-11 10:24:43 +01:00
Yorik van Havre 9c53a024c0 BIM: NativeIFC 2D support - dimensions 2024-12-11 10:24:43 +01:00
Yorik van Havre 4fba4abe5f BIM: Workaround for objects needing recompute 2024-12-11 10:24:43 +01:00
Yorik van Havre a2793dc903 BIM: NativeIFC 2D support - handling orphan elements and drawing groups 2024-12-11 10:24:43 +01:00
Yorik van Havre bf4a988301 BIM: NativeIFC 2D support - texts 2024-12-11 10:24:43 +01:00
Yorik van Havre 9c9d451ac6 BIM: NativeIFC 2D support - basic import/export + linework annotations 2024-12-11 10:24:43 +01:00
Yorik van Havre 7913280486 BIM: Support for NativeIFC in BimViews 2024-12-11 09:23:59 +01:00
Yorik van Havre 992e6d397c BIM: Support for active container 2024-12-11 09:23:59 +01:00
Yorik van Havre fbd7d201d5 BIM: BimViews upgrade 2024-12-11 09:23:59 +01:00
wmayer 438c6d730f Core: Fix pre-selection of coordinate system 2024-12-10 19:11:55 +01:00
wmayer ab5b53e972 Sketcher: Fix warning [-Wmaybe-uninitialized] 2024-12-10 12:32:41 -05:00
PaddleStroke 8b6b66040c SoShapeScale: Fix SoShapeScale does not take DPI scaling into account 2024-12-10 17:15:13 +01:00
PaddleStroke 396963006b Core: SoShapeScale fix weird scaling on viewport resize. See https://github.com/FreeCAD/FreeCAD/issues/18382#issuecomment-2527623758 2024-12-10 17:15:13 +01:00
luzpaz 20d64a7f0f Fix various typos
Found via `codespell -q 3 -L aci,addmin,ake,aline,alle,alledges,alocation,als,ang,anid,anormal,aply,apoints,ba,beginn,behaviour,bloaded,bottome,brushin,bu,byteorder,calculater,cancelled,cancelling,cas,cascade,centimetre,childrens,childs,colour,colours,commen,connexion,currenty,documentin,dof,doubleclick,dum,eiter,elemente,ende,feld,finde,findf,findn,fle,freez,graphin,hist,iff,incrementin,indexin,indicies,initialisation,initialise,initialised,initialises,initialisiert,inout,ist,itsel,kilometre,leadin,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oce,oder,ontop,orgin,orginx,orginy,ot,pard,parm,parms,pres,programm,que,rady,recurrance,renderin,rin,ro,rougly,sectionin,seperator,serie,shs,sinc,siz,som,strack,substraction,te,technic,thist,thru,tread,tru,ue,uint,unter,uptodate,vas,vertexes,vew,wallthickness,whitespaces -S "./.git,*.po,*.ts,*.pdf,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml,./src/Base/StackWalker.cpp,./build/doc/SourceDoc,./tools/build/WindowsInstaller/lang,./src/Mod/TechDraw/Templates/locale"`
2024-12-10 15:09:51 +01:00
wmayer ce55d6be75 Gui: Rename ViewProviderDatum::getRoot() to ViewProviderDatum::getDatumRoot()
Before the change the compiler raised the warning: 'Gui::ViewProviderDatum::getRoot' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
In the base class the method getRoot() is declared as const while in ViewProviderDatum it's not and that's why it's considered as an overloaded method.
However, this signature causes two problems:
1. In the client code it's not always clear which version of getRoot() should be called
2. It violates const-correctness

So, trying to declare the method ViewProviderDatum::getRoot() as const it now overrides the method of the base class (and fixes the warning) but
this doesn't lead to the expected result: See https://forum.freecad.org/viewtopic.php?p=796064#p796064

The other option is to rename the method. And this gives the expected result now.
2024-12-10 12:49:42 +01:00
Patryk Skowroński c3887bf120 Merge branch 'main' into tdx-mac 2024-12-10 12:39:49 +01:00
pre-commit-ci[bot] 9caa6d2c7b [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2024-12-09 17:29:33 -05:00
pre-commit-ci[bot] b0b843e34b [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pre-commit/mirrors-clang-format: 7d85583be209cb547946c82fbe51f4bc5dd1d017 → fed9a1f62c22af0bc846a260ebfeb0844368fd93](https://github.com/pre-commit/mirrors-clang-format/compare/7d85583be209cb547946c82fbe51f4bc5dd1d017...fed9a1f62c22af0bc846a260ebfeb0844368fd93)
2024-12-09 17:29:33 -05:00
Jacob Oursland 16ac5f9977 PartDesign: Fix failing TNP test. 2024-12-09 17:27:28 -05:00
Chris Hennes 1fdd27ad94 Points: add QMessageBox to PreCompiled.h 2024-12-09 17:01:17 -05:00
FEA-eng 1c35d08d87 FEM: Allow shell faces for tie constraint (#18325)
FEM: Update meshtools.py
2024-12-09 19:21:09 +01:00
Syres916 74e7df9676 [Sketcher] [Post 1.0] Allow CarbonCopy to work with SketchObjectPython (#15594) 2024-12-09 11:31:04 -06:00
Chris Hennes fde778faeb Merge pull request #18273 from Ondsel-Development/sk_group_drag
Sketcher: Group dragging
2024-12-09 12:29:49 -05:00
Vincent ebf528a653 Assembly: fix gears created with null radius and de-sync (#18275) 2024-12-09 11:23:05 -06:00
Yorik van Havre 2e7e01febe BIM: Updated NativeIFC unit tests (#18266)
* BIM: Updates NativeIFC self tests
2024-12-09 11:22:06 -06:00
mwganson 0d32639a11 [core] add copy table and paste table context menu items to App::PropertyVectorList property editor, addresses issue #17804 2024-12-09 18:14:11 +01:00
Chris Hennes 95ced0ecdb Addon Manager: Refactor progress reporting 2024-12-09 18:11:59 +01:00
wmayer 57ad518aeb Gui: Add SoPickStyle node to make an object un-selectable if needed 2024-12-09 18:10:15 +01:00
marioalexis a6b36f6e57 CMake: Decouple internal SMESH build from Fem build - fixes #18287 2024-12-09 12:09:30 -05:00
Murmele be8b2de07d Add possiblity to autosave current measurement and restarting new measurement (#17717)
* initial commit to implement more interactive measurement functionality

Files: TaskMeasure.cpp and TaskMeasure.h

* Enable artifacts for easy download

Files: sub_buildWindows.yml

* clearSelection before setting new selection

Files: TaskMeasure.cpp

* No need for mSkipSelectionChange

Reason/Description: Because the next onSelectionChanged will be triggered asynchronly
Files: TaskMeasure.cpp and TaskMeasure.h

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

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

* block selection

* Block selection must be done on the taskMeasure, because it is the signal observer

* Set autosave to false by default

Reason/Description: Because the measurement tool is intended to be a temporary tool
Files: TaskMeasure.cpp and TaskMeasure.h

* Add tooltip

Files: TaskMeasure.cpp

* No need to set the selection style

Reason: Because it was changed to normal, so no need to re set it
Files: TaskMeasure.cpp

* No need to clear and reset the selection

Reason/Description: Because it will be done directly in the application. It was required with greedy selection, but now it is anymore required
Files: TaskMeasure.cpp

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

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

* Revert "Enable artifacts for easy download"

This reverts commit 8118323ab4104ada1fb89eebbe72965c5f2f2b67.

* Move autosave and selection mode into a group box and add a possibility to hide those options

Files: TaskMeasure.cpp and TaskMeasure.h

* Use toolbutton with a normal menu instead of a normal QPushButton

Reason/Description: Because it integrates much better
Files: TaskMeasure.cpp and TaskMeasure.h

* QAction uses a bool for the checkstate

Files: TaskMeasure.cpp and TaskMeasure.h

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

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

* Fix compile warnings

Reason/Description: cleanup and fix warnings
Files: TaskMeasure.cpp and TaskMeasure.h

* Add better tool tip

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

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

* fix typo

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-12-09 11:08:02 -06:00
marioalexis babc88f40d Fem: Add options for Elmer solver output file - fixes #17569 2024-12-09 12:06:42 -05:00
bgbsww 5266a3b26d Toponaming: Add a plane matching based heuristic to TNP mitigation (#16803)
* Add a plane matching based heuristic to TNP mitigation

* Improve comments, add test
2024-12-09 11:06:02 -06:00
wwmayer 94cf4efd87 CMake: Report use of ccache in the summary (#18245)
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2024-12-09 11:01:32 -06:00
wmayer e51eef2195 Import: Fix of alpha channel misinterpretation 2024-12-09 12:00:15 -05:00
Chris Hennes 9bb6c83517 Merge pull request #18182 from oursland/pixi
Add pixi package manager support.
2024-12-09 11:57:13 -05:00
Jonas Bähr e89fb4a92c PD: Fix error "duplicate command PartDesign_InvoluteGear"
Every time the InvoluteGearFeature python module was imported, and we're
in GUI context, the command "PartDesign_InvoluteGear" was registered. On
the 2nd (3rd, ...) time, this was reported as an error in the console,
like "error: Command.cpp(1841): duplicate command PartDesign_InvoluteGear"

The first import happens when the PartDesign FreeCAD Module is loaded,
via `InitGui.py`. Subsequent imports may happen when e.g. executing the
involute gear command or when running it's tests via FC's Test WB.

This change now registers the command only then the PartDesign WB is set
up in InitGui, not when importing the python module. The same fix is
applied for sprocket, where the same pattern for command registration
was used.

In addition, the import error catch was removed, which seems to be a copy
paste left-over from the ShaftWizard. In contrast to ShaftWizard,
involute gear and sprocket only use modules from the Python standard lib,
so I think this precaution is not worth the additional complexity, just
for hiding actual errors.
2024-12-09 11:53:23 -05:00
Florian Foinant-Willig 669f108fab fix testGiantHelix* 2024-12-09 17:52:02 +01:00
Florian Foinant-Willig 06ceeb12b6 Fix Arc length look for angle > pi
and factorize some code
2024-12-09 11:51:02 -05:00
wandererfan 0f6809f325 [TD]fix #18050 hidden line color 2024-12-09 17:39:54 +01:00
Vincent acd2cc9f79 Gui: allow LineEdit to grow with text - fixes #17747 (#18099) 2024-12-09 10:38:54 -06:00
wandererfan 8f8bdd5c93 [TD]add shape validation tool for debugging 2024-12-09 17:37:33 +01:00
Chris Hennes b160f1afc0 Merge pull request #18244 from wwmayer/space_mouse_runtime
Gui: Add runtime check to choose between modern and legacy space mous…
2024-12-09 11:36:17 -05:00
Yorik van Havre 29ea971777 BIM: Fixed copy-paste bug in nativeifc psets - Fixes #18293 2024-12-09 17:26:55 +01:00
Chris Hennes ba1b3b1cb7 cMake: Update for LibPack 3.1
LibPack 3.1 removes boost-python and adds pybind11
2024-12-09 10:26:00 -05:00
paul b1119ccc4f ArchStructure.py : Delete some trailing white space 2024-12-09 12:05:30 +01:00
Paul Lee 3dae0f09f1 [ArchStructure] Variant PropertrySet Support in ArchSketch
Now, user can create :

- Variant Layout / combination of ArchStructure (Slab) in addition to ArchWall and CurtainWall based on same ArchSketch, with another PropertySet
- Variant Properties / layer of ArchWall on same ArchSketch with different Width, Offset, Material, Height etc. to create Layers, Composite walls etc. (Layout, Layer, Combination, Composite, Elemented etc.)

FreeCAD Forum Discussion:

- https://forum.freecad.org/viewtopic.php?t=87721&start=130#p794785
2024-12-09 12:05:30 +01:00
wmayer 0607c555d6 Arch/Draft: Fix transparency vs. alpha issues
Fix #18295
2024-12-09 11:50:14 +01:00
Roy-043 e9e2df05a2 BIM: Improve onChanged Placement code
* Switched Component code to new Comp=True version of code.
* Made the Placement code in both files identical. This also solves that Rotating a BuildingPart was not propagated to children.
2024-12-09 09:30:08 +01:00
Max Wilfinger 24713ce44d Update auto-close_stale_issues_and_pull-requests.yml
Exclude Feature Requests from auto close action
2024-12-09 08:23:18 +01:00
Max Wilfinger 2f42341481 Merge pull request #18268 from marioalexis84/fem-post_pipeline
Fem: Fix FemPostPipeline base class
2024-12-08 21:56:25 +01:00
Johannes Thyssen Tishman dc03238349 Materials: Check if m_uuid is empty before adding to recents 2024-12-08 15:42:04 -05:00
mosfet80 4e4446c816 Update libs into .pre-commit-config.yaml
https://github.com/psf/black/releases/tag/24.10.0
https://github.com/pre-commit/pre-commit-hooks/releases/tag/v5.0.0
2024-12-08 15:25:23 -05:00
Chris Hennes 76bc4b1182 Merge pull request #15332 from aclex/apply_copy_on_change_calculations
Apply result of calculations with copy on change properties
2024-12-08 15:17:44 -05:00
Alexey Chernov 66e1c0154d Require read-only and output attributes on updated properties
Require the property to be both read-only and output for it to be
updated back from support to binder when calculated with expression in
support.
2024-12-08 15:12:38 -05:00
Alexey Chernov 4db7cd52e6 Use lambda to prevent code duplication 2024-12-08 15:12:38 -05:00
Alexey Chernov 2501296c95 Apply result of copy on change properties
Copy on change properties propagated to SubShapeBinder can be changed
there and then updated in the base body (support). On the other hand,
they might be used in calculation of some other properties in the base
body which could also be copy on change and propagated to the same
SubShapeBinder. It looks natural that these latter properties should be
updated with the calculation results as well.

Example:
Body has copy on change properties A = 200 mm and B = 3 * A = 600 mm.
SubShapeBinder with support of Body has A changed to 300 mm and expects
B = 3 * 300 mm = 900 mm. Without this change B is not updated and equals
to 600 mm in SubShapeBinder as well.
2024-12-08 15:12:38 -05:00
Max Wilfinger 1bb7d2ea3f Merge pull request #17282 from mwganson/points
[Points WB] fix issue where points are inaccurately imported when the…
2024-12-08 20:43:05 +01:00
Max Wilfinger d37115c692 Update auto-close_stale_issues_and_pull-requests.yml
add exception for Feature Requests
2024-12-08 18:28:45 +01:00
Max Wilfinger 2287f7ad4f Update auto-close_stale_issues_and_pull-requests.yml
only check for PRs not issues in inactive_pr action
2024-12-08 18:17:06 +01:00
Max Wilfinger 8ddede1233 Update auto-close_stale_issues_and_pull-requests.yml
Exception for Issues on PR action
2024-12-08 17:35:18 +01:00
wmayer 173df9447a Mesh: Fix linter warnings 2024-12-08 16:36:27 +01:00
Vincenzo Calligaro e09e107778 Updated tests affected by the modification
Signed-off-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>
2024-12-07 20:24:31 +01:00
wmayer cebcb7f66c Sketch: Fix SketchObjectPy::addExternal
Use PyArg_ParseTuple's support of optional arguments than doing it with several calls of PyArg_ParseTuple
with different arguments.
This is error-prone, leads to convoluted code logic and may even fail because once the error indicator is set
PyArg_ParseTuple may unexpectedly fail.
2024-12-07 19:55:49 +01:00
wmayer f2e57b4eb4 Sketch: Fix Python type hints in addExternal
The syntax of type hints in Python is 'argument name: argument type'.
For more details see: https://docs.python.org/3/library/typing.html
2024-12-07 19:28:04 +01:00
Max Wilfinger 46f561e2c5 add exception for actions/stale to not check and close issues and pr with the 'no-auto-close' label 2024-12-07 17:36:45 +01:00
Vincenzo Calligaro fe7bff5a9a [PartDesign] Hole: restore missing call to FeatureAddSub::refineShapeIfActive()
Signed-off-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>
2024-12-07 15:23:44 +01:00
Max Wilfinger f94a1e5f90 Added actions/stale for old, inactive issues and inactive PRs
Update and rename stale_issues.yml to auto-close_stale_issues_and_pull-requests.yml
Set ascending: true
2024-12-07 15:13:27 +01:00
wmayer 3cb80f9307 Mesh: Reduce time of importing ASCII PLY files by around 85 percent 2024-12-07 13:01:25 +01:00
wmayer 6270d7657d Mesh: Reduce time of importing binary PLY files by around 60 percent 2024-12-07 13:01:18 +01:00
wmayer 2437cd6de0 Mesh: Refactor ReaderPLY 2024-12-07 13:01:11 +01:00
wmayer 439abaf81f Mesh: move PLY reader to own class 2024-12-07 13:01:04 +01:00
FEA-eng f1995ef76c FEM: ResultsPurge - delete all results objects including pipelines and filters (#18328)
* FEM: Update resulttools.py

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

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

* FEM: Update resulttools.py

* FEM: Update commands.py

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

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

* FEM: Update resulttools.py

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-12-07 07:17:02 +01:00
Chris Hennes 94c57721b2 Merge pull request #17528 from kadet1090/get-object-T-helpers
Gui: Add getObject<T>() helpers to various classes
2024-12-06 19:51:11 -05:00
Kacper Donat 651cefde4d Gui: Use getObject<T>() helpers in classes
This commit is generated using regex based find and replace:

```
s/[\w:]+_cast\s*<([^>]+)\*>\s*\(\s*getObject\(\s*\)\)/getObject<$1>/
s/[\w:]+_cast\s*<([^>]+)\*>\s*\(\s*([^)]*)\s*->\s*getObject\(\s*\)\)/$2->getObject<$1>()/
```

To regenerate if needed.
2024-12-06 18:29:39 +01:00
Chris Hennes 7bd413066f Update src/Mod/Fem/App/FemPostPipeline.cpp 2024-12-06 11:29:37 -06:00
Yorik van Havre da45328f6f BIM: Fixed lock button with no doc - Fixes #18191 2024-12-06 12:28:09 -05:00
lorenz a3a0d316b1 cam: remove imghdr import (#18081) 2024-12-06 11:27:36 -06:00
Dan Henderson 95ef2d5147 Path: Add G84/G74 Tapping Operation (#8069) 2024-12-06 11:21:49 -06:00
Kacper Donat deb15a57e4 Gui: Add getObject<T>() helpers to various classes
Obtaining specific kind of document object is very common task. This
commit introduces handy helper which makes that a lot easier.
2024-12-06 18:19:53 +01:00
Furgo ad50bb9bef Improve Notification Area settings (#15207)
* Initial UI mockup for notification area settings

* First iteration of adapting the code to the Notification area settings UI reorg

* Remove redundant code to enable/disable widgets

* Reorganize notification area settings UI, improve settings and tooltips text

* Auto-wrap tooltips, add tooltips for each group

* Remove trailing space

* Fix merge error

* Further fixes from merge error

---------

Co-authored-by: WandererFan <WandererFan@gmail.com>
2024-12-06 11:15:52 -06:00
Jiří Mácha 878d9525dc Assembly: migrationScript2 and migrationScript4 improved and refactored
Description of Defects in migrationScript2 and migrationScript4:

Several additional issues have been identified in the Assembly
functions migrationScript4 and migrationScript2, beyond those fixed in
patch 71f0104bb2.

One common problem is that the Joint property Reference1 or Reference2
can be set to an invalid format. For example, user can manually cause
this issue by assigning an incorrect reference (e.g., the Z-axis) to
these properties via the FreeCAD GUI.  When this happens, internal
errors (exceptions and their corresponding Python call stack) are
reported in the Report View.  However, such information is not helpful
for the user to fix their 3D model.

Issues with the Current Implementation (Using migrationScript4 as
Reference):

- Lack of Type Validation for Reference1 and Reference2:

  The script does not check whether joint.Reference1[1] or
  joint.Reference2[1] is a sequence. If this condition is not met,
  statements like:

    sub1 = joint.Reference1[1][0]

  will throw an exception, printing the Python call stack.

- Lack of Length Validation for Sequences:

  The script does not ensure that the sequence length is sufficient
  for indexing. For example, joint.Reference1 and joint.Reference2
  must each have at least two elements to allow:

    joint.Reference1[1][1]
    joint.Reference2[1][1]

  Without validation, such calls can result in exceptions, printing the
  Python call stack.

- No Feedback on Problematic Joint:

  The user is not informed about which Assembly joint in the object
  hierarchy has an invalid Reference1 or Reference2. Depending on the
  size of the 3D model, identifying the defect can be time-consuming
  and frustrating without proper feedback.

This patch is focused on:

- Reporting Problematic Joint Path:

  A new function has been added to retrieve the full path to the
  Assembly joint. The return value (a string) is used to report the
  issue.

- Improved Exception Handling:

  Instead of adding more conditional checks (see above), exception
  handling is implemented. AttributeError, IndexError, and TypeError
  exceptions are caught. The exception message (excluding the call
  stack) is displayed at the end of a user-friendly warning.

- User-Friendly Warnings in the Report View:

  A single-line warning is now shown in the Report View, containing
  the following details:

    - Source of Warning:              'Assembly joint'
    - Location in the 3D Model: e.g., 'Assembly_XY.object_XY.joint_XY'
    - Problematic Attribute: e.g.,    'ReferenceXY'
    - Exception Message: e.g.,        'list index out of range'

- Refactoring and Optimization:

  The functions were refactored and optimized at the end of the
  conversion process.

Advantages:

- Cleaner Report View:
  Internal errors (e.g., Python call stacks) are no longer logged in
  the Report View, as they are not useful for end users. Only the
  exception message is displayed.

- Improved User Feedback:
  Users can now identify the problematic Assembly joint in the object
  hierarchy, saving significant time and effort.

- Robust and Concise Code:
  The solution simplifies the code while increasing its robustness.
2024-12-06 12:13:41 -05:00
marioalexis 726eee50c2 Fem: Fix references assignment in centrif example 2024-12-06 12:12:55 -05:00
Chris Hennes b87bdc1f84 Merge pull request #18126 from Ondsel-Development/core_LCS2
Core datums : Card2 : Core implementation
2024-12-06 12:12:04 -05:00
Chris Hennes bb3d51d848 Merge pull request #17799 from Roy-043/Gui-FreeCAD-Light-PreferencePack-should-not-change-PickRadius
Gui: Remove rogue preferences from PreferencePacks (Light theme should not change PickRadius)
2024-12-06 12:10:17 -05:00
Roy-043 28749e44dd Merge pull request #17379 from yorikvanhavre/draft-fix-annotation
Draft: better check for Gui object
2024-12-06 18:05:41 +01:00
Chris Hennes cdf6af935e Merge pull request #17315 from mwganson/ssclearall
[Spreadsheet] avoid removing user dynamic properties when clearing ce…
2024-12-06 11:57:45 -05:00
Florian Foinant-Willig 1eb8496aae [Core] Fix for frozen status
A frozen object prevents the document to be saved
The frozen status propagates into object inheritance
A frozen sketch is no more editable
Transform and Placement can't be changed for a frozen object
The freeze icon is reduced
2024-12-06 11:56:48 -05:00
Andrea b6697c12eb MOD: ImportOcaf2::getcolor
getcolor()
      fucntion optimizzazion.
      removed duplicated check.

Clean class ImportOCAF2
[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

.

Update ImportOCAF2.cpp

.
2024-12-06 11:55:51 -05:00
Andrea 6d899e7d57 [Mod] clean JoinFeatures.py
Removed dead code
.
2024-12-06 11:55:09 -05:00
Jiří Pinkava 3164ee1849 [PartDesign]: Sort sketches in Attach sketch tool alphabetically
The order of sketches in sketch attaching tool is now determined
by the order in which they were added to document.
Sorting them alphabetically makes IMHO much easier to find a sketch
by user, compared to current state, especially in large and complex
projects with lot of sketches. Of cuser thix expects the user
use sensible names for the sketches.
2024-12-06 11:52:59 -05:00
Nicola Cerone 571018807e Gui: Added SendToPythonConsole item in PartDesign tree view right-click menu. 2024-12-06 11:46:46 -05:00
marioalexis 7411ffd199 Fem: Add box and elliptical beam section types - fixes #12614 2024-12-06 11:44:05 -05:00
wmayer a4abc092b6 App: Extend/change color API:
* Also set/get alpha value in setValue/asValue
* Add new static method fromValue
2024-12-06 11:37:45 -05:00
PaddleStroke 4a80af74f4 PartDesign: revert c09ef94 and a3c4f4b to fix https://github.com/FreeCAD/FreeCAD/issues/17949 2024-12-06 11:36:51 -05:00
Chris Hennes 3e8b1de288 Update src/Mod/Points/Gui/Command.cpp 2024-12-06 10:33:56 -06:00
PaddleStroke b92bda03da Sketcher: Rename movePoint to moveGeometries. 2024-12-06 16:45:47 +01:00
Roy-043 e28286a2ef Draft: allow point for Trimex extrusion to be co-planar with the face
Fixes #14826.

If the point for the extrusion height is co-planar with the face, the normal of the face is used for the direction of the extrusion. The user can then enter a positive or negative value in the task panel. It is probably not the ideal solution, but better than what we have now I think.
2024-12-06 13:10:18 +01:00
FEA-eng 870e260bc9 FEM: Update checksanalysis.py 2024-12-05 21:21:17 +01:00
Roy-043 f9ceb901a0 Merge pull request #18314 from Roy-043/Draft-make-Trimex-extrude-mode-link-aware
Draft: make Trimex extrude mode link-aware
2024-12-05 20:03:19 +01:00
Roy-043 6858a1c0b4 Draft: make Trimex extrude mode link-aware
Fixes #14670.
2024-12-05 15:53:38 +01:00
PaddleStroke 760091bc8a Sketcher: Fix first external geo deletion failure. 2024-12-05 15:23:25 +01:00
Yorik van Havre d6c415e268 BIM: Fixed IFC type icon 2024-12-05 12:31:56 +01:00
Yorik van Havre 57637b6866 BIM: NativeIFC: Support for types 2024-12-05 12:31:56 +01:00
Roy-043 672819fd6b Merge pull request #18299 from Roy-043/Draft-change-position-of-Scale-multiplier-field-in-UI
Draft: change position of 'Scale multiplier' field in UI
2024-12-05 12:17:38 +01:00
Roy-043 e41ac03bcc Merge pull request #18307 from Roy-043/Draft-Fix-make_point-color-regression
Draft: Fix make_point color regression
2024-12-05 11:53:24 +01:00
Roy-043 32fa1f7411 Merge pull request #18212 from Roy-043/Draft-Fix-finish-behavior-of-Draft_Edit-on-doc-close
Draft: Fix finish behavior of commands on doc close
2024-12-05 11:52:07 +01:00
Roy-043 270d48b42b Draft: Fix make_point color regression
PR #12226 accidentally removed the handling of the color argument of the make_point function.
2024-12-05 08:36:34 +01:00
luzpaz 96c838f3b9 Fix various typos
Found with codespell
2024-12-04 23:18:00 -05:00
Roy-043 afdf07717d Draft: change position of 'Scale multiplier' field in UI
Fixes #16501.
2024-12-04 19:44:35 +01:00
looooo 245e2dc346 CI: add pixi github action 2024-12-04 08:02:29 -08:00
looooo ed5815eb4d pixi: add pixi.toml and pixi.lock 2024-12-04 08:02:29 -08:00
Vincent Belpois a97677ed2f Fix incorrect displayed default compression level in preferences 2024-12-04 09:50:50 -05:00
wmayer c1a75bbafc Fix compiler warnings 2024-12-04 09:50:09 -05:00
wmayer e235e94fda Start: Fix opening file for writing 2024-12-04 09:49:53 -05:00
Roy-043 7a7c042ab8 Draft: Legacy DXF importer: fix layer block behavior (#18129)
Fixes #16550.
Fixes #16552.

* Layer blocks receive a name with the "LayerBlock_" prefix.
* They are put in a layer if the "Use layer" import option is checked.
* If Draft or Sketch objects are created a Part_Compound instead of a Draft_Block is created. This was done because a Draft_Block does not claim its children. I am not sure about this change. Maybe the behavior of the Draft_Block should be changed instead.

@yorikvanhavre: do you know why a Draft_Block does not claim its children?
2024-12-04 14:45:55 +01:00
PaddleStroke 70972b3926 Sketcher: Group dragging 2024-12-04 10:58:29 +01:00
Abhiram d5be9cdafd Fix: Ensure IFC context menu actions are displayed correctly 2024-12-04 09:49:26 +01:00
Yorik van Havre 48b5543cf6 BIM: Added NativeIFC support to Add/remove tools 2024-12-04 09:46:26 +01:00
Yorik van Havre 5d1cba326b BIM: Fixed lock-unlock mode when opening IFC files - Fixes #18192 2024-12-04 09:25:06 +01:00
Chris Hennes d2d8bb5f86 Merge pull request #15811 from AjinkyaDahale/sk-refactor-stage-1
[Sketcher] Round 1 of refactors
2024-12-03 22:44:10 -05:00
wmayer 7dbef77f4a CMake: Handle build time checks to choose between modern and/or legacy space mouse devices 2024-12-03 20:32:06 +01:00
Ajinkya Dahale 05448b980a [Part] Avoid nullptr when using createArc
We could make `GeomCurve::createArc(...) = 0`, but then it needs to be
implemented in many subclasses which cannot be incomplete. It is implemented for
some of them, but others may need additional work (e.g. offsets), and would need
some exception throwing similar to what is now used.
2024-12-04 00:57:41 +05:30
Ajinkya Dahale f0f70daa0e [Sketcher][test] Add and use helper function to get points of interest 2024-12-04 00:57:41 +05:30
Ajinkya Dahale 6c3d2eff64 [Sketcher] Use variable for frequently used static cast in trim 2024-12-04 00:57:41 +05:30
Ajinkya Dahale b2c806d227 [Sketcher] Remove some commented code from SketchObject::trim()
...and replace with a TODO
2024-12-04 00:57:41 +05:30
Ajinkya Dahale d8a86e4e9d [Sketcher] Remove some unneeded comments 2024-12-04 00:57:41 +05:30
Ajinkya Dahale 0b32db53ed [Sketcher] Use switch-case in getPointForGeometry()
Minor readability improvement.
2024-12-04 00:57:41 +05:30
Ajinkya Dahale 5262482bc4 [Sketcher] Refactor SketchObject::trim()
1. Use `Part::GeomCurve::createArc()`
2. Refactor constraint logic in `trim`
2024-12-04 00:57:40 +05:30
Ajinkya Dahale 1453d5680a [Part] Add methods to create an arc of the curve 2024-12-04 00:57:40 +05:30
Ajinkya Dahale 1cee07cb26 [Sketcher] Add some utility functions to Sketcher::Constraint
`involvesGeoId`, `invovesGeoIdAndPosId`, `substituteIndexAndPos`
2024-12-04 00:57:40 +05:30
Ajinkya Dahale 0d27efbc2f [Sketcher] Some trivial for loop changes in SketchObject 2024-12-04 00:57:40 +05:30
Ajinkya Dahale ca989f73a2 [PartDesign] Fix TestTopologicalNamingProblem
Issue caused by refactor of `SketchObject::trim()`.
2024-12-04 00:57:40 +05:30
Ajinkya Dahale 7d8a8b7cc8 [Sketcher] Attempt to fix toponaming issue on trim refactor
TNP fix algorithm doesn't seem to like when edge with geoId 0 is deleted/made
construction after new geometry is added. Instead, we just ensure that one of
the newly added geometries becomes geoId 0 instead.

Making a `generateId(const Part::Geometry*)` was part of earlier attempts, but
still appears to remain relevant. This part can be reverted if necessary.
2024-12-04 00:57:40 +05:30
Ajinkya Dahale 263331f6fb [Sketcher] Refactor SketchObject::trim()
DO NOT MERGE because not complete: not all constraints are not transferred.

Includes:

* Adjust `deriveConstraintsForPieces` for trim
* Make sure new points are constrained on the cutting edges
* Add constraints at trim end(s) dependent on pre-exisiting ones with cutting curve(s). Also change tests to reflect that auto-coincidence can now be applied to non-periodic curves as well.

Known issue(s):
* Some redundant constraints may be added under certain circumstances (e.g. in
presence of perpendicular-via-point)
2024-12-04 00:57:40 +05:30
Ajinkya Dahale c823a6b270 [Sketcher] Refactor SketchObject::split() 2024-12-04 00:57:40 +05:30
Ajinkya Dahale b991c2fbc2 [Sketcher] Add tests for split and trim
Includes:
* Tests for splitting and trimming of various types of curves
* Assertions on constraints expected to be added on these curves
2024-12-04 00:57:40 +05:30
Ajinkya Dahale 423fb77e1f [Sketcher] Refactor SketchObject::AutoLockTangencyAndPerpty() 2024-12-04 00:57:40 +05:30
Ajinkya Dahale 4cc21e26e1 [Sketcher] Refactor SketchObject::delGeometry()
Just dropped cognitive complexity to 25.
2024-12-04 00:57:40 +05:30
Ajinkya Dahale 5f86d7f5a8 [Sketcher] Refactor SketchObject::getPoint()
...to reduce cognitive complexity.

Use templates to break longer functions. Also makes it possible to avoid
repetition of type-checking logic.
2024-12-04 00:57:39 +05:30
Ajinkya Dahale 311ac3591c [Sketcher][test] Add unit tests for SketchObject::getPoint() 2024-12-04 00:57:39 +05:30
Max Wilfinger 77ba6eed4f Update stale_issues.yml
Remove print outputs
2024-12-03 20:10:27 +01:00
Aik-Siong Koh 3326c33d83 Assembly: Simulation implementation 2024-12-03 20:07:04 +01:00
Max Wilfinger 4a2edae421 Update stale_issues.yml
fix label selection
2024-12-03 19:59:03 +01:00
wmayer 3884e2c34a Gui: Add runtime check to choose between modern and legacy space mouse devices 2024-12-03 18:54:21 +01:00
Max Wilfinger e2b36e583b fix stale action.
Add .yml extension and move to workflow folder.
2024-12-03 18:43:30 +01:00
Yorik van Havre 41ca58bf7c BIM: Support for property sets in Native IFC (#18067)
* BIM: UI to add properties and psets to IFC objects

* BIM: Support native IFC objects in BimProperties

* BIM: Support removing IFC properties

* BIM: Fixed lint issues
2024-12-03 16:08:27 +01:00
marioalexis c01e9ed63b Fem: Fix FemPostPipeline base class 2024-12-03 11:45:41 -03:00
Paul Lee 6a92b77632 [ArchWall] Further fix dumps()
Noted simply super().dumps() won't work as original method return dumps information.
2024-12-03 15:19:11 +01:00
Roy-043 284bb80412 BIM: import ToDo from correct file (#18221)
* BIM: import ToDo from correct file

* Oops, forgot to save some files.
2024-12-03 15:18:06 +01:00
wmayer 7fdc3b807a Fix compiler warnings 2024-12-03 10:16:08 +01:00
Ladislav Michl 0ee3c9f8e6 Base: Drop QString-std::string conversion functions from Tools
Convenience helpers function Tools::toStdString and Tools::fromStdString
were implemented for Qt4 or older to perform utf8 aware conversion as
QString::toStdString/QString::fromStdString were using toAscii/fromAscii
internally (see https://dreamswork.github.io/qt4/classQString.html).

Since Qt5 QString uses toUtf8/fromUTf8, which makes the helper functions
obsolete (see https://doc.qt.io/qt-5/qstring.html#fromStdString).
2024-12-02 23:30:53 -05:00
Vincent Belpois f9d1391588 Sketcher: remove auto-generated 'enum value' comments 2024-12-02 23:27:26 -05:00
PaddleStroke f6268ffd28 Assembly: Insert new part (#17922)
* Assembly: Joint Object : encapsulate the joint creation widget such that the task can be subclassed and ui customized by other commands.

* Assembly: Insert New Part

* Update src/Mod/Assembly/CommandInsertNewPart.py

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2024-12-02 18:34:02 +01:00
Max Wilfinger 7b7db5be0e add action/stale to keep the GitHub backlog tidy 2024-12-02 12:31:26 -05:00
Benjamin Bræstrup Sayoc 36f2aa6152 [TechDraw] Translations and grammer (#16301)
Co-authored-by: WandererFan <WandererFan@gmail.com>
2024-12-02 12:27:39 -05:00
Jacob Oursland 027581e367 CMake: modernize to use CMAKE_<LANG>_COMPILER_LAUNCHER for ccache. 2024-12-02 12:24:50 -05:00
Pieter Hijma 4c4fe8cc75 Gui: Fix VarSet dialog 2 digit problem 2024-12-02 12:17:56 -05:00
Rotzbua f0d07f6310 feat(win): add registry for silent uninstall
Entry is recommended to support the silent uninstall process without knowing the arguments.
https://nsis.sourceforge.io/Add_uninstall_information_to_Add/Remove_Programs#Recommended_values
2024-12-02 12:16:54 -05:00
PaddleStroke b29f2cdfe2 Assembly: Make ExplodedView: a group extension. So that we don't mimick group. Fixing the delete exploded view group issue 2024-12-02 12:14:43 -05:00
Fabio Rossi 18f63edadb add local OndselSolver includes only when not external 2024-12-02 12:04:54 -05:00
Florian Foinant-Willig 70184ba59d PartDesign: decouple refine and other geometric computation (#17008) 2024-12-02 10:57:30 -06:00
Benjamin Nauck e5c2c81685 Move back the assembly util functions to AssemblyUtil (#18020)
* Move back util functions to AssemblyUtils again

* Add getPropertyByName<T>() helper

* Improve constness in AssemblyUtils

* [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>
2024-12-02 10:48:48 -06:00
Yorik van Havre 8fb4be6108 BIM: Set opening name - fixes #16948 2024-12-02 11:44:52 -05:00
Yorik van Havre 8ba34888fd BIM: ensure the Base has the correct type (#17264)
* BIM: ensure the Base has the correct type - fixes #16409

* BIM: refactor according to chenne's comment
2024-12-02 10:44:11 -06:00
Chris Hennes d2b64f8fd6 Merge pull request #17826 from jbaehr/cam-fix-rename-cw-ccw-climb-conventional-main
CAM: Port #17655 to main: "Fix CW/CCW to Climb/Conventional rename"
2024-12-02 11:41:40 -05:00
Roy-043 91482cb38d Solve merge conflict
OK, there was indeed a merge conflict due to reformatting.
2024-12-02 11:35:28 -05:00
luzpaz ffd3a79751 Spreadsheet: use 'text' instead of 'foreground' in tooltip (#18018)
* Spreadsheet: use 'text' instead of 'foreground' in tooltip
2024-12-02 10:32:12 -06:00
Roy-043 7541371779 Pattern name Diamant -> Diamond 2024-12-02 11:40:01 +01:00
Roy-043 fa65fcce0d Draft: Display default file and pattern in hatch task panel
Fixes #18197.
2024-12-02 11:40:01 +01:00
martinRenou 6bf372aef6 Fixing OfflineRenderingUtils.guidata on BIMExample.FCstd 2024-12-02 11:36:39 +01:00
wmayer 63ad7d3fea Gui: Do not ignore alpha channel when converting QImage to SoSFImage
Fixes #18213: Sketcher constraints have black box backgrounds
2024-12-01 20:14:00 -05:00
Stephen Hurd a8ecf5c517 Fix compile on FreeBSD with spnav
If spnav is installed on a FreeBSD system, it will be detected,
but the build will fail.  With this change, it both builds
successfully and works on FreeBSD.
2024-12-01 10:40:30 +01:00
mosfet80 be3ad26140 Disable python2 support
Disable python2 support
2024-12-01 10:39:48 +01:00
wmayer 870424995c RE: Fix dialog title 2024-11-30 18:52:23 +01:00
Roy-043 0ae35d6bab Include other Draft commands 2024-11-30 16:48:41 +01:00
mosfet80 9f0e9a2af4 Clean MainWindow.cpp
Removed unused code
2024-11-30 14:13:46 +01:00
mosfet80 16b24e10d6 Update ubuntu.sh 2024-11-30 14:09:16 +01:00
mosfet80 ac912cc097 Update debian.sh 2024-11-30 14:09:16 +01:00
mosfet80 7d874094fd Update sub_buildUbuntu2004.yml 2024-11-30 14:09:16 +01:00
mosfet80 112a6630f7 Remove spd lib include 2024-11-30 14:09:16 +01:00
Roy-043 e40cab88ad Draft: Fix finish behavior of Draft_Edit on doc close
Forum topic:
https://forum.freecad.org/viewtopic.php?p=794746#p794746
2024-11-30 11:47:10 +01:00
wmayer d010645d23 Fix compiler warnings 2024-11-30 00:46:05 +01:00
Chris Mayo 795c4df1c3 Remove MeshPy::coarsen() and code using GTS
FC_USE_GTS not used since before:
1162aaea88 ("Remove references to gts and ode", 2012-07-05)

GTSAlgos.h and GTSAlgos.cpp removed in:
d1431f405c ("[Mesh] remove GTSAlgos", 2022-11-11)

MeshPy::coarsen() added not later than 2011 and never implemented.
2024-11-29 23:42:28 +01:00
Jiří Pinkava 800a5cffbb Gui: remove unused MDITabbar and MainWindowTabBar classes 2024-11-29 21:20:57 +01:00
Roy-043 0cd5768fbd Draft: Draft_Fillet: fix error in #17945 (#18150)
* Draft: Draft_Fillet: fix error in #17945

In #17945 the delete option of the command results in an error if subobjects are selected.

* Command should not be available if there is no selection

* Update copyright notice
2024-11-29 20:37:48 +01:00
Max Wilfinger f0ba161bdf Update Sketcher external icons and cursors 2024-11-29 20:31:39 +01:00
wandererfan 797c1180b0 [TD]prevent use of non-exist/hidden tab in exports 2024-11-29 12:28:25 -05:00
wandererfan 8581cd01e2 [TD]prevent crash on attempt to print hidden page 2024-11-29 12:28:25 -05:00
wandererfan 2e82c330d4 [TD]prevent fail on auto switch to hidden tab 2024-11-29 12:28:25 -05:00
wandererfan 1ef62a1de8 [TD]add preference for auto workbench switch 2024-11-29 12:28:25 -05:00
PaddleStroke 7c15b3d240 Sketcher: OVP were drawn at wrong position when editing a sketch from link (#18060)
* Sketcher: OVP were drawn at wrong position when editing a sketch from a link.

* Update src/Mod/Sketcher/Gui/DrawSketchController.h

Co-authored-by: Adrián Insaurralde Avalos <36372335+adrianinsaval@users.noreply.github.com>

---------

Co-authored-by: Adrián Insaurralde Avalos <36372335+adrianinsaval@users.noreply.github.com>
2024-11-29 12:12:48 -05:00
Max Wilfinger cafefafdf1 replaced .xpm with .svg 2024-11-29 12:09:42 -05:00
Max Wilfinger 45a95599a0 remove .xpm icons 2024-11-29 12:09:42 -05:00
Roy-043 1e00d8f898 Merge pull request #18142 from Roy-043/Draft-fix-focus-behavior-of-radius-input
Draft: fix focus behavior of radius input
2024-11-29 18:08:20 +01:00
PaddleStroke ef3445e9e1 Core / Assembly: Add a way for vp edit modes to be restored. 2024-11-29 12:04:25 -05:00
PaddleStroke 374c5713b2 PartDesign: Fix newSketch not working when editing a body from an external file. 2024-11-29 12:00:41 -05:00
Roy-043 27d2e5d07f Merge pull request #18164 from Roy-043/Draft-Fix-cursor-scaling-for-xcb-platform
Draft: Fix cursor scaling for xcb platform
2024-11-29 17:56:06 +01:00
bdieterm 9410a5e982 Gui: use utf-8 encoding for saving recorded macros
FCMacros always have the header "# -*- coding: utf-8 -*".
But the QTextStream class in Qt5 does not always use utf-8 for saving the text file.
2024-11-29 11:55:17 -05:00
Roy-043 d9a4f8a590 Draft: fix color of arrays (#18123)
If `get_diffuse_color` returned a list with a single color, the list was wrongly multiplied. Regression introduced in V0.21, but in that version the error was masked by how Core handled the diffuse color.

Fixes #17052.
2024-11-29 17:54:29 +01:00
PaddleStroke e2f998f301 Sketcher: External: Change style to : defining are solid lines. Non-defining dashed. Both use external color. 2024-11-29 11:36:55 -05:00
PaddleStroke 63414bf06b Sketcher: Hide External BSpline overlay informations. 2024-11-29 11:36:55 -05:00
PaddleStroke ac788df608 Sketcher: Rename External to Projection 2024-11-29 11:36:55 -05:00
PaddleStroke 0e5e071d72 Sketcher: Intersection externals 2024-11-29 11:36:55 -05:00
PaddleStroke f3c79302c4 Sketcher: Defining External geos. 2024-11-29 11:36:55 -05:00
PaddleStroke 1c514f5a15 External geos : Enable face selection 2024-11-29 11:36:55 -05:00
Roy-043 735a07678d Draft: Draft_Split: apply original view props to split off object
Fixes #16210.

Note that `Draft.format_object` is called from gui_split.py (in the commit). This is not consistent with other tools where this is handled in the `make_*` functions. In this case the new object is formatted twice. The 1st time by the `make_wire` code which (wrongly) applies the current default props.
2024-11-29 10:56:29 +01:00
Roy-043 42d09e08d5 Draft: fix handling of Links in TD DraftViews
Forum topic:
https://forum.freecad.org/viewtopic.php?t=92476

For LinkGroups and Links to Std_Groups that do not have a default placement, a temporary hidden document is used to handle the placement of their children. This is a bit of a hack of course.
2024-11-29 10:55:31 +01:00
Roy-043 bc5bf9bbdc Draft: Sort AutoGroup dropdown menu alphabetically
Fixes #16191.
2024-11-29 10:51:00 +01:00
Paul Lee dbb412ff47 [ArchWall] loads() dumps() to call parent methods 2024-11-29 10:28:53 +01:00
Paul Lee d973e3428f [ArchWall] Variant PropertrySet Support in ArchSketch
Now, user can create :

-  Variant Layout / combination of ArchWall, CurtainWall, Slab based on same ArchSketch, with another PropertySet
-  Variant Properties / layer of ArchWall on same ArchSketch with different Width, Offset, Material, Height etc. to create Layers, Composite walls etc.
   (Layout, Layer, Combination, Composite, Elemented etc.)

FreeCAD Forum Discussion:
- https://forum.freecad.org/viewtopic.php?p=784622#p784622
- https://forum.freecad.org/viewtopic.php?p=785583#p785583
2024-11-29 10:28:53 +01:00
wmayer a435720363 pre-commit: Exclude 3rd party code from auto-formatting 2024-11-29 07:38:02 +01:00
wmayer 53d39c6c91 App: Apply clang format (part 3) 2024-11-29 07:14:32 +01:00
wmayer a372678e98 Gui: Support of converting 64-bit images 2024-11-28 19:41:18 +01:00
wmayer b9cc17b2fd Gui: Add a new display mode for image without shading 2024-11-28 19:39:00 +01:00
wmayer 238390127b Gui: Allow to override onBeforeChange in view objects 2024-11-28 19:38:10 +01:00
wmayer 597e42d12f Test: Add unit test to read in 3MF file 2024-11-28 19:36:58 +01:00
wmayer c534e655f9 Mesh: Improve 3MF format to support files from 'Make World' 2024-11-28 19:36:58 +01:00
wwmayer c0b9191cf5 Add doc string to SoFCTransform
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2024-11-28 19:31:44 +01:00
wmayer f7da5f8505 Core: Implement SoFCTransform node
In its doAction() method it only sets the model matrix if it's not the identity matrix.
This improves the issue #7606
2024-11-28 19:31:44 +01:00
wmayer f51804729e Start: Fix extracting thumbnails on Windows 2024-11-28 18:56:37 +01:00
wmayer 5202748c0a Gui: Fix some linter warnings 2024-11-28 18:41:42 +01:00
wmayer f741655bf6 Gui: Apply clang-format 2024-11-28 18:41:42 +01:00
wmayer 82b4dcd58a Gui: Fixes #16637: Can no longer set transparency of Link faces 2024-11-28 18:41:42 +01:00
wmayer 601637320d PD: Add test case to show the fix for the crash with active objects 2024-11-28 17:15:39 +01:00
wmayer d798901515 Core: Fix crash in ActiveObjectList
Forum: https://forum.freecad.org/viewtopic.php?t=91823
2024-11-28 17:15:39 +01:00
wmayer 92e96839c9 PD: Avoid touching the document when opening pad or pocket dialog 2024-11-28 17:11:42 +01:00
wmayer d795acc378 Mesh: Add comment explaining the workaround 2024-11-28 17:07:34 +01:00
wmayer 8f18cfaf3a Mesh: Workaround to load 3mf files not supported by zipios library 2024-11-28 17:07:34 +01:00
Roy-043 0cf2cec816 Draft: Fix cursor scaling for xcb platform
Forum topic:
https://forum.freecad.org/viewtopic.php?t=92281

Apparently the extra scaling for the "xcb" platform is wrong.
2024-11-28 14:01:52 +01:00
wmayer 3595c301b7 Gui: Refactor PreferencePackManager & DlgPreferencePackManagementImp 2024-11-27 20:29:44 -05:00
Jacob Oursland 354d095787 CMake: emit message when ccache is detected. 2024-11-27 20:24:43 -05:00
Ladislav Michl 6860aab7ee Gui: propertyeditor: use std::string setPropertyValue
Avoid std::string->QString->std::string where possible.
2024-11-27 17:28:16 +01:00
Ladislav Michl a80c87c3a7 Gui: propertyeditor: add setPropertyValue with std::string argument 2024-11-27 17:28:16 +01:00
Ladislav Michl 7c2acdbf09 Gui: propertyeditor: Reformat, fix line endings
Instead of fixing whitespaces do a full reformat according to
current rules. No other changes.
2024-11-27 17:28:16 +01:00
Yury Shvedov 8e04c0a3dd Gui: take in account module-path argument
Use paths passed with `--module-path` argument to search for preference
packs

Change-Id: If168dbd99a826757290ee6b918f5b712305fe2bb
2024-11-27 15:43:28 +01:00
PaddleStroke b7f1a0c150 ViewProviderOrigin: Renamed to ViewProviderCoordinateSystem 2024-11-27 12:15:53 +01:00
Chris Hennes e186920ad2 Spreadsheet: Add tests for validAddressName and validAliases 2024-11-26 17:51:57 -06:00
Jacob Oursland fb7ce6405b CMake: Add missing target_link_directories() for OCCT. 2024-11-26 16:03:08 -05:00
Chris Hennes 33a83f0ee4 Update versions in SECURITY.md 2024-11-26 19:55:10 +01:00
PaddleStroke 19702dcb21 Core: Add App::LocalCoordinateSystem.
Most of App::Origin is moved into this sub class of App::Origin.
Add App::Point. Change graphics of the planes/axis.
Remove scale-by-content behavior and make it fixed size on screen.
2024-11-26 17:36:02 +01:00
wmayer 370c08213c Core: Fix unicode path names under Windows 2024-11-26 11:22:11 -05:00
wmayer 55d5123b9a Start: Implement Thumbnail Managing Standard
as specified here: https://specifications.freedesktop.org/thumbnail-spec/0.8.0/

The changes are:
* use MD5 as hashing algorithm
* write thumbnails to ~/.cache/thumbnails/normal
2024-11-26 11:14:52 -05:00
Jacob Oursland e8e82c4ff6 App: Reduce BOOST_VERSION workaround to fix boost symbol linker error on Win-Qt5. 2024-11-26 11:13:21 -05:00
Jacob Oursland d7e8cc8a54 Mesh: Add template type to WM4 TRational variables. 2024-11-26 11:10:13 -05:00
Jacob Oursland ae89309329 Mesh: move counter declaration to loop-local. 2024-11-26 11:10:13 -05:00
PaddleStroke 5eb09c8e45 Core: GetGlobalPlacement: empty subname should not return. 2024-11-26 10:59:48 -05:00
Roy-043 6b1131dd5a Draft: fix focus behavior of radius input
Fixes #16249.

The input did receive the focus, but the existing value was not selected.

The circle, arc, trim and offset tools had a related issue. The whole radius/distance value, including the unit string, was selected, instead of just the numerical portion.
2024-11-26 16:48:35 +01:00
wmayer 3070832e54 Start: Show thumbnail if filename contains a dot
Fixes #18109
2024-11-26 09:42:05 -05:00
wmayer 7912dc2a62 Gui: Fix issues in About dialog 2024-11-26 09:41:24 -05:00
PaddleStroke aa2e4ca1cb Rename ViewProviderOriginFeature to ViewProviderDatum 2024-11-26 15:36:48 +01:00
PaddleStroke 3e33cf61e5 Rename 'OriginFeature' to 'DatumElement' 2024-11-26 15:36:48 +01:00
PaddleStroke 3c1358da10 Core: Rename 'OriginFeature' file to 'Datums' 2024-11-26 15:36:48 +01:00
Chris Hennes 12a648145a Spreadsheet: Add C++ test framework 2024-11-25 23:09:35 -06:00
BMaxV d365d66413 Change button text to confirm copy. (#17696)
* Change button text to confirm copy.
* translation and timer->reset
* timer->single shot + text variable

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2024-11-25 13:59:49 -06:00
Max Wilfinger 3ef47da598 Merge pull request #18125 from Ondsel-Development/core_LCS1
Core Datum : Card 1 : icons
2024-11-25 20:58:42 +01:00
Roy-043 9d38f0e857 Draft: Legacy DXF importer: fix layer block behavior
Fixes #16550.
Fixes #16552.

* Layer blocks receive a name with the "LayerBlock_" prefix.
* They are put in a layer if the "Use layer" import option is checked.
* If Draft or Sketch objects are created a Part_Compound instead of a Draft_Block is created. This was done because a Draft_Block does not claim its children. I am not sure about this change. Maybe the behavior of the Draft_Block should be changed instead.

@yorikvanhavre: do you know why a Draft_Block does not claim its children?
2024-11-25 20:15:16 +01:00
Kacper Donat 710542d121 Assembly: Refactor get/setDraggerPlacement
It seems that Base has very handy helpers for converting between various
types. This simplifies code of ViewProviderAssembly::get/setDraggerPlacement a
lot.
2024-11-25 12:27:35 -05:00
Florian Foinant-Willig 5969df37f4 Sketcher infinite axes 2024-11-25 18:27:10 +01:00
PaddleStroke fbd7f7090c Sketcher: ViewProviderSketch remove unecessary updateColor and applyCursor. 2024-11-25 12:25:58 -05:00
wmayer eb3ce44b58 Core: Do not detach object from document before the call of breakDependency
This fixes #17900
2024-11-25 18:25:17 +01:00
Roy-043 9ec977f89d Draft: Allow selection of subelements for Draft_Fillet
Fixes #17505.
2024-11-25 18:21:50 +01:00
PaddleStroke 99b2f23214 Assembly: Fix joints not being deleted when subassembly is deleted. 2024-11-25 18:20:46 +01:00
Benjamin Nauck 8945260a7e Add two options to disable addons
Addons can be disabled in two ways:
 * by adding a command line argument `--disable-addon <addon>`
 * and by creating a `ALL_ADDONS_DISABLED` file in the mod root of the addons to disable
2024-11-25 12:16:43 -05:00
bgbsww 7c1a5ebd69 Tweak VSCode debug port to work with current versions 2024-11-25 12:09:28 -05:00
PaddleStroke a9bc28daa0 Add Std_Point.svg icon for datum points 2024-11-25 18:06:28 +01:00
PaddleStroke 93c807b6a6 Update Std_Axis.svg as it had poor visibility in dark themes: planes and axis looked both like planes. 2024-11-25 18:06:27 +01:00
wmayer c32628ec0d Part: Fix alpha <> transparency conversion 2024-11-25 12:05:25 -05:00
Chris Hennes e3f6fc5708 Merge pull request #14362 from je-cook/fix_deprecated_import_style
Fem: Fix deprecated import style
2024-11-25 12:02:11 -05:00
marioalexis 96cc00b74e Fem: Check empty remaining femelements array - fixes #17570 2024-11-25 12:01:44 -05:00
Chris Mayo 7f0d69a3bd BIM: Replace use of ArchWorkbench in ArchSelectionObserver 2024-11-25 18:00:52 +01:00
David Carter 89049add9e Materials: Physical property attributes
Add dynamic attributes to report the physical attributes of a part that
are automatically recalculaated when the shape or material changes.
These values are accessible from the part data display and as attributes
within Python
2024-11-25 18:00:29 +01:00
PaddleStroke 89fcfe95ee Sketcher: Offset & tranforms: enable external geos input. (#17615)
* Sketcher: Offset & tranforms: enable external geos input.
* Sketcher: enable delGeometries to handle external geos.
2024-11-25 10:57:16 -06:00
hasecilu fe1cfca339 Gui: Add suffix to programatically generated preference page's spinboxes
Units contain a leading space.

Command to generate the C++ code on `src` dir:
$ python3 -m cogapp -r Gui/PreferencePages/DlgSettingsAdvanced.{h,cpp}
2024-11-25 17:52:51 +01:00
hasecilu eebe20806d Gui: Add "px" suffix on preference page as width unit 2024-11-25 17:52:51 +01:00
Syres916 c016e81a7f [Part] [Post 1.0] Preferences > Shape view > Maximum angle deflection warn user... (#16007)
* [Part] Preferences max angle deflection alert

* [Part] Comment added as requested
2024-11-25 10:50:58 -06:00
wandererfan 1de4dc600d [TD]fix area calculation 2024-11-25 17:49:21 +01:00
Roy-043 298e6921a7 Draft: fix color of arrays
If `get_diffuse_color` returned a list with a single color, the list was wrongly multiplied. Regression introduced in V0.21, but in that version the error was masked by how Core handled the diffuse color.

Fixes #17052.
2024-11-25 17:43:56 +01:00
paul 6c85c37b38 [Draft Gui_Stretch] Improve Stretch Rectangle Behaviour (#18063)
* [Draft gui_stretch] Improve Stretch Rectangle Behaviour

Feature Improvement discussed at FreeCAD Forum :
- https://forum.freecad.org/viewtopic.php?t=92124#p792118  (Draft_Stretching the whole rectangle creates a new wire)

Currently, 3 cases in general, proposed PR improve Case 3 below :

1. The original object is a Rectangle, if after stretching it is no longer a rectangle, it makes a copy turning it into a Wire which reflect the result of stretching.
   - Current behanviour is good for user, no change.
2. If after stretching it is still a rectangle, the code just resize the original.
   - Current behanviour is good for user, no change.
3. Now, if the user 'stretch' the whole rectangle, the code creates a copy as DWire in the 'stretched location'.
** - Users find this not intuitive, better just move the whole rectangle.
2024-11-25 14:47:06 +01:00
Roy-043 0656f19bde BIM+Draft: Bring back human figure
* For the human figure attached to the Draft grid a hard-coded point list is used (instead deriving the points from human figure.brep). This is more efficient and avoids a dependency on the BIM WB.
* The default for the human figure preference of the grid was changed to false. And the tooltip adjusted.
2024-11-25 13:34:53 +01:00
Roy-043 ed209dab68 Draft: minor improvements for gui_edit.py (#17970)
* Draft: minor improvements for gui_edit.py

* Fix error...
2024-11-25 13:34:23 +01:00
Roy-043 df97a3ad21 BIM: Fix calculation of fence sections (#18042)
* BIM: Fix calculation of fence sections

The length  and placement of fence sections was only correct if they were cut to size.

* Fix required another change.
2024-11-25 12:24:39 +01:00
Roy-043 638e677bd3 Increase the delay to be on the safe side. 2024-11-25 11:40:55 +01:00
Roy-043 51666cafc0 Draft: avoid listing status bar widgets in toolbar area context menu
Fixes #16832.

In V1.0 the two Draft status bar widgets appear as checkboxes without label in the toolbar area context menu. They should not be listed in that menu, as was the case in V0.21. Their visibility is controlled via preferences.

Additionally, in case the Draft WB is only preloaded, the widgets would display in another workbench. This is prevented by using a delay.
2024-11-25 11:40:55 +01:00
Jonas Bähr 7c1e4ab630 CAM: Configure Helix via CutMode, not Direction (#14314)
To harmonize the various CAM operations, the helical drill shall also be
configured using the cut mode (Climb/Conventional) just like Pocket or
FaceMill.
This means, the path direction (CW/CCW) is now a hidden read-only output
property, calculated from the side (Inside/OutSide) and the here newly
introduced cut mode.
The spindle direction is not yet taken into account and is always assumed
to be "Forward".
The GUI strings are kept compatible with what RP#14364 introduced becasue
of the v1.0 release string freeze. They need revision once back on the
main branch.
2024-11-24 09:18:23 +01:00
Jonas Bähr d436a595e8 Revert "CAM: Rename CW/CCW to Climb/Conventional for consistency (#14364)"
This reverts commit 7e62d07538 and adapts
to the in between commits where necessary.
 - CAM: apply precommit 7274dac185
 - CAM: rename "Tests" to "CAMTests" 2ff4914fd8

Motivations for the revert:
 - Instead of actually implementing #14364 only a search and replace in
   the enums values has been performed. But this does not mean the
   feature is there, becasue "climb"/"conventional" milling depends not
   only on the path's direction, but also on the spindle direction and
   whether the milled feature is "inside" or "outside".
 - In half of the cases of every changed operation or dressup, depending
   on whether we mill "inside" or "outside", we now get the wrong results.
 - In the (rarer) case of a reversed spindle direction, the "other half"
   is wrong.
 - Files created with previous versions of FreeCAD cannot be recomputed
   any longer because there were no precautions on document restore.
 - In files created with previous versions of FreeCAD one cannot change
   the broken operation as the choices are now invalid.
 - The original search/replace was incomplete.
 - Only property values have been changed, the property names are still
   inconsistent ("Direction" vs "Cutting Mode").
 - The original search/replace also changed internal APIs where the
   "climb"/"conventional" wording is not applicable as there is no
   notation of "inside"/"outside" or "forward"/"reverse". If only the
   path's direction is concerned, "CW"/"CCW" fits better.
2024-11-24 09:18:23 +01:00
Jonas Bähr 3106e2615d CAM: Fix and enable TestPathHelix again
Since the fixture in use has holes smaller than the default tool dimeter,
executing a helix operation with default parameters (i.e. all holes)
used to fail with an exception. Some tests work around this by actively
chaning the tool diameter, and this fix is now moved into the global
setup where the respective fixture is loaded.

The reason why the tests got disabled in the first place is unclear.
2024-11-24 09:18:23 +01:00
Jonas Bähr 1917d15bd1 CAM: Add tests loading a helical path created with v0.21
This demonstrates a regression introduced with PR #14364, where documents
containing helix operations cannot be recomputed any more (see #15643).
This is in preparation for a fix and to ensure we don't break it again.
The fixture has been created with the official mac build of FreeCAD-0.21.1
2024-11-24 09:18:23 +01:00
marioalexis 45134cef16 App: Set PropertyColor to opaque by default 2024-11-23 19:48:44 +01:00
mosfet80 b5a43eb220 [App] clean AppJtReader.cpp (#15626)
Clean code
2024-11-22 11:25:42 -06:00
marioalexis 98a15bcc9d Fem: Avoid legacy Netgen meshing if there is no referenced shape - fixes #17814 2024-11-22 12:24:46 -05:00
marioalexis be8dfbfc7e Fem: Add preference entry to set Gmsh log verbosity - fixes #17673 2024-11-22 12:24:11 -05:00
mwganson a9554c2fe0 [Part CheckGeometry] add results entry for valid shapes without any errors, show skipped objects, add report view generator link in results panel label, addresses issue #17545 2024-11-22 12:22:01 -05:00
Chris Hennes 64f63ae97e Merge pull request #15528 from ppphp/move_some_inventor
refactor: move some nodes to Inventor folder
2024-11-22 12:20:50 -05:00
bdieterm b63ba9b4f4 Gui: improve performance of macro execution and fix time measurement
This commit improves the performance of Python code from FreeCAD macros by:
* using the chrono C++ stdlib header instead of QTime
* checking for the elapsed time ONLY every 1000th Python opcode execution

And this commit fixes time measurement by using a monotonic time source
instead of a normal one.
The previous implementation using QTime would give a negative time duration
if the start time is 23:59:59 and the end time is 00:00:01.

related commit: e78f74b01a
2024-11-22 12:20:14 -05:00
Kim Kirwan a0e0713fef Repair XML Files - fixes #10730
In ../src/Mod/Part/App/Geom2d/ sixteen out of seventeen XML
files needed repair as per the GitHub issue. Tabbing in those
sixteen files set to 4-spaces no-tab-chars. Other minor
changes as needed.
2024-11-22 12:18:11 -05:00
PaddleStroke 979075ce0d Assembly: Pressing Esc while a task is active will not escape edit mode 2024-11-22 12:15:57 -05:00
luzpaz 6034f06383 Gui: Remove newline from dialog string
This commit removes superflous newline that disrupts the flow of the sentence displayed in the VarSet dialog. See #16776
2024-11-22 12:13:53 -05:00
huguesdpdn-aerospace bc94cbb97e Bump OndelSolver version - Include compilation fix for Ubuntu with old GCC versions 2024-11-22 12:12:06 -05:00
Chris Hennes 500e5bed1c Merge pull request #17767 from wwmayer/issue_17764
Core: Avoid cyclic dependencies when dragging an object into a group
2024-11-22 12:11:15 -05:00
Chris Hennes b15bcbf8d1 Merge pull request #17170 from marioalexis84/fem-netgen_local_refinement
Fem: Add local refinement and second order linear for Netgen meshing
2024-11-22 12:05:39 -05:00
wmayer 3db3f7546d Gui: Add overloaded function Document::openEditingView3D(const App::DocumentObject*) 2024-11-22 12:00:56 -05:00
Pieter Hijma e63c335e05 Gui: Improve localization support in VarSet dialog (#17480)
* Gui: Improve localization support in VarSet dialog

* Gui: Adopt QObject translate

This is not the ideal implementation but for the 1.0 release this is
currently the better option.  A separate issue has been filed for post
1.0 in https://github.com/FreeCAD/FreeCAD/issues/17510 that also covers
the `DlgAddProperty`.
2024-11-22 11:00:19 -06:00
wmayer 28282e6800 PD: Cleanup code of TaskRevolutionParameters 2024-11-22 11:59:21 -05:00
mosfet80 841a10f2e0 Clean FindKDL.cmake
update orocos version used by oldest supported focal fossa
clean cmake
2024-11-22 11:53:12 -05:00
mwganson d8286158b0 [PartDesign] change claimChildren() function to include all profile objects except for other Part Design features 2024-11-22 11:51:30 -05:00
Yorik van Havre 73f3cd9f95 BIM: Only dusplay context menu items when in BIM WB - fixes #17043 2024-11-22 11:48:03 -05:00
Benjamin Nauck 19fa91253f Remove octal in expressions when there's a leading zero 2024-11-22 11:47:18 -05:00
Yorik van Havre 4bdb104bed BIM: Support for additions/subtractions in NativeIFC - fixes #16631 2024-11-22 11:38:36 -05:00
Zbyněk Winkler d2e407d096 Improve/fix debian docker build (#17003)
* fix paths following past renames

* add missing dependencies

* switch to debian:12 (bookworm)

* patch opencascade to silence warnings
2024-11-22 10:37:33 -06:00
haruka tsubota 2c1348fdc2 Add help message about customizing BOM export file format in Assembly workbench 2024-11-22 11:35:00 -05:00
mosfet80 5e21dd3b37 Delete src/Tools/generateTemplates/templateModuleGui.py
the file is never used
2024-11-22 11:34:08 -05:00
wmayer be1622176c Core: Fix dangling pointer in SoFCUnifiedSelection::setSelection
This fixes #17965: Measurement: Crash when clicking on COM label
2024-11-22 17:02:28 +01:00
wmayer aea09d4a45 MSVC: Fix compiler warnings 2024-11-22 16:53:00 +01:00
wmayer 6f23f01e50 Tests: Add unit test for PR #16763 2024-11-22 12:05:30 +01:00
wmayer 2137dbc8d0 Tests: Add unit test for PR #16576 2024-11-22 12:02:30 +01:00
wmayer 98fec525b0 PD: move refine model parameter to separate function 2024-11-22 11:59:49 +01:00
wmayer 0e0df5b92e Part: move refine model parameter to separate function 2024-11-22 11:59:49 +01:00
wmayer e299c46a94 Part: move model check to separate function
This is to avoid code duplication.
2024-11-22 11:59:49 +01:00
wmayer f3d84b601f PD: Fix convoluted event handling of dress-up task boxes 2024-11-22 11:55:46 +01:00
wmayer a4bc06219b Tests: Add unit test to explore a null shape 2024-11-22 10:52:45 +01:00
Max Wilfinger 2197d626b4 Update PROBLEM_REPORT.yml
Add "needs confirmation" as default tag for new issues.
2024-11-22 07:50:01 +01:00
wmayer 5771c94523 App: Apply clang format (part 2) 2024-11-21 21:17:42 +01:00
wmayer fcea9343b3 Mesh: Fix linter warnings 2024-11-21 21:16:55 +01:00
wmayer 7a2bfb7370 Mesh: Fix linter warnings 2024-11-21 18:30:22 +01:00
wmayer 4e82a0af48 App: Apply clang format (part 1) 2024-11-21 07:54:24 +01:00
wmayer ee18317e08 Part: Expose Geometry::isSame() to Python 2024-11-20 23:37:39 +01:00
wmayer 2819ca438e Start: fixes #17857: Icon-files of the startup screen are not removed from /tmp
It's basically a port of #10951 to the new start page implementation.

Note: Icon files are not removed but re-used instead.

The commit adds some new functions:

* getThumbnailsImage()
  Returns the name of the PNG inside a project file

* getThumbnailsName()
  Returns the directory name containing the image files

* getThumnailsParentDir()
  Returns the parent directory of the directory containing the image files

* getThumbnailsDir()
  Returns the path to the thumbnail directory. There is no need to always create a unique directory
  after each restart because it doesn't harm if the thumbnail directoy contains deprecated files.

* createThumbnailsDir()
  Creates the thumbnail directoy if it doesn't exist yet.

* getSha1Hash
  Helper function to compute a SHA-1 hash of a given path. If the same path is passed
  then the hash value will be the same.
  This way it can be avoided to create a different image file from a project file
  after each restart.

* getUniquePNG
  Computes the path of a PNG image file for a given project file. It's also possible
  to pass an arbitrary string as argument.

* useCachedPNG
  If the PNG image exists and if it's newer than the project file True is returned
  and False otherwise.

For a given project file it is checked if the thumbnail directory already contains
a cached image. If it's newer than the project file it will used, otherwise it will
be re-created.

Fix freecadCanOpen() abd DisplayedFilesModel::addFile() to also check for lower-case
file extensions.
2024-11-20 09:44:35 -05:00
wmayer 22782e53f3 Core: Add method ProjectFile::containsFile 2024-11-20 09:44:35 -05:00
Benjamin Bræstrup Sayoc cdb92768fe [TechDraw] Return logic simplification (#16504)
* [TechDraw] AppTechDrawPy.cpp return logic simplification

* [TechDraw] CosmeticExtension.cpp return logic simplification

* [TechDraw] DrawBrokenView.cpp return logic simplification

* [TechDraw] HatchLine.cpp return logic simplification

* [TechDraw] LineGenerator.cpp return logic simplification

* [TechDraw] Preferences.cpp return logic simplification

* [TechDraw] ShapeExtractor.cpp return logic simplification

* [TechDraw] MDIViewPage.cpp return logic simplification

* [TechDraw] QGILeaderLine.cpp return logic simplification

* [TechDraw] QGIRichAnno.cpp return logic simplification

* [TechDraw] QGTracker.cpp return logic simplification
2024-11-18 16:14:47 -03:00
Jiří Pinkava f9ba94c70b Sketcher: refactor, drop return in void returning functions 2024-11-18 12:21:25 -05:00
mosfet80 0fee326c54 [cmake] clean InitializeFreeCADBuildOptions.cmake
cmake version is always greater than 3.4.3
The verification is done in the cmakefile in the root folder
2024-11-18 12:14:39 -05:00
mosfet80 8f0e61bffd [Mod] clean FemMesh.cpp
Removed dead code
2024-11-18 18:01:59 +01:00
Kris Slyka 2f6329d6e7 [tools] fcinfo: fix syntax warnings and improve output for git diffs (#16312)
* Fix syntax warnings about invalid escape sequences

Backspaces in regular expressions were not escaped properly leading to warnings on every invocation of the program.

* Improve formatting of fcinfo output

* Printing of part BREP file properties (hash and size) has been made optional since these values often change without explicit user action making git diffs almost unreadable by hiding actual changes behind a flood of changed hashes because a base feature further up the history was changed. There is a new option (-p) to re-enable the printing of these file properties.

* Unformatted float outputs have been replaced with proper formatting using f-strings which round the values to a sensible number of places.

* Colors are printed in their native 0-255 range. Printing them as float brings no benefit here.

* Most string concatenation for output has been replaced with f-strings

* Fix printing of color properties
2024-11-18 17:52:16 +01:00
Jiří Mácha 71f0104bb2 Assembly: fixed defect in the migrationScript4 function
The old CAD model created by the development version of FreeCAD
(in which the Assembly workbench was used) contained joints that,
for some reason, had an empty Joint Connector 1 reference (Reference1).

This was causing an exception and a crash of the Python function
called migrationScript4. The FreeCAD Report view contained:

23:28:29  pyException: Traceback (most recent call last):
  File "/FreeCAD/Mod/Assembly/JointObject.py", line 175, in onDocumentRestored
    self.createProperties(joint)
  File "/FreeCAD/Mod/Assembly/JointObject.py", line 181, in createProperties
    self.migrationScript4(joint)
  File "/FreeCAD/Mod/Assembly/JointObject.py", line 514, in migrationScript4
    if hasattr(joint, "Reference1") and joint.Reference1[0] is not None:
                                        ~~~~~~~~~~~~~~~~^^^
<class 'TypeError'>: 'NoneType' object is not subscriptable

This patch attempts to avoid such exceptions by validating the type of
the property variable before accessing it.
2024-11-18 17:46:44 +01:00
PaddleStroke a049641771 Assembly: Store DocumentObject instead of mbdPart for the dragged parts. Fixing the bug where doDragStep was 50% of time failing to find the correct DocumentObject due to bundling. 2024-11-18 17:43:53 +01:00
Benjamin Nauck 3875c306ac Spreadsheet: Double click separator to resize to content
Qt handles resize to content on double clicking the separator in the header, by default.
However this does not work in FreeCAD.

There are no comments on why this was done and is therefore treated as bug instead of feature.

Manual testing has been performed after the change and:

* Scaling by double clicking separator in header works
* Sizes are correctly stored in sheet when resizing to content
2024-11-18 09:12:22 -05:00
bgbsww d8d35f133d Contribute helper files for CLion debugging 2024-11-18 08:55:56 -05:00
hasecilu 4c1f94f6c2 Addon Manager: Show repository URL if it exists on the metadata
Fix: #14777
2024-11-18 08:51:15 -05:00
hasecilu 8619b03bbc Addon Manager: Show involved branches' names on branch change operation
Fix #12969
2024-11-18 08:47:52 -05:00
Yorik van Havre 36cf031f0b BIM: Fixed image loading of the tutorial - fixes #17863 2024-11-18 14:22:44 +01:00
Eric Price 14ebae538f Added test case 2024-11-17 17:59:13 +01:00
Eric Price f8f525e62d reimplemented recursive cutting tools for better efficiency - merge in a single fuse then perform a single cut - still doesn't fix the issue with toponaming 2024-11-17 16:15:20 +01:00
Eric Price 648bb8f5e4 fix #17497 2024-11-17 16:15:20 +01:00
Eric Price 27c9c9d0ac work on #17497 - recursively cut shapes in a compound iindividually to work around OCCT limitation 2024-11-17 16:15:20 +01:00
Roy-043 72fcf9cba3 Remove more prefs 2024-11-17 11:06:43 +01:00
wmayer 6f8abe880c Core: Fix flaw in XMLReader class
Remove implementation details of the Document class from the XMLReader class.
Instead keep an array of failed files and check them in the calling instance.
2024-11-17 08:34:03 +01:00
Yorik van Havre 89d1d717eb BIM: Optimized leader UI (#17310)
* BIM: Optimized leader UI - fixes #17284

* Correct task panel icon for BIM Leader.
* Make BIM Leader task panel title translatable.
* Use a single mode parameter for the Line class.

---------

Co-authored-by: Roy-043 <info@b-k-g.nl>
2024-11-16 18:10:04 +01:00
Roy-043 1c19a7e85d Draft: fix tray construction mode button for Light and Dark themes (#17886)
Fixes #17869.
2024-11-16 18:04:26 +01:00
Gauthier Brière f08cf60155 [Draft] add font path relative (#17819)
* Permit a font file path relative to the FreeCAD file

* Use obj.Document instead of App.ActiveDocument

* use filename = instead of directory =
2024-11-16 18:02:02 +01:00
Yorik van Havre 8f9718ebc6 Draft: minor fixes (#17793)
- more tolerance on faultly solids in shape2Dview
- fixed display of dimensions in arch override unit
2024-11-16 17:52:55 +01:00
Roy-043 f723f36d2a Draft: Fix extra_scale error in hatch.py (#17715)
Fixes #17712.
2024-11-16 17:49:35 +01:00
Yorik van Havre ee2f384b2f Draft: Independence from BIM (#17444)
* Draft: Independence from BIM - follow-up of #17390

* Draft: More info in DXF importer if BIM not present
2024-11-16 17:48:28 +01:00
Chris Mayo 7183de92a4 Draft: Make startup and tests independent of BIM (#17390) 2024-11-16 17:43:46 +01:00
marioalexis f638c38dfd Fem: Set mesher task panel log text to read-only 2024-11-16 14:31:48 +01:00
marioalexis 38bf51c768 Fem: Adapt FemPostObject transparency to changes made in #ffa3fa5b5a 2024-11-16 12:49:47 +01:00
Max Wilfinger b3423694c0 Merge pull request #17637 from furgo16/patch-3
Reword rigid/flexible sub-assemblies tooltip.
2024-11-16 10:03:52 +01:00
Furgo 477ea046d0 Re-add the note about right click, with more context 2024-11-16 07:15:05 +01:00
luzpaz ed40de3e23 Fix various typos
Found via codespell.
2024-11-15 20:18:46 +01:00
OfficialKris b3a2268289 Modified text of all items on help menu
Used ToolTipText for StatusTip on all menu items
Modified some of the MenuTexts
Modified some of the Pixmaps
2024-11-15 18:57:39 +01:00
Furgo a597015d05 Reword error log to be more verbose 2024-11-15 18:53:00 +01:00
OfficialKris 4e0f3185b1 Moved items in the Help menubar 2024-11-15 18:51:14 +01:00
Benjamin Bræstrup Sayoc 3578d1ff7f [Gui] Vertically center method icon in calltips 2024-11-15 18:47:53 +01:00
marioalexis a41f38bd8a Fem: Minor change to Mesh task panels and renaming Gmsh mesh properties group 2024-11-15 18:46:58 +01:00
Yorik van Havre bcd95cf32d New Arch Detail example 2024-11-15 18:45:37 +01:00
Max Wilfinger 616028efe5 Merge pull request #15957 from hasecilu/fix/capitalization
TechDraw: Fix capitalization of 2D and 3D
2024-11-15 18:37:47 +01:00
Max Wilfinger 0003591df9 Merge pull request #16535 from WandererFan/translationFixes317And335
[TD] Translation fixes (fix #317 fix #335)
2024-11-15 18:36:44 +01:00
luzpaz e2b67c19fc STEP: Rename generic Import/Export dialog title
Closes #16415
2024-11-15 18:36:09 +01:00
wmayer ffa3fa5b5a Core: Extend Color API
* Fix issues with alpha value <> transparency
* Use type traits to convert between different color classes (fixes #14515)
2024-11-15 12:25:25 -05:00
Syres916 224c25b770 [Base] Give user feedback on failing to read StringHasherTable 2024-11-15 12:19:25 -05:00
Syres916 08b9411e15 [Sketcher] Assist user in finding the sketch with the error 2024-11-15 12:15:59 -05:00
Max Wilfinger a2ca158e94 Merge pull request #14959 from yorikvanhavre/bim-ifc-icons
BIM: Specific IFC icons
2024-11-15 18:11:00 +01:00
Yorik van Havre f7b639b795 Draft: Implement unhandled svg text rotation 2024-11-15 12:09:53 -05:00
Chris Hennes f2cc3f40da Merge branch 'main' into fix_deprecated_import_style 2024-11-15 12:09:07 -05:00
Chris Mayo fbeaeee7e7 Remove xpmMap from BitmapFactory
No longer used since:
6ca8b2daae ("update hardcoded XPMs to .svg files. Updated .svg icons for clarity.", 2024-03-23)
2024-11-15 12:05:57 -05:00
Snow Faerie a4ab97bdd5 Add shortcut: Ctrl+,: Preferences
FreeCAD doesn't have a shortcut for Preferences.

As far as I know there is no established standard for Preferences. I
chose Ctrl+, as that is used by a number of applications, like VS Code,
nautilus and gedit.
2024-11-15 11:57:32 -05:00
Snow Faerie d7f1015264 Add Ctrl+{B,I,U} to Spreadsheet; remap File/Import
Adds hotkeys for Bold, Italic and Underline in Spreadsheet.

Ctrl+I was taken by File/Import... This patch remaps that to Ctrl+Shift+I.
2024-11-15 11:57:18 -05:00
FEA-eng b9ca034261 Update Command.cpp 2024-11-15 11:56:46 -05:00
Roy-043 a8533ca58e FEM: FEM_CreateElementsSet menu text in sentence case 2024-11-15 11:56:32 -05:00
Furgo 645415b846 Fix enabling/disabling notificationWidth 2024-11-15 11:52:24 -05:00
Roy-043 f30335305e Sort files to facilitate file comparison 2024-11-15 11:29:31 +01:00
Roy-043 87069c87e5 Removal of rogue preferences
Removal of more rogue preferences
2024-11-15 11:26:06 +01:00
wmayer ee1af2748a Coverity scan: Uninitialized scalar variable
* CID 350633
* CID 512344
* CID 514343
2024-11-13 18:58:16 -05:00
Kevin Martin 4bc8cd60e9 Change C++ DXF import to ignore type 999 (comment) records 2024-11-13 10:09:12 +01:00
Paul Lee 8636c8ca20 [ArchCurtainWall] Bug-fix Sketch as Base
Found regression when Sketch is used as Base and OverrideEdges is specified.
2024-11-13 10:05:37 +01:00
Roy-043 aea052cb6f Draft: Fix AnnotationStyleEditor delete last style error (#17758)
* Draft: Fix AnnotationStyleEditor delete last style error

Fixes #17716.

* Fix rename problem as well

The on_rename function should update self.current_style as well. To avoid this scenario:
1. Create style A.
2. Create style B.
3. Rename style B to C.
4. Switch to style A.
5. Press OK.
6. Start the tool again.
7. Result: there are 3 styles A, B and C.
2024-11-13 10:02:20 +01:00
Chris Hennes affa43e094 Merge pull request #16813 from Ondsel-Development/core_placement_ui
Core: Remove unecessary ':' cluttering Placement.ui
2024-11-12 15:02:10 -05:00
Chris Hennes 5feda62c3a Merge pull request #16438 from 3x380V/dlgabout
Gui: refactor splash screen and about dialog
2024-11-12 11:15:46 -05:00
Ladislav Michl bf1a276977 Gui: set Qt attributes in setupApplication() 2024-11-12 07:59:47 +01:00
Ladislav Michl d6c9f9c8fe Gui: DlgAbout: convert std::string directly to QString 2024-11-12 07:59:47 +01:00
Ladislav Michl 038562220c Gui: SplashSreen: convert std::string directly to QString 2024-11-12 07:59:47 +01:00
Ladislav Michl 0a9e1bc9e8 Gui: refactor Splashscreen
Move About dialog class to the separate source file.
2024-11-12 07:59:44 +01:00
Ladislav Michl cff4245a85 Gui: refactor hiddenMainWindow usage 2024-11-12 07:53:38 +01:00
wwmayer 45d3864942 PD: Add test case for #17184 (#17707) 2024-11-11 18:21:15 -03:00
Roy-043 dc1550b8da Gui: FreeCAD Light PreferencePack should not change PickRadius 2024-11-11 21:15:08 +01:00
Adrian Insaurralde Avalos 46831f4c86 Gui: extend version info to specify flatpak and conda builds 2024-11-11 15:30:27 -03:00
Benjamin Bræstrup Sayoc e661774a29 [Gui] Center expression icon 2024-11-11 18:32:34 +01:00
PaddleStroke 4649b678f2 Core: QuantitySpinbox: Change truncate value from 18 to 12. Ensuring a more reasonable width. 2024-11-11 18:31:17 +01:00
hasecilu 16897e2f63 DependencyGraph: Tweak dot flags to prevent overlaped edges
- `-Granksep=2` lets increase the separation between groups (nodes),
ideally should depend on graph size
- `-Goutputorder=edgesfirst` lets place the edges first to allocate more
space for them
- `-Gsplines=ortho` changes the edges from curves to straight,
orthogonal lines

Fix #10207
2024-11-11 18:21:53 +01:00
Alfredo Monclus f99db90986 fix(PD): initialization of thread class and fit 2024-11-11 18:18:30 +01:00
PaddleStroke df3bf98ef7 Measure: Fix quickmeasure problem with Part::Line objects 2024-11-11 18:17:36 +01:00
dominik-devops 9898461d3c Update dxf.cpp with missing new line character 2024-11-11 18:14:39 +01:00
Yorik van Havre 8486a6ded4 Merge pull request #17778 from marioalexis84/fem-material_editor
Fem: Use new material editor in materials task panels - fixes #16814
2024-11-11 17:58:49 +01:00
Yorik van Havre 36c6a9ffa0 Merge pull request #17782 from wwmayer/issue_17770
Unhandled std exception dragging Cylindrical joint
2024-11-11 17:56:04 +01:00
PaddleStroke d9ec45b2f6 Techdraw: Fix assembly exploded view (#17726) 2024-11-11 17:53:34 +01:00
Eric Price 03cb520215 Part: bugfix #17468 recursively unpack compounds for boolean fuse (#17469)
* fix #17468  recursively unpack compounds for boolean fuse

* fix and into &&, add ctest case for multifuse with compounds and recursive compounds

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

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

* remove unneeded duplicated code - allow Part::Common to be created with a single object (compound or shape) - will result in Unity and possibly a warning message

* prevent endless loop in case of endless recursive compounds as suggested in chat

* Update src/Mod/Part/App/FeaturePartFuse.cpp

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>

* implemented suggestion by wwmayer

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2024-11-11 17:51:56 +01:00
Florian Foinant-Willig 3d5e4f7cd8 Fix revolution with ShapeBinder profile (#17489)
* Fix revolution with ShapeBinder profile

* Remove log level init

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2024-11-11 17:48:18 +01:00
Eric Price 7680872e41 increase tolerance on helical shapes to avoid crash / broken geometry (#17356)
* increase tolerance on helical shapes to avoid crash

fix #17113
fix #9377
fix #11083

* added test cases for additive and subtractive helix

* fixed whitespace issue, reduced turncount for speed

* relaxed large scale testcases for OCCT 7.3 and below, work around windows CI error #17394

* Further reduce max size in test for buggy Ubuntu OCCT
2024-11-11 17:44:27 +01:00
paul 0e25675aeb ArchWall : Bug Fix Length Property Accuracy Problem (#17496)
* ArchWall : Bug Fix Length Property Accuracy Problem

See https://github.com/FreeCAD/FreeCAD/issues/15794

* [ArchWall] Fix regression with multi-material and align center

* ArchWall - Regression Typo

---------

Co-authored-by: Yorik van Havre <yorik@uncreated.net>
2024-11-11 17:26:05 +01:00
Roy-043 b96f02b5c8 Draft: Fix Shape2DView finish bug
The Draft_Shape2DView did not finish properly if no object was selected.

Forum topic:
https://forum.freecad.org/viewtopic.php?t=92031
2024-11-11 17:15:24 +01:00
Yorik van Havre a9b4cb5611 Translations (#17725)
* Translations: updated ts files

* Translations: merged crowdin translations

* [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>
2024-11-11 17:01:52 +01:00
marioalexis d34b5c6fda Fem: Save empty UUID if customizing material from task panel 2024-11-11 11:02:30 -03:00
marioalexis 4da4b744f0 Fem: Use quantity spin boxes in material task panel 2024-11-10 22:09:33 -03:00
wmayer ae32212245 Assembly: Handle thrown Base::Exception in ViewProviderAssembly 2024-11-11 01:11:56 +01:00
wmayer 72728ece52 Core: In View3DInventorViewer::getPointOnXYPlaneOfPlacement throw exception
If no intersection point can be found throw a Base::RuntimeError
2024-11-11 01:10:44 +01:00
wmayer 76a3ec410f Core: Print warning if dragging is not allowed 2024-11-10 17:14:18 +01:00
marioalexis 5b1155cb2e Fem: Use new material editor in materials task panels - fixes #16814 2024-11-10 12:33:28 -03:00
marioalexis 6f8afd85e6 Material: Propagate changes to MaterialTreeWidget even if UUID does not change 2024-11-10 12:33:28 -03:00
wmayer c14ef04b70 Core: Avoid cyclic dependencies when dragging an object into a group 2024-11-09 18:11:57 +01:00
Roy-043 3a7c8ed1c5 Draft: Fix _param_observer_callback_scalemultiplier error
Fixes #17741.
2024-11-09 10:27:12 -05:00
marioalexis 854ce9e0b8 Fem: Fix spelling in Netgen enumeration property 2024-11-09 10:24:32 -05:00
marioalexis 40debf7daf Fem: Save empy mesh if last step is AnalyzeGeometry in Netgen mesher 2024-11-09 10:24:32 -05:00
wmayer 9126e7e9c8 Material: Replace YAML::LoadFile() with YAML::Load()
YAML::LoadFile() cannot be used on Windows because it doesn't support UTF-16 to load a file from an arbitrary location

This fixes #17097
2024-11-09 10:23:17 -05:00
wmayer 22519cc282 Material: Set more meaningful message for some exception types 2024-11-09 10:23:17 -05:00
wmayer c3837a9849 Part: Handle exception in Feature::setMaterialAppearance 2024-11-09 10:23:17 -05:00
PaddleStroke 03af502347 Assembly: Fix problem with App::Link to AssemblyObject : they would not go back to position. 2024-11-09 10:16:47 -05:00
PaddleStroke 22d278c7c0 Assembly: Fix regressions of https://github.com/FreeCAD/FreeCAD/pull/16671 2024-11-09 10:16:47 -05:00
PaddleStroke b3d9c471ee Assembly: JointObject refactor adaptUi 2024-11-09 10:10:57 -05:00
PaddleStroke bf64ab9f51 Assembly: Improve joint taskbox offset ui. 2024-11-09 10:10:57 -05:00
PaddleStroke ca0549d489 Update CommandExportASMT.py 2024-11-09 10:09:52 -05:00
PaddleStroke 6fa1b1c3b2 Update CommandSolveAssembly.py 2024-11-09 10:09:52 -05:00
marioalexis 6328c7ece1 Fem: Add second order linear option to Netgen mesh 2024-11-07 23:05:27 -03:00
marioalexis 795730382a Fem: Netgen local refinement 2024-11-07 23:05:27 -03:00
Roy-043 4bd80bdcbb Draft: avoid race condition in todo code
The doTasks function is called multiple times when using Draft tools. In some cases the ToDo.commitlist belonging to a previous call was not fuly processed, resulting in the same list being processed twice. To avoid this the list is stored as a local variable and then immediately reset.

Forum topic:
https://forum.freecad.org/viewtopic.php?t=91832
2024-11-07 11:13:29 +01:00
marioalexis bbb4f2664e Fem: Prevent race condition between signals in timer update 2024-11-06 14:41:23 -05:00
wmayer 8e64f2cd2d Import: Fix index error with legacy STEP export
Fixes #17677
2024-11-06 13:53:39 -05:00
wmayer 8b1c358cb5 Core: Generate a static random number in Application::applicationPid()
Using Qt's QCoreApplication::applicationPid() doesn't always give a unique ID so that multiple FreeCAD instances cannot be executed at the same time.
This fixes #17678
2024-11-06 13:52:31 -05:00
Benjamin Bræstrup Sayoc fd71fc3237 [Gui] Fix 100% CPU usage due to StartView (#17565)
* [Gui] Fix 100% CPU usage due to StartView

* [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>
2024-11-06 16:11:30 +01:00
Chris Mayo e0cf31b2b6 Mod: Remove Doxygen special commands from Python docstrings
These don't work by default in Doxygen [1] and cause Python syntax
warnings.

[1] https://www.doxygen.nl/manual/docblocks.html#pythonblocks
2024-11-05 17:18:50 -05:00
Chris Mayo 3e7f5bb085 BIM,CAM: Resolve Python invalid escape sequence warnings 2024-11-05 17:18:50 -05:00
wmayer a548ca698a PD: Fix default display mode of ViewProviderBoolean
Make sure that by default display mode is set to 'Flat Lines' instead of 'Group' as otherwise it won't show the result object
2024-11-05 16:24:33 -05:00
Eric Price c9874294af FEM: Allow assigning materials to compounds to avoid having to assign the same material by hand to all subsolids (#17562)
* fix #17561

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

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

* added missing code to have it also work without MeshRegions

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-11-05 10:15:21 -06:00
Jarno de Wit 2c8b09bec4 Fix excessive selection pruning in dae exporter for PartDesign Objects (#17529) (#17654)
* Fixes excessive export selection pruning for PartDesign objects (#17529)

* Raises selection prune message log-level from Log to Warning (#17529)
2024-11-05 14:44:18 +01:00
mwganson 93173ba797 [Sketcher] Address issue #17629, where Attach sketch command allows sketch to be attached to itself 2024-11-05 14:41:00 +01:00
Yorik van Havre 928deccec7 BIM: Fixed imports of IfcOpenShell 0.8 - fixes #17628 2024-11-05 14:28:17 +01:00
Chris Mayo 04eb73bea4 BIM: Fix imports of Python importers 2024-11-05 12:59:30 +01:00
marioalexis 4c50f29442 Fem: Print real-time log messages in mesher task panels - fixes #17594 2024-11-04 13:32:51 -05:00
PaddleStroke 1b1e355b9b Assembly: Fix reverse button in joint task (#17663) 2024-11-04 18:23:17 +01:00
PaddleStroke 1b35d8b0f1 Update JointObject.py 2024-11-04 18:18:21 +01:00
Yorik van Havre 8ac217a7b0 Merge pull request #17632 from wwmayer/issue_17553
Fixes #17553
2024-11-04 18:14:18 +01:00
Yorik van Havre 0995c04c80 Merge pull request #17609 from wwmayer/issue_17576
Core: Don't freeze application if lock file already exists
2024-11-04 18:08:51 +01:00
PaddleStroke 28a977b5fc Assembly: Joint creation: add expression support to spinboxes 2024-11-04 18:07:12 +01:00
mwganson 7eb1d6bd79 [Part Booleans] fix issue with copying visuals when doing Part workbench booleans using App::Part objects, see https://forum.freecad.org/viewtopic.php?t=91813&sid=eea2494d6d02882c3be7df74d7e2b689 2024-11-04 18:02:36 +01:00
WandererFan 60cb2fb005 [TD]handle short&wide hatch area (#17630)
* [TD]handle short&wide hatch area

* [TD]sync .h and .cpp parameter names
2024-11-04 18:01:33 +01:00
James b1564792f2 Safe mode message added as per #17580 (#17640)
* Safe mode message added as per #17580

* Fixed extra whitespace after return

Removed extra whitespace after return spotted by @hyarion

* Incorporated comments by @hyarion
2024-11-04 18:00:28 +01:00
Bas Ruigrok 513103718b Gui: Fix camera behavior when rotation center is far from object
Also fixes a regression in turntable navigation speed
2024-11-04 17:59:19 +01:00
wmayer 4143c551bb DAG: Add method hasRecord() and use it in Model::slotChangeObject
to avoid a possible failing assert().

Fixes #17572
2024-11-04 17:56:57 +01:00
Benjamin Nauck 7e72d641df macOS+win+qt6.4+: Hide classic and auto choose light or dark mode depending on os setting (#17410)
* mac, win, qt6.4+: Hide classic and auto choose light or dark mode

* Add dark mode qt6.5 check

* Start: Add QStyleHints to PreCompiled.h

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2024-11-04 17:55:27 +01:00
Kris fcf0b75c39 Update wording in README (#15766)
* Update moto in README

* Updated Installation section on README

* Update compiling section in README

* Removed link to page

* Updated Contributing section of README

* Added section divider for sponsors in README

* Moved underlying technology into collapsible box

* Updated Overview section of README

* Updated help section in README

* Switch note on README

* Update header in README

* Revert "Update moto in README"

This reverts commit a7ba483a1aa7e410bde01dd42bf5ef0c7d3d8ca8.

* Revert "Updated Contributing section of README"

This reverts commit 2b4a1fdb9f2cf838039c30c755179f1c1b2b0bec.

* Updated overview section description

* Fixed wording in overview

* Restored section header line

* Revert "Updated Overview section of README"

This reverts commit accff3fdb9cefde9b691fa654512903877140cab.

* Partial revert of 52d9c8a

* Revert "Moved underlying technology into collapsible box"

This reverts commit d1cc1ae87b8eee5702611ecb50c0067c50ae05c6.

* Added newlines to compiling section
2024-11-04 17:53:05 +01:00
David Carter 1430680141 Materials: Disable editor right click menu
The right click context menu in the materials editor was implemented
as a place holder but is currently non-functional. It should be
disabled for 1.0. This will be revisited post 1.0 as all editor
functionality is reviewed and improved.

Fixes #17110
2024-11-04 17:50:54 +01:00
Yorik van Havre 144645d982 Merge pull request #17567 from wwmayer/issue_17523
Mat: Tmp. block signals of material widget
2024-11-04 17:43:54 +01:00
Adrian Insaurralde Avalos 2ff4914fd8 CAM: rename "Tests" to "CAMTests" to avoid python name conflicts 2024-11-04 17:36:21 +01:00
Yorik van Havre 815375a4a0 BIM: Fixed case bug in library tool 2024-11-04 14:48:14 +01:00
hoshengwei 25b4e319eb Fix Ifc Spatial Element Default Composition Type should be 'Element' 2024-11-04 14:41:30 +01:00
Chris Mayo b9d7cd23a9 BIM: IFC explorer Qt 6 compatibility and other fixes (#17649)
* BIM: IFC - Fixes for Qt 6 due to QtGui.QFont.setWeight()

PySide6 replaced:
  PySide6.QtGui.QFont.setWeight(int)

with:
  PySide6.QtGui.QFont.setWeight(PySide6.QtGui.QFont.Weight)

* BIM: Fix IFC explorer addEntity() and addProperties() on Qt 6

Qt 6 removed QTreeWidget.setFirstItemColumnSpanned()

https://doc.qt.io/qt-5/qtreewidget-obsolete.html#setFirstItemColumnSpanned

Running the Python command 'BIM_IfcExplorer' failed:
Traceback (most recent call last):
  File "/usr/lib64/freecad/Mod/BIM/bimcommands/BimIfcExplorer.py", line 170, in Activated
    self.open()
  File "/usr/lib64/freecad/Mod/BIM/bimcommands/BimIfcExplorer.py", line 223, in open
    self.addEntity(eid, children, self.tree)
  File "/usr/lib64/freecad/Mod/BIM/bimcommands/BimIfcExplorer.py", line 455, in addEntity
    self.tree.setFirstItemColumnSpanned(item, True)

* BIM: Fix IFC explorer exception on toggle mesh

Traceback (most recent call last):
  File "/usr/lib64/freecad/Mod/BIM/bimcommands/BimIfcExplorer.py", line 278, in toggleMesh
    import importIFCHelper
ModuleNotFoundError: No module named 'importIFCHelper'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib64/freecad/Mod/BIM/bimcommands/BimIfcExplorer.py", line 282, in toggleMesh
    import importIFC
ModuleNotFoundError: No module named 'importIFC'

* BIM: Fix IFC explorer layout warnings

QLayout: Attempting to add QLayout "" to QDialog "IfcExplorer", which already has a layout
QLayout: Attempting to add QLayout "" to QDialog "IfcExplorer", which already has a layout

https://doc.qt.io/qt-6/qtwidgets-tutorials-widgets-nestedlayouts-example.html

* BIM: Output an error if IFC explorer can't explore a file

---------

Co-authored-by: Roy-043 <info@b-k-g.nl>
2024-11-04 14:02:07 +01:00
pre-commit-ci[bot] f63a6886e4 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2024-11-03 23:25:40 +00:00
mwganson 009f441d00 [Points WB] fix issue where points are inaccurately imported when the points are far from the origin. This PR checks if the bounding box contains the origin and offers to move it to the origin if not, addresses issue #5808 2024-11-03 23:22:15 +00:00
mwganson 7d378a7cf5 [Spreadsheet] avoid removing user dynamic properties when clearing cells, addresses issue #8655 2024-11-03 23:03:04 +00:00
wandererfan b7bdf93654 [TD]fix scaling of large hatch tiles 2024-11-03 10:00:50 -05:00
Furgo 02847d25dc Reword rigid/flexible sub-assembiles tooltip. Fixes: #17636 2024-11-03 09:07:59 +01:00
wmayer 5ea04e70c5 PD: If needed open another transaction for sketch creation
When creating a sketch in PartDesign a dialog is opened that gives the user the possibility to perform another action that may close the
active transaction. To make sure the creation of the sketch can be undone a new transaction must be opened.
2024-11-03 00:16:26 +01:00
wmayer 400d5c49ab Core: Fixes #17553 2024-11-03 00:05:49 +01:00
wmayer e523eab001 Tests: Add unit test to demonstrate failure of #17553 2024-11-02 23:45:02 +01:00
wmayer 4c6de459dc Core: Write a log message instead of warning when locking a file fails 2024-11-01 16:10:51 +01:00
wmayer c6f083b3e7 Core: Add wrapper function Application::applicationPid() 2024-11-01 15:48:01 +01:00
wmayer 7820ca7f73 Core: Don't freeze application if lock file already exists 2024-11-01 15:02:22 +01:00
marioalexis 8865450a3e Fem: fix Gmsh analysis mesh groups - fixes #17427 2024-10-31 15:28:44 -05:00
Eric Price b7306d29e3 fix #17578 - RIP bgbsww , don't worry, we got this. 2024-10-30 18:11:43 -05:00
James fa9a5a8551 Changes to Addon First Run Dialog (#17518)
* Changes to Addon First Run Dialog

Updated Addon Manager first run dialog as per issue no. #17317

* Incorporated review comments

* Update src/Mod/AddonManager/addonmanager_preferences_defaults.json

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

* Update src/Mod/AddonManager/addonmanager_preferences_defaults.json

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

* Removed default assigns as requested

* Defaults updated

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2024-10-30 18:10:22 -05:00
Ulices b6cda4309a Help: Fix function return to avoid error when clicking URL on built-in browser (#17498)
* Help: Fix function return to avoid error when clicking URL on built-in browser

* fixup! Help: Fix function return to avoid error when clicking URL on built-in browser

Co-authored-by: Yorik van Havre <yorik.vanhavre@gmail.com>

---------

Co-authored-by: Yorik van Havre <yorik.vanhavre@gmail.com>
2024-10-30 12:51:45 +01:00
wmayer 70349cf87f Mat: Clean-up code in DlgDisplayPropertiesImp 2024-10-30 02:07:23 +01:00
wmayer 98e7dd94c5 Mat: Tmp. block signals of material widget
Fixes #17523
2024-10-30 01:06:12 +01:00
PaddleStroke 4f323f9580 Core: Enable TaskDialogs to associate view (#17373)
* Core: Add possibility for task dialogs to associate a view and be able to close when associated view is closed.

* TaskImage: Use task dialog view association.

* Sketcher: Use task dialog view association. Preventing crash (https://github.com/FreeCAD/FreeCAD/issues/16702)

* EditableDatumLabel: Use QPointer to prevent crash
2024-10-29 09:58:11 -05:00
hoshengwei 04fb809665 Fix IFC export elevation with wrong unit 2024-10-29 15:14:00 +01:00
David Carter 37d0cc7cc5 Materials: Selectively apply appearances
Change the appearance only if the appearance hasn't been set explicitly.
A cached material appearance is used to see if the current appearance
matches the last material. It is also compared against an empty
material to see if the saved material value has been initialized.

This solves the problem of material changes overwriting appearance
changes
2024-10-28 21:49:45 -05:00
Adrian Insaurralde Avalos 9ab3bef651 Gui: show cpu architecture in version info instead of word size
Fix #15833
2024-10-28 21:48:28 -05:00
wmayer a65d05c6e4 Core: Fix compiler warning 2024-10-28 19:06:31 +01:00
Adrian Insaurralde Avalos 763fab69b1 Gui: use wildcard for some warnings filters. Fix #16687 2024-10-28 17:39:18 +01:00
Adrian Insaurralde Avalos eae9d2fbca Fix OpenSCAD test failing when using pipe transfer mechanism 2024-10-28 17:34:25 +01:00
Pieter Hijma d215ff1844 Gui: Make VarSet dialog modal
Also tracks its own transactions to prevent interfering with other
transactions.
2024-10-28 17:33:14 +01:00
Yorik van Havre aabc219366 Merge pull request #17538 from wwmayer/doc_obj_py
Core: Extend DocumentObjectPy
2024-10-28 17:31:23 +01:00
PaddleStroke 0a06ceff4d Sketcher: Dimension: Handle case of vertical/horizontal lines 2024-10-28 17:29:40 +01:00
wmayer e44c59d2a8 Sketch: Make sure that variable 'ActiveSketch' is defined in macro
Fixes #17502
2024-10-28 17:23:50 +01:00
Eric Price 3897ec8b39 Updated Tolerance feature to optionally restrict maximum tolerance and repair shapes (#17421)
* Updated Tolerance feature to optionally restrict maximum tolerance and repair shapes (With Refine=True)

* implement suggestion by wwmayer
2024-10-28 17:18:15 +01:00
Yorik van Havre f78f0db5d9 Draft: Warn user if using trimex on unsupported curve type - fixes #17346 2024-10-28 17:12:06 +01:00
marioalexis 7558282580 Fem: Remove unnecessary system name check 2024-10-28 17:11:05 +01:00
mwganson 8163ac159e [Macros Dialog] Fix broken toolbar walkthrough 2024-10-28 17:10:12 +01:00
Yorik van Havre 15100357df Merge pull request #15629 from Ondsel-Development/asm_assembly_link
Assembly: Flexible sub-assemblies.
2024-10-28 17:07:26 +01:00
Yorik van Havre 86a229128c Merge pull request #17448 from Ondsel-Development/sk_rotate_arc_issue
Sketcher: Rotate : Fix exploding sketches when rotating.
2024-10-28 17:05:46 +01:00
Yorik van Havre ccf09f5953 BIM: Fixed export of boolean IFC properties - fixes #17425 2024-10-28 16:58:28 +01:00
Yorik van Havre 66592632c4 Draft: Fixed trimex bug when snapping to itself - fixes #17345 2024-10-28 16:57:50 +01:00
Yorik van Havre 4d23ef8e4c BIM: Fixed online search mode - fixes #17353 2024-10-28 16:50:09 +01:00
Benjamin Bræstrup Sayoc 954bae725e [Gui] Make styles update on paint (#17376)
* [Gui] Make styles update on paint

Fixes #15756. Similar implementation to that already in FileCardDelegate.cpp

* [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>
2024-10-28 16:48:47 +01:00
Bas Ruigrok 1cf5b23927 Gui: Correct spin sensitivity 2024-10-28 09:54:28 -05:00
wandererfan 742de865a9 [TD]remove spurious mouseReleaseEvent (fix #17519) 2024-10-28 09:47:40 -05:00
wandererfan 81bd0c6d2b [TD]fix line style regression from #17331 2024-10-28 09:47:14 -05:00
wandererfan aa2c77faef [TD]handle cut profiles with only a single edge 2024-10-28 09:46:41 -05:00
wandererfan 58426c243a [TD]do not mark document as changed after print 2024-10-28 09:46:10 -05:00
wmayer e28c64b6eb Draft: Fixes #17461 2024-10-28 14:13:50 +01:00
wmayer 974919dc7c Core: Extend DocumentObjectPy
* expose isAttachedToDocument to Python
* change DocumentObjectPy::getName() to return None instead of throwing an exception if object is not part of a document
2024-10-28 14:06:51 +01:00
wmayer c5c64a9c70 Core: Refactor Document::setEdit 2024-10-27 13:13:11 -05:00
mwganson dbc91b393c [PartDesign Groove/Revolution] minor dialog improvements, addresses issue #13298 2024-10-27 12:12:36 +01:00
Chris Mayo 6068f4b391 Tux: Remove Qt 4 translate function 2024-10-26 20:59:04 +02:00
wmayer 529779fb53 Test: Add unit test for pad 2024-10-26 15:39:04 +02:00
wmayer 837d088f3e Fix compiler warnings 2024-10-26 00:48:04 +02:00
marioalexis 3be681ef62 Fem: Do not try to set EndStep property for legacy Netgen 2024-10-25 12:11:12 -05:00
PaddleStroke ed45e20768 Fix circle tangent issue 2024-10-25 10:03:47 -05:00
mwganson 1ced63d0d8 [Part RuledSurface] fix issue where ruled surface is failing if both edges are from same object and the object is not at the identity placement, addresses issue #17235 2024-10-25 09:58:47 -05:00
Roy-043 8163f974a0 Catch potential index error 2024-10-25 10:15:53 +02:00
wmayer 499d192393 Core: Handle possible nested calls of TreeWidget::onUpdateStatus()
Fixes #17460
2024-10-24 23:11:37 -05:00
PaddleStroke 5823046e6b Assembly: CommandInsertLink: Hide hidden objects 2024-10-24 23:07:54 -05:00
Pieter Hijma f4fe481344 Gui: Fix tooltip/documentation in VarSet dialog 2024-10-24 23:01:12 -05:00
PaddleStroke 336dda316d Sketcher: Symmetric: Do not copy names of constraints (#17433)
* Sketcher: Symmetric: Do not copy names of constraints

* Sketcher: Symmetric : Fix https://github.com/FreeCAD/FreeCAD/issues/17442
2024-10-24 22:58:51 -05:00
Jiří Pinkava 9ba6bc1b9e Disable Qt bug 129596 workeround for QT >= 6.8.1
The fix is also in 6.5.8+, but honestly I would not bother ...
2024-10-24 22:30:38 -05:00
Chris Hennes 72af6abd2f Merge pull request #17435 from kadet1090/remove-midplane-twolengths
PD: Fix TwoLengths and Midplane both enabled
2024-10-24 22:29:17 -05:00
Chris Hennes 5ba00649db Merge pull request #17416 from wwmayer/measure_circle_circle
Measure: When measuring the distance between circles then use the cen…
2024-10-24 21:55:56 -05:00
PaddleStroke 7ee227a810 Update Workbench.cpp 2024-10-24 21:52:38 -05:00
PaddleStroke 5ee788447c Part Design: Remove legacy/modern workflow checks. 2024-10-24 21:52:38 -05:00
Michael Fuchs ecf005e23b Remove unused LibraryInfo class 2024-10-24 21:50:13 -05:00
Michael Fuchs 34ec6c568b Inject version information into 3rd Party libraries html 2024-10-24 21:50:13 -05:00
Michael Fuchs d2411dfe13 Replace About/Libraries with ThirdPartyLibraries.html
Use system browser to open external links
2024-10-24 21:50:13 -05:00
mwganson a6006fc11a [Python Console] prevent crash on autocomplete if python module is invalid, fixes issue #17299 2024-10-24 21:22:50 -05:00
Roy-043 d218d35527 Restore ViewObject implementation for all Draft objects
In my tests the code works fine. Using @AIRCAP's instructions,  I have created a 'broken' file from draft_test_objects.FCStd.
2024-10-24 15:24:13 +02:00
Roy-043 6c9ea36225 Restore the ViewObject
I think we need to restore the ViewObject in such cases. I assume this problems exists for all Draft and BIM objects. So this commit is just an example implementation.
2024-10-24 15:11:22 +02:00
Yorik van Havre 68be845a68 Draft: better check for Gui object - fixes #17342 2024-10-24 15:11:22 +02:00
Roy-043 3bae98c2e5 Updated 2 file paths to make the code work with AppImage
As advised in this forum post:
https://forum.freecad.org/viewtopic.php?p=788556#p788556
2024-10-24 14:08:17 +02:00
Roy-043 d26ed298c4 Draft: fix errors in draft_test_objects.py
* Label property TextSize should be FontSize.
* Added missing recomputes.
2024-10-24 14:08:17 +02:00
PaddleStroke 982ffeac08 Sketcher: DrawSketchHandlerRotate : Fix unwanted copy of DistanceX/Y constraints 2024-10-24 11:33:28 +02:00
PaddleStroke c098d9b312 Formating PythonConverter.cpp 2024-10-24 11:32:20 +02:00
PaddleStroke d03441fca0 Sketcher: PythonConverter: use getRange to handle bad arcs. 2024-10-24 11:00:46 +02:00
Max Wilfinger 2d57e9f2af Add safe mode description to issue template and guide in readme 2024-10-23 16:16:13 -05:00
wmayer 062e11a3c8 Test: Add test for MeasureDistance with two circles 2024-10-23 23:07:49 +02:00
wmayer 04a6f38ec8 Measure: When measuring the distance between circles then use the center points as reference
See forum: https://forum.freecad.org/viewtopic.php?t=91570
2024-10-23 21:52:37 +02:00
Kacper Donat e5b2d8c874 PD: Fix TwoLengths and Midplane both enabled
This scenario makes no sense, so it is removed from the code.
2024-10-23 21:16:57 +02:00
Wiktor Perskawiec b935c6a740 README: fix typos 2024-10-23 08:22:50 -05:00
wmayer a614b44fcd Fix compiler warning [-Wmisleading-indentation] 2024-10-22 22:57:29 -05:00
pre-commit-ci[bot] 925335d5c1 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2024-10-22 22:37:01 -05:00
wmayer 9a66ad7302 Measure: Use Base::toDegrees to convert radian to degree 2024-10-22 22:37:01 -05:00
wmayer d5db41bb06 Robot: Use Base::toRadians to convert degree to radian 2024-10-22 22:37:01 -05:00
wmayer 14cd061809 Part: Use Base::toRadians to convert degree to radian 2024-10-22 22:37:01 -05:00
Yorik van Havre 0b0bb18323 Revert "Horrible hack to work around bug in OCCT7.7.2"
This reverts commit 60640fa441.
2024-10-22 13:27:55 +02:00
Chris Mayo 3ef47f8f32 Tux: Avoid warning on startup when BIM is not installed
os.listdir() raises an exception if modpath does not exist.
2024-10-22 11:02:30 +02:00
Roy-043 1fcd316a8b Draft: suppress patharray offset warnings if values are already zero
See forum topic:
https://forum.freecad.org/viewtopic.php?t=91517
2024-10-22 10:52:04 +02:00
Benjamin Nauck 4badd2519e Remove broken robot example file
fixes #17303
2024-10-21 21:03:00 -05:00
marioalexis 3a56a8a004 Fem: Set startupinfo for gmsh subprocess - fixes #17298 2024-10-21 20:59:42 -05:00
Eric Price cf8ad66373 Fix boolean operations (#17119)
* add BRepAlgoAPI wrapper files to CMakeList

* introduce wrapper for BRepAlgoAPI_BooleanOperation and derivatives, set sensible default Fuzzyness for boolean operations

* allow default fuzzyness to be set in settings - including off

* backwards compatibility with OCCT 7.3.3 - removed newer paramateres from wrapper

* added missing header

* reverted src/Mod/Part/App/OpenCascadeAll.h to original state

* implement some changes suggested by @wwmayer

* removed unneeded destructor definitions

* moved getDefaultFuzzyValue into its own helper class

* removed unneeded references to base class default constructor

* default to SetRunParallel(Standard_True) as suggested by @FlachyJoe

* fixed license header as requested

* Added new method to autocalculate fuzzyness to BooleanOperation base class and use it for those parts that do not call the obsolete constructor but also do not set precision

* implemented static variable solution as suggested by @wwmayer

* added helix for test case

* Refactoring FCRepAlgoAPI to FCBRepAlgoAPI

* Added Test Case (fuse cylinder with helix with different working and non-working Fuzzy values)

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

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

* increased default value of FuzzyBoolean and made tests more robust for compatibility with OCCT 7.3

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

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

* fixes for FREECAD_USE_PCH - allow testing of FREECAD_USE_PCH on linux with cmake switch (default OFF)

* removed surplus line - wasn't needed after all

* included precompiled as instructed

* set anti-corruption flag in boolean operations, ensures source shape is not damaged in OCCT 7.1 and higher

* fix #17085

* disable subtests that were too specific for now

* fixed all CLI tests - see comments in Pull Request https://github.com/FreeCAD/FreeCAD/pull/17119#issuecomment-2420772452

* Update src/Mod/PartDesign/PartDesignTests/TestTopologicalNamingProblem.py

suggested updated test by CalligaroV

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp

suggested updated test by CalligaroV

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp

suggested updated test by CalligaroV

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp

suggested updated test by CalligaroV

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp

suggested updated test by CalligaroV

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp

suggested updated test by CalligaroV

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp

suggested updated test by CalligaroV

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp

suggested updated test by CalligaroV

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp

suggested updated test by CalligaroV

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp

suggested updated test by CalligaroV

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp

suggested updated test by CalligaroV

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp

suggested updated test by CalligaroV

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp

suggested updated test by CalligaroV

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp

suggested updated test by CalligaroV

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* Update tests/src/Mod/Part/App/TopoShapeExpansion.cpp

Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>

* remove surplus tests from github suggestion interface bug

* hide the BooleanFuzzy variable - can now be only set by manually editing the config file
i
in FCParamGroup "Boolean"
<FCFloat Name="BooleanFuzzy" Value="10.000000000000"/>

* Suggestion by @FlachyJoe - add validity checks to the base and tool shape in any direct boolean op

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Vincenzo Calligaro <vincenzo.calligaro@gmail.com>
2024-10-21 18:38:51 +02:00
Adrián Insaurralde Avalos 5979ebd6f8 Gui: extend warning filters
filter out:
-qt.qpa.wayland
-kf.config.core
-kf.kio.widgets
-kf.service.sycoca
-kf.solid.backends.udisks2
2024-10-21 18:33:25 +02:00
PaddleStroke 44c3e6658c Core: Fix Ctrl-deselection issue 2024-10-21 18:31:06 +02:00
David Carter 0804d80ebf Materials: Child ignoring parent material
Inherit the material from the parent object when creating a new object,
such as during a boolean operation, or when extruding a sketch.

fixes #15503
2024-10-21 18:20:20 +02:00
wmayer 5435b3e4db Core: Set unit scheme when switching between unsaved documents
Fixes #17297
2024-10-21 18:17:30 +02:00
Yorik van Havre 1576df5937 Merge pull request #17367 from hyarion/fix-open-with-file-crash
Workaround for macOS crash when loading FreeCAD by opening a `.FCStd` file from Finder
2024-10-21 18:16:36 +02:00
Chris Mayo b0dd5e7b60 CMake: Add inter-module dependency of ReverseEngineering on Points
Building with -DBUILD_POINTS=no -DBUILD_REVERSEENGINEERING=yes fails with:

src/Mod/ReverseEngineering/App/AppReverseEngineering.cpp
src/Mod/ReverseEngineering/App/AppReverseEngineering.cpp:36:10: fatal error: Mod/Points/App/PointsPy.h: No such file or directory
   36 | #include <Mod/Points/App/PointsPy.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
2024-10-21 18:13:20 +02:00
wmayer e3246e13a0 PD: Explicitly switch off AllowCompound for some tests to make them succeed
Fixes #17363
2024-10-21 18:12:40 +02:00
Chris Mayo 5a537f6de0 CMake: Add inter-module dependency of Part on Material
Building with -DBUILD_PART=ON and -DBUILD_MATERIAL=no fails with:

/usr/lib/gcc/x86_64-pc-linux-gnu/14/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lMaterials: No such file or directory
collect2: error: ld returned 1 exit status
2024-10-21 18:11:56 +02:00
Michael Fuchs 6f87fc090e Switch back to default filename for exports after the active document changes. Fixes #16839 2024-10-21 18:10:42 +02:00
Benjamin Nauck 4eb7d5d09c Add "Safe mode" which temporarily disables configs and addons (#16858)
* Add safe-mode which starts freecad in a clean environment

* Integrate safe-mode

* Show "(Safe Mode)" in main window title

* Show safe mode info when safe mode is started

* Created Safe Mode Icon

* Use new icon

* Add PreCompiled.h

* Add exports for windows

---------

Co-authored-by: Gabriel <gaz082@gmail.com>
2024-10-21 18:08:52 +02:00
Bas Ruigrok 66002908c7 Gui: Set spin projector sphere depending on rotation center 2024-10-21 18:04:38 +02:00
wandererfan 81070b1f59 [TD]Fix leader line style (fix #17307) 2024-10-21 17:57:52 +02:00
PaddleStroke 4528a05113 Fix datum not being cancelled 2024-10-21 17:56:48 +02:00
Yorik van Havre 8fa80ee48e BIM: Better objects filtering when IFC locking/unlocking - fixes #17193 (#17285) 2024-10-21 17:55:12 +02:00
wmayer 990b9b27fe Part/PD: Fix cone creation if both radii are equal
The cone features in Part and PartDesign automatically create a cylinder if top and bottom radius are identical. However, the algorithm
ignores the angle and always creates a full cylinder.
2024-10-21 17:53:25 +02:00
Yorik van Havre 59302609ec Merge pull request #17214 from AIRCAP/debugTolerance
Add features to investigate and debug the effect of Tolerance on FreeCAD features - and the effect of FreeCAD features on tolerance
2024-10-21 17:45:21 +02:00
Yorik van Havre c295ac4eb5 Merge pull request #17197 from marioalexis84/fem-netgen_parameters
Fem: Netgen meshing parameters improvements
2024-10-21 17:43:11 +02:00
Jiří Pinkava ca9b556ec0 Sketch: refactor GeoHistory 2024-10-21 17:41:54 +02:00
Yorik van Havre 416489e07c Merge pull request #17265 from wwmayer/issue_17250
Core: Add convenience class ModuleIO to open files
2024-10-21 17:40:10 +02:00
mwganson 5b6e886a3c [PartDesign DuplicateSelected] do not put duplicated feature into active body if it is already in another body -- addresses issue #6278 2024-10-21 17:37:15 +02:00
Adrian Insaurralde Avalos d15722863c Gui: try calling graphviz binaries from PATH by default [fix #15224] 2024-10-21 17:32:47 +02:00
Benjamin Nauck d569098cb6 Repost QFileOpenEvent event to avoid an undefined state 2024-10-20 19:04:02 +02:00
Benjamin Nauck a85d03d807 Revert "Make sure splasher is stopped before showing dialog"
This reverts commit 104a3b90b0.
2024-10-20 18:40:40 +02:00
Florian Foinant-Willig ef2156d0f6 Fix uptoshape crash when selecting a face without assigned shape 2024-10-17 20:26:14 -05:00
PaddleStroke f111d46002 Assembly: Fix limits disappearing on edit (#17289) 2024-10-17 20:19:21 -05:00
Yorik van Havre 9c6bd61fd6 GUI: Added dedication to @bgbsww in about dialog/credits 2024-10-17 20:17:39 -05:00
Pieter Hijma bc6376c3a9 Core: Fix VarSet add property dialog Esc segfault (#17215)
* Core: Fix VarSet add property dialog Esc segfault

* Core: Improve the way disconnect is handled

* Core: Add a check for a non-existing property
2024-10-17 20:14:50 -05:00
PaddleStroke 9b407eed07 Fix regressions of #16726 2024-10-17 20:13:23 -05:00
Roy-043 6c8c263297 Draft: Improve layer drag-drop fix.
The fix in #16212 only checks the LayerContainer for layers. Since we do not stop users from moving layers out of that container, we should search the whole document instead.

Fixes: #16201.
2024-10-17 12:29:42 +02:00
Roy-043 a608b36623 BIM: Fix BIM_Leader callback bug
Probably due to changes in gui_lines `self.call` was no longer ended.

Fixes: #17283.

Forum topic:
https://forum.freecad.org/viewtopic.php?t=91413
2024-10-17 12:13:51 +02:00
Kris Wilk 9806a46324 Use Qt built-in to determine the system's preferred fixed-width font 2024-10-16 08:50:00 -05:00
PaddleStroke 761e5a43e8 Assembly: AssemblyLinks. 2024-10-16 15:39:23 +02:00
PaddleStroke 62575f2d63 Assembly: Create SoSwitchMarker.py to externalize the coin stuff that draw the joint's markers(JCS) 2024-10-16 15:39:23 +02:00
PaddleStroke fe5c883e4c Assembly: Joint creation UI : add advanced offset handling. 2024-10-16 15:39:23 +02:00
Florian Foinant-Willig aa78eb351e PartDesign: Fix body shape not updated 2024-10-16 08:33:02 -05:00
marioalexis a22f1241cb Fem: Do not use main window widget from another thread - fixes #17255 2024-10-16 08:31:50 -05:00
marioalexis ba72cc20e3 Fem: Netgen meshing parameters improvements 2024-10-16 10:25:36 -03:00
marioalexis 94f96ff562 Fem: Set converted property value after property type change 2024-10-16 10:25:36 -03:00
wmayer d2637ec881 Sketch: Fix creating the shape of a sketch
SketchObject::buildShape() used the geometries as they were created by the user. However, they are not accurate enough in order
to create a closed wire. Instead the geometries after running the solver must be used because they are guaranteed to be accurate.
2024-10-15 23:21:21 -05:00
ronak d2adeb6e69 final returned at line 461 2024-10-15 08:47:56 -05:00
wmayer 0511133327 Start: Fix build failure with enabled PCH 2024-10-15 14:23:51 +02:00
Syres916 0f72c18e64 [TechDraw] Fix error for some compilers 2024-10-15 14:19:05 +02:00
wmayer 851bdad977 Start: Use ModuleIO in StartView::fileCardSelected 2024-10-15 14:07:14 +02:00
wmayer 0b13ed3722 Core: Use ModuleIO in MainWindow::loadUrls 2024-10-15 14:06:36 +02:00
wmayer a4b555ea29 Core: Use ModuleIO in RecentFilesAction & RecentMacrosAction 2024-10-15 14:06:09 +02:00
wmayer e6a2af100a Core: Add convenience class ModuleIO to open files 2024-10-15 14:04:46 +02:00
Adrián Insaurralde Avalos facd8ca6e0 Bim remove py2 compatibility code (#17229)
* BIM: remove py2 compatibility code

* remove unused six from conda environments
2024-10-14 18:25:14 +02:00
Benjamin Bræstrup Sayoc d4173be130 [Gui] Fix isBad asserts, by removing old monkey patch
Multiple places in code, asserts for bad types would trigger SIGABRT. This is not just limited to #16316 with SoZoomTranslation, but multiple more places, not described in issue, but I experienced myself. Fixes #16316
2024-10-14 18:16:23 +02:00
wmayer 013d99dd65 Core: Directly store text changes made in text object
Store changes made in TextDocumentEditorView immediately to TextDocument. This fixes the issue reported in
https://forum.freecad.org/viewtopic.php?p=786175#p786175
2024-10-14 18:04:45 +02:00
Benjamin Nauck 777e2c7a80 Fix crashes when importing and opening .csv files on macOS (#17084)
* Open recent documents from start same way as in menu

* Make insert spreadsheet create document if not available.

* [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>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2024-10-14 18:01:50 +02:00
pre-commit-ci[bot] dda69c8b60 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2024-10-14 17:56:08 +02:00
Yorik van Havre e8fc9cf45f crowdin translations 2024-10-14 17:56:08 +02:00
Yorik van Havre 6c08b5a63c updated ts files 2024-10-14 17:56:08 +02:00
wmayer 7e473beed0 PD: Disable PartDesign_CompDatums & PartDesign_CompSketches if dialog is open
A group command is not disabled if its default command is disabled. This allows it to invoke the command when it should be impossible.
To fix the problem override the isActive() method in the sub-classes CmdPartDesignCompDatums & CmdPartDesignCompSketches

This fixes #16294
2024-10-14 17:55:12 +02:00
hlorus cd55faf04e MeasureGui: Revert temporary measure object creation (#17109)
* MeasureGui: Revert temporary measure object creation

Reverts the temporary creation of measurement objects that was added in #15122

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

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

* MeasureGui: Adress review comments

- Remove _mDocument and _mGuiDocument
- Replace c-style casts with dynamic_cast
- Add file guard
- Remove leftover canAnnotate method

* MeasureGui: Fix crash when selecting elements from different documents

* MeasureGui: Add additional type check in ensureGroup

* [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>
2024-10-14 17:54:13 +02:00
H. Tsubota 4ce0f19c4f Change to enclose field values ​​with quotation character in exported CSV file if they contain delimiters in Spreadsheet workbench (#17140)
* Change to enclose field values ​​with quotation character in exported CSV file if they contain delimiters

* [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>
2024-10-14 17:52:38 +02:00
Furgo 06bc18fb0f Properly scale link overlays 2024-10-14 17:50:35 +02:00
WandererFan 42a61ca889 [TD]Fix bad circles (fix #16980) (#17182)
* [TD]fix spurious messages in GeometryMatcher

* [TD]fix closed circle test (fix #16980)
2024-10-14 17:47:04 +02:00
wandererfan 9f7e50e4ce [TD]throttle over aggressive dimension autocorrect 2024-10-14 17:45:53 +02:00
Jiří Pinkava 37e021edd4 Gui: add Qt Platform name to splashscreen information dump
There is several bugs in FreeCAD which are related to platform (mostly wayland),
the hope is this will make it easier to identify the dependence of bug on the platform
2024-10-14 17:44:53 +02:00
Furgo df639075b1 Assembly: make "Solve failed" error more verbose (#17117)
* Add FC_ERR macro for the 'Solve failed' Assembly error

* Handle standard exceptions during assembly solve

* [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>
2024-10-14 10:43:15 -05:00
Kris Wilk cc19644922 Fix tab order in Add Property Dialog (VarSets) 2024-10-14 17:41:55 +02:00
Yorik van Havre 0b4510c977 BIM: Fixed missing object creation in IFC document conversion (#17093)
* BIM: Fixed missing object creation in IFC document conversion - fixes #17031

* BIM: fixed deleting of non-existing objects - fixes #17032
2024-10-14 17:37:31 +02:00
Florian Foinant-Willig 0c59bfc718 Disable closed Loft for less than 3 profiles 2024-10-14 17:35:54 +02:00
Jiří Pinkava cdb1a4f8ef Gui: Workaround for crash on close of MDI window
The Qt6 (up to Qt 6.7.3 now) contains bug, which can lead, under
specific circumstances, to crash of the application, when the
MDI window is closed. The circumstances are:

* at least 2 MDI windows needs to be open
* stylesheet muset set different size (border, margin) for activated and un-activated tabBar tab
* the closed window must be inactive, but created before the window now active and open
* race condition must occur betwee the closing and resize event handlers for the tabBar
  (see qt bug for details)

So this bug only occures with Qt6 with the Dark or Light styles selected (no classic) and only if
specific sequence of steps is followed during opening and closing the MDI windows.

The bug is in Qt code path executed when QMdiArea::ActivationHistoryOrder is set.

The other possible workaround might be to change all the affected stylesheets, but this seems to me
impractical and also fragile, because the affected code path will be still active.

https://bugreports.qt.io/browse/QTBUG-129596
2024-10-14 10:32:53 -05:00
wmayer 8711ae90c6 Part: Fix XML output of PropertyGeometryList::Save
Write all XML attributes of the Geometry element into a single line.

Currently the XML output looks:
                        <Geometry type="Part::GeomLineSegment"
 id="-1" migrated="1">

With the fix it will be:
                        <Geometry type="Part::GeomLineSegment" id="-1" migrated="1">
2024-10-14 09:07:46 -05:00
PaddleStroke 28b1112451 AssemblyObject.cpp : add failsafe checks 2024-10-14 08:58:35 -05:00
PaddleStroke 8b1baaef8f AssemblyObjectPyImp.cpp : make sure PyObjects are valid 2024-10-14 08:58:35 -05:00
PaddleStroke 876389af23 JointObject: fix flip one part 2024-10-14 08:58:35 -05:00
marioalexis 06f2ea4ee9 Fem: Fix examples affected by Part workbench preference parameter 2024-10-14 08:51:50 -05:00
Shai Seger b54bbddc4e Fix shader compilation error on linux. (#17236) 2024-10-14 08:51:11 -05:00
marioalexis84 1f2cdbc046 Fem: Remove highlighted nodes if ccx finish without error - fixes #14855 (#17203) 2024-10-14 08:50:46 -05:00
PaddleStroke ad6d148935 Assembly: Fix context menu 'Activate object' not working and causing crash (#17092)
* Assembly: Add setupContextMenu to ViewProviderAssembly.h

* Assembly: Fix right click 'activate object' menu not setting edit

* add QMenu header

* Add NOLINT

* Add one more space before //NOLINT or clang cries...

* Fix isInEditMode

* add isInEditMode to ViewProviderAssemblyPy.xml

* add isInEditMode to ViewProviderAssemblyPyImp.cpp

* update activeAssembly() in Utils to make sure isInEditMode
2024-10-14 08:29:49 -05:00
PaddleStroke eab65cc42c Assembly: Remove JointObject camera callbacks. And fix lock highlight. 2024-10-14 08:27:36 -05:00
Roy-043 d71fcf7593 Draft: Fix upgrade function: delete argument was ignored in case of draftify
Forum topic:
https://forum.freecad.org/viewtopic.php?t=91357
2024-10-14 08:19:03 -05:00
MisterMakerNL 14068183b7 fixing the checked toolbutton issue in Qsint
https://github.com/FreeCAD/FreeCAD/issues/17230
2024-10-14 08:14:09 -05:00
wmayer f9547e8231 PD: Fix crash when clicking on invalid edge in task panel
Fixes #10843
2024-10-13 13:34:14 -05:00
Eric Price 42dde995db Added new Feature to force-set Tolerance on a part 2024-10-12 19:47:15 +02:00
Eric Price 7283ba5429 Add very basic tolerance Information to GeometryCheck 2024-10-12 18:42:07 +02:00
Eric Price 1d4918ba70 disable tesselation limit in ViewProviderGUI to prevent large parts from freezing FreeCAD 2024-10-12 18:41:23 +02:00
Pieter Hijma e478192aa5 Gui: Fix showing multiple dialogs VarSet add prop 2024-10-11 08:55:15 -05:00
PaddleStroke 82a98d6e31 Assembly: Joint: add support to non ascii characters. 2024-10-10 20:36:54 -05:00
PaddleStroke a445b01869 Assembly: Fix joint labels bad auto-rename issue. 2024-10-10 20:36:54 -05:00
wmayer 9bfa461520 Core: Check returned pointer of convertSWIGPointerObj 2024-10-10 20:36:03 -05:00
marioalexis baee132f76 Fem: Remove reduntant info from geometry selector widget title 2024-10-10 20:33:54 -05:00
marioalexis 89286f47c4 Fem: Enable expression for the mesh Netgen task panel 2024-10-10 20:33:54 -05:00
marioalexis 9ad96c89bb Fem: Enable expression for the mesh region task panel 2024-10-10 20:33:54 -05:00
marioalexis 9bd0bf38d6 Fem: Enable expression for the mesh boundary layer task panel 2024-10-10 20:33:54 -05:00
marioalexis cb7b90fb88 Fem: Enable expression for the element geometry 2D task panel 2024-10-10 20:33:54 -05:00
marioalexis 7100d06e76 Fem: Enable expression for the element geometry 1D task panel 2024-10-10 20:33:54 -05:00
marioalexis a5720ec496 Fem: Enable expression for the centrif constraint task panel 2024-10-10 20:33:54 -05:00
marioalexis d94c65ba3f Fem: Enable expression for the spring constraint task panel 2024-10-10 20:33:54 -05:00
marioalexis 40531158f2 Fem: Enable expression for the heat flux constraint task panel 2024-10-10 20:33:54 -05:00
PaddleStroke 736f03caf2 Assembly: Fix gear/belt switch on checkbox toggle 2024-10-10 20:26:18 -05:00
Syres916 8b53daf263 [Gui] Disable the ability to change themes and preference packs... 2024-10-10 20:25:30 -05:00
marioalexis 5aebe6d751 Fem: Fix gap in constraint fixed symbol 2024-10-10 20:22:50 -05:00
Benjamin Nauck 104a3b90b0 Make sure splasher is stopped before showing dialog 2024-10-10 16:14:12 -05:00
Adrian Insaurralde Avalos 9dd105b16a CI: update lint action for ubuntu 24.04 2024-10-10 12:25:33 -03:00
Roy-043 c366ec1baa BIM: Remove calls to end_all_events to avoid Linux crash
Fixes #15723.
2024-10-10 13:47:09 +02:00
Paul Lee d535e46b5a [Arch] Bug: ArchRemove Creates Cyclic Dependency and TNP
FreeCAD Discussion Forum -
https://forum.freecad.org/viewtopic.php?t=91180&start=30#p786308
2024-10-10 10:06:09 +02:00
PaddleStroke a9bff78974 Sketcher: Fix double click of wire and remove selection that was not working 2024-10-08 10:53:00 -05:00
PaddleStroke 12c6fc2920 Core: Fix #7580 (#17013)
Fixes several undo/redo issues with the attachment dialog
2024-10-08 10:21:08 +02:00
PaddleStroke 13eeb7b8c2 Assembly: Fix migrationScript2 error with bad joints (#17010)
* Fix migrationScript2 to handle bad joints
2024-10-07 18:48:38 -05:00
Bas Ruigrok d20cb9e6ee Gui: Fix Touchpad navigation style panning in edit mode 2024-10-07 12:40:35 -05:00
marioalexis 8078e77169 Fem: Add option to use old Netgen mesher implementation 2024-10-07 18:11:11 +02:00
Benjamin Bræstrup Sayoc 13d00f9884 [Gui] TextEdit, zoom on Ctrl + wheel
Fixes #13861
2024-10-07 18:02:53 +02:00
marioalexis 00cf6437af Fem: Use default size for mesh task panel quantity spin boxes 2024-10-07 17:55:39 +02:00
mwganson a836e0d656 [Part Workbench] Fix issue with Sketcher_NewSketch icon moving on changing back to workbench 2024-10-07 10:52:48 -05:00
Furgo be5255e9bf Create the assembly object inside the list of commands 2024-10-07 17:48:00 +02:00
Florian Foinant-Willig c1c9cb63e0 Fix duplicate calculation at Task validation 2024-10-07 17:46:21 +02:00
mwganson 98f57c9ecc [Step Import] fix issue with non-latin characters in import path 2024-10-07 17:43:14 +02:00
marcuspollio 91a68b1b58 Start: little layout tweak to First Start Region 2024-10-07 17:41:42 +02:00
wmayer 4fe1513365 TD: Fix compiler warnings
This fixes the compiler warning: unused parameter 'mode' [-Wunused-parameter]

It's a regression of #16889 to not initialize the class member m_createMode any more that causes UB,
i.e. whenever m_createMode is accessed it may return an unexpected value.
2024-10-07 17:40:32 +02:00
Yorik van Havre 6c3c559225 Merge pull request #16963 from FlachyJoe/fix_primitivePlacement
PartDesign: Fix primitive placement
2024-10-07 17:39:27 +02:00
Unl0gic 4a617bf326 Update SurfaceSupport.py
- Fixed mapping v_bit to ConeCutter
2024-10-07 17:35:02 +02:00
wandererfan 528c2a0a17 [TD]fix parallel edge test (fix #16851)
- missing normalization before test
2024-10-07 17:34:11 +02:00
Benjamin Bræstrup Sayoc 5ce6c7933a [Sketcher] If origin selected: don't do distance to origin
In auto constrainer. Fixes #12684
2024-10-07 09:02:43 -05:00
mwganson dfafbfb040 [PartDesign AllowCompound] recompute all features when AllowCompound property is changed either from true to false or from false to true 2024-10-07 08:56:07 -05:00
shai f43444c03e Fix issue #17035 2024-10-07 08:35:43 -05:00
Eric Price 2d0fc0a177 Changed QuickMeasurement to be conservative (#17060)
* Changed QuickMeasurement to be conservative

QuickMeasurement should not measure while tool dialogs are open
this includes but is not limited to editing sketches
also changed several other sanity checks to be opt-in vs opt-out, as discussed.

* move the test if it is safe to measure to when the measurement actually happens - avoids any potential race conditions
2024-10-07 08:33:31 -05:00
Roy-043 24b9f75d5a BIM: BimWall add missing imports
Fixes #16996.
2024-10-07 15:21:11 +02:00
Roy-043 8875672e78 Draft: avoid confusing SVG warning for nested circles and ellipses
Forum topic:
https://forum.freecad.org/viewtopic.php?t=90942
2024-10-07 15:07:51 +02:00
bgbsww 33bea16a38 Disallow end_all_events in Gesture Nav Style 2024-10-07 15:03:17 +02:00
Roy-043 6a32980b5d More logical implementation of the fix. 2024-10-07 14:58:36 +02:00
Roy-043 f92ecfeff7 Draft: Stop draftToolBar.escape() executing multiple times
Fixes #17027.

The `DraftTaskPanel.reject()` function can be called multiple times if Esc is pressed during a fast mouse move. We need to prevent multiple calls to `draftToolBar.escape()` as this will lead to multiple calls to `gui_utils.end_all_events()` which results in a crash.
2024-10-07 14:58:36 +02:00
Max Wilfinger 8b8f591a8a Update images on XDGData and README 2024-10-07 14:54:41 +02:00
Patryk Skowroński 8bb3d719cf CMake build flag fix 2024-10-04 16:02:08 +02:00
Furgo 32e09d9554 Prepend a single quote to BOM index to be interpreted as a string in generated spreadsheets 2024-10-04 08:53:02 -05:00
Roy-043 a08d5a4c1e BIM: Compatibility fix for walls based on wire or face with -Z normal
In V1.0 the handling of wall normals has changed. As a result existing walls with their Normal set to [0, 0, 0], based on wires or faces with a shape normal pointing towards -Z, would be extruded in that direction instead of towards +Z as before. To avoid this their Normal property is changed to [0, 0, 1].
2024-10-04 13:54:17 +02:00
Ajinkya Dahale 596fa2856b [Sketcher] Apply tangent autoconstraint only when Dir given
This relates to `seekAutoConstraint` and `seekAndRenderAutoConstraint`.

Fixes #16321.
2024-10-03 23:17:43 -05:00
Florian Foinant-Willig 142f2aff39 [PD Helix] allow refinement to fail 2024-10-03 21:54:07 -05:00
Chris Hennes 7a37ea9bc0 Merge pull request #16726 from bgbsww/bgbsww-AssemblySubNames
Assembly: Correctly build reference from selection subname
2024-10-03 13:46:35 -05:00
Jiří Pinkava 9008373919 Gui: fix warning with duplicate name in DlgSettingsLightSources 2024-10-03 13:22:48 -05:00
Kris Wilk 7e81287914 Placement Dialog: Use default tab order (Fix #16944) 2024-10-03 11:43:42 -05:00
Chris Hennes d423795e2d CI: Update linter settings 2024-10-03 10:36:36 -05:00
Kris Wilk ffa1189634 Prevent using reserved names for properties or aliases (Fix #16846) (#16902)
* Prevent naming properties with reserved words (Fix #16846)

* Prevent using reserved constant names for properties or aliases

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

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

* App: Add unit test for isTokenAConstant

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2024-10-03 10:03:10 -05:00
PaddleStroke 69b4a6429e Chennes fix
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2024-10-03 09:59:15 -05:00
PaddleStroke 69fd894017 Assembly: Use cpp getGlobalPlacement python binding rather than reimplementing it. 2024-10-03 09:59:15 -05:00
PaddleStroke 306183ce26 Core: GeoFeature: Add python binding to the new getGlobalPlacement() 2024-10-03 09:59:15 -05:00
Frank Martinez 141a627b8f [AddonManager] Set default filter to ANY package type 2024-10-03 09:55:04 -05:00
PaddleStroke 6c494623d4 QuickMeasure: Prevent crash by limiting selection to Part::Features (#16921)
* QuickMeasure: Prevent crash by limiting selection to Part::Features

* chennes' fix

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2024-10-03 09:49:09 -05:00
Roy-043 ab44bd1f7b BIM: check if Width and Height of window are not zero 2024-10-02 21:49:21 -06:00
André Althaus a10dcb2a1a Only omit edges for group children in the dependecy graph
All edges for GeoFeatureGroupExtension where omited even if the
dependency was not a child of the object.
2024-10-02 21:44:30 -06:00
André Althaus 49771dc955 Show nested groups in the dependency graph
Depending on the creation order (objectArray) some nested groups where
not shown a nested because their children where processed before the
parents.
2024-10-02 21:44:30 -06:00
wmayer 08ff1e5eeb Core: Fix macro recording when using module_io 2024-10-02 21:13:19 -06:00
Benjamin Nauck 9913d6a1aa Fix macos crashes when unhandled exceptions reaches qt 2024-10-02 21:11:41 -06:00
wmayer 6c0659711b Core: Do not save changes of a text object if the GUI document is about to be closed
This fixes #16873: Text document breaks some Analysis container objects
2024-10-02 20:42:00 -06:00
David Carter d876e18808 Materials: Correct DiffuseColor custom attribute
Custom attributes were modified to maintain the behaviour of setting
transparencies using the DiffuseColor alpha channels
2024-10-02 20:35:09 -06:00
Pieter Hijma eab82038ba Gui: Fix segfault in Expression Editor/VarSet 2024-10-02 20:31:20 -06:00
André Althaus c7da5387b9 Remove the explicit dependency on Version.h from the fc_version target
This caused problems witht the Makefile generator because it doesn't
support the BYPRODUCTS option.
2024-10-02 20:30:42 -06:00
David Carter eef681f0f9 FEM: Translation error causing a crash
An error in the Italian translation added an extra '{}' to the
translation string resulting in a dump when formatting.

This has also been updated in CrowdIn but as it's causing a crash is
also beiung changed via this PR. It should updated correctly when
doing the next translation pull.

Fixes #16704
2024-10-02 20:29:01 -06:00
Florian Foinant-Willig 22131b3c93 [PD] Fix subtractive primitive placement 2024-10-02 13:40:21 +02:00
Florian Foinant-Willig 2276ffbf0a [PD] fix change primitive AttachmentOffset move the body 2024-10-02 13:40:17 +02:00
hlorus 813ee36cb8 MeasureGui: Also hide delta measurements 2024-09-30 18:24:19 +02:00
hlorus 1f081cd15e MeasureGui: Remove leftover reset of _mMeasureObject
This was introduced in af9097ce87 due to a faulty resolve of a merge conflict
2024-09-30 18:22:58 +02:00
WandererFan e8772751e6 [TD]Fix auto correct msg missing16892 (#16909)
* [TD]fix bad return code on auto-correct fail

* [TD]prevent changing references in property editor

- this is a "shoot yourself in the foot" practice
2024-09-30 18:20:47 +02:00
mwganson 59be5b1757 [Part CheckGeometry] prevent crash when attempting to check origin axis 2024-09-30 18:19:11 +02:00
Benjamin Nauck de294dabca Include a warning to devs for unhandled exceptions
The same situation will cause a crash on at least macOS.
2024-09-30 18:15:14 +02:00
wandererfan 127d16eacc [TD]fix no dim repair on area (fix #16894) 2024-09-30 18:13:28 +02:00
André Althaus 7d0032b834 Regenerate Version.h if the git hash changes
Prevous Version.h was not regenerated after it was initially created.
This prevented an accurate commit hash in the About dialog when
incrementally building from source.

Now the file is always rewritten when it's content is changed.
2024-09-30 18:12:39 +02:00
Shai Seger 07eac6b9f4 [CAM Simulator][1.0] Change usage of sample shader code to one with compatible license. (#16899)
* Change usage of sample shader code to one with compatible license.

* [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>
2024-09-30 18:08:39 +02:00
Frank Martinez 7220a77742 Revert 9b409da due to a regression in some platforms 2024-09-30 18:06:50 +02:00
Yorik van Havre 830b749eaa Merge pull request #16893 from wwmayer/issue_16735
Core: Fix resetting placement of transformed image
2024-09-30 18:03:38 +02:00
wandererfan 943e936657 [TD]fix solid line detail highlight not shown 2024-09-30 18:01:43 +02:00
Yorik van Havre 9b23064ebc Merge pull request #16889 from WandererFan/fixProjConvention16788
[TD]Fix proj convention (fix #16788, fix #16785)
2024-09-30 18:00:43 +02:00
Eric Price 9ee2c74545 Do not allow loft where the segment shapes are too close ( fix #5855 )
A loft or pocket only makes sense if the segments used for it have some minimum separation. Having the shapes identical causes segfaults in OCCT

Checking for CoG is a hack. Identical shapes have identical CoG - but an identical CoG does not necessarily mean identical shapes - however it can be argued that a shape that is not offset at least somewhat in the direction of the loft doesnt make a valid shape for a loft (it will typically freeze OCCT instead of crashing it) and a sufficiently suitable shape will have a different CoG

throwing the exception will make it easy to identify if there ever is a case where this is a bad thing - and exceptions are better than segfaults.
2024-09-30 17:58:13 +02:00
bgbsww 53a8a0f513 Tiny doc format changes to make pybin11_stubgen happy 2024-09-30 17:53:48 +02:00
marioalexis 02f5bd108e Fem: Add offset between faces and wireframe in FemPostObject view provider 2024-09-30 17:50:12 +02:00
Eric Price 594010d9f0 PadDesign: Work around issue 16690
This is a stopgap measure, I don't know if the underlying issue is fully understood - but this prevents it from happening in the given test case.

By overriding the base for the pocket prism, which is a trick also applied by
TopoShape::makeElementPrismUntil() if the prism creation fails on first try, the bug where said prism goes to the wrong shape is avoided - this on its own would however break a pad in the inverse case, so we only do that when pocketing
2024-09-30 17:47:47 +02:00
Benjamin Nauck fe9ec915f4 Fixes name 'PyExc_FC_AbortIOException' is not defined 2024-09-30 17:46:08 +02:00
wandererfan 842e2c693a [TD]fix bad default value (fix #16783) 2024-09-30 11:44:53 -04:00
bgbsww 64ecfe7a0e Make python Regex Strings raw to avoid py3.12 SyntaxError 2024-09-30 17:42:49 +02:00
Yorik van Havre e41def8c74 Merge pull request #16639 from WandererFan/balloonDrag15388
[TD]Balloon origin drag modifiers (fix #15388)
2024-09-30 17:40:23 +02:00
PaddleStroke bdfcb6bfb2 Assembly: Fix lag during dragging of large assemblies. Bundle fix joints together. Show only the movingJoint during dragging. Do not recompute joints during dragging. 2024-09-30 17:38:54 +02:00
wmayer 112f4a2d29 Core: Do not set to XY plane by default if the rotation of the image doesn't match 2024-09-28 19:05:52 +02:00
wmayer 09e140cf19 Core: Fix resetting placement of transformed image
The restored Euler angles of a rotation may significantly differ from the input Euler angles so that determining the plane isn't very reliable.
To get the plane reliably multiply (0,0,1) with the rotation and use this as reference normal of the plane.
2024-09-28 18:46:35 +02:00
wandererfan 02ebe18356 [TD]fix handling of projection convention (fix #16788 #16785) 2024-09-28 10:39:30 -04:00
wandererfan 9f334539ff [TD]add preference methods for Projection Group 2024-09-28 10:39:18 -04:00
Syres916 6e2cd4e733 [Gui] Qt6 OpenGLWidget - move black rectangle off screen (#16863) 2024-09-27 22:50:59 -04:00
bgbsww 87592f8041 Merge branch 'main' into bgbsww-toponamingAddFeatureRefine 2024-09-27 16:26:27 -04:00
bgbsww d535c5a6e7 Refine further 2024-09-27 13:00:19 -04:00
Jacob Oursland d519f24df9 CI: Fix conda builds. 2024-09-27 08:24:42 -05:00
bgbsww 7bed7ef370 Return to python; simplify to work with only classic names, provide migration 2024-09-26 00:01:10 -04:00
PaddleStroke 84b422c976 Add notr="true" 2024-09-25 21:02:13 +02:00
Eric Price 69676a0f9d Measurement: Avoid null shapes to be returned in all code branches (Fix #16820)
Returning a null shape would have triggered an exception in the bottom branch but not in the top one - which later leads to a segfault - solution - raise an exception. OOC doesn't like null shapes.
2024-09-25 12:29:48 -05:00
David Carter 9df2ec7b86 Materials: Fix QT6 error
The MaterialTreeWidget was not working in QT6 due to a type check for a
QT5 widget
2024-09-25 11:48:57 -05:00
wmayer ca7b7fe5a0 Fix compiler warning 2024-09-25 18:46:55 +02:00
Roy-043 abc95b42ca Fix linter warning 2024-09-25 15:59:49 +02:00
Roy-043 4313024162 Draft: ShapeString Fuse caused single face string to lose fill
The `faces.concatenate` function can return a Face or a Compound. The code did not take that into account.
2024-09-25 15:59:49 +02:00
Eric Price 54c278c123 Measurement: Correctly handle unknown selections to avoid segfaults (Fix 16794)
The measurement code did not handle mixed selections of known and unknown types correctly. Although a unknown selected object would leave the type at Invalid, selecting both known and unknown objects would have the type determined by the known object type and treat the unknown as the same. This causes exceptions and - worst case a segmentation fault.

This fix introduces a new category "other" which - if present in a selection always forces type to Invalid. This should be forward compatible in case new types are introduced in the future.
2024-09-25 07:48:56 -05:00
PaddleStroke cf5a704e19 Remove unecessary ':' cluttering Placement.ui 2024-09-25 09:51:40 +02:00
bgbsww f0053e5388 Correctly build reference from selection subname 2024-09-24 22:01:14 -04:00
chris 6be69ac576 issue #15329 add missing include to resolve build error 2024-09-24 19:08:45 -05:00
Eric Price 256ad7a01a PartDesign: Loft Intelligence - Select the whole sketch if the selected shape is … (#16791)
* Loft Intelligence - Select the whole sketch if the selected shape is a component of a sketch that is not a vertex (Fix #16630)

In fa8f29aed4 FeatureLoft.cpp was refactured, dropping some functionality, mainly the ability to create lofts to entire sketches or other 2d shapes if a single component that was not a single vertex was selected as either the base shape or a section

the old code was:

1     auto getSectionShape =
2          [](App::DocumentObject* feature, const std::vector<std::string> &subs) -> TopoDS_Shape {
3              if (!feature ||
4                  !feature->isDerivedFrom(Part::Feature::getClassTypeId()))
5                  throw Base::TypeError("Loft: Invalid profile/section");
6
7              auto subName = subs.empty() ? "" : subs.front();
8
9              // only take the entire shape when we have a sketch selected, but
10             // not a point of the sketch
11             if (feature->isDerivedFrom(Part::Part2DObject::getClassTypeId()) &&
12                 subName.compare(0, 6, "Vertex") != 0)
13                 return static_cast<Part::Part2DObject*>(feature)->Shape.getValue();
14             else {
15                 if(subName.empty())
16                     throw Base::ValueError("No valid subelement linked in Part::Feature");
17                 return static_cast<Part::Feature*>(feature)->Shape.getShape().getSubShape(subName.c_str());
18             }
19         };

this commit forward-ports the missing functionality provided by line 7-12 in above snippet

* Code cleanup as suggested by (#16791)
2024-09-24 15:01:26 -05:00
Florian Foinant-Willig 490d6c5abc [PD] Fix Pad uptoface with custom direction (#16539)
* [PD] Fix Pad uptoface with custom direction

* Add unit test
2024-09-24 11:30:01 -05:00
wandererfan 0ff7c3a38f [TD]fix crash on bad selection (fix #16727) 2024-09-24 10:07:51 -05:00
Benjamin Nauck ad141f1796 Swaps out the hard coded icon to the standard svg icon 2024-09-24 10:04:15 -05:00
Syres916 1f4adf9e56 [BIM] Fix error starting BIM Wb for certain new users 2024-09-24 14:22:20 +02:00
Eric Price b38c42262f CLI: Enforce LC_NUMERIC=C on Posix systems (#16724) (#16763)
* Enforce LC_NUMERIC=C on Posix systems (#16724)

Initialising Qt with native LC_NUMERIC affects XML import on CLI (freecad -c)

This causes sketch constraints and potentially other components relying on numeric constants to break or have incorrect values.

Forcing LC_NUMERIC to C avoids this issue and enforces reproducible behaviour on all locales.
This does not affect the number format displayed in the GUI, as set in preferences.
2024-09-23 19:09:29 -05:00
Frank Martinez 9b409da59c Splash Screen minimal show time. Issue #16264 2024-09-23 16:06:59 -05:00
bgbsww a715a4d161 Support macros and console logs in Assembly 2024-09-23 14:10:55 -05:00
Yorik van Havre abd5c3ca31 Translations (#16754)
* Updated ts files

* merged crowdin translations

* [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>
2024-09-23 14:09:56 -04:00
Yorik van Havre 4d35aa06dd BIM: Fixed adding missing windows when converting to IFC - Fixes issue #16631 2024-09-23 17:54:12 +02:00
Benjamin Nauck fdfb9fd2c6 Reuse Std_Delete shortcut instead of hardcoding Delete (#16682)
* Reuse Std_Delete shortcut in TaskBooleanParameters

* Reuse Std_Delete shortcut in TaskDressUpParameters

* Reuse Std_Delete shortcut in TaskLoftParameters

* Reuse Std_Delete shortcut in TaskPipeParameters

* Reuse Std_Delete shortcut in TaskSapeBinder

* Reuse Std_Delete shortcut in TaskTransformedParameters

* Reuse Std_Delete shortcut in TaskExtrudeParameters

* Reuse Std_Delete shortcut in TaskSections

* Reuse Std_Delete shortcut in MaterialSave

* Reuse Std_Delete shortcut in Array2D

* Reuse Std_Delete shortcut in TaskFemConstraint

* [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>
2024-09-23 10:53:39 -05:00
bgbsww 837920f378 Match LS3 opcodes for sketch shape 2024-09-23 17:45:32 +02:00
3x380V 1207715849 TechDraw: Buggy Wayland custom cursors workaround (#16740)
* Gui: Minor polishing of cursor regression fix

* TD: Buggy Wayland custom cursors workaround

Until Qt v6.6 displaying custom cursors on Wayland is broken,
so add a workaround. See also QTBUG-95434.

Fix is the same as d3bb2068 ("Gui: Buggy Wayland custom cursors workaround")
plus subsequent fixes.
2024-09-23 17:43:10 +02:00
Christoph Moench-Tegeder 15a75ba5d3 replace exec_program() with execute_process()
Recent CMake (>= 3.28) do not allow exec_program() any more by default,
but prefer execute_process(), which takes slightly different flags.
According to the documentation, exec_program() has been deprecated
since CMake 3.0 (which was released in 2014, so it should be common
enough that I don't feel like making allowances for any really old CMake).

References: https://cmake.org/cmake/help/latest/policy/CMP0153.html
2024-09-23 17:41:19 +02:00
WandererFan a1ff05f382 [TD] Fix win file spec backslash (fix #16646) (#16689)
* [TD]add method to clean win filespecs

- '\' in strings passed to Python as filespecs is interpreted as
  an escape of the following character.
- replace '\' with '/'

* [TD]remove '\' from filespecs before use
2024-09-23 17:40:05 +02:00
Shai Seger b4e29414b6 [Cam Simulator][1.0] Fix minor Ambient Occlusion bug. (#16665)
* Fix minor Ambient Occlusion bug.

* fix text cutting in CAM Simulator task panel. Issue #16707
2024-09-23 17:38:53 +02:00
wandererfan 0d6f47d1ce [TD]fix BrokenView selection (fix #16567) 2024-09-23 10:36:51 -05:00
Kevin Martin 5bed9bf53f DXF: Fix Import related behavior reported in issues #13597 and #16068 (#16511)
* Fix double-import on exception in ImportGUI.readDXF
The python code has a try/catch block intended to detect if the ImportGUI module is present and if so use its readDXF method, otherwise use Import.readDXF.
The block was incorrectly structured so that Import.readDXF would also be called if ImportGUI.readDXF raised an exception, causing the DXF file contents to be loaded twice into the drawing (at least, up to the point where the exception occurred)

* Make ImpExpDxfRead::MakeLayer use centralized accessor for Draft module
The importer class already had a method to find the python Draft module, but MakeLayer was doing the work itself. Now it uses the centralized accessor, which has also been improved to generate a message if the module can't be loaded.

* Give compounded objects names related to the containing layer name
If "Use Layers" is set and also "Group layers into blocks" the names of the generated compound objects will be based on the name of the containing layer.
If "Use Layers" is not set this will not occur because in general objects from several layers would be compounded together.
Fixes (partially) #16068, the remaining fix is likely just an explanation of the interaction of the options.
closes #13597

* Use correct (new) property name OverrideShapeAppearanceChildren
This corrects a bug created by commit 495a96a which renamed the layer property "OverrideShapeColorChildren" to "OverrideShapeAppearanceChildren" but missed this particular reference to the property by its old name.

The code here called PyObject_SetAttrString which, due to the wrong attribute name, set an expection state in the Python engine, ultimately causing the next attempt at importing a module to fail, with various consequences depending on why the module is being imported.

* Wrap PyObject_SetAttrString and PyObject_GetAttrString with error-checkers
In DEBUG compiles these methods are wrapped to report errors which can occur if the property cannot be referenced.

* Make some error-printers static instead of const
They don't need the CDxfRead object to work

* Display exceptions raised by ReadEntity
Although the DXF reader has an ignore-errors flag, it should still report any errors it encounters. The flag is deemed to mean that, after an error, the reader should continue to try to read the file rather than quitting on the first error.

* [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>
2024-09-23 17:28:00 +02:00
sliptonic b31084f609 Catch other exceptions with Camotics on import. (#16583) 2024-09-23 10:27:49 -05:00
hasecilu 0a18849a0a Help: Don't open 404 documentation pages
Unfortunately, not all documentation is translated.

Instead of presenting to the user 404 code error pages is preferable to
show the documentation on English.

Status codes 200 and 404 are assumed as requests response.
2024-09-23 17:17:23 +02:00
David Carter 1c6b7dc8b8 Materials: Update install locations
Ensure icons and images are put in the correct location.
2024-09-23 10:02:50 -05:00
David Carter 1542ddc815 Materials: Correct installation paths
Correct the installation paths affecting builds on various systems
while still maintaining the old material editor required for
backwards compatibility
2024-09-23 10:02:50 -05:00
wandererfan 99b7edef3a [TD]respect camera direction preference (fix #16593) 2024-09-23 09:23:42 -05:00
wandererfan fcdd946261 [TD]fix torus render (fix #16646) 2024-09-23 09:21:00 -05:00
wandererfan d5d66b2c70 [TD]fix double pdf file on win (fix #16538) 2024-09-23 09:18:47 -05:00
marioalexis 685d10dcfa Fem: Use shape global placement in Mesh Netgen new implementation 2024-09-23 08:17:04 -05:00
marioalexis dbe74c2595 Fem: Add offset between faces and wireframe in FemMesh view provider 2024-09-23 08:16:27 -05:00
marioalexis 5ff4d427a5 Fem: Use reference subshape transformation on the underlying geometry 2024-09-23 08:11:15 -05:00
Jiří Pinkava a55e704758 BIM: Fix tabstop order for Project Manager dialog
Until now not defined explicitly, using tab juped throught boxes in
order in which they were created, which is really jumpy user experience.
2024-09-23 12:14:30 +02:00
Kevin Martin c9887d9400 DXF: Place objects in layer all at once rather than one at a time to improve DXF import speed dramatically. (#16596)
* Place objects in layer all at once rather than one at a time.
This reduces (by a factor of the number of objects in the layer) the number of times that the layer contents are traversed to set the properties of the contained objects.
This means the layer insertion of O(n) rather then O(n^2) on the number of objects.
Also remove a loop invariant in view_layer so the chidren are not traversed if colours or appearnces are not inherited from the layer.
Fixes #15732

* [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>
2024-09-23 11:39:02 +02:00
Kevin Martin 980303b618 DXF: Remove O(n^2) time on DXF import with the legacy importer (#16611)
* Remove O(n^2) time on DXF import
Accumulates the contents of each layer in a local Python list, then at the end assignes all the objects at once into the layer. This avoids a very slow process of traversing the objects so far and (re-)updating their properties each time a new object is added.
Fixes #16604

* Correct last change to not damage existing layer contents.
The layer could already have contents if the DXF file is being Imported rather than Opened.
The original change would lose the previous layer contents.
2024-09-23 11:37:34 +02:00
hlorus af9097ce87 MeasureGui: Move _mMeasureType member to local variable
Fixes #16565
2024-09-22 20:34:45 -05:00
Florian Foinant-Willig 22fbfeddc2 [PD] Fix Pad uptoshape and add unit test 2024-09-22 17:22:36 -05:00
Roy-043 d6e9be45bb Correct tree icon for TechDraw_AreaDimension 2024-09-22 16:58:52 -05:00
Bas Ruigrok f779ebe60a Tux: Fix default orbit style shown in status bar 2024-09-22 16:57:26 -05:00
Chris Hennes 5a614828e3 Merge pull request #16713 from bgbsww/bgbsww-ToponamingFeatureHole
Toponaming: transfer feature hole
2024-09-22 16:55:00 -05:00
bgbsww c5ad54d5a8 Update method names and clean 2024-09-22 14:44:50 -04:00
Zheng, Lei b2d6787571 Transfer FeatureHole code 2024-09-21 14:53:33 -04:00
Benjamin Nauck 86fa65ba48 Use backspace as default to delete on mac
Only full size mac keyboards has a specific delete key, most doesn't.
2024-09-21 10:37:30 -05:00
bgbsww 8fdef156f0 Correct error in resolveElement 2024-09-21 10:36:20 -05:00
David Carter 84b0109ad2 Materials: Set transparency from DiffuseColor
Migrate the transparency from the DiffuseColor alpha channel to the
transparency color attribute. This allows the alpha channel to be
used as designed

fixes #14938
2024-09-21 10:35:28 -05:00
Jiří Pinkava a47800d9cc Gui: Fix path to QRC file in PreferencePages UI file
QtCreator, when the file is opened, reports reference to .qrc filewhich
does not exists. It looks like a missing piece from ccb9d7faeb.
2024-09-20 08:43:13 -05:00
CalligaroV fd28d94f6a Sketcher/Gui: check if there's a 3D view while executing ViewProviderSketch::unsetEdit()
Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
2024-09-20 08:29:48 -05:00
supermixed f763425b4f Core: Import STEP: Cancel button does not cancel (#16499)
* Fix importing .step file when user cancelled import settings dialog
* Refactor object loading python code, fix not using settings when STEP options dialog not shown
* Use custom exception type for user cancelling import instead of `RuntimeError`
* Pull python code out to external file
2024-09-20 08:25:23 -05:00
xtemp09 c9452e2c0f [GUI] Move the Push In and Pull Out buttons to the left side
Closes #16587.
2024-09-20 08:19:46 -05:00
Chris Hennes f07cb77bd7 Merge pull request #16613 from theosib/main
Filter out infinite objects from Part Loft and Sweep
2024-09-20 08:17:41 -05:00
Frank Martinez 6afc6c7757 Change fixed selection colors to style based palette. Issue #16454 2024-09-20 08:10:21 -05:00
Frank Martinez 075d30c12c Issue 16454 workaround: PropertyEditor selection colors 2024-09-20 08:10:21 -05:00
bgbsww c5d10cf236 Match Ruled Surface behavior to prior versions 2024-09-20 08:09:11 -05:00
Bas Ruigrok 2043da62f2 Gui: Fix segfault in align to selection tool 2024-09-20 08:06:31 -05:00
David Carter 669c82fecd Materials: ShapeMaterial not properly restored
The ShapeMaterial variable was not being properly restored. It's UUID
was restored but the material was not being loaded and set
2024-09-20 08:04:13 -05:00
Florian Foinant-Willig 8b9f5bdc4f [PD] fix pad uptoface and uptoshape (#16030)
* [PD] fix Pad UpToFace and UpToShape
* specify struct pointers for Win
* Rename variables for MSVC compatibility - windows.h defines 'near' and 'far' as macros
* Add unit test

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2024-09-19 08:51:18 -05:00
bgbsww f82bfd5ddc Move the recompute dialog to after Gui opens instead of per document signal. 2024-09-19 08:49:13 -05:00
PaddleStroke 0be29b11b7 Measure: Fix quickmeasure globalplacement. 2024-09-19 08:47:57 -05:00
Benjamin Nauck 3a1a6d35ee Removes an unnecessary fixme comment 2024-09-19 08:46:45 -05:00
Chris Hennes 72c654df55 Addon Manager: Don't crash on bad XML
Wrap all metadata reads in try/except blocks and gracefully bail out if the data is bad.
2024-09-19 08:45:37 -05:00
Roy-043 4e0a574141 BIM: show AutoUpdate of existing ArchSchedule
Fixes #16655.
2024-09-19 14:17:45 +02:00
Yorik van Havre 56dbb6532a Translations (#16582)
* updated ts files

* merged crowdin translations

* [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>
2024-09-19 09:36:54 +02:00
Syres916 f00b236dfb [Draft] Improve the color activation and ability to change… (#16603)
* [Draft] Improve the color activation and ability to change size of the snap text

* [Draft] Correct dimension text size calculation
2024-09-19 09:03:33 +02:00
bgbsww 27ca64a201 Sketcher: Do not consider missing external geometry to be an error (#16590)
* Do not consider missing external geometry to be an error; highlight in conflict color.
2024-09-18 15:18:11 -05:00
hlorus a54a9e2e1e MeasureGui: Auto close task on document deletion 2024-09-18 13:03:56 -05:00
Zheng, Lei 64ff5ac078 Base: fix XMLReader non-closing character stream 2024-09-18 12:58:41 -05:00
Benjamin Bræstrup Sayoc a6975c8cef Revert "[Measure] Fix redundant variable assignment"
Fixes #16564. This reverts commit a7831eee4b.

Co-authored-by: Murmele <Murmele@users.noreply.github.com>
2024-09-18 08:36:22 -05:00
bgbsww e4ad21e48f If we are creating a Sketch inside a Body that is in a link, use link position 2024-09-18 08:35:20 -05:00
bgbsww 914a7616f7 Gui: fix python syntax in C++ code that broke some compilers (#16614) 2024-09-18 09:06:20 -04:00
Patryk Skowroński f0884b1529 Fixed detection of startup workbench 2024-09-18 13:13:08 +02:00
wandererfan 3122062886 [TD]allow override of Balloon drag modifier (fix #15388) 2024-09-17 21:40:50 -04:00
wandererfan 5ecd2a0b7a [TD]add preferences for Balloon drag modifiers 2024-09-17 17:17:15 -04:00
theosib ad98d729b9 Filter out infinite shapes from Sweep available surfaces 2024-09-17 15:13:30 -04:00
theosib a70d25b65e Filter out infinite shapes from Loft available shapes 2024-09-17 15:12:34 -04:00
Ladislav Michl 758674d40b Main: simplify banner
FreeCAD advertizes itself too noisy way which brings no usefull
infomation. Unify banner for commandline and GUI application and
drop unicode '(C)' character.
2024-09-16 18:14:52 +02:00
Jiří Pinkava 60b8c89fc4 Gui: fix size of ComboBox in Preferences/Navigation
Fixes visual artifact in the Preferences/Navigation dialog. The
default value for this field is 0 (at least for some Qt versions),
which does not make sense, because the element would be invisible.

Also the element is actually invisible when editing the UI file in
QtCreator.

Using the default "max" value set for other fields.
2024-09-16 18:07:14 +02:00
hlorus ab031bc92c Measure: Use getGlobalPlacement method (#16251)
* Initial commit to apply delta also for interactive measurement

* Not required special logic to check if possible, it can be easily checked if the property exists

* remember setting so it is not required to turn it always on

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

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

* Measure: Use getGlobalPlacement method

Fixes #16058

---------

Co-authored-by: Martin Marmsoler <martin.marmsoler@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-09-16 18:05:21 +02:00
Yorik van Havre eb14fc9253 Merge pull request #16558 from CalligaroV/toponaming-sketcher-ViewProviderSketch-addSelection2-call-convertSubName
Sketcher/Toponaming: call SketchObject::convertSubName() in Gui selections
2024-09-16 18:01:23 +02:00
Yorik van Havre 0b6c9d3b4b Merge pull request #16433 from marioalexis84/fem-mesh_netgen
Fem: New implementation of FemMesh Netgen object
2024-09-16 17:56:56 +02:00
Yorik van Havre 585c9e236a Merge pull request #16515 from marioalexis84/fem-meshing_no_blocking
Fem: Enable cancel meshing for Gmsh - fixes #5914
2024-09-16 17:53:29 +02:00
Yorik van Havre d9fc1cd8b9 BIM: Support for IfcOpenShell 0.8 2024-09-16 09:51:34 -06:00
bgbsww 0f53f2195d Add override flag for recomputes; set it in relevant tests with old files. 2024-09-16 17:49:35 +02:00
bgbsww a54f03f666 Move code for recompute dialog and disable warning 2024-09-16 17:49:35 +02:00
Zheng, Lei 445a884682 Transfer in LS3 code 2024-09-16 17:49:35 +02:00
qewer33 aa81b03bee Update about dialog thumbnail image 2024-09-16 17:46:27 +02:00
Shai Seger edf330558c [Cam Simulator][1.0] Limit anti alias samples for better compatibility. (#16416)
* Limit anti alias samples for better compatibility. might solve Wayland problem, issue #15665

* Antialias samples are taken from display prefs

* [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>
2024-09-16 10:42:05 -05:00
Jiří Pinkava 89ac26e711 Sketcher: initialize geometry history limit variable (#16337)
* Sketcher: initialize geometry history limit variable

The variable seems to be uninitialized, valgrind complais about it.

The `git grep geoHistoryLevel` and the code ispection suggest it is never set.
If initialized to zero, most of the related code is never used, which
can point to the fact there is either another bug or the code is unused.

The variable was introduced in 42bf92ad12.

* Sketcher: Default geoHistoryLevel to 1

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2024-09-16 17:41:12 +02:00
wandererfan ef2669deea [TD]allow SaveCopy from MDIViewPage (fix #16447) 2024-09-16 17:35:51 +02:00
Roy-043 79c694945f BIM: exportIFC.py fix UnboundLocalError
As shown in the image here:
https://github.com/FreeCAD/FreeCAD/issues/16485#issue-2523042111
2024-09-16 13:37:56 +02:00
Jiří Pinkava fdb72e83e5 BIM: refactor wellcome window, drop most obvious comment 2024-09-16 13:27:25 +02:00
Jiří Pinkava b2faf00fa3 BIM: drop unnecessary setPixmap from wellcome window
The image is already set in the UI file, it is not necessary to set it again
2024-09-16 13:27:25 +02:00
Jiří Pinkava c8a12f81e8 BIM: adjust size of wellcome window to fit content
The actual optimal size of the window depends on many details, like UI style, system fonts,
OS etc ... so lets auto-resize the window to fit the content before display.
2024-09-16 13:27:25 +02:00
Patryk Skowroński d372aefa7c NavLib integration enabled for MacOS 2024-09-16 11:19:25 +02:00
Roy-043 b6599c5315 Draft: Fix regression with layer print color
Problem with the same cause as #16212.
2024-09-16 10:07:40 +02:00
hoshengwei 9b63b1b4d9 fix Material TaskPanel Load Preset not working bug 2024-09-16 10:03:26 +02:00
marioalexis 2b5a40c782 Fem: Replace old FemMesh Netgen object implementation 2024-09-16 00:06:20 -03:00
marioalexis cabfbb749f Fem: Enable cancel meshing for Gmsh - fixes #5914 2024-09-15 21:04:41 -03:00
marioalexis 5aeb03675a Fem: Add base class for FemMesh task panels 2024-09-15 21:03:17 -03:00
marioalexis 018182572a Fem: New implementation of FemMesh Netgen object 2024-09-15 20:49:38 -03:00
marioalexis 5a7bc6101b Fem: Add set of mesh elements from a list 2024-09-15 20:47:09 -03:00
marioalexis ab790dd9ce Fem: Add base class for FemMesh task panels 2024-09-15 20:46:08 -03:00
CalligaroV c3bad9da25 Do the same for the elements selected in the Task Panel
Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
2024-09-15 19:54:09 +02:00
Zheng, Lei 3da4b59b37 Sketcher/Toponaming: call SketchObject::convertSubName() in ViewProviderSketch::addSelection2() 2024-09-15 19:26:48 +02:00
bgbsww ae46ea5e7b Toponaming: Refactor refine to its own FeatureRefine class 2024-09-14 23:24:43 -04:00
hasecilu a90aebeec2 Fix some typos on several files
- Missing spaces
- Missing commas
- 3D, G-code, Git, SPOOLES, Python capitalization
2024-09-14 12:07:51 -06:00
hasecilu 4cae5bb883 TechDraw: Fix capitalization of 2D and 3D 2024-09-14 12:07:50 -06:00
Kacper Donat b4923d1c58 Gui: Use FreeCAD Theme only for FreeCAD stuff 2024-09-14 17:38:47 +02:00
wandererfan 6bc64cd9ef [TD]Use correct translate function (fix 335)
- another translation cycle will need to occur before the change is
  apparent.
2024-09-14 09:48:33 -04:00
wandererfan 762261d251 [TD]Use correct translation function (fix #317)
- another translation cycle will have to run before the change is
  apparent.
2024-09-14 09:43:06 -04:00
Yorik van Havre f09dfa72d0 Draft: Fixed restrained movement - Fixes #16386 2024-09-13 13:20:45 -06:00
Chris Hennes 5fb2361d63 Merge pull request #15262 from Rexbas/fix-alignment-direction
Move getGlobalPlacement() and fix alignment direction for transformed objects
2024-09-13 13:09:23 -06:00
Jacob Oursland f8c4842d6f Windows: Make FreeCAD.exe debuggable on PDB builds. 2024-09-13 12:30:10 -06:00
Jacob Oursland c80ab28f41 CMake: conda-macos-* do not search Homebrew for dependencies. 2024-09-13 12:28:05 -06:00
Jacob Oursland b6ac2b2920 Base: switch header include type for consistency with codebase. 2024-09-13 12:27:18 -06:00
Jiří Pinkava ede67d4b24 GUI: Fix tree visibility click when a tree item gets collapsed
The tree can change shape during handling the mousePressEvent() event,
because some part of the tree can be (un)folded. This might lead to
shift of the three (up or down). The position of items in tree change
relatively to the position of mouse (which stays in place).
If the visibility click is handled after mousePressEvent, the shift in
position can lead to cursor beeing over visibility icon and the click
is handled like if the visibility icon vas clicked, which is unexpected.

Handling the visibility click first fixes this. The setAccepted(true),
was removed, it is left to the subroutine to set it.
2024-09-13 13:24:42 -05:00
Chris Hennes 9de78e27f4 Core: Bump minor version, now 1.1dev 2024-09-13 08:51:27 -05:00
Jacob Oursland a64fd6babe Version: set development branch back to 'dev' suffix. 2024-09-13 08:51:27 -05:00
Chris Hennes 14ca86827d Merge pull request #16480 from benj5378/measurementSegFault
[Measure] Redirect enter key press to apply button
2024-09-13 08:42:41 -05:00
wmayer 86806cb353 Port: Include changes of FreeBSD port 2024-09-13 08:31:54 -05:00
Yorik van Havre 6c5e90a6d2 Draft: Fixed function case 2024-09-13 15:00:47 +02:00
Yorik van Havre 8ef66ad73d Draft: Fixes error in Draft trackers when not on a 3D view 2024-09-13 15:00:47 +02:00
hoshengwei 5d87b26a91 fix ArchMaterialTaskPanel wrong import BimClassification Path
1. fix ArchMaterialTaskPanel wrong import BimClassification Path and icon after BIM merge into Arch

2. change taskpanel name to BIM material 

3. fix Qt slot and signal (more up to date style)
2024-09-13 12:11:56 +02:00
Roy-043 3fd57efbb0 Use max instead of if-else for numerical checks (as per linter warning) 2024-09-13 12:07:52 +02:00
Roy-043 ba6dd5858e Draft: fix division by zero and count is zero for path arrays
Fixes #16468.
2024-09-13 12:07:52 +02:00
Adrián Insaurralde Avalos a4f742a2f7 GUI: Fix splashscreen for single image (#16428)
* fix splashscreen for single image
* improve clarity of splashscreen load order logic
* fix splashscreen with no _2x variant
2024-09-12 21:49:35 -05:00
Chris Hennes e5990fe146 Merge pull request #16465 from mosfet80/mosfet80-patch-2
fix CXX standard selection
2024-09-12 21:35:19 -05:00
Chris Hennes 71599f1589 Merge pull request #16403 from oursland/conda-clang-format
conda: Add clang-format to the developer's environment.
2024-09-12 21:26:28 -05:00
Chris Hennes db2aa8ae93 Merge pull request #16451 from wwmayer/fix_qt6_warnings
Fix Qt6 warnings
2024-09-12 21:22:37 -05:00
Benjamin Bræstrup Sayoc 5bd595c0d3 [Gui] Handle unset style preferences in clipboard about info
FIxes #16391
2024-09-12 21:20:02 -05:00
Scott Noyes 49ed687afc consistent preposition 2024-09-12 21:17:55 -05:00
Chris Hennes 4ca08595ad Merge pull request #16355 from CalligaroV/Sketcher-checkSubName-from-LS3
Sketcher/Toponaming: import SketchObject::checkSubName() from LS3
2024-09-12 21:11:39 -05:00
Benjamin Bræstrup Sayoc e20ab85fd3 [Measure] Redirect enter key press to apply button
Fixes #16401. Now call of the save function is dependent on whether the apply button is enabled. The button is only enabled if valid objects to save.
2024-09-12 16:23:17 +02:00
Benjamin Bræstrup Sayoc a7831eee4b [Measure] Fix redundant variable assignment 2024-09-12 16:17:29 +02:00
luzpaz 77b3311f57 TechDraw: fix typo ballon->balloon 2024-09-12 09:25:40 -04:00
Yorik van Havre b06943c5e1 BIM: Fixed bug in BimViews - fixes #16452 2024-09-12 14:30:41 +02:00
Furgo 5fa7fb757a Check location and call corresponding addObject, add missing import. Fixes #16435 2024-09-12 14:29:10 +02:00
Kacper Donat 781c9b6b84 Gui: Force OpenGL rendering for main window
This is big hack for Qt6 to force rendering using OpenGL from the
beginning. Since Qt6 OpenGL context is initialized only after creating
first QOpenGLWidget which results in window hiding and showing again
after some delay. This causes various timing issus as the window is not
supposed to do that.
2024-09-12 13:27:44 +02:00
wmayer 0946c6880d StartPage: Make sure to pass a container widget to the QScrollArea
Fixes #16047: FreeBSD: Segfault in StartView::firstStartWidgetDismissed
2024-09-12 12:04:23 +02:00
wmayer 8f1a533045 MSVC: Fix several compiler warnings 2024-09-12 11:58:36 +02:00
Roy-043 40e71af920 BIM: fix BIM_Setup license issue
FreeCAD currently has 19 standard licenses. BIM_Setup could only handle the first 10.

Forum post:
https://forum.freecad.org/viewtopic.php?p=781578#p781535
2024-09-12 11:00:39 +02:00
Benjamin Bræstrup Sayoc 5785cb589b [TechDraw] Fix uncentered balloon label 2024-09-11 20:04:30 -04:00
mosfet80 95c42d0be3 fix CXX standard selection
only   CXX 23, 20 and 17 standards are allowed
2024-09-11 21:08:44 +02:00
pre-commit-ci[bot] 9d040467ac [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2024-09-11 14:39:34 +00:00
wmayer 36db6a98cb Qt6: QLocale::countryToString and QLocale::country() are deprecated since Qt 6.6 2024-09-11 16:34:59 +02:00
wmayer 10a5d67109 Qt6: Several methods of QMouseEvent are deprecated since Qt 6.0 2024-09-11 16:33:19 +02:00
xtemp09 614a14fe87 [GUI] Make some strings untranslatable in Light Sources dialog 2024-09-11 08:41:07 -05:00
wmayer fe69762652 Qt6: QColor::setNamedColor is deprecated since Qt 6.6 2024-09-11 15:41:04 +02:00
Adrián Insaurralde Avalos 85ade21436 CI: add version to cache key for libpack/ccache download actions for win 2024-09-10 14:06:05 -04:00
Adrián Insaurralde Avalos d095a91f64 Fix compiler cache for conda linux builds 2024-09-10 14:06:05 -04:00
spanner888 a4313f358e save after del, new, add (#16230)
Co-authored-by: spanner888 <spanner888@users.noreply.github.com>
2024-09-10 11:20:35 -05:00
sliptonic 6ac0cb7588 set default directory for sanity (#15934)
Respond correctly if user cancels  Fixes #14796

Co-authored-by: Brad Collette <bradcollette@pop-os.localdomain>
2024-09-10 10:23:13 -05:00
Roy-043 3503d677a9 BIM: BimWindow.py add missing imports (#16308) 2024-09-10 12:24:29 +02:00
Furgo 5af5936c24 BIM: Fixes profile tool positioning (#16305)
* [BIM] Get working plane when picking a point

Fixes: #16284

* Use the new way of getting the Draft Working Plane
2024-09-10 11:48:39 +02:00
Jacob Oursland d7fc2d66e1 conda: Add clang-format to the developer's environment. 2024-09-09 20:13:00 -07:00
Pieter Hijma 34c366bfd7 Core: Fix duplicated extensions (see #16299) 2024-09-09 22:11:44 -05:00
Murmele 6270d73bab Measure: Show delta option also in interactive mode (#16379)
* Initial commit to apply delta also for interactive measurement
* Not required special logic to check if possible, it can be easily checked if the property exists
* remember setting so it is not required to turn it always on
2024-09-09 21:39:27 -05:00
Kacper Donat e260cf5c8a Sketcher: AutoColor should update only colors
Previously AutoColor property forced reinitialization of all subscribed
parameters. It was mostly fine as most of them should stay in sync with
user settings but it also affected grids.
2024-09-09 21:19:35 -05:00
marioalexis 92e31fa7ea Fem: Set Elmer result output format to Ascii 2024-09-09 11:35:22 -05:00
marioalexis 395574ae19 Fem: Allow only one shape type per mesh group - Partially revert #16076 2024-09-09 11:32:51 -05:00
Morimiue 62460a0334 Sketcher: transfer constraints on conic's mid point to the newly created conic arc (e.g. ellipse arc)" -m "Fixes #15860" -m "When spliting a sketch curve, constraints on the original curve are transferred to the newly created curve. The original code did not consider the constraints on the center point of an ellipse arc. 2024-09-09 18:31:13 +02:00
xtemp09 0995e1d5ec [GUI] Enable sort of zoom in Light Sources dialog 2024-09-09 18:27:51 +02:00
Yorik van Havre 7b3eca8396 Translations (#16389)
* Translations: Updated ts files

* Translations: Merged crowdin translations

* [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>
2024-09-09 18:25:52 +02:00
Yorik van Havre aad0fd1c90 Merge pull request #16220 from wwmayer/placementpy
Core: Expose Placement dialog to Python
2024-09-09 18:24:31 +02:00
PaddleStroke 7f83336ba8 Assembly: Replace Offset and Rotation properties by Offset1 and Offset2, giving full control over JCS positions. 2024-09-09 18:22:06 +02:00
Yorik van Havre bd06fa3f03 Merge pull request #16140 from Ondsel-Development/sk_rectangle_thickness_crash
Sketcher: Fix round corner + thickness issue if radius + thickness = 0
2024-09-09 18:14:41 +02:00
Florian Foinant-Willig 355610cfb3 [PD] Fix helix placement 2024-09-09 18:11:25 +02:00
CalligaroV 64eb012d7b Call ComplexGeoData::ensureElementMap() in ComplexGeoData::readElements()
Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
2024-09-09 18:05:52 +02:00
Syres916 0b7632261f [Spreadsheet] Fix CSV import by insert 2024-09-09 18:04:02 +02:00
wmayer 1d0fe1ab28 Port: Include some important changes of the OpenBSD port
Forum thread: https://forum.freecad.org/viewtopic.php?t=80792
2024-09-09 18:01:38 +02:00
Bas Ruigrok 59ccadb2c4 Gui: Fix orthographic camera standard views in an empty scene 2024-09-09 17:59:50 +02:00
Bas Ruigrok 6f0c3d2fea Gui: Use Coin 4.0.3 fix for orthographic camera clipping 2024-09-09 17:58:32 +02:00
Benjamin Nauck fdb0b46857 Spreadsheet XLSX import: Fix bug causing xls import failing for some operators (#16336)
* Fix bug causing xls import failing for some comparisons

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

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

---------

Co-authored-by: Benjamin Nauck <benjamin.nauck@adlede.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-09-09 17:55:54 +02:00
Roy-043 e887ef3949 BIM: ArchFence: Fix some color issues
* ShapeAppearance property was misspelled.
* The post and section objects could not be Std_Parts (because they do not have a DIffuseColor).
* Minor improvements to the handling of Bodies.
* Removed the `if __name__ == '__main__':` section. This code is no longer relevant.
2024-09-09 17:52:35 +02:00
Furgo 17f74188d3 [BIM] Separate profile name from label number (#16304)
* [BIM] Separate profile name from label number

Fixes: #16286

* Make internal name generic
2024-09-09 17:45:34 +02:00
MisterMakerNL 1ad2bfde55 changed selection colors 2024-09-09 17:44:21 +02:00
wandererfan 4e655a888c [TD]fix initial balloon placement on rotated view (fix #16234) 2024-09-09 17:41:51 +02:00
PaddleStroke 305fb075a5 Update Ondsel Solver 2024-09-09 09:39:45 -05:00
wmayer 68ff9989ed Core: Placement dialog
+ replace separate buttons with QDialogButtonBox
+ add convenience method setPlacementAndBindObject
+ use const DocumentObject
2024-09-09 12:28:22 +02:00
Roy-043 1115f77fcf BIM: Fix window transparency
V1.0 fix for the transparency of glass panels in windows and doors.
2024-09-09 11:41:37 +02:00
huguesdpdn-aerospace 3795904a00 PD: Xerces-C++ - Prepare for the latest version (backward compatible) 2024-09-08 20:31:25 -05:00
Jiří Pinkava ff796e08d4 OverlayManager: fix unititialized hideTab variable
The hideTab is of type bool, which is primitive type and is thus unitialized if new
instance of the class is created. The exception would be to for static
instance of the class, but that is not the case (only the pointer to the instance is static).

It was originaly initialized, but the initialization was removed in
9d5390ed83.
2024-09-08 20:13:21 -05:00
PaddleStroke 858ae45e18 App::Link: fix crash with Draft Array (#16240)
* App::Link: fix crash with Draft Array
2024-09-08 17:12:55 -05:00
Chris Hennes 2383ba71c7 Merge pull request #16281 from benj5378/aboutStylesheet
[Gui] Add style, theme and qtstyle info to clipboard about info
2024-09-08 17:07:55 -05:00
Syres916 cf2b98b519 [Measure] Disable QuickMeasure for TechDraw, Spreadsheet, Part Container and Origin objects (#16225)
* [Measure] Disable QuickMeasure for TechDraw objects
* [Measure] Add spreadsheet, Part containers and origins to the exemptions
2024-09-08 16:50:26 -05:00
Chris Hennes 555b24efe1 Merge pull request #16380 from FEA-eng/fluid_mat_fix
FEM: Fluid material properties fix
2024-09-08 16:27:37 -05:00
FEA-eng e39d0d82d7 FEM: Update Material.ui 2024-09-08 20:14:46 +02:00
FEA-eng 859980fc9e FEM: Update write_femelement_material.py 2024-09-08 20:10:27 +02:00
FEA-eng c50cb8f180 FEM: Update task_material_common.py
Fix from benj5378
2024-09-08 20:06:39 +02:00
Bas Ruigrok cb98abcc42 Move isLink and isLinkGroup from AssemblyObject to DocumentObject 2024-09-08 11:56:14 +02:00
CalligaroV d3f6f3e49e Sketcher/Toponaming: import code for SketchObject::checkSubName() from LS3
* applied review hints

Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
2024-09-08 10:39:54 +02:00
Zheng, Lei 38c6d842f2 Sketcher/Toponaming: import code for SketchObject::checkSubName() from LS3
* import code
 * add modified_item assignment in TaskSketcherElements::onSelectionChanged() like for non ExternalEdge
2024-09-07 14:08:23 +02:00
Bas Ruigrok 8db7191084 App: Return root object placement if target and root object are the same in getGlobalPlacement 2024-09-07 13:27:59 +02:00
Bas Ruigrok beddb57ae8 Gui: Fix alignment direction for transformed objects 2024-09-07 13:27:59 +02:00
Bas Ruigrok e9fc6fb89a Move getGlobalPlacement from AssemblyObject to GeoFeature 2024-09-07 13:27:59 +02:00
Bas Ruigrok 5ed26f56f1 Move splitSubName from AssemblyObject to Base::Tools 2024-09-07 13:27:59 +02:00
David Carter 7ed1e9380a Materials: UI updates for transparency
Add missing UI elements to support per face transparencies:
- Setting per face transparencies
- show transparency information in the appearance inspector
- expose alpha channel in material properties dialog
2024-09-06 14:17:20 -05:00
Benjamin Bræstrup Sayoc 50863c7f36 Add myself to contributors 2024-09-06 10:34:24 +02:00
Benjamin Bræstrup Sayoc 33e8bf61a6 [Gui] Add style, theme and QtStyle to clipboard about info
Fixes #16272
2024-09-06 10:34:12 +02:00
Benjamin Bræstrup Sayoc e7f6aa1852 [Gui] QtStyle preference consistency
Previously, the some of the code searched for the QtStyle in the wrong location
2024-09-06 10:34:04 +02:00
wmayer 8925b2ae4d Core: Add option to ignore transactions in placement dialog 2024-09-05 19:18:20 +02:00
wmayer bf8b4a7583 Core: Expose Placement dialog to Python 2024-09-05 18:17:08 +02:00
wmayer 759811e502 Core: Change placement dialog to operate on passed selection objects 2024-09-05 17:43:09 +02:00
wmayer 9ece66bf03 Core: Refactor placement dialog 2024-09-05 17:08:43 +02:00
Roy-043 fe40748c10 Draft: fix snapping to endpoints of dimension lines (V0.19 regression)
This fixes a regression introduced in V0.19 (!) when the type of linear dimensions was changed from "Dimension" to "LinearDimension".

Forum topic:
https://forum.freecad.org/viewtopic.php?t=90292
2024-09-05 13:18:32 +02:00
Chris Hennes 0026a35886 Core: Update version number to 1.0.0RC1 2024-09-05 11:43:29 +02:00
PaddleStroke bf50745075 Sketcher: Rectangle DSH: refactor the createShape function. 2024-09-04 08:32:22 +02:00
PaddleStroke a1c3b48b56 Sketcher: Fix round corner + thickness issue if radius + thickness = 0. 2024-09-04 08:32:22 +02:00
liukaiwen 229d2902bd add SoFCBackgroundGradient to inventor folder 2024-07-22 02:48:53 +08:00
liukaiwen 4c6b7dadeb refactor: move some nodes to Inventor folder 2024-07-20 01:07:04 +08:00
Yorik van Havre da0e38c25d BIM: More IFC icons 2024-07-10 14:54:43 +02:00
Yorik van Havre ea26350f74 BIM: Specific IFC icons - fixes #14427 2024-07-10 14:27:24 +02:00
james 244ba81c13 black format 2024-06-24 10:51:14 -05:00
james 037a15a371 Fix deprecated import style 2024-06-24 10:51:14 -05:00
10338 changed files with 2461956 additions and 2505682 deletions
+76 -49
View File
@@ -1,22 +1,22 @@
# Generated from CLion C/C++ Code Style settings
# --- Based on Qt Coding Style ---
BasedOnStyle: LLVM
# --- Bracket and Indentation Behavior ---
IndentWidth: 4
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
TabWidth: 4
ColumnLimit: 100
UseTab: Never
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: None
AlignOperands: DontAlign
AllowAllArgumentsOnNextLine: false
AlignAfterOpenBracket: BlockIndent
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: Empty
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
BinPackArguments: false
BreakBeforeBraces: Custom
BreakTemplateDeclarations: Yes
BreakBeforeBinaryOperators: All
BraceWrapping:
AfterCaseLabel: false
AfterClass: true
@@ -31,41 +31,68 @@ BraceWrapping:
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: true
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeComma
BreakInheritanceList: BeforeColon
ColumnLimit: 100
CompactNamespaces: false
ContinuationIndentWidth: 4
IndentCaseLabels: true
IndentPPDirectives: None
IndentWidth: 4
InsertBraces: true
KeepEmptyLinesAtTheStartOfBlocks: true
MaxEmptyLinesToKeep: 2
NamespaceIndentation: None
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PackConstructorInitializers: Never
PointerAlignment: Left
ReflowComments: true
SortIncludes: Never
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: false
# --- Special: Lambdas and Short Things ---
AllowShortFunctionsOnASingleLine: None
AllowShortBlocksOnASingleLine: Never
AllowShortEnumsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLambdasOnASingleLine: Inline
AllowAllArgumentsOnNextLine: false
# --- Spaces ---
SpaceBeforeParens: ControlStatements
SpaceAfterCStyleCast: false
Cpp11BracedListStyle: true
SpaceBeforeCpp11BracedList: true
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
TabWidth: 4
UseTab: Never
SpaceAfterTemplateKeyword: false
SpaceBeforeInheritanceColon: false
# --- Alignment & Formatting Tweaks ---
AlignConsecutiveAssignments:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: true
AlignConsecutiveDeclarations:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignFunctionPointers: false
PadOperators: true
AlignOperands: DontAlign
BreakConstructorInitializers: BeforeComma
PointerAlignment: Left
ReferenceAlignment: Left
# --- Comment Style ---
CommentPragmas: '^ IWYU pragma:'
# --- Namespace handling ---
NamespaceIndentation: None
# --- Others ---
SortIncludes: Never
IncludeBlocks: Preserve
MaxEmptyLinesToKeep: 2
IndentCaseLabels: true
InsertBraces: true
AlignEscapedNewlines: DontAlign
PPIndentWidth: 1
IndentPPDirectives: AfterHash
ReflowComments: true
# --- Penalties (Fine-tuning when to break lines) ---
PenaltyBreakAssignment: 80
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 60
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakOpenParenthesis: 5
PenaltyExcessCharacter: 10
PenaltyReturnTypeOnItsOwnLine: 600
+3 -8
View File
@@ -1,14 +1,13 @@
---
Checks: 'clang-diagnostic-*,clang-analyzer-*,boost-*,bugprone-*,
performance-*,readability-*,portability-*,modernize-*,cppcoreguidelines-*,google-explicit-constructor,
concurrency-*,-modernize-use-trailing-return-type, -modernize-use-nodiscard,
-readability-redundant-access-specifiers,-readability-qualified-auto,
-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-owning-memory,
concurrency-*,-modernize-use-trailing-return-type, -modernize-use-nodiscard,-readability-identifier-length,
-readability-redundant-access-specifiers,-readability-qualified-auto,-readability-implicit-bool-conversion,
-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-owning-memory,-cppcoreguidelines-avoid-do-while,
-readability-convert-member-functions-to-static,-bugprone-easily-swappable-parameters,
-cppcoreguidelines-pro-type-static-cast-downcast'
WarningsAsErrors: ''
HeaderFilterRegex: ''
AnalyzeTemporaryDtors: false
FormatStyle: file
User: florians
CheckOptions:
@@ -150,8 +149,6 @@ CheckOptions:
value: '0'
- key: concurrency-mt-unsafe.FunctionSet
value: any
- key: readability-identifier-length.IgnoredExceptionVariableNames
value: '^[e]$'
- key: google-readability-braces-around-statements.ShortStatementLines
value: '1'
- key: bugprone-reserved-identifier.AllowedIdentifiers
@@ -206,8 +203,6 @@ CheckOptions:
value: '4294967295'
- key: bugprone-suspicious-missing-comma.RatioThreshold
value: '0.200000'
- key: readability-implicit-bool-conversion.AllowIntegerConditions
value: 'false'
- key: readability-identifier-length.IgnoredParameterNames
value: '^[n]$'
- key: readability-function-size.StatementThreshold
+4
View File
@@ -102,3 +102,7 @@ c5c2ea3498f402c0c89916c46ddb071e22756622 # Assembly: Final application of pre-co
d472927bba7b2d8d151c99fb29cf1d8dd099ea7d # Correct PartDesign Helix feature negative angles (#11399)
b93c02e07da4990482b9d927506901e6f5d624e1 # Black updated to 24.3.0
cbea6b60942f8327e6105b12e8c1d5db4647984c # FEM: Apply pre-commit to FEM files
f9d66096878c7d89c273522b9ca57bdb14fee3bc # Rearranged CommandCreateGeo.cpp
b23d5809414d63ea90bcc744212c126645051438 # BIM: add to pre-commit and apply Black formatting
50e4864efb06faf3e2126e8cb9ff9058a08a54b2 # Draft: add to pre-commit and apply Black formatting
25c3ba733889264bcb3b3c8d2287b79053c0c8ec # All: Reformat according to new standard
-1
View File
@@ -1,7 +1,6 @@
# These are supported funding model platforms
github: FreeCAD
liberapay: FreeCAD
open_collective: freecad
patreon: # Replace with a single Patreon username
ko_fi: # Replace with a single Ko-fi username
@@ -0,0 +1,92 @@
name: Report a Problem
description: Have you found something that does not work well, is too hard to do or is missing altogether? Please create a Problem Report.
labels: ["Status: Needs triage","Status: Needs confirmation"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this problem report! Please [search](https://github.com/FreeCAD/FreeCAD/issues) if a similar issue already exists and check out [how to report issues](https://github.com/FreeCAD/FreeCAD?tab=readme-ov-file#reporting-issues). By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/FreeCAD/FreeCAD/blob/main/CODE_OF_CONDUCT.md).
- type: textarea
id: description
attributes:
label: Problem description
description: Describe the problem and how it impacts user experience, workflow, maintainability or performance. You can attach images or log files by clicking this area to highlight it and then dragging files in. To attach a FCStd file, ZIP it first.
placeholder: Describe your problem briefly.
validations:
required: true
- type: dropdown
id: wb
attributes:
label: Workbench affected?
options:
- Assembly
- BIM
- CAM
- Core (App, Gui,...)
- Draft
- FEM
- Material
- Measurement
- Mesh
- Part
- Part Design
- Sketcher
- Spreadsheet
- TechDraw
- Other (specify in description)
- type: textarea
id: steps_to_reproduce
attributes:
label: Steps to reproduce
description: If the problem appears to be a bug with the current functionality, provide a test case or recipe that reliably reproduces the issue. Ideally [record a macro](https://wiki.freecad.org/Std_DlgMacroRecord) and attach it. Please also add an example file as ZIP.
placeholder: |
Drag an example file as ZIP into this textbox to attach it.
Steps to reproduce the behavior:
1. Open my example file
2. Go to '...'
3. Click on '...'
validations:
required: true
- type: textarea
id: expected_behavior
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen when following the provided steps above.
placeholder: What is the expected behavior?
validations:
required: true
- type: textarea
id: actual_behavior
attributes:
label: Actual behavior
description: A clear and concise description of what actually happens. If applicable, add screenshots to help explain the problem.
placeholder: What is actually happening? You can add screenshorts or videos by dragging them into this textbox.
validations:
required: true
- type: textarea
id: dev_version
attributes:
label: Development version About Info (in Safe Mode)
description: Download the latest weekly [development release](https://github.com/FreeCAD/FreeCAD/releases) and try reproducing the issue in safe mode (Help → Restart in Safe Mode). Use the [About FreeCAD](https://wiki.freecad.org/About) dialog to copy your full version information and paste it here.
placeholder: |
1. Download the latest weekly development version (link above).
2. Make sure to run in Safe Mode (Help -> Restart in Safe Mode) to exclude interference from 3rd party addons.
3. If the issue is still reproducible, open the About FreeCAD dialog and copy the full version info here.
render: shell
validations:
required: true
- type: textarea
id: good_version
attributes:
label: Last known good version (optional)
description: If this is a regression, paste the [About FreeCAD](https://wiki.freecad.org/About) info from the last known working version.
placeholder: If the problem did not exist in a previous version, paste the About FreeCAD info from that version here.
render: shell
@@ -0,0 +1,103 @@
name: Report a Code Quality Issue
description: Report problems related to code structure, maintainability, performance, correctness, or technical debt that do not directly affect end-user behavior.
labels: ["Status: Needs triage", "Status: Needs confirmation", "Type: Code Quality"]
type: "Code Quality"
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to help improve FreeCAD's code quality!
> [!NOTE]
> This form is intended **only for code quality issues**, such as:
> - Architectural or design problems
> - Maintainability or readability issues
> - Performance or scalability concerns
> - Incorrect abstractions, layering violations, or technical debt
>
> If the issue affects user-visible behavior, workflows, or UI, please use the regular **Report Problem** form instead.
Please [search existing issues](https://github.com/FreeCAD/FreeCAD/issues) before submitting.
By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/FreeCAD/FreeCAD/blob/main/CODE_OF_CONDUCT.md).
- type: dropdown
id: wb
attributes:
label: Area / Workbench affected
description: Select the primary area affected by the code quality issue.
options:
- Assembly
- BIM
- CAM
- Core (App, Gui, Base, ...)
- Draft
- FEM
- Material
- Measurement
- Mesh
- Part
- Part Design
- Sketcher
- Spreadsheet
- TechDraw
- Build system / CI
- Documentation
- Other (specify below)
- type: textarea
id: description
attributes:
label: Problem description
description: |
Describe the code quality issue clearly.
Focus on *why* the current implementation is problematic (e.g. maintainability, performance, correctness, extensibility).
Reference files, classes, functions, or modules where applicable.
placeholder: |
Example:
- Class X violates dependency rules by including Y
- Function Z mixes responsibilities and is hard to reason about
- Algorithm has unnecessary complexity or poor performance characteristics
validations:
required: true
- type: textarea
id: impact
attributes:
label: Impact
description: |
Explain the practical impact of this issue.
For example: increased maintenance cost, higher bug risk, performance degradation, difficulty extending functionality, or CI/build issues.
placeholder: Describe how this affects the codebase long-term.
validations:
required: true
- type: textarea
id: proposed_solution
attributes:
label: Suggested improvement (optional)
description: |
If you have ideas on how to address the issue, outline them here.
This can include refactoring suggestions, alternative designs, or references to best practices.
placeholder: Optional — leave empty if unsure.
- type: textarea
id: references
attributes:
label: References / evidence
description: |
Add relevant references such as:
- File paths or code snippets
- Related issues or pull requests
- Benchmarks, logs, or static analysis results
placeholder: Links, snippets, or related issues.
- type: textarea
id: dev_version
attributes:
label: Development version (if relevant)
description: |
If the issue is version-specific or recently introduced, paste the output from the
**About FreeCAD** dialog of a development build.
Otherwise, this can be left empty.
placeholder: Paste About FreeCAD information here.
render: shell
-71
View File
@@ -1,71 +0,0 @@
name: Report a Problem
description: Have you found something that does not work well, is too hard to do or is missing altogether? Please create a Problem Report.
labels: ["Status: Needs triage"]
body:
- type: checkboxes
id: existing_issue
attributes:
label: Is there an existing issue for this?
description: Please [search](https://github.com/FreeCAD/FreeCAD/issues) to see if a similar issue already exists for the problem you encountered.
options:
- label: I have searched the existing issues
required: true
- type: textarea
id: description
attributes:
label: Problem description
description: Describe the problem and how it impacts user experience, workflow, maintainability or speed of the code. If the problem appears to be a bug with the current functionality, provide as test case or recipe that reproduces the error. Ideally record a macro and attach it.
placeholder: Description of the problem
validations:
required: true
- type: textarea
id: full_version
attributes:
label: Full version info
description: Please use the About FreeCAD dialog to copy your full version information and paste it here.
render: shell
validations:
required: true
- type: dropdown
id: wb
attributes:
label: Subproject(s) affected?
options:
- Addon Manager
- Assembly
- BIM
- CAM
- Core
- Draft
- Expressions
- FEM
- File formats
- Mesh
- OpenSCAD
- Part
- PartDesign
- Project Tools & Websites
- Sketcher
- Spreadsheet
- TechDraw
- Other (specify in description)
- type: textarea
id: anything_else
attributes:
label: Anything else?
description: |
Links? References? Anything that will give us more context about the issue you are encountering!
If there is a discussion about the problem on the forum, provide link(s) here.
You can upload or copy your macro here to speed up the diagnosis and debugging.
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. To attach a FCStd file, ZIP it first (GitHub won't recognize the extension otherwise).
validations:
required: false
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/FreeCAD/FreeCAD/blob/main/CODE_OF_CONDUCT.md)
options:
- label: I agree to follow this project's Code of Conduct
required: true
+26 -1
View File
@@ -1,4 +1,6 @@
aci
addmin
afile
ake
aline
alle
@@ -6,19 +8,23 @@ alledges
alocation
anid
anormal
anull
apoints
aply
appy
ascript
ba
beginn
bloaded
bottome
brushin
childrens
childs
connexion
currenty
curvelinear
detet
documentin
doubleclick
dum
eiter
@@ -28,18 +34,28 @@ finde
findn
fle
fo
fpt
freez
froms
graphin
hist
incrementin
indexin
indicies
indx
inout
invertin
isnt
ist
itsel
leadin
linez
localy
lod
mantatory
mata
methode
mke
modell
nd
nin
@@ -49,21 +65,30 @@ numer
oce
ontop
ot
pard
parm
parms
pointin
programm
propt
rady
recurrance
rin
rougly
sectionin
seh
ser
sergent
serie
shs
siz
som
strack
strin
substraction
sur
te
textin
thist
tread
ue
@@ -74,4 +99,4 @@ vas
vertexes
vew
wallthickness
zuser
zuser
+11
View File
@@ -0,0 +1,11 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: daily
- package-ecosystem: pip
directory: /
schedule:
interval: daily
+9 -1
View File
@@ -80,9 +80,13 @@
- changed-files:
- any-glob-to-any-file: ['src/Mod/Spreadsheet/**/*']
"Mod: Start":
- changed-files:
- any-glob-to-any-file: ['src/Mod/Start/**/*']
"Mod: Surface":
- changed-files:
- any-glob-to-any-file: ['src/Mod/Surface/**/*/']
- any-glob-to-any-file: ['src/Mod/Surface/**/*']
"Mod: TechDraw":
- changed-files:
@@ -98,6 +102,10 @@
- changed-files:
- any-glob-to-any-file: ['cMake/**/*']
"3rd party component":
- changed-files:
- any-glob-to-any-file: ['src/3rdParty/**/*']
# 'Topic' related labels
"Topic: Stylesheets":
+11 -11
View File
@@ -1,15 +1,15 @@
{
"problemMatcher": [
{
"owner": "black-warning",
"severity": "warning",
"pattern": [
"problemMatcher": [
{
"regexp": "^(would reformat (.*))$",
"file": 2,
"message": 1
"owner": "black-warning",
"severity": "warning",
"pattern": [
{
"regexp": "^(would reformat (.*))$",
"file": 2,
"message": 1
}
]
}
]
}
]
]
}
+13 -13
View File
@@ -1,17 +1,17 @@
{
"problemMatcher": [
{
"owner": "clang",
"pattern": [
"problemMatcher": [
{
"regexp": "^(.+):([0-9]+):([0-9]+): (error|warning|note): (.+)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
"owner": "clang",
"pattern": [
{
"regexp": "^(.+):([0-9]+):([0-9]+): (error|warning|note): (.+)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
]
}
]
}
]
]
}
+12 -12
View File
@@ -1,16 +1,16 @@
{
"problemMatcher": [
{
"owner": "codespell-matcher",
"severity": "warning",
"pattern": [
"problemMatcher": [
{
"regexp": "^(.+):(\\d+):\\s+(.+)$",
"file": 1,
"line": 2,
"message": 3
"owner": "codespell-matcher",
"severity": "warning",
"pattern": [
{
"regexp": "^(.+):(\\d+):\\s+(.+)$",
"file": 1,
"line": 2,
"message": 3
}
]
}
]
}
]
]
}
+12 -12
View File
@@ -1,16 +1,16 @@
{
"problemMatcher": [
{
"owner": "cpplint",
"severity": "warning",
"pattern": [
"problemMatcher": [
{
"regexp": "^(.+):([0-9]+): (.+)$",
"file": 1,
"line": 2,
"message": 3
"owner": "cpplint",
"severity": "warning",
"pattern": [
{
"regexp": "^(.+):([0-9]+): (.+)$",
"file": 1,
"line": 2,
"message": 3
}
]
}
]
}
]
]
}
+18
View File
@@ -0,0 +1,18 @@
{
"__comment": "Taken from vscode-cpptools's Extension/package.json gcc rule",
"problemMatcher": [
{
"owner": "gcc-problem-matcher",
"pattern": [
{
"regexp": "^(.*):(\\d+):(\\d+):\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
]
}
]
}
+12 -12
View File
@@ -1,16 +1,16 @@
{
"problemMatcher": [
{
"owner": "grepMatcher-warning",
"severity": "warning",
"pattern": [
"problemMatcher": [
{
"regexp": "^(.+):([0-9]+):(.+)$",
"file": 1,
"line": 2,
"message": 3
"owner": "grepMatcher-warning",
"severity": "warning",
"pattern": [
{
"regexp": "^(.+):([0-9]+):(.+)$",
"file": 1,
"line": 2,
"message": 3
}
]
}
]
}
]
]
}
+20
View File
@@ -0,0 +1,20 @@
{
"__comment":
"Taken from vscode's vs/workbench/contrib/tasks/common/problemMatcher.ts msCompile rule",
"problemMatcher": [
{
"owner": "msvc-problem-matcher",
"pattern": [
{
"regexp": "^(?:\\s+\\d+\\>)?([^\\s].*)\\((\\d+),?(\\d+)?(?:,\\d+,\\d+)?\\)\\s*:\\s+(error|warning|info)\\s+(\\w{1,2}\\d+)\\s*:\\s*(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"code": 5,
"message": 6
}
]
}
]
}
+14 -14
View File
@@ -1,18 +1,18 @@
{
"problemMatcher": [
{
"owner": "pylint-error",
"severity": "error",
"pattern": [
"problemMatcher": [
{
"regexp": "^(.+?):([0-9]+):([0-9]+): ([([E|F][0-9]+): (.*)$",
"file": 1,
"line": 2,
"column": 3,
"code": 4,
"message": 5
"owner": "pylint-error",
"severity": "error",
"pattern": [
{
"regexp": "^(.+?):([0-9]+):([0-9]+): ([([E|F][0-9]+): (.*)$",
"file": 1,
"line": 2,
"column": 3,
"code": 4,
"message": 5
}
]
}
]
}
]
]
}
+14 -14
View File
@@ -1,18 +1,18 @@
{
"problemMatcher": [
{
"owner": "pylint-warning",
"severity": "warning",
"pattern": [
"problemMatcher": [
{
"regexp": "^(.+?):([0-9]+):([0-9]+): ([^E|F][0-9]+): (.*)$",
"file": 1,
"line": 2,
"column": 3,
"code": 4,
"message": 5
"owner": "pylint-warning",
"severity": "warning",
"pattern": [
{
"regexp": "^(.+?):([0-9]+):([0-9]+): ([^E|F][0-9]+): (.*)$",
"file": 1,
"line": 2,
"column": 3,
"code": 4,
"message": 5
}
]
}
]
}
]
]
}
+46
View File
@@ -0,0 +1,46 @@
<!-- Include a brief summary of the changes. -->
<!--
The FreeCAD community thanks you for your contribution!
By creating a Pull Request you agree to the contributing policy. The complete policy can be found in the root of the source tree (CONTRIBUTING.md) or at https://github.com/FreeCAD/FreeCAD/blob/main/CONTRIBUTING.md
This template provides guidance on creating a PR that can be reviewed and approved as quickly as possible. Comments may be safely deleted.
Unless you know exactly what you're doing, please leave the checkbox 'Allow edits by maintainers' enabled. This will allow maintainers to help you.
-->
## Issues
<!-- link to individual issues this PR closes by referencing the issue number (e.g., fixes #1234, closes #4321). -->
## Before and After Images
<!-- If your proposed changes affect the FreeCAD GUI, add before and after screenshots -->
<!-- Notes on the PR Review Process
The following section describes what the maintainers consider when reviewing your Pull Request. These items may not require you to take any action. This information is provided for context. Understanding what we consider will help you prepare your request for speedy approval.
You can find additional documentation about these guidelines in the [Developers handbook](https://freecad.github.io/DevelopersHandbook).
Alignment (Does the PR align with the goals and interests of the project?)
- Does the PR have at least one issue linked, which this PR closes?
- Has the conversation on the PR and related issue(s) reached consensus?
- If the PR affects the GUI, is the Design Working Group (DWG) aware and have they had time to review and comment?
- If the PR affects the GUI, did the contributor include before/after images?
- If the PR affects standards and workflow, is the CAD Working Group (CWG) aware and have they had time to review/comment?
Impact (Does the change affect other parts of the project?)
- Has the impact on documentation been considered and appropriate action taken?
- Has the impact on translation been considered appropriate action taken?
- Will the PR affect existing user documents?
Code Quality (Is code well-written and maintainable?)
- Does the PR warrant a review by the Code Quality Working Group (CQWG)?
- Does the change include tests?
- Is the PR rebased on the current main branch with unnecessary commits squashed?
Release (Are there considerations related to release timing?)
- Has the PR been considered for backporting to the latest release branch?
- Have the release notes been considered/updated?
-->
+169
View File
@@ -0,0 +1,169 @@
#!/usr/bin/env python3
# SPDX-License-Identifier: LGPL-2.1-or-later
"""
run_gui_tests.py
List registered tests via `FreeCAD -t`, filter for GUI tests (names containing 'Gui'), and run each
GUI test module using the specified FreeCAD executable.
Usage:
run_gui_tests.py [FREECAD_EXEC]
If FREECAD_EXEC is omitted the script falls back to 'FreeCAD' on PATH.
If FREECAD_EXEC is a directory containing bin/FreeCAD, that binary is used.
If FREECAD_EXEC is an executable path, it is used directly.
This script returns 0 if all GUI modules run successfully. Otherwise it returns the last non-zero
exit code.
"""
from __future__ import annotations
import sys
import subprocess
import os
from pathlib import Path
def find_executable(arg: str | None) -> str:
"""Return the FreeCAD executable path to use.
If `arg` is None or empty, returns the plain name 'FreeCAD' which will be looked up on PATH. If
`arg` is a directory and contains `bin/FreeCAD` that binary will be returned. If `arg` is a file
path it is returned as-is. Otherwise the original argument is returned.
Common use cases: use the FreeCAD binary from a build directory or an installed FreeCAD prefix.
"""
if not arg:
return "FreeCAD"
p = Path(arg)
if p.is_dir():
candidate = p / "bin" / "FreeCAD"
if candidate.exists():
return str(candidate)
if p.is_file():
return str(p)
# fallback: return as-is (may be on PATH)
return arg
def validate_executable(path: str) -> tuple[bool, str]:
"""Return (ok, message). Checks if the executable exists or is likely on PATH.
This is best effort: if a bare name is given (e.g. 'FreeCAD') we can't stat it here, so we
accept it but warn. If the path points to a file, we check executability. Also warn if the name
looks like the CLI-only 'FreeCADCmd'.
"""
p = Path(path)
if p.is_file():
if not os.access(str(p), os.X_OK):
return False, f"File exists but is not executable: {path}"
if p.name.endswith("FreeCADCmd"):
return (
True,
(
"Warning: executable looks like 'FreeCADCmd' (CLI); GUI tests require the GUI "
"binary 'FreeCAD'."
),
)
return True, ""
# Bare name or non-existent path: accept but warn
if p.name.endswith("FreeCADCmd"):
return (
True,
(
"Warning: executable name looks like 'FreeCADCmd' (CLI); GUI tests require the GUI "
"binary 'FreeCAD'."
),
)
return True, ""
def run_and_capture(cmd: list[str]) -> tuple[int, str]:
"""Run `cmd` and return (returncode, combined stdout+stderr string).
If the executable is not found a return code of 127 is returned and a small error string is
provided as output to aid diagnosis.
"""
try:
proc = subprocess.run(
cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, check=False
)
return proc.returncode, proc.stdout
except FileNotFoundError:
return 127, f"Executable not found: {cmd[0]}\n"
def parse_registered_tests(output: str) -> list[str]:
"""Parse output from `FreeCAD -t` and return a list of registered test unit names.
The function looks for the section starting with the literal 'Registered test units:' and
then collects non-empty, stripped lines from that point onwards as test names.
"""
lines = output.splitlines()
tests: list[str] = []
started = False
for ln in lines:
if not started:
if "Registered test units:" in ln:
started = True
continue
s = ln.strip()
if not s:
# allow blank lines but keep going
continue
tests.append(s)
return tests
def main(argv: list[str]) -> int:
"""Entry point: run GUI test modules registered in the FreeCAD executable.
Returns the last non-zero exit code from any GUI test module, or 0 on success.
"""
exec_arg = argv[1] if len(argv) > 1 else None
freecad_exec = find_executable(exec_arg)
print(f"Using FreeCAD executable: {freecad_exec}")
ok, msg = validate_executable(freecad_exec)
if msg:
print(msg, file=sys.stderr)
if not ok:
print(f"Aborting: invalid FreeCAD executable: {freecad_exec}", file=sys.stderr)
return 3
code, out = run_and_capture([freecad_exec, "-t"])
if code != 0:
print(
f"Warning: listing tests returned exit code {code}; attempting to parse output anyway",
file=sys.stderr,
)
tests = parse_registered_tests(out)
if not tests:
print("No registered tests found; exiting with success.")
return 0
gui_tests = [t for t in tests if "Gui" in t]
if not gui_tests:
print("No GUI tests found in registered tests; nothing to run.")
return 0
print("Found GUI test modules:")
for t in gui_tests:
print(" ", t)
last_rc = 0
for mod in gui_tests:
print(f"\nRunning GUI tests for module: {mod}")
rc, out = run_and_capture([freecad_exec, "-t", mod])
print(out)
if rc != 0:
print(f"Module {mod} exited with code {rc}", file=sys.stderr)
last_rc = rc
return last_rc
if __name__ == "__main__":
sys.exit(main(sys.argv))
+6 -1
View File
@@ -57,6 +57,11 @@ jobs:
env:
logdir: /tmp/log/
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
- name: Make needed directories
run: |
mkdir -p ${{ env.logdir }}
@@ -103,7 +108,7 @@ jobs:
done
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: ${{ github.job }}-Logs
path: |
+23 -38
View File
@@ -26,80 +26,65 @@
name: FreeCAD master CI
on: [workflow_dispatch, push, pull_request]
on:
workflow_dispatch: ~
push:
branches:
- main
- releases/**
pull_request: ~
merge_group: ~
concurrency:
group: FC-CI-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
Prepare:
uses: ./.github/workflows/sub_prepare.yml
with:
artifactBasename: Prepare-${{ github.run_id }}
MacOS_13_Conda_Apple:
Pixi:
needs: [Prepare]
uses: ./.github/workflows/sub_buildMacOSCondaApple.yml
uses: ./.github/workflows/sub_buildPixi.yml
with:
artifactBasename: MacOS_13_Conda_Apple-${{ github.run_id }}
artifactBasename: Pixi-${{ github.run_id }}
# MacOS_13_Conda_Intel:
# needs: [Prepare]
# uses: ./.github/workflows/sub_buildMacOSCondaIntel.yml
# with:
# artifactBasename: MacOS_13_Conda_Intel-${{ github.run_id }}
Ubuntu_20-04:
Ubuntu:
needs: [Prepare]
uses: ./.github/workflows/sub_buildUbuntu2004.yml
if: "!startsWith(github.head_ref, 'refs/heads/backport-')"
uses: ./.github/workflows/sub_buildUbuntu.yml
with:
artifactBasename: Ubuntu_20-04-${{ github.run_id }}
Ubuntu_22-04_Conda:
needs: [Prepare]
uses: ./.github/workflows/sub_buildUbuntu2204Conda.yml
with:
artifactBasename: Ubuntu_22-04_Conda-${{ github.run_id }}
Ubuntu_22-04_Conda_Qt6:
needs: [Prepare]
uses: ./.github/workflows/sub_buildUbuntu2204CondaQt6.yml
with:
artifactBasename: Ubuntu_22-04_Conda-Qt6-${{ github.run_id }}
artifactBasename: Ubuntu-${{ github.run_id }}
Windows:
needs: [Prepare]
if: "!startsWith(github.head_ref, 'refs/heads/backport-')"
uses: ./.github/workflows/sub_buildWindows.yml
with:
artifactBasename: Windows-${{ github.run_id }}
## Disable until the following issue is resolved: https://github.com/mamba-org/mamba/issues/3292
# Windows_Conda:
# needs: [Prepare]
# uses: ./.github/workflows/sub_buildWindowsConda.yml
# with:
# artifactBasename: Windows_Conda-${{ github.run_id }}
Lint:
needs: [Prepare]
if: "!startsWith(github.head_ref, 'refs/heads/backport-')"
uses: ./.github/workflows/sub_lint.yml
with:
artifactBasename: Lint-${{ github.run_id }}
changedFiles: ${{ needs.Prepare.outputs.changedFiles }}
changedLines: ${{ needs.Prepare.outputs.changedLines }}
changedCppFiles: ${{ needs.Prepare.outputs.changedCppFiles }}
changedCppLines: ${{ needs.Prepare.outputs.changedCppLines }}
changedPythonFiles: ${{ needs.Prepare.outputs.changedPythonFiles }}
changedPythonLines: ${{ needs.Prepare.outputs.changedPythonLines }}
WrapUp:
needs: [
Prepare,
MacOS_13_Conda_Apple,
# MacOS_13_Conda_Intel,
Ubuntu_20-04,
Ubuntu_22-04_Conda,
Pixi,
Ubuntu,
Windows,
# Windows_Conda,
Lint
]
if: always()
@@ -40,13 +40,40 @@ inputs:
runs:
using: "composite"
steps:
- name: C++ core tests
id: core
- name: C++ Assembly tests
id: assembly
uses: ./.github/workflows/actions/runCPPTests/runSingleTest
with:
testCommand: ${{ inputs.builddir }}/tests/Tests_run --gtest_output=json:${{ inputs.reportdir }}core_gtest_results.json
testLogFile: ${{ inputs.reportdir }}core_gtest_test_log.txt
testName: Core
testCommand: ${{ inputs.builddir }}/tests/Assembly_tests_run --gtest_output=json:${{ inputs.reportdir }}assembly_gtest_results.json
testLogFile: ${{ inputs.reportdir }}assembly_gtest_test_log.txt
testName: Assembly
- name: C++ app tests
id: app
uses: ./.github/workflows/actions/runCPPTests/runSingleTest
with:
testCommand: ${{ inputs.builddir }}/tests/App_tests_run --gtest_output=json:${{ inputs.reportdir }}app_gtest_results.json
testLogFile: ${{ inputs.reportdir }}app_gtest_test_log.txt
testName: App
- name: C++ base tests
id: base
uses: ./.github/workflows/actions/runCPPTests/runSingleTest
with:
testCommand: ${{ inputs.builddir }}/tests/Base_tests_run --gtest_output=json:${{ inputs.reportdir }}base_gtest_results.json
testLogFile: ${{ inputs.reportdir }}base_gtest_test_log.txt
testName: Base
- name: C++ Gui tests
id: gui
uses: ./.github/workflows/actions/runCPPTests/runSingleTest
with:
testCommand: ${{ inputs.builddir }}/tests/Gui_tests_run --gtest_output=json:${{ inputs.reportdir }}gui_gtest_results.json
testLogFile: ${{ inputs.reportdir }}gui_gtest_test_log.txt
testName: Gui
- name: C++ Qt tests
id: qttests
uses: ./.github/workflows/actions/runCPPTests/runQtTests
with:
builddir: ${{ inputs.builddir }}
testLogFile: ${{ inputs.reportdir }}qt_ctest_log.txt
- name: C++ Material tests
id: material
uses: ./.github/workflows/actions/runCPPTests/runSingleTest
@@ -54,6 +81,13 @@ runs:
testCommand: ${{ inputs.builddir }}/tests/Material_tests_run --gtest_output=json:${{ inputs.reportdir }}material_gtest_results.json
testLogFile: ${{ inputs.reportdir }}material_gtest_test_log.txt
testName: Material
- name: C++ Measure tests
id: measure
uses: ./.github/workflows/actions/runCPPTests/runSingleTest
with:
testCommand: ${{ inputs.builddir }}/tests/Material_tests_run --gtest_output=json:${{ inputs.reportdir }}measure_gtest_results.json
testLogFile: ${{ inputs.reportdir }}measure_gtest_test_log.txt
testName: Measure
- name: C++ Mesh tests
id: mesh
uses: ./.github/workflows/actions/runCPPTests/runSingleTest
@@ -61,6 +95,20 @@ runs:
testCommand: ${{ inputs.builddir }}/tests/Mesh_tests_run --gtest_output=json:${{ inputs.reportdir }}mesh_gtest_results.json
testLogFile: ${{ inputs.reportdir }}mesh_gtest_test_log.txt
testName: Mesh
- name: C++ MeshPart tests
id: meshpart
uses: ./.github/workflows/actions/runCPPTests/runSingleTest
with:
testCommand: ${{ inputs.builddir }}/tests/Mesh_tests_run --gtest_output=json:${{ inputs.reportdir }}meshpart_gtest_results.json
testLogFile: ${{ inputs.reportdir }}meshpart_gtest_test_log.txt
testName: MeshPart
- name: C++ Misc tests
id: misc
uses: ./.github/workflows/actions/runCPPTests/runSingleTest
with:
testCommand: ${{ inputs.builddir }}/tests/Misc_tests_run --gtest_output=json:${{ inputs.reportdir }}misc_gtest_results.json
testLogFile: ${{ inputs.reportdir }}misc_gtest_test_log.txt
testName: Misc
- name: C++ Part tests
id: part
uses: ./.github/workflows/actions/runCPPTests/runSingleTest
@@ -89,6 +137,20 @@ runs:
testCommand: ${{ inputs.builddir }}/tests/Sketcher_tests_run --gtest_output=json:${{ inputs.reportdir }}sketcher_gtest_results.json
testLogFile: ${{ inputs.reportdir }}sketcher_gtest_test_log.txt
testName: Sketcher
- name: C++ Spreadsheet tests
id: spreadsheet
uses: ./.github/workflows/actions/runCPPTests/runSingleTest
with:
testCommand: ${{ inputs.builddir }}/tests/Sketcher_tests_run --gtest_output=json:${{ inputs.reportdir }}spreadsheet_gtest_results.json
testLogFile: ${{ inputs.reportdir }}spreadsheet_gtest_test_log.txt
testName: Spreadsheet
- name: C++ Start tests
id: start
uses: ./.github/workflows/actions/runCPPTests/runSingleTest
with:
testCommand: ${{ inputs.builddir }}/tests/Start_tests_run --gtest_output=json:${{ inputs.reportdir }}start_gtest_results.json
testLogFile: ${{ inputs.reportdir }}start_gtest_test_log.txt
testName: Start
- name: Compose summary report based on test results
if: always()
shell: bash -l {0}
@@ -0,0 +1,55 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# SPDX-FileNotice: Part of the FreeCAD project.
name: runQtTests
description: "Run all QtTest-based C++ tests (those labelled 'Qt' in CTest), generate log and report"
inputs:
builddir:
description: "Build directory containing CTestTestfile.cmake"
required: true
testLogFile:
description: "Path for the command-line output of the tests"
required: true
outputs:
reportText:
description: "Report text"
value: ${{ steps.report.outputs.reportText }}
runs:
using: "composite"
steps:
- name: Run Qt tests via CTest
shell: bash -l {0}
env:
BUILD_DIR: ${{ inputs.builddir }}
TEST_LOG_FILE: ${{ inputs.testLogFile }}
run: |
set -o pipefail
ctest --test-dir "$BUILD_DIR" -L Qt --output-on-failure | tee -a "$TEST_LOG_FILE"
- name: Parse test results
if: always()
id: report
shell: bash -l {0}
env:
TEST_LOG_FILE: ${{ inputs.testLogFile }}
run: |
result=$(grep -E "(Test #|tests passed|tests failed|Total Test time)" "$TEST_LOG_FILE" || true)
if grep -qE "[1-9][0-9]* tests failed" "$TEST_LOG_FILE"
then
reportText="<details><summary>:fire: QtTest C++ tests failed</summary>\n"
else
reportText="<details><summary>:heavy_check_mark: QtTest C++ tests succeeded</summary>\n"
fi
reportText+="\n"
reportText+="Results\n"
reportText+="\n"
reportText+='```\n'
reportText+="$result\n"
reportText+='```\n'
reportText+="</details>\n"
reportText+="\n"
echo "reportText<<EOD" >> $GITHUB_OUTPUT
echo -e "$reportText" >> $GITHUB_OUTPUT
echo "EOD" >> $GITHUB_OUTPUT
echo -e "$reportText"
@@ -0,0 +1,62 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# SPDX-FileNotice: Part of the FreeCAD project.
name: runSingleQtTest
description: "Run a single QtTest-based C++ test executable, generate log and report"
inputs:
testCommand:
description: "Test executable path"
required: true
testLogFile:
description: "Path for the command-line output of the tests"
required: true
testName:
description: "A descriptive name for the test suite"
required: true
outputs:
reportText:
description: "Report text"
value: ${{ steps.report.outputs.reportText }}
runs:
using: "composite"
steps:
- name: Run QtTest tests
shell: bash -l {0}
env:
QT_QPA_PLATFORM: offscreen
TEST_COMMAND: ${{ inputs.testCommand }}
TEST_LOG_FILE: ${{ inputs.testLogFile }}
run: |
set -o pipefail
$TEST_COMMAND | tee -a "$TEST_LOG_FILE"
- name: Parse test results
if: always()
id: report
shell: bash -l {0}
env:
TEST_LOG_FILE: ${{ inputs.testLogFile }}
TEST_NAME: ${{ inputs.testName }}
run: |
# This bonkers sed regex is to try to find the start and end of the QtTest output block, which is not really
# designed to be machine-readable. Why did they have to choose asterisks?!?!
result=$(sed -n '/^\*\*\*\*\*\*\*\*\* Start/,/^\*\*\*\*\*\*\*\*\* Finished/p' "$TEST_LOG_FILE" || true)
if grep -qE "^FAIL!" "$TEST_LOG_FILE"
then
reportText="<details><summary>:fire: QtTest C++ test suite '${TEST_NAME}' failed</summary>\n"
else
reportText="<details><summary>:heavy_check_mark: QtTest C++ test suite '${TEST_NAME}' succeeded</summary>\n"
fi
reportText+="\n"
reportText+="Results\n"
reportText+="\n"
reportText+='```\n'
reportText+="$result\n"
reportText+='```\n'
reportText+="</details>\n"
reportText+="\n"
echo "reportText<<EOD" >> $GITHUB_OUTPUT
echo -e "$reportText" >> $GITHUB_OUTPUT
echo "EOD" >> $GITHUB_OUTPUT
echo -e "$reportText"
@@ -41,11 +41,11 @@ inputs:
libpackdownloadurl:
description: "URL where to download libpack"
required: false
default: https://github.com/FreeCAD/FreeCAD-LibPack/releases/download/3.0.0RC4/LibPack-1.0.0-v3.0.0RC4-Release.7z
default: https://github.com/FreeCAD/FreeCAD-LibPack/releases/download/3.1.1.3/LibPack-1.1.0-v3.1.1.3-Release.7z
libpackname:
description: "Libpack name (once downloaded)"
required: false
default: LibPack-1.0.0-v3.0.0RC4-Release
default: LibPack-1.1.0-v3.1.1.3-Release
runs:
using: "composite"
@@ -0,0 +1,133 @@
# This workflow warns and then closes issues that have had no activity for a
# specified amount of time. You can adjust the behavior by modifying this file.
# For more information, see:
# https://github.com/marketplace/actions/close-stale-issues
# https://github.com/actions/stale/blob/master/action.yml
# https://github.com/actions/stale
---
name: 'Stale Issues'
on: # yamllint disable-line rule:truthy
schedule:
- cron: '0 0 * * *' # Run at 00:00 UTC every day
workflow_dispatch:
permissions:
contents: read
issues: write # for actions/stale to close stale issues
pull-requests: write # for actions/stale to close stale pull requests
jobs:
stale:
runs-on: ubuntu-latest
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
- name: '🧹 Tag & close stale unconfirmed bugs'
id: stale_issues
uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-issue-stale: 90
days-before-issue-close: 14
days-before-pr-stale: -1
days-before-pr-close: -1
operations-per-run: 200 # max num of ops per run
stale-issue-label: 'Status: Stale'
close-issue-label: 'Status: Auto-closing'
exempt-issue-labels: 'Status: Confirmed,Priority: High,Priority: Critical,Blocker,Type: Feature,no-auto-close,3rd party: OCC'
remove-stale-when-updated: true
ascending: true
stale-issue-message: |
Hi! This issue hasnt seen activity in a while. If its still relevant, please update to the latest FreeCAD weekly build [download here](https://github.com/FreeCAD/FreeCAD/releases/) to see if the problem is resolved.
If the issue persists, let us know by adding a comment with any updates or details. Otherwise, well close this issue automatically in 14 days to keep our backlog tidy. Feel free to comment anytime to keep it open. Closed issues can always be reopened.
Thanks for helping improve FreeCAD!
Access additional [FreeCAD](https://freecad.org) resources:
- **Forum**: https://forum.freecad.org
- **Blog**: https://blog.freecad.org
- **Wiki**: https://wiki.freecad.org
- name: '🧹 Close stale requested feedback issues'
id: awaiting_issues
uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-issue-stale: 20
days-before-issue-close: 14
days-before-pr-stale: -1
days-before-pr-close: -1
operations-per-run: 100 # max num of ops per run
stale-issue-label: 'Status: Stale'
close-issue-label: 'Status: Auto-closing'
only-labels: 'Status: Needs feedback,Status: Needs test on dev version,Status: Needs steps to reproduce'
remove-stale-when-updated: true
ascending: true
stale-issue-message: |
Hi! This issue hasnt seen activity in a while despite the need for further feedback.
If its still relevant, please update to the latest FreeCAD weekly build [download here](https://github.com/FreeCAD/FreeCAD/releases/) to see if the problem is resolved.
If the issue persists, let us know by adding a comment with any updates or details. Otherwise, well close this issue automatically in 14 days to keep our backlog tidy. Feel free to comment anytime to keep it open. Closed issues can always be reopened.
Thanks for helping improve FreeCAD!
Access additional [FreeCAD](https://freecad.org) resources:
- **Forum**: https://forum.freecad.org
- **Blog**: https://blog.freecad.org
- **Wiki**: https://wiki.freecad.org
- name: '🧹 Tag & close inactive issues'
id: inactive_issues
uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-issue-stale: 190
days-before-issue-close: 60
days-before-pr-stale: -1
days-before-pr-close: -1
operations-per-run: 100 # max num of ops per run
stale-issue-label: 'Status: Stale'
close-issue-label: 'Status: Auto-closing'
exempt-issue-labels: 'Priority: High,Priority: Critical,Blocker,Type: Feature,no-auto-close,3rd party: OCC'
remove-stale-when-updated: true
ascending: true
stale-issue-message: |
Hi! This issue hasnt seen activity in a while. We automatically check each issue after 190 days without activity to keep the backlog tidy.
If its still relevant, please update to the latest FreeCAD weekly build [download here](https://github.com/FreeCAD/FreeCAD/releases/) to see if the issue is already resolved.
If the issue is still relevant, let us know by adding a comment.
Otherwise, well close this issue automatically in 60 days.
Feel free to comment anytime to keep it open. Closed issues can always be reopened.
Thanks for helping improve FreeCAD!
Access additional [FreeCAD](https://freecad.org) resources:
- **Forum**: https://forum.freecad.org
- **Blog**: https://blog.freecad.org
- **Wiki**: https://wiki.freecad.org
- name: '🧹 Tag & close inactive PRs'
id: inactive_pr
uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-issue-stale: -1
days-before-issue-close: -1
days-before-pr-stale: 120
days-before-pr-close: 60
operations-per-run: 30 # max num of ops per run
stale-pr-label: 'Status: Stale'
close-pr-label: 'Status: Auto-closing'
exempt-pr-labels: 'Needs backport,Priority: High,Priority: Critical,no-auto-close'
remove-stale-when-updated: true
ascending: true
stale-pr-message: |
Thanks for helping improve FreeCAD!
This pull request hasnt seen activity in a while. We automatically check each PR after 120 days without activity to keep the repository tidy.
If the PR is still relevant, let us know by adding a comment.
Otherwise, well close this PR automatically in 60 days.
If you would like to keep working on this pull request, we advice to rebase it on current main branch, ask feedback from users or maintainers and engage with the community to get it forward.
+52
View File
@@ -0,0 +1,52 @@
name: Backport merged pull request
on:
pull_request_target:
types: [closed, labeled]
branches: [main, releases/*]
permissions:
contents: write
pull-requests: write
jobs:
backport:
name: Create backport pull request
runs-on: ubuntu-latest
# Run the action if a PR is merged with backport labels
# OR
# when already merged PR is labeled with backport labels
if: >
github.event.pull_request.merged
&& (
github.event.action == 'closed'
|| (
github.event.action == 'labeled'
&& startsWith(github.event.label.name, 'backport ')
)
)
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
token: ${{ secrets.GH_TOKEN_FOR_CI_RUNNERS }}
- name: Create backport pull requests
uses: korthout/backport-action@01619ebc9a6e3f6820274221b9956b3e7365000a # v4.1.0
with:
# Inputs documented here: https://github.com/korthout/backport-action?tab=readme-ov-file#inputs
github_token: ${{ secrets.GH_TOKEN_FOR_CI_RUNNERS }}
github_workspace: ${{ github.workspace }}
# permit PRs with merge commits to be backported
merge_commits: 'skip'
# copy labels to backport to identify affected systems and priorities
copy_labels_pattern: '.*'
# Regex pattern to match github labels
# The capture group catches the target branch
# i.e. label "backport releases/FreeCAD-1-0" will create backport
# PR for branch releases/FreeCAD-1-0
label_pattern: ^backport ([^ ]+)$
+213
View File
@@ -0,0 +1,213 @@
name: Build Release
on:
release:
types: [created]
schedule:
- cron: "0 0 * * 3"
workflow_dispatch:
permissions:
contents: write
actions: write
jobs:
upload_src:
runs-on: ubuntu-latest
outputs:
build_tag: ${{ steps.get_tag.outputs.build_tag }}
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
- name: Checkout Source
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.sha }}
fetch-depth: 2
fetch-tags: true
submodules: 'recursive'
- name: get tag and create release if weekly
id: get_tag
shell: bash -l {0}
env:
GH_TOKEN: ${{ github.token }}
run: |
if [ "${{ github.event_name }}" = "release" ]; then
export BUILD_TAG="${{ github.event.release.tag_name }}"
else
export BUILD_TAG=weekly-$(date "+%Y.%m.%d")
gh release create ${BUILD_TAG} --title "Development Build ${BUILD_TAG}" -F .github/workflows/weekly-build-notes.md --prerelease || true
fi
echo "BUILD_TAG=${BUILD_TAG}" >> "$GITHUB_ENV"
echo "build_tag=${BUILD_TAG}" >> "$GITHUB_OUTPUT"
- name: Trigger notes updater workflow (only for weekly)
if: startsWith(steps.get_tag.outputs.build_tag, 'weekly-')
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
WEEKLY_TAG: ${{ steps.get_tag.outputs.build_tag }}
with:
script: |
const owner = context.repo.owner;
const repo = context.repo.repo;
// Reusable/dispatchable updater workflow file in .github/workflows/
const workflow_id = 'weekly-compare-link.yml';
// Use the default branch so the workflow file is available
const ref = (context.payload?.repository?.default_branch) || 'main';
const current_tag = process.env.WEEKLY_TAG || '';
await github.rest.actions.createWorkflowDispatch({
owner, repo, workflow_id, ref,
inputs: { current_tag }
});
core.info(`Dispatched ${workflow_id} on ${ref} with current_tag='${current_tag}'.`)
- name: Upload Source
id: upload_source
shell: bash -l {0}
env:
GH_TOKEN: ${{ github.token }}
run: |
python3 package/scripts/write_version_info.py ../freecad_version.txt
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
git config user.name 'github-actions[bot]'
git apply package/disable_git_info.patch
git commit -a -m "Disable git info write to Version.h"
git archive HEAD -o freecad_source_${BUILD_TAG}.tar
git submodule foreach --recursive \
"git archive HEAD --prefix=\$path/ -o \$sha1.tar && \
tar -A -f \$toplevel/freecad_source_${BUILD_TAG}.tar \$sha1.tar && \
rm \$sha1.tar"
gzip freecad_source_${BUILD_TAG}.tar
sha256sum freecad_source_${BUILD_TAG}.tar.gz > freecad_source_${BUILD_TAG}.tar.gz-SHA256.txt
gh release upload --clobber ${BUILD_TAG} "freecad_source_${BUILD_TAG}.tar.gz" "freecad_source_${BUILD_TAG}.tar.gz-SHA256.txt"
build:
needs: upload_src
strategy:
matrix:
include:
- { target: linux-64, os: ubuntu-22.04 }
- { target: linux-arm64, os: ubuntu-22.04-arm }
- { target: osx-64, os: macos-15-intel, deploy_target: "10.13" }
- { target: osx-arm64, os: macos-latest, deploy_target: "11.0" }
- { target: osx-arm64, os: macos-latest, deploy_target: "15.0" }
- { target: win-64, os: windows-latest }
fail-fast: false
runs-on: ${{ matrix.os }}
environment: weekly-build
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
# prevent running out of disk space on Ubuntu runners.
- name: Maximize build space
if: runner.os == 'Linux'
uses: AdityaGarg8/remove-unwanted-software@90e01b21170618765a73370fcc3abbd1684a7793 # v5
with:
verbose: 'true'
remove-android: 'true' # (frees ~9 GB)
remove-cached-tools: 'true' # (frees ~8.3 GB)
- name: Set Platform Environment Variables
shell: bash -l {0}
env:
OPERATING_SYSTEM: ${{ runner.os }}
run: |
if [[ $OPERATING_SYSTEM == 'Windows' ]]; then
echo 'PIXI_CACHE_DIR=D:\rattler' >> "$GITHUB_ENV"
echo 'RATTLER_CACHE_DIR=D:\rattler' >> "$GITHUB_ENV"
fi
- name: Checkout Source
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.sha }}
fetch-depth: 2
fetch-tags: true
submodules: 'recursive'
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
pixi-version: v0.59.0
cache: false
- name: Install the Apple certificate and provisioning profile
id: get_cert
if: runner.os == 'macOS'
env:
APP_SPECIFIC_PASSWORD: ${{ secrets.APP_SPECIFIC_PASSWORD }}
APPLE_ID: ${{ secrets.APPLE_ID }}
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
DEVELOPER_TEAM_ID: ${{ secrets.DEVELOPER_TEAM_ID }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
run: |
if [ -z "$BUILD_CERTIFICATE_BASE64" ]; then
echo "has_cert=false" >> $GITHUB_OUTPUT
echo "No certificate avalable... skipping" && exit 0
else
echo "has_cert=true" >> $GITHUB_OUTPUT
fi
# create variables
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PP_PATH=$RUNNER_TEMP/FreeCAD_bundle.provisionprofile
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
export KEYCHAIN_PASSWORD=$(openssl rand -base64 8)
# import certificate and provisioning profile from secrets
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH
# create temporary keychain
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
# import certificate to keychain
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security set-key-partition-list -S apple-tool:,apple: -k "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
# apply provisioning profile
mkdir -p ~/Library/Provisioning\ Profiles
cp $PP_PATH ~/Library/Provisioning\ Profiles
xcrun notarytool store-credentials "FreeCAD" --keychain "$KEYCHAIN_PATH" --apple-id "${APPLE_ID}" --password "${APP_SPECIFIC_PASSWORD}" --team-id "${DEVELOPER_TEAM_ID}"
- name: Build and Release Packages
shell: bash
env:
GH_TOKEN: ${{ github.token }}
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }}
SIGN_RELEASE: ${{ steps.get_cert.outputs.has_cert }}
TARGET_PLATFORM: ${{ matrix.target }}
MAKE_INSTALLER: "true"
UPLOAD_RELEASE: "true"
BUILD_TAG: ${{ needs.upload_src.outputs.build_tag }}
run: |
if [[ "${{ runner.os }}" == "macOS" ]]; then
export MACOS_DEPLOYMENT_TARGET="${{ matrix.deploy_target }}"
fi
python3 package/scripts/write_version_info.py ../freecad_version.txt
cd package/rattler-build
pixi install
pixi run -e package create_bundle
## Needed if running on a self-hosted runner:
# - name: Clean up keychain and provisioning profile
# if: ${{ always() }}
# run: |
# security delete-keychain $RUNNER_TEMP/app-signing.keychain-db
# rm ~/Library/MobileDevice/Provisioning\ Profiles/build_pp.mobileprovision
+127
View File
@@ -0,0 +1,127 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL Advanced"
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
schedule:
- cron: '28 12 * * 6'
permissions:
contents: read
jobs:
analyze:
name: Analyze (${{ matrix.language }})
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners (GitHub.com only)
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
permissions:
# required for all workflows
security-events: write
# required to fetch internal or private CodeQL packs
packages: read
# only required for workflows in private repositories
actions: read
contents: read
strategy:
fail-fast: false
matrix:
include:
- language: actions
build-mode: none
# - language: c-cpp
# build-mode: autobuild
# - language: javascript-typescript
# build-mode: none
- language: python
build-mode: none
# CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift'
# Use `c-cpp` to analyze code written in C, C++ or both
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 2
submodules: recursive
# Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node`
# or others). This is typically only required for manual builds.
# - name: Setup runtime (example)
# uses: actions/setup-example@v1
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended
queries: security-and-quality
# Change the CodeQL Bundle version
# tools: https://github.com/github/codeql-action/releases/download/codeql-bundle-v2.20.7/codeql-bundle-linux64.tar.gz
# Add exclusions
config: |
paths-ignore:
- src/Mod/Import/App/SCL_output/**
query-filters:
- exclude:
id: py/file-not-closed
# If the analyze step fails for one of the languages you are analyzing with
# "We were unable to automatically build your code", modify the matrix above
# to set the build mode to "manual" for that language. Then modify this step
# to build your code.
# ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- if: matrix.build-mode == 'manual'
shell: bash
run: |
echo 'If you are using a "manual" build mode for one or more of the' \
'languages you are analyzing, replace this with the commands to build' \
'your code, for example:'
echo ' make bootstrap'
echo ' make release'
exit 1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
with:
category: "/language:${{matrix.language}}"
+163
View File
@@ -0,0 +1,163 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL Advanced (c-cpp)"
on:
# push:
# branches: [ "main" ]
# pull_request:
# branches: [ "main" ]
schedule:
- cron: '28 12 * * 6'
workflow_dispatch: # Allow manual triggers
env:
CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: false
permissions:
contents: read
jobs:
analyze:
name: Analyze (${{ matrix.language }})
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners (GitHub.com only)
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
permissions:
# required for all workflows
security-events: write
# required to fetch internal or private CodeQL packs
packages: read
# only required for workflows in private repositories
actions: read
contents: read
strategy:
fail-fast: false
matrix:
include:
# - language: actions
# build-mode: none
- language: c-cpp
build-mode: autobuild
# - language: javascript-typescript
# build-mode: none
# - language: python
# build-mode: none
# CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift'
# Use `c-cpp` to analyze code written in C, C++ or both
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
# prevent running out of disk space on Ubuntu runners.
- name: Maximize build space
uses: AdityaGarg8/remove-unwanted-software@90e01b21170618765a73370fcc3abbd1684a7793 # v5
with:
verbose: 'true'
remove-android: 'true' # (frees ~9 GB)
remove-cached-tools: 'true' # (frees ~8.3 GB)
remove-haskell: 'true' # (frees ~5.2 GB)
remove-swapfile: 'true' # (frees ~4 GB)
remove-docker-images: 'true' # (frees ~3.2 GB)
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 2
submodules: recursive
# Install FreeCAD dependencies (cpp)
- name: Setup build environment
run: ./package/ubuntu/install-apt-packages.sh
# Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node`
# or others). This is typically only required for manual builds.
# - name: Setup runtime (example)
# uses: actions/setup-example@v1
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended
queries: security-and-quality
# Change the CodeQL Bundle version
# tools: https://github.com/github/codeql-action/releases/download/codeql-bundle-v2.20.7/codeql-bundle-linux64.tar.gz
# If the analyze step fails for one of the languages you are analyzing with
# "We were unable to automatically build your code", modify the matrix above
# to set the build mode to "manual" for that language. Then modify this step
# to build your code.
# ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- if: matrix.build-mode == 'manual'
shell: bash
run: |
echo 'If you are using a "manual" build mode for one or more of the' \
'languages you are analyzing, replace this with the commands to build' \
'your code, for example:'
echo ' make bootstrap'
echo ' make release'
exit 1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
with:
category: "/language:${{matrix.language}}"
output: sarif-results
upload: failure-only
- name: filter-sarif
uses: advanced-security/filter-sarif@v1
with:
patterns: |
-tests/**/*
-src/3rdParty/**/*
-**/ui_*.h
-**/moc_*.cpp
input: sarif-results/cpp.sarif
output: sarif-results/cpp.sarif
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: sarif-results/cpp.sarif
- name: Upload loc as a Build Artifact
uses: actions/upload-artifact@v7.0.0
with:
name: sarif-results
path: sarif-results
retention-days: 1
+27
View File
@@ -0,0 +1,27 @@
# Dependency Review Action
#
# This Action will scan dependency manifest files that change as part of a Pull Request,
# surfacing known-vulnerable versions of the packages declared or updated in the PR.
# Once installed, if the workflow run is marked as required,
# PRs introducing known-vulnerable packages will be blocked from merging.
#
# Source repository: https://github.com/actions/dependency-review-action
name: 'Dependency Review'
on: [pull_request]
permissions:
contents: read
jobs:
dependency-review:
runs-on: ubuntu-latest
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
- name: 'Checkout Repository'
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: 'Dependency Review'
uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4
+39
View File
@@ -0,0 +1,39 @@
name: Fedora Daily Build
permissions:
contents: read
on:
schedule:
- cron: "00 00 * * *"
workflow_dispatch:
jobs:
trigger-copr-build:
environment: fedora-daily
env:
copr_login: ${{ secrets.COPR_LOGIN }}
copr_username: ${{ secrets.COPR_USERNAME }}
copr_token: ${{ secrets.COPR_TOKEN }}
runs-on: ubuntu-latest
container: quay.io/packit/packit
steps:
- name: setup copr token
run: |
mkdir -p ~/.config
echo \
"[copr-cli]
login = $copr_login
username = $copr_username
token = $copr_token
copr_url = https://copr.fedorainfracloud.org
" > ~/.config/copr
- name: checkout sources
uses: actions/checkout@v6
with:
submodules: recursive
fetch-depth: 500
fetch-tags: true
- name: Setup safe Git directory
run: git config --global --add safe.directory $GITHUB_WORKSPACE
- name: trigger copr build
run: |
packit build in-copr --project freecad
@@ -0,0 +1,68 @@
name: Fetch Crowdin Translations
on:
workflow_dispatch:
schedule:
- cron: "0 0 * * 1"
jobs:
update-crowdin:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
fetch-depth: 0
token: ${{ secrets.GH_TOKEN_FOR_CROWDIN_SYNC }}
- name: Install Qt ≥ 6.8
uses: jurplel/install-qt-action@d325aaf2a8baeeda41ad0b5d39f84a6af9bcf005
with:
aqtversion: "==3.1.*"
version: "6.8.3"
host: "linux"
target: "desktop"
arch: "linux_gcc_64"
- name: Setup Python & dependencies
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
with:
python-version: "3.13"
- name: Install Python packages
run: |
python3 -m pip install --upgrade pip
pip install pyside6
- name: Gather translations from crowdin
run: |
./updatecrowdin.py build
while ./updatecrowdin.py build-status | grep -q "status: inProgress"; do sleep 10; done
./updatecrowdin.py download
./updatecrowdin.py install
working-directory: ./src/Tools
env:
CROWDIN_TOKEN: ${{ secrets.CROWDIN_TOKEN }}
CROWDIN_PROJECT_ID: freecad
- name: Commit changes
run: |
git config --global user.name "freecad-gh-actions-translation-bot"
git config --global user.email "freecad-gh-actions-translation-bot@github.com"
git add src
git commit -m "Update translations from Crowdin" || echo "No changes to commit"
- name: Push changes to a new branch
run: |
git branch update-crowdin-translations
git push origin update-crowdin-translations --force
- name: Create Pull Request
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0
with:
branch: update-crowdin-translations
title: "Update translations from Crowdin"
body: "Automatic Crowdin update."
token: ${{ secrets.GH_TOKEN_FOR_CROWDIN_SYNC }}
delete-branch: true
add-paths: |
src
+7 -2
View File
@@ -16,6 +16,11 @@ jobs:
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
- name: Get dates for last month
shell: bash
run: |
@@ -30,13 +35,13 @@ jobs:
echo "last_month=$first_day..$last_day" >> "$GITHUB_ENV"
- name: Run issue-metrics tool
uses: github/issue-metrics@v3
uses: github/issue-metrics@6a35322ff89cee3e1a594d282c27eb34bffa9174 # v4.1.1
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SEARCH_QUERY: 'repo:FreeCAD/FreeCAD is:issue created:${{ env.last_month }}'
- name: Create issue
uses: peter-evans/create-issue-from-file@v4
uses: peter-evans/create-issue-from-file@fca9117c27cdc29c6c4db3b86c48e4115a786710 # v6.0.0
with:
title: Monthly issue metrics report
token: ${{ secrets.GITHUB_TOKEN }}
+9 -1
View File
@@ -9,6 +9,9 @@ on:
pull_request_target:
types: [opened, reopened]
permissions:
contents: read
jobs:
label:
runs-on: ubuntu-latest
@@ -17,7 +20,12 @@ jobs:
pull-requests: write
steps:
- uses: actions/labeler@v5
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
- uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: ".github/labels.yml"
@@ -0,0 +1,43 @@
name: Push Crowdin Translations
on:
workflow_dispatch:
schedule:
- cron: "0 0 * * 1"
jobs:
update-crowdin:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
fetch-depth: 0
ref: releases/FreeCAD-1-1
- name: Install Qt ≥ 6.8
uses: jurplel/install-qt-action@d325aaf2a8baeeda41ad0b5d39f84a6af9bcf005
with:
aqtversion: "==3.1.*"
version: "6.8.3"
host: "linux"
target: "desktop"
arch: "linux_gcc_64"
- name: Setup Python & dependencies
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
with:
python-version: "3.13"
- name: Install Python packages
run: |
python3 -m pip install --upgrade pip
pip install pyside6
- name: Push translations to Crowdin
run: |
./updatecrowdin.py gather
./updatecrowdin.py upload
working-directory: ./src/Tools
env:
CROWDIN_TOKEN: ${{ secrets.CROWDIN_TOKEN }}
CROWDIN_PROJECT_ID: freecad
+81
View File
@@ -0,0 +1,81 @@
# This workflow uses actions that are not certified by GitHub. They are provided
# by a third-party and are governed by separate terms of service, privacy
# policy, and support documentation.
name: Scorecard supply-chain security
on:
# For Branch-Protection check. Only the default branch is supported. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
branch_protection_rule:
# To guarantee Maintained check is occasionally updated. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
schedule:
- cron: '20 7 * * 2'
push:
branches: ["main"]
# Declare default permissions as read only.
permissions: read-all
jobs:
analysis:
name: Scorecard analysis
runs-on: ubuntu-latest
permissions:
# Needed to upload the results to code-scanning dashboard.
security-events: write
# Needed to publish results and get a badge (see publish_results below).
id-token: write
contents: read
actions: read
# To allow GraphQL ListCommits to work
issues: read
pull-requests: read
# To detect SAST tools
checks: read
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
- name: "Checkout code"
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: "Run analysis"
uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
with:
results_file: results.sarif
results_format: sarif
# (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
# - you want to enable the Branch-Protection check on a *public* repository, or
# - you are installing Scorecards on a *private* repository
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat.
# repo_token: ${{ secrets.SCORECARD_TOKEN }}
# Public repositories:
# - Publish results to OpenSSF REST API for easy access by consumers
# - Allows the repository to include the Scorecard badge.
# - See https://github.com/ossf/scorecard-action#publishing-results.
# For private repositories:
# - `publish_results` will always be set to `false`, regardless
# of the value entered here.
publish_results: true
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: SARIF file
path: results.sarif
retention-days: 5
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
with:
sarif_file: results.sarif
@@ -1,171 +0,0 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# * *
# * Copyright (c) 2023 0penBrain. *
# * *
# * This file is part of FreeCAD. *
# * *
# * FreeCAD is free software: you can redistribute it and/or modify it *
# * under the terms of the GNU Lesser General Public License as *
# * published by the Free Software Foundation, either version 2.1 of the *
# * License, or (at your option) any later version. *
# * *
# * FreeCAD is distributed in the hope that it will be useful, but *
# * WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
# * Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Lesser General Public *
# * License along with FreeCAD. If not, see *
# * <https://www.gnu.org/licenses/>. *
# * *
# ***************************************************************************
# This is a build and test workflow for CI of FreeCAD.
# This workflow aims at building and testing FreeCAD on a Conda environment on macOS.
name: Build macOS 13 (Apple Silicon)
on:
workflow_call:
inputs:
artifactBasename:
type: string
required: true
testOnBuildDir:
default: false
type: boolean
required: false
allowedToFail:
default: false
type: boolean
required: false
outputs:
reportFile:
value: ${{ jobs.Build.outputs.reportFile }}
jobs:
Build:
runs-on: macos-14
continue-on-error: ${{ inputs.allowedToFail }}
env:
CCACHE_DIR: ${{ github.workspace }}/ccache
CCACHE_CONFIGPATH: ${{ github.workspace }}/ccache/config
CCACHE_MAXSIZE: 1G
CCACHE_COMPILERCHECK: "%compiler% -dumpfullversion -dumpversion" # default:mtime
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 1
CC: arm64-apple-darwin20.0.0-clang
CXX: arm64-apple-darwin20.0.0-clang++
builddir: ${{ github.workspace }}/build/release/
logdir: /tmp/logs/
reportdir: /tmp/report/
reportfilename: ${{ inputs.artifactBasename }}-report.md
defaults:
run:
shell: bash -l {0}
outputs:
reportFile: ${{ steps.Init.outputs.reportFile }}
steps:
- name: Checking out source code
uses: actions/checkout@v4
with:
submodules: true
- name: Setup Miniconda
env:
CONDA_VERBOSITY: 2
uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: .conda/freecad
environment-file: conda/conda-env.yaml
channels: conda-forge
channel-priority: true
miniforge-version: latest
- name: Install FreeCAD dependencies
env:
CONDA_VERBOSITY: 2
run: |
./conda/setup-environment.sh
- name: Set Environment Variables
run: |
echo "CC=$CC" >> "$GITHUB_ENV"
echo "CXX=$CXX" >> "$GITHUB_ENV"
- name: Make needed directories, files and initializations
id: Init
run: |
mkdir -p ${{ env.CCACHE_DIR }}
mkdir -p ${{ env.CCACHE_CONFIGPATH }}
mkdir -p ${{ env.builddir }}
mkdir -p ${{ env.logdir }}
mkdir -p ${{ env.reportdir }}
echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- name: Generate cache key
id: genCacheKey
uses: ./.github/workflows/actions/macos/generateCacheKey
with:
compiler: ${{ env.CXX }}
- name: Restore Compiler Cache
uses: actions/cache@v4
with:
save-always: true
path: ${{ env.CCACHE_DIR }}
key: FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-
FC-${{ steps.genCacheKey.outputs.cacheKey }}-
- name: Print CCache statistics before build, reset stats and print config
run: |
ccache -s
ccache -z
ccache -p
- name: CMake Configure
run: |
mamba run --live-stream -p .conda/freecad cmake --preset conda-macos-release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/.conda/freecad/opt/freecad
- name: CMake Build
run: |
mamba run --live-stream -p .conda/freecad cmake --build build/release
- name: Print ccache statistics after Build
run: |
ccache -s
- name: FreeCAD CLI tests on build dir
if: inputs.testOnBuildDir
timeout-minutes: 10
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "CLI tests on build dir"
testCommand: ${{ env.builddir }}/bin/FreeCADCmd -t 0
logFile: ${{ env.logdir }}TestCLIBuild.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: C++ tests
timeout-minutes: 1
uses: ./.github/workflows/actions/runCPPTests/runAllTests
with:
reportdir: ${{ env.reportdir }}
builddir: ${{ env.builddir }}
reportFile: ${{ env.reportdir }}${{ env.reportfilename }}
- name: CMake Install
run: |
mamba run --live-stream -p .conda/freecad cmake --install build/release
- name: FreeCAD CLI tests on install
timeout-minutes: 10
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "CLI tests on install"
testCommand: ${{ github.workspace }}/.conda/freecad/opt/freecad/bin/FreeCADCmd -t 0
logFile: ${{ env.logdir }}TestCLIInstall.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifactBasename }}-Logs
path: |
${{ env.logdir }}
/var/crash/*FreeCAD*
- name: Upload report
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ env.reportfilename }}
path: |
${{env.reportdir}}${{ env.reportfilename }}
@@ -1,171 +0,0 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# * *
# * Copyright (c) 2023 0penBrain. *
# * *
# * This file is part of FreeCAD. *
# * *
# * FreeCAD is free software: you can redistribute it and/or modify it *
# * under the terms of the GNU Lesser General Public License as *
# * published by the Free Software Foundation, either version 2.1 of the *
# * License, or (at your option) any later version. *
# * *
# * FreeCAD is distributed in the hope that it will be useful, but *
# * WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
# * Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Lesser General Public *
# * License along with FreeCAD. If not, see *
# * <https://www.gnu.org/licenses/>. *
# * *
# ***************************************************************************
# This is a build and test workflow for CI of FreeCAD.
# This workflow aims at building and testing FreeCAD on a Conda environment on macOS.
name: Build macOS 13 (Intel)
on:
workflow_call:
inputs:
artifactBasename:
type: string
required: true
testOnBuildDir:
default: false
type: boolean
required: false
allowedToFail:
default: false
type: boolean
required: false
outputs:
reportFile:
value: ${{ jobs.Build.outputs.reportFile }}
jobs:
Build:
runs-on: macos-13
continue-on-error: ${{ inputs.allowedToFail }}
env:
CCACHE_DIR: ${{ github.workspace }}/ccache
CCACHE_CONFIGPATH: ${{ github.workspace }}/ccache/config
CCACHE_MAXSIZE: 1G
CCACHE_COMPILERCHECK: "%compiler% -dumpfullversion -dumpversion" # default:mtime
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 1
CC: x86_64-apple-darwin13.4.0-clang
CXX: x86_64-apple-darwin13.4.0-clang++
builddir: ${{ github.workspace }}/build/release/
logdir: /tmp/logs/
reportdir: /tmp/report/
reportfilename: ${{ inputs.artifactBasename }}-report.md
defaults:
run:
shell: bash -l {0}
outputs:
reportFile: ${{ steps.Init.outputs.reportFile }}
steps:
- name: Checking out source code
uses: actions/checkout@v4
with:
submodules: true
- name: Setup Miniconda
env:
CONDA_VERBOSITY: 2
uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: .conda/freecad
environment-file: conda/conda-env.yaml
channels: conda-forge
channel-priority: true
miniforge-version: latest
- name: Install FreeCAD dependencies
env:
CONDA_VERBOSITY: 2
run: |
./conda/setup-environment.sh
- name: Set Environment Variables
run: |
echo "CC=$CC" >> "$GITHUB_ENV"
echo "CXX=$CXX" >> "$GITHUB_ENV"
- name: Make needed directories, files and initializations
id: Init
run: |
mkdir -p ${{ env.CCACHE_DIR }}
mkdir -p ${{ env.CCACHE_CONFIGPATH }}
mkdir -p ${{ env.builddir }}
mkdir -p ${{ env.logdir }}
mkdir -p ${{ env.reportdir }}
echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- name: Generate cache key
id: genCacheKey
uses: ./.github/workflows/actions/macos/generateCacheKey
with:
compiler: ${{ env.CXX }}
- name: Restore Compiler Cache
uses: actions/cache@v4
with:
save-always: true
path: ${{ env.CCACHE_DIR }}
key: FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-
FC-${{ steps.genCacheKey.outputs.cacheKey }}-
- name: Print CCache statistics before build, reset stats and print config
run: |
ccache -s
ccache -z
ccache -p
- name: CMake Configure
run: |
mamba run --live-stream -p .conda/freecad cmake --preset conda-macos-release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/.conda/freecad/opt/freecad
- name: CMake Build
run: |
mamba run --live-stream -p .conda/freecad cmake --build build/release
- name: Print ccache statistics after Build
run: |
ccache -s
- name: FreeCAD CLI tests on build dir
if: inputs.testOnBuildDir
timeout-minutes: 10
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "CLI tests on build dir"
testCommand: ${{ env.builddir }}/bin/FreeCADCmd -t 0
logFile: ${{ env.logdir }}TestCLIBuild.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: C++ tests
timeout-minutes: 1
uses: ./.github/workflows/actions/runCPPTests/runAllTests
with:
reportdir: ${{ env.reportdir }}
builddir: ${{ env.builddir }}
reportFile: ${{ env.reportdir }}${{ env.reportfilename }}
- name: CMake Install
run: |
mamba run --live-stream -p .conda/freecad cmake --install build/release
- name: FreeCAD CLI tests on install
timeout-minutes: 10
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "CLI tests on install"
testCommand: ${{ github.workspace }}/.conda/freecad/opt/freecad/bin/FreeCADCmd -t 0
logFile: ${{ env.logdir }}TestCLIInstall.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifactBasename }}-Logs
path: |
${{ env.logdir }}
/var/crash/*FreeCAD*
- name: Upload report
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ env.reportfilename }}
path: |
${{env.reportdir}}${{ env.reportfilename }}
+232
View File
@@ -0,0 +1,232 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# * *
# * Copyright (c) 2024 0penBrain, Lorenz Lechner and Jacob Oursland. *
# * *
# * This file is part of FreeCAD. *
# * *
# * FreeCAD is free software: you can redistribute it and/or modify it *
# * under the terms of the GNU Lesser General Public License as *
# * published by the Free Software Foundation, either version 2.1 of the *
# * License, or (at your option) any later version. *
# * *
# * FreeCAD is distributed in the hope that it will be useful, but *
# * WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
# * Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Lesser General Public *
# * License along with FreeCAD. If not, see *
# * <https://www.gnu.org/licenses/>. *
# * *
# ***************************************************************************
# This is a build and test workflow for CI of FreeCAD.
# This workflow aims at building and testing FreeCAD on a Conda environment on macOS.
name: Pixi Builds
on:
workflow_call:
inputs:
artifactBasename:
type: string
required: true
testOnBuildDir:
default: false
type: boolean
required: false
allowedToFail:
default: false
type: boolean
required: false
outputs:
reportFile:
value: ${{ jobs.Build.outputs.reportFile }}
jobs:
build_with_pixi:
runs-on: ${{ matrix.os }}
continue-on-error: ${{ inputs.allowedToFail }}
env:
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 5
CCACHE_CONFIGPATH: ${{ github.workspace }}/ccache/config
CCACHE_DIR: ${{ github.workspace }}/ccache
CCACHE_MAXSIZE: 1G
CCACHE_NODIRECT: true
CCACHE_NOHASHDIR: true
CCACHE_NOINODECACHE: true
CCACHE_SLOPPINESS: "include_file_ctime,include_file_mtime,pch_defines,time_macros"
builddir: ${{ github.workspace }}/build/release/
cacheKey: pixi-${{ matrix.os }}
config: release
logdir: ${{ github.workspace }}/logs/
reportdir: ${{ github.workspace }}/report/
reportfilename: ${{ inputs.artifactBasename }}-${{ matrix.os }}-report.md
outputs:
reportFile: ${{ steps.Init.outputs.reportFile }}
strategy:
max-parallel: 6
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
- name: Set Platform Environment Variables
shell: bash -l {0}
env:
OPERATING_SYSTEM: ${{ runner.os }}
run: |
if [[ $OPERATING_SYSTEM == 'Windows' ]]; then
echo 'CCACHE_COMPILERCHECK=%compiler%' >> "$GITHUB_ENV"
else
echo 'CCACHE_COMPILERCHECK=%compiler% -dumpfullversion -dumpversion' >> "$GITHUB_ENV"
fi
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Add GCC Problem Matcher
if: runner.os == 'Linux'
run: |
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/gcc.json"
- name: Add Clang Problem Matcher
if: runner.os == 'macOS'
run: |
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/clang.json"
- name: Add MSVC++ Problem Matcher
if: runner.os == 'Windows'
run: |
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/msvc.json"
- name: Make needed directories, files and initializations
id: Init
run: |
mkdir -p ${{ env.builddir }}
mkdir -p ${{ env.logdir }}
mkdir -p ${{ env.reportdir }}
echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- uses: prefix-dev/setup-pixi@a0af7a228712d6121d37aba47adf55c1332c9c2e # v0.9.4
with:
pixi-version: v0.59.0
cache: false
- name: Restore Compiler Cache
id: cache-restore
if: always()
uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
with:
path: ${{ env.CCACHE_DIR }}
key: FC-${{ env.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
FC-${{ env.cacheKey }}-${{ github.ref }}-
FC-${{ env.cacheKey }}-
- name: Print CCache statistics before build, reset stats and print config
run: |
pixi run ccache -s
pixi run ccache -z
pixi run ccache -p
- name: CMake Configure
run: |
pixi run configure-${{ env.config }}
- name: CMake Build
run: |
pixi run build-${{ env.config }}
- name: Print ccache statistics after Build
if: always()
run: |
pixi run ccache -s
- name: FreeCAD CLI tests on build dir
if: inputs.testOnBuildDir
timeout-minutes: 10
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "CLI tests on build dir"
testCommand: pixi run ${{ env.builddir }}/bin/FreeCADCmd -t 0
logFile: ${{ env.logdir }}TestCLIBuild.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: FreeCAD GUI tests on build dir
if: runner.os == 'Linux' && inputs.testOnBuildDir
timeout-minutes: 15
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "GUI tests on build dir"
testCommand: pixi run xvfb-run ${{ env.builddir }}/bin/FreeCAD -t 0
logFile: ${{ env.logdir }}TestGUIBuild.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: C++ tests
timeout-minutes: 10
if: runner.os != 'Windows'
uses: ./.github/workflows/actions/runCPPTests/runAllTests
with:
reportdir: ${{ env.reportdir }}
builddir: ${{ env.builddir }}
reportFile: ${{ env.reportdir }}${{ env.reportfilename }}
- name: CMake Install
run: |
pixi run install-${{ env.config }}
- name: FreeCAD CLI tests on install
if: runner.os != 'Windows'
timeout-minutes: 10
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "CLI tests on install"
testCommand: pixi run FreeCADCmd -t 0
logFile: ${{ env.logdir }}TestCLIInstall.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: FreeCAD GUI tests on install
# if: runner.os == 'Linux'
# currently broken on Qt6 builds
if: false
timeout-minutes: 15
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "GUI tests on install"
testCommand: pixi run xvfb-run FreeCAD -t 0
logFile: ${{ env.logdir }}TestGUIInstall.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: Save Compiler Cache
id: cache-save
if: always()
uses: actions/cache/save@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
with:
path: ${{ env.CCACHE_DIR }}
key: FC-${{ env.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
- name: Upload logs
if: always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: ${{ inputs.artifactBasename }}-${{ matrix.os }}-Logs
path: |
${{ env.logdir }}
/var/crash/*FreeCAD*
- name: Upload report
if: always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: ${{ env.reportfilename }}
path: |
${{env.reportdir}}${{ env.reportfilename }}
+239
View File
@@ -0,0 +1,239 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# * *
# * Copyright (c) 2023 0penBrain. *
# * *
# * This file is part of FreeCAD. *
# * *
# * FreeCAD is free software: you can redistribute it and/or modify it *
# * under the terms of the GNU Lesser General Public License as *
# * published by the Free Software Foundation, either version 2.1 of the *
# * License, or (at your option) any later version. *
# * *
# * FreeCAD is distributed in the hope that it will be useful, but *
# * WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
# * Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Lesser General Public *
# * License along with FreeCAD. If not, see *
# * <https://www.gnu.org/licenses/>. *
# * *
# ***************************************************************************
# This is a build and test workflow for CI of FreeCAD.
# This workflow aims at building and testing FreeCAD on Ubuntu 24.04 using GCC.
name: Build Ubuntu 24.04
on:
workflow_call:
inputs:
artifactBasename:
type: string
required: true
testOnBuildDir:
default: false
type: boolean
required: false
allowedToFail:
default: false
type: boolean
required: false
outputs:
reportFile:
value: ${{ jobs.Build.outputs.reportFile }}
jobs:
Build:
runs-on: ubuntu-24.04
continue-on-error: ${{ inputs.allowedToFail }}
env:
CCACHE_COMPILERCHECK: "%compiler% -dumpfullversion -dumpversion" # default:mtime
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 5
CCACHE_CONFIGPATH: ${{ github.workspace }}/ccache/config
CCACHE_DIR: ${{ github.workspace }}/ccache
CCACHE_MAXSIZE: 1G
CCACHE_NODIRECT: true
CCACHE_NOHASHDIR: true
CCACHE_NOINODECACHE: true
CCACHE_SLOPPINESS: "include_file_ctime,include_file_mtime,pch_defines,time_macros"
CC: /usr/bin/gcc
CXX: /usr/bin/g++
#CC: /usr/bin/clang
#CXX: /usr/bin/clang++
builddir: ${{ github.workspace }}/build/release/
config: release
logdir: /tmp/logs/
reportdir: /tmp/report/
reportfilename: ${{ inputs.artifactBasename }}-report.md
defaults:
run:
shell: bash
outputs:
reportFile: ${{ steps.Init.outputs.reportFile }}
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
- name: Checking out source code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- name: Install FreeCAD dependencies
run: ./package/ubuntu/install-apt-packages.sh
- name: Install FreeCAD Python test dependencies
run: |
sudo apt-get update -y -qq
sudo apt-get install -y -qq python3-pip
python3 -m pip install --upgrade pip
python3 -m pip install ifcopenshell==0.8.2 --break-system-packages
- name: Make needed directories, files and initializations
id: Init
run: |
mkdir -p ${{ env.CCACHE_DIR }}
mkdir -p ${{ env.CCACHE_CONFIGPATH }}
mkdir -p ${{ env.builddir }}
mkdir -p ${{ env.logdir }}
mkdir -p ${{ env.reportdir }}
echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- name: Generate cache key
id: genCacheKey
uses: ./.github/workflows/actions/linux/generateCacheKey
with:
compiler: ${{ env.CXX }}
qt_major_version: 5
- name: Restore Compiler Cache
id: cache-restore
if: always()
uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
with:
path: ${{ env.CCACHE_DIR }}
key: FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-
FC-${{ steps.genCacheKey.outputs.cacheKey }}-
- name: Print CCache statistics before build, reset stats and print config
run: |
ccache -s
ccache -z
ccache -p
- name: Install cmake
uses: jwlawson/actions-setup-cmake@3a6cbe35ba64df7ca70c51365c4aff65db9a9037 # v2.1.1
with:
cmake-version: '3.31.6'
- name: CMake Configure
uses: ./.github/workflows/actions/linux/configure
with:
extraParameters: -G Ninja --preset ${{ env.config }}
builddir: ${{ env.builddir }}
logFile: ${{ env.logdir }}Cmake.log
errorFile: ${{ env.logdir }}CmakeErrors.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: CMake Build
uses: ./.github/workflows/actions/linux/build
with:
builddir: ${{ env.builddir }}
logFile: ${{ env.logdir }}Build.log
errorFile: ${{ env.logdir }}BuildErrors.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: Print ccache statistics after Build
if: always()
run: |
ccache -s
- name: FreeCAD CLI tests on build dir
if: inputs.testOnBuildDir
timeout-minutes: 10
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "CLI tests on build dir"
testCommand: ${{ env.builddir }}/bin/FreeCADCmd -t 0
logFile: ${{ env.logdir }}TestCLIBuild.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: FreeCAD GUI tests on build dir
if: inputs.testOnBuildDir
timeout-minutes: 15
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "GUI tests on build dir"
# Use Python wrapper to run only GUI-registered tests with the built FreeCAD executable
testCommand: xvfb-run python3 ./.github/scripts/run_gui_tests.py "${{ env.builddir }}"
logFile: ${{ env.logdir }}TestGUIBuild.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: C++ tests
timeout-minutes: 1
uses: ./.github/workflows/actions/runCPPTests/runAllTests
with:
reportdir: ${{ env.reportdir }}
builddir: ${{ env.builddir }}
reportFile: ${{ env.reportdir }}${{ env.reportfilename }}
- name: CMake Install
uses: ./.github/workflows/actions/linux/install
with:
builddir: ${{ env.builddir }}
logFile: ${{ env.logdir }}Install.log
errorFile: ${{ env.logdir }}InstallErrors.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: FreeCAD CLI tests on install
timeout-minutes: 10
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "CLI tests on install"
testCommand: FreeCADCmd -t 0
logFile: ${{ env.logdir }}TestCLIInstall.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: FreeCAD GUI tests on install
timeout-minutes: 15
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "GUI tests on install"
# Use Python wrapper to run only GUI-registered tests using the installed FreeCAD
testCommand: xvfb-run python3 ./.github/scripts/run_gui_tests.py "FreeCAD"
logFile: ${{ env.logdir }}TestGUIInstall.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: Save Compiler Cache
id: cache-save
if: always()
uses: actions/cache/save@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
with:
path: ${{ env.CCACHE_DIR }}
key: FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
- name: Upload logs
if: always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: ${{ inputs.artifactBasename }}-Logs
path: |
${{ env.logdir }}
/var/crash/*FreeCAD*
- name: Upload report
if: always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: ${{ env.reportfilename }}
path: |
${{env.reportdir}}${{ env.reportfilename }}
-250
View File
@@ -1,250 +0,0 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# * *
# * Copyright (c) 2023 0penBrain. *
# * *
# * This file is part of FreeCAD. *
# * *
# * FreeCAD is free software: you can redistribute it and/or modify it *
# * under the terms of the GNU Lesser General Public License as *
# * published by the Free Software Foundation, either version 2.1 of the *
# * License, or (at your option) any later version. *
# * *
# * FreeCAD is distributed in the hope that it will be useful, but *
# * WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
# * Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Lesser General Public *
# * License along with FreeCAD. If not, see *
# * <https://www.gnu.org/licenses/>. *
# * *
# ***************************************************************************
# This is a build and test workflow for CI of FreeCAD.
# This workflow aims at building and testing FreeCAD on Ubuntu 20.04 using GCC.
name: Build Ubuntu 20.04
on:
workflow_call:
inputs:
artifactBasename:
type: string
required: true
testOnBuildDir:
default: false
type: boolean
required: false
allowedToFail:
default: false
type: boolean
required: false
outputs:
reportFile:
value: ${{ jobs.Build.outputs.reportFile }}
jobs:
Build:
runs-on: ubuntu-20.04
continue-on-error: ${{ inputs.allowedToFail }}
env:
CCACHE_DIR: ${{ github.workspace }}/ccache
CCACHE_CONFIGPATH: ${{ github.workspace }}/ccache/config
CCACHE_MAXSIZE: 1G
CCACHE_COMPILERCHECK: "%compiler% -dumpfullversion -dumpversion" # default:mtime
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 1
CC: /usr/bin/gcc
CXX: /usr/bin/g++
#CC: /usr/bin/clang
#CXX: /usr/bin/clang++
builddir: ${{ github.workspace }}/build/release/
logdir: /tmp/logs/
reportdir: /tmp/report/
reportfilename: ${{ inputs.artifactBasename }}-report.md
defaults:
run:
shell: bash
outputs:
reportFile: ${{ steps.Init.outputs.reportFile }}
steps:
- name: Checking out source code
uses: actions/checkout@v4
with:
submodules: true
- name: Install FreeCAD dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -y --no-install-recommends \
ccache \
doxygen \
graphviz \
imagemagick \
libboost-date-time-dev \
libboost-dev \
libboost-filesystem-dev \
libboost-graph-dev \
libboost-iostreams-dev \
libboost-program-options-dev \
libboost-python-dev \
libboost-regex-dev \
libboost-serialization-dev \
libboost-thread-dev \
libcoin-dev \
libeigen3-dev \
libgts-bin \
libgts-dev \
libkdtree++-dev \
libmedc-dev \
libocct-data-exchange-dev \
libocct-ocaf-dev \
libocct-visualization-dev \
libopencv-dev \
libproj-dev \
libpyside2-dev \
libqt5opengl5-dev \
libqt5svg5-dev \
libqt5x11extras5-dev \
libshiboken2-dev \
libspnav-dev \
libvtk7-dev \
libx11-dev \
libxerces-c-dev \
libyaml-cpp-dev \
libzipios++-dev \
netgen \
netgen-headers \
ninja-build \
occt-draw \
pyqt5-dev-tools \
pyside2-tools \
python3-dev \
python3-git \
python3-markdown \
python3-matplotlib \
python3-packaging \
python3-pivy \
python3-ply \
python3-pyside2.qtcore \
python3-pyside2.qtgui \
python3-pyside2.qtnetwork \
python3-pyside2.qtsvg \
python3-pyside2.qtwidgets \
qtbase5-dev \
qttools5-dev \
shiboken2 \
swig \
xvfb
- name: Make needed directories, files and initializations
id: Init
run: |
mkdir -p ${{ env.CCACHE_DIR }}
mkdir -p ${{ env.CCACHE_CONFIGPATH }}
mkdir -p ${{ env.builddir }}
mkdir -p ${{ env.logdir }}
mkdir -p ${{ env.reportdir }}
echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- name: Generate cache key
id: genCacheKey
uses: ./.github/workflows/actions/linux/generateCacheKey
with:
compiler: ${{ env.CXX }}
qt_major_version: 5
- name: Restore Compiler Cache
uses: actions/cache@v4
with:
save-always: true
path: ${{ env.CCACHE_DIR }}
key: FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-
FC-${{ steps.genCacheKey.outputs.cacheKey }}-
- name: Print CCache statistics before build, reset stats and print config
run: |
ccache -s
ccache -z
ccache -p
- name: CMake Configure
uses: ./.github/workflows/actions/linux/configure
with:
extraParameters: -G Ninja --preset release
builddir: ${{ env.builddir }}
logFile: ${{ env.logdir }}Cmake.log
errorFile: ${{ env.logdir }}CmakeErrors.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: CMake Build
uses: ./.github/workflows/actions/linux/build
with:
builddir: ${{ env.builddir }}
logFile: ${{ env.logdir }}Build.log
errorFile: ${{ env.logdir }}BuildErrors.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: Print ccache statistics after Build
run: |
ccache -s
- name: FreeCAD CLI tests on build dir
if: inputs.testOnBuildDir
timeout-minutes: 10
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "CLI tests on build dir"
testCommand: ${{ env.builddir }}/bin/FreeCADCmd -t 0
logFile: ${{ env.logdir }}TestCLIBuild.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: FreeCAD GUI tests on build dir
if: inputs.testOnBuildDir
timeout-minutes: 15
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "GUI tests on build dir"
testCommand: xvfb-run ${{ env.builddir }}/bin/FreeCAD -t 0
logFile: ${{ env.logdir }}TestGUIBuild.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: C++ tests
timeout-minutes: 1
uses: ./.github/workflows/actions/runCPPTests/runAllTests
with:
reportdir: ${{ env.reportdir }}
builddir: ${{ env.builddir }}
reportFile: ${{ env.reportdir }}${{ env.reportfilename }}
- name: CMake Install
uses: ./.github/workflows/actions/linux/install
with:
builddir: ${{ env.builddir }}
logFile: ${{ env.logdir }}Install.log
errorFile: ${{ env.logdir }}InstallErrors.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: FreeCAD CLI tests on install
timeout-minutes: 10
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "CLI tests on install"
testCommand: FreeCADCmd -t 0
logFile: ${{ env.logdir }}TestCLIInstall.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: FreeCAD GUI tests on install
timeout-minutes: 15
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "GUI tests on install"
testCommand: xvfb-run FreeCAD -t 0
logFile: ${{ env.logdir }}TestGUIInstall.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifactBasename }}-Logs
path: |
${{ env.logdir }}
/var/crash/*FreeCAD*
- name: Upload report
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ env.reportfilename }}
path: |
${{env.reportdir}}${{ env.reportfilename }}
@@ -1,200 +0,0 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# * *
# * Copyright (c) 2023 0penBrain. *
# * *
# * This file is part of FreeCAD. *
# * *
# * FreeCAD is free software: you can redistribute it and/or modify it *
# * under the terms of the GNU Lesser General Public License as *
# * published by the Free Software Foundation, either version 2.1 of the *
# * License, or (at your option) any later version. *
# * *
# * FreeCAD is distributed in the hope that it will be useful, but *
# * WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
# * Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Lesser General Public *
# * License along with FreeCAD. If not, see *
# * <https://www.gnu.org/licenses/>. *
# * *
# ***************************************************************************
# This is a build and test workflow for CI of FreeCAD.
# This workflow aims at building and testing FreeCAD on a Conda environment on Linux.
name: Build Ubuntu 22.04 (Conda)
on:
workflow_call:
inputs:
artifactBasename:
type: string
required: true
testOnBuildDir:
default: false
type: boolean
required: false
allowedToFail:
default: false
type: boolean
required: false
outputs:
reportFile:
value: ${{ jobs.Build.outputs.reportFile }}
jobs:
Build:
runs-on: ubuntu-22.04
continue-on-error: ${{ inputs.allowedToFail }}
env:
CCACHE_DIR: ${{ github.workspace }}/ccache
CCACHE_CONFIGPATH: ${{ github.workspace }}/ccache/config
CCACHE_MAXSIZE: 1G
CCACHE_COMPILERCHECK: "%compiler% -dumpfullversion -dumpversion" # default:mtime
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 1
builddir: ${{ github.workspace }}/build/release/
logdir: /tmp/logs/
reportdir: /tmp/report/
reportfilename: ${{ inputs.artifactBasename }}-report.md
defaults:
run:
shell: bash -l {0}
outputs:
reportFile: ${{ steps.Init.outputs.reportFile }}
steps:
- name: Checking out source code
uses: actions/checkout@v4
with:
submodules: true
- name: Setup Miniconda
env:
CONDA_VERBOSITY: 2
uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: .conda/freecad
environment-file: conda/conda-env.yaml
channels: conda-forge
channel-priority: true
miniforge-version: latest
- name: Install FreeCAD dependencies
env:
CONDA_VERBOSITY: 2
run: |
./conda/setup-environment.sh
- name: Set Environment Variables
run: |
echo "CC=$CC" >> "$GITHUB_ENV"
echo "CXX=$CXX" >> "$GITHUB_ENV"
- name: Make needed directories, files and initializations
id: Init
run: |
mkdir -p ${{ env.CCACHE_DIR }}
mkdir -p ${{ env.CCACHE_CONFIGPATH }}
mkdir -p ${{ env.builddir }}
mkdir -p ${{ env.logdir }}
mkdir -p ${{ env.reportdir }}
echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- name: Generate cache key
id: genCacheKey
uses: ./.github/workflows/actions/linux/generateCacheKey
with:
compiler: ${{ env.CXX }}
qt_major_version: 5
- name: Restore Compiler Cache
uses: actions/cache@v4
with:
save-always: true
path: ${{ env.CCACHE_DIR }}
key: FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-
FC-${{ steps.genCacheKey.outputs.cacheKey }}-
- name: Print CCache statistics before build, reset stats and print config
run: |
ccache -s
ccache -z
ccache -p
- name: CMake Configure
uses: ./.github/workflows/actions/linux/configure
with:
extraParameters: --preset conda-linux-release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/.conda/freecad/opt/freecad
builddir: ${{ env.builddir }}
logFile: ${{ env.logdir }}Cmake.log
errorFile: ${{ env.logdir }}CmakeErrors.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: CMake Build
uses: ./.github/workflows/actions/linux/build
with:
builddir: ${{ env.builddir }}
logFile: ${{ env.logdir }}Build.log
errorFile: ${{ env.logdir }}BuildErrors.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: Print ccache statistics after Build
run: |
ccache -s
- name: FreeCAD CLI tests on build dir
if: inputs.testOnBuildDir
timeout-minutes: 10
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "CLI tests on build dir"
testCommand: ${{ env.builddir }}/bin/FreeCADCmd -t 0
logFile: ${{ env.logdir }}TestCLIBuild.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: FreeCAD GUI tests on build dir
if: inputs.testOnBuildDir
timeout-minutes: 15
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "GUI tests on build dir"
testCommand: xvfb-run ${{ env.builddir }}/bin/FreeCAD -t 0
logFile: ${{ env.logdir }}TestGUIBuild.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: C++ tests
timeout-minutes: 1
uses: ./.github/workflows/actions/runCPPTests/runAllTests
with:
reportdir: ${{ env.reportdir }}
builddir: ${{ env.builddir }}
reportFile: ${{ env.reportdir }}${{ env.reportfilename }}
- name: CMake Install
uses: ./.github/workflows/actions/linux/install
with:
builddir: ${{ env.builddir }}
logFile: ${{ env.logdir }}Install.log
errorFile: ${{ env.logdir }}InstallErrors.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: FreeCAD CLI tests on install
timeout-minutes: 10
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "CLI tests on install"
testCommand: ${{ github.workspace }}/.conda/freecad/opt/freecad/bin/FreeCADCmd -t 0
logFile: ${{ env.logdir }}TestCLIInstall.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: FreeCAD GUI tests on install
timeout-minutes: 15
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "GUI tests on install"
testCommand: xvfb-run ${{ github.workspace }}/.conda/freecad/opt/freecad/bin/FreeCAD -t 0
logFile: ${{ env.logdir }}TestGUIInstall.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifactBasename }}-Logs
path: |
${{ env.logdir }}
/var/crash/*FreeCAD*
- name: Upload report
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ env.reportfilename }}
path: |
${{env.reportdir}}${{ env.reportfilename }}
@@ -1,211 +0,0 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# * *
# * Copyright (c) 2023 0penBrain. *
# * *
# * This file is part of FreeCAD. *
# * *
# * FreeCAD is free software: you can redistribute it and/or modify it *
# * under the terms of the GNU Lesser General Public License as *
# * published by the Free Software Foundation, either version 2.1 of the *
# * License, or (at your option) any later version. *
# * *
# * FreeCAD is distributed in the hope that it will be useful, but *
# * WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
# * Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Lesser General Public *
# * License along with FreeCAD. If not, see *
# * <https://www.gnu.org/licenses/>. *
# * *
# ***************************************************************************
# This is a build and test workflow for CI of FreeCAD.
# This workflow aims at building and testing FreeCAD on a Conda environment on Linux.
name: Build Ubuntu 22.04 (Conda)
on:
workflow_call:
inputs:
artifactBasename:
type: string
required: true
testOnBuildDir:
default: false
type: boolean
required: false
allowedToFail:
default: false
type: boolean
required: false
outputs:
reportFile:
value: ${{ jobs.Build.outputs.reportFile }}
jobs:
Build:
runs-on: ubuntu-22.04
continue-on-error: ${{ inputs.allowedToFail }}
env:
CCACHE_DIR: ${{ github.workspace }}/ccache
CCACHE_CONFIGPATH: ${{ github.workspace }}/ccache/config
CCACHE_MAXSIZE: 1G
CCACHE_COMPILERCHECK: "%compiler% -dumpfullversion -dumpversion" # default:mtime
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 1
builddir: ${{ github.workspace }}/build/release/
logdir: /tmp/logs/
reportdir: /tmp/report/
reportfilename: ${{ inputs.artifactBasename }}-report.md
defaults:
run:
shell: bash -l {0}
outputs:
reportFile: ${{ steps.Init.outputs.reportFile }}
steps:
- name: Checking out source code
uses: actions/checkout@v4
with:
submodules: true
- name: Setup Miniconda
env:
CONDA_VERBOSITY: 2
uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: .conda/freecad
environment-file: conda/conda-env-qt6.yaml
channels: conda-forge
channel-priority: true
miniforge-version: latest
- name: Install FreeCAD dependencies
env:
CONDA_VERBOSITY: 2
run: |
sudo apt-get update -qq
sudo apt-get install -y --no-install-recommends \
libegl1 \
libgl1 \
libglx0 \
libopengl0
./conda/setup-environment-qt6.sh
- name: Set Environment Variables
run: |
echo "CC=$CC" >> "$GITHUB_ENV"
echo "CXX=$CXX" >> "$GITHUB_ENV"
- name: Make needed directories, files and initializations
id: Init
run: |
mkdir -p ${{ env.CCACHE_DIR }}
mkdir -p ${{ env.CCACHE_CONFIGPATH }}
mkdir -p ${{ env.builddir }}
mkdir -p ${{ env.logdir }}
mkdir -p ${{ env.reportdir }}
echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- name: Generate cache key
id: genCacheKey
uses: ./.github/workflows/actions/linux/generateCacheKey
with:
compiler: ${{ env.CXX }}
qt_major_version: 6
- name: Restore Compiler Cache
uses: actions/cache@v4
with:
save-always: true
path: ${{ env.CCACHE_DIR }}
key: FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-
FC-${{ steps.genCacheKey.outputs.cacheKey }}-
- name: Print CCache statistics before build, reset stats and print config
run: |
ccache -s
ccache -z
ccache -p
- name: CMake Configure
uses: ./.github/workflows/actions/linux/configure
with:
extraParameters: >
--preset conda-linux-release
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/.conda/freecad/opt/freecad
-DQT_HOST_PATH=${{ github.workspace }}/.conda/freecad/
-DFREECAD_QT_VERSION=6
-DBUILD_REVERSEENGINEERING=OFF
builddir: ${{ env.builddir }}
logFile: ${{ env.logdir }}Cmake.log
errorFile: ${{ env.logdir }}CmakeErrors.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: CMake Build
uses: ./.github/workflows/actions/linux/build
with:
builddir: ${{ env.builddir }}
logFile: ${{ env.logdir }}Build.log
errorFile: ${{ env.logdir }}BuildErrors.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: Print ccache statistics after Build
run: |
ccache -s
- name: FreeCAD CLI tests on build dir
if: inputs.testOnBuildDir
timeout-minutes: 10
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "CLI tests on build dir"
testCommand: ${{ env.builddir }}/bin/FreeCADCmd -t 0
logFile: ${{ env.logdir }}TestCLIBuild.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: FreeCAD GUI tests on build dir
if: inputs.testOnBuildDir
timeout-minutes: 15
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "GUI tests on build dir"
testCommand: xvfb-run ${{ env.builddir }}/bin/FreeCAD -t 0
logFile: ${{ env.logdir }}TestGUIBuild.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: C++ tests
timeout-minutes: 1
uses: ./.github/workflows/actions/runCPPTests/runAllTests
with:
reportdir: ${{ env.reportdir }}
builddir: ${{ env.builddir }}
reportFile: ${{ env.reportdir }}${{ env.reportfilename }}
- name: CMake Install
uses: ./.github/workflows/actions/linux/install
with:
builddir: ${{ env.builddir }}
logFile: ${{ env.logdir }}Install.log
errorFile: ${{ env.logdir }}InstallErrors.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: FreeCAD CLI tests on install
timeout-minutes: 10
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "CLI tests on install"
testCommand: ${{ github.workspace }}/.conda/freecad/opt/freecad/bin/FreeCADCmd -t 0
logFile: ${{ env.logdir }}TestCLIInstall.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: FreeCAD GUI tests on install
timeout-minutes: 15
uses: ./.github/workflows/actions/runPythonTests
with:
testDescription: "GUI tests on install"
testCommand: xvfb-run ${{ github.workspace }}/.conda/freecad/opt/freecad/bin/FreeCAD -t 0
logFile: ${{ env.logdir }}TestGUIInstall.log
reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifactBasename }}-Logs
path: |
${{ env.logdir }}
/var/crash/*FreeCAD*
- name: Upload report
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ env.reportfilename }}
path: |
${{env.reportdir}}${{ env.reportfilename }}
+65 -18
View File
@@ -24,15 +24,27 @@
name: Build Windows
on:
workflow_dispatch:
inputs:
artifactBasename:
description: "Base name for artifact"
required: false
type: string
default: "FreeCAD"
allowedToFail:
description: "whether a failed build is allowed"
required: false
type: boolean
default: false
workflow_call:
inputs:
artifactBasename:
type: string
required: true
type: string
allowedToFail:
required: false
default: false
type: boolean
required: false
outputs:
reportFile:
value: ${{ jobs.Build.outputs.reportFile }}
@@ -42,19 +54,22 @@ jobs:
runs-on: windows-latest
continue-on-error: ${{ inputs.allowedToFail }}
env:
CCACHE_DIR: C:/FC/cache/
CCACHE_COMPILERCHECK: "%compiler%" # default:mtime
CCACHE_MAXSIZE: 1G
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 1
CCACHE_NOHASHDIR: true
CCACHE_DIRECT: true
#CCACHE_SLOPPINESS: "pch_defines,time_macros" # Can't get PCH to work on Windows
CCACHE_COMPRESSLEVEL: 5
CCACHE_DIR: C:/FC/cache/
CCACHE_LOGFILE: C:/logs/ccache.log
CCACHE_MAXSIZE: 1G
CCACHE_NODIRECT: true
CCACHE_NOHASHDIR: true
CCACHE_NOINODECACHE: true
CCACHE_SLOPPINESS: "include_file_ctime,include_file_mtime,pch_defines,time_macros" # Can't get PCH to work on Windows
## Have to use C:\ because not enough space on workspace drive
builddir: C:/FC/build/release/
libpackdir: C:/FC/libpack/
cacheKey: Windows
ccachebindir: C:/FC/ccache/
config: release
libpackdir: C:/FC/libpack/
logdir: C:/logs/
reportdir: C:/report/
reportfilename: ${{ inputs.artifactBasename }}-report.md
@@ -62,10 +77,16 @@ jobs:
reportFile: ${{ steps.Init.outputs.reportFile }}
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
- name: Checking out source code
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- name: Make needed directories, files and initializations
id: Init
run: |
@@ -76,32 +97,43 @@ jobs:
mkdir ${{ env.logdir }}
mkdir ${{ env.reportdir }}
echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- name: Get Ccache
uses: ./.github/workflows/actions/windows/getCcache
with:
ccachebindir: ${{ env.ccachebindir }}
- name: Get Libpack
uses: ./.github/workflows/actions/windows/getLibpack
with:
libpackdir: ${{ env.libpackdir }}
- name: Restore compiler cache
uses: actions/cache@v4
id: cache-restore
if: always()
uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
with:
save-always: true
path: ${{ env.CCACHE_DIR }}
key: FC-Windows-${{ github.ref }}-${{ github.run_id }}
key: FC-${{ env.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
FC-Windows-${{ github.ref }}-
FC-Windows-
FC-${{ env.cacheKey }}-${{ github.ref }}-
FC-${{ env.cacheKey }}-
- name: Print Ccache statistics before build, reset stats and print config
run: |
. $env:ccachebindir\ccache -s
. $env:ccachebindir\ccache -z
. $env:ccachebindir\ccache -p
- name: Install cmake
uses: jwlawson/actions-setup-cmake@3a6cbe35ba64df7ca70c51365c4aff65db9a9037 # v2.1.1
with:
cmake-version: '3.31.6'
- name: Configuring CMake
run: >
cmake -B"${{ env.builddir }}" .
--preset release
--preset ${{ env.config }}
-DCMAKE_VS_NO_COMPILE_BATCHING=ON
-DCMAKE_BUILD_TYPE=Release
-DFREECAD_USE_PCH=OFF
@@ -110,26 +142,41 @@ jobs:
-DFREECAD_COPY_DEPEND_DIRS_TO_BUILD=ON
-DFREECAD_COPY_LIBPACK_BIN_TO_BUILD=ON
-DFREECAD_COPY_PLUGINS_BIN_TO_BUILD=ON
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0
- name: Compiling sources
run: |
cd $env:builddir
msbuild ALL_BUILD.vcxproj /m /p:Configuration=Release /p:TrackFileAccess=false /p:CLToolPath=${{ env.ccachebindir }}
- name: Print Ccache statistics after build
if: always()
run: |
. $env:ccachebindir\ccache -s
- name: C++ unit tests
if: false # Disabled because seems to not function on Windows build
timeout-minutes: 1
run: |
. ${{ env.builddir }}\tests\Release\Tests_run --gtest_output=json:${{ env.reportdir }}gtest_results.json # 2>&1 | tee -filepath ${{ env.logdir }}\unitTests.log
- name: FreeCAD CLI tests
run: |
. ${{ env.builddir }}\bin\FreeCADCmd -t 0 # 2>&1 | tee -filepath ${{ env.logdir }}\integrationTests.log
- name: Save Compiler Cache
id: cache-save
if: always()
uses: actions/cache/save@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
with:
path: ${{ env.CCACHE_DIR }}
key: FC-${{ env.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: ${{ inputs.artifactBasename }}-Logs
path: |
-133
View File
@@ -1,133 +0,0 @@
# ***************************************************************************
# * Copyright (c) 2023 0penBrain *
# * *
# * This program is free software; you can redistribute it and/or modify *
# * it under the terms of the GNU Lesser General Public License (LGPL) *
# * as published by the Free Software Foundation; either version 2 of *
# * the License, or (at your option) any later version. *
# * for detail see the LICENCE text file. *
# * *
# * This program is distributed in the hope that it will be useful, *
# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
# * GNU Library General Public License for more details. *
# * *
# * You should have received a copy of the GNU Library General Public *
# * License along with this program; if not, write to the Free Software *
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
# * USA *
# * *
# ***************************************************************************
# This is a build and test workflow for CI of FreeCAD.
# This workflow aims at building and testing FreeCAD using a Conda environment on Windows with MSVC.
name: Build Windows (Conda)
on:
workflow_call:
inputs:
artifactBasename:
type: string
required: true
allowedToFail:
default: false
type: boolean
required: false
outputs:
reportFile:
value: ${{ jobs.Build.outputs.reportFile }}
jobs:
Build:
runs-on: windows-latest
continue-on-error: ${{ inputs.allowedToFail }}
env:
CCACHE_DIR: C:/FC/cache/
CCACHE_COMPILERCHECK: "%compiler%" # default:mtime
CCACHE_MAXSIZE: 1G
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 1
CCACHE_NOHASHDIR: true
CCACHE_DIRECT: true
#CCACHE_SLOPPINESS: "pch_defines,time_macros" # Can't get PCH to work on Windows
CCACHE_LOGFILE: C:/logs/ccache.log
## Have to use C:\ because not enough space on workspace drive
builddir: C:/FC/build/
logdir: C:/logs/
reportdir: C:/report/
reportfilename: ${{ inputs.artifactBasename }}-report.md
outputs:
reportFile: ${{ steps.Init.outputs.reportFile }}
steps:
- name: Checking out source code
uses: actions/checkout@v4
with:
submodules: true
- name: Setup Miniconda
env:
CONDA_VERBOSITY: 2
uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: .conda/freecad
environment-file: conda/conda-env.yaml
channels: conda-forge
channel-priority: true
miniforge-version: latest
- name: Install FreeCAD dependencies
env:
CONDA_VERBOSITY: 2
run: |
conda config --add envs_dirs $PWD/.conda
mamba-devenv --no-prune -f conda/environment.devenv.yml
- name: Make needed directories, files and initializations
id: Init
run: |
mkdir ${{ env.CCACHE_DIR }}
mkdir ${{ env.builddir }}
mkdir ${{ env.logdir }}
mkdir ${{ env.reportdir }}
echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- name: Restore compiler cache
uses: actions/cache@v4
with:
save-always: true
path: ${{ env.CCACHE_DIR }}
key: FC-Windows-Conda-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
FC-Windows-Conda-${{ github.ref }}-
FC-Windows-Conda-
- name: Print Ccache statistics before build, reset stats and print config
run: |
ccache -s
ccache -z
ccache -p
- name: Configuring CMake
shell: cmd /C CALL {0}
run: >
conda\cmake.cmd --preset conda-windows-release -DFREECAD_USE_PCH:BOOL=OFF -DFREECAD_RELEASE_PDB:BOOL=OFF -DFREECAD_USE_CCACHE:BOOL=ON
- name: Compiling sources
shell: cmd /C CALL {0}
run: >
conda\cmake.cmd --build build\release
- name: Print Ccache statistics after build
run: |
ccache -s
- name: CMake Install
shell: cmd /C CALL {0}
run: |
conda\cmake.cmd --install build\release
- name: C++ unit tests
timeout-minutes: 1
run: |
. build\release\tests\Tests_run --gtest_output=json:${{ env.reportdir }}gtest_results.json # 2>&1 | tee -filepath ${{ env.logdir }}/unitTests.log
- name: FreeCAD CLI tests
run: |
. build\release\bin\FreeCADCmd -t 0 # 2>&1 | tee -filepath ${{ env.logdir }}/integrationTests.log
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifactBasename }}-Logs
path: |
${{ env.logdir }}
+111 -509
View File
@@ -34,12 +34,21 @@ on:
changedFiles:
type: string
required: true
changedLines:
type: string
required: false
changedCppFiles:
type: string
required: true
changedCppLines:
type: string
required: false
changedPythonFiles:
type: string
required: true
changedPythonLines:
type: string
required: false
checkLineendings:
default: false
type: boolean
@@ -76,14 +85,6 @@ on:
default: true
type: boolean
required: false
cpplintFilters:
default: -whitespace-*
type: string
required: false
cpplintLineLength:
default: 120
type: string
required: false
cpplintFailSilent:
default: true
type: boolean
@@ -129,7 +130,7 @@ on:
type: string
required: false
spellingIgnore:
default: ./.git,*.po,*.ts,*.svg,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL*,./src/WindowsInstaller,./src/Doc/FreeCAD.uml,./build/
default: ./.git*,*.po,*.ts,*.svg,./src/3rdParty,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL*,./src/Doc/FreeCAD.uml,./build/
type: string
required: false
codespellFailSilent:
@@ -140,16 +141,12 @@ on:
default: true
type: boolean
required: false
clangTidyChecks:
default: # empty to use the .clang-tidy file
type: string
required: false
clangTidyFailSilent:
default: true # warnings or notes will never fail the CI, only errors
type: boolean
required: false
checkClazy: # for the Message codes see: https://invent.kde.org/sdk/clazy#list-of-checks
default: true
default: false
type: boolean
required: false
clazyChecks:
@@ -161,7 +158,7 @@ on:
type: boolean
required: false
checkClazyQT6:
default: true
default: false
type: boolean
required: false
clazyQT6Checks:
@@ -180,6 +177,9 @@ on:
reportFile:
value: ${{ jobs.Lint.outputs.reportFile }}
permissions:
contents: read
jobs:
Lint:
@@ -197,10 +197,16 @@ jobs:
reportFile: ${{ steps.Init.outputs.reportFile }}
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
- name: Check out code
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- name: Make needed directories, files and initializations
id: Init
run: |
@@ -208,561 +214,157 @@ jobs:
mkdir -p ${{ env.fixesdir }}
mkdir -p ${{ env.reportdir }}
echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
# Run generic lints
# Generic lints steps
- name: Check File Case Sensitivity
uses: credfeto/action-case-checker@cb652aeab29ed363bbdb7d9ee1bfcc010c46cac5 # v1.3.0
- name: Check for non Unix line ending
if: inputs.checkLineendings && always()
continue-on-error: ${{ inputs.lineendingsFailSilent }}
run: |
lineendings=0
for file in ${{ inputs.changedFiles }}
do
# Check for DOS or MAC line endings
if [[ $(file -b $file) =~ "with CR" ]]
then
echo "::warning file=$file,title=$file::File has non Unix line endings"
echo "$file has non Unix line endings" >> ${{ env.logdir }}lineendings.log
((lineendings=lineendings+1))
fi
done
echo "Found $lineendings line ending errors"
# Write the report
if [ $lineendings -gt 0 ]
then
echo "<details><summary>:information_source: Found $lineendings problems with line endings</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
cat ${{ env.logdir }}lineendings.log >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
else
echo ":heavy_check_mark: No line ending problem found " >> ${{env.reportdir}}${{ env.reportfilename }}
fi
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# Exit the step with appropriate code
[ $lineendings -eq 0 ]
python3 tools/lint/generic_checks.py \
--lineendings-check \
--files "${{ inputs.changedFiles }}" \
--report-file "${{ env.reportdir }}${{ env.reportfilename }}" \
--log-dir "${{ env.logdir }}"
- name: Check for trailing whitespaces
if: inputs.checkWhitespace && always()
continue-on-error: ${{ inputs.whitespaceFailSilent }}
run: |
whitespaceErrors=0
exclude="*[.md]"
for file in ${{ inputs.changedFiles }}
do
# Check for trailing whitespaces
grep -nIHE --exclude="$exclude" " $" $file | sed -e "s/$/<-- trailing whitespace/" >> ${{ env.logdir }}whitespace.log || true
done
# Write the Log to the console with the Problem Matchers
if [ -f ${{ env.logdir }}whitespace.log ]
then
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/grepMatcherWarning.json"
cat ${{ env.logdir }}whitespace.log
echo "::remove-matcher owner=grepMatcher-warning::"
whitespaceErrors=$(wc -l < ${{ env.logdir }}whitespace.log)
fi
echo "Found $whitespaceErrors whitespace errors"
# Write the report
if [ $whitespaceErrors -gt 0 ]
then
echo "<details><summary>:information_source: Found $whitespaceErrors trailing whitespace</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
cat ${{ env.logdir }}whitespace.log >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
else
echo ":heavy_check_mark: No trailing whitespace found " >> ${{env.reportdir}}${{ env.reportfilename }}
fi
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# Exit the step with appropriate code
[ $whitespaceErrors -eq 0 ]
python3 tools/lint/generic_checks.py \
--whitespace-check \
--files "${{ inputs.changedFiles }}" \
--report-file "${{ env.reportdir }}${{ env.reportfilename }}" \
--log-dir "${{ env.logdir }}"
- name: Check for Tab usage
if: inputs.checkTabs && always()
continue-on-error: ${{ inputs.tabsFailSilent }}
run: |
tabErrors=0
exclude="*[.md]"
# Check for Tab usage
for file in ${{ steps.changed-files.outputs.all_changed_files }}
do
grep -nIHE --exclude="$exclude" $'\t' $file | sed -e "s/$/ <-- contains tab/" >> ${{ env.logdir }}tab.log || true
done
# Write the Log to the console with the Problem Matchers
if [ -f ${{ env.logdir }}tab.log ]
then
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/grepMatcherWarning.json"
cat ${{ env.logdir }}tab.log
echo "::remove-matcher owner=grepMatcher-warning::"
tabErrors=$(wc -l < ${{ env.logdir }}tab.log)
fi
echo "Found $tabErrors tab errors"
# Write the report
if [ $tabErrors -gt 0 ]; then
echo "<details><summary>:information_source: Found $tabErrors tabs, better to use spaces</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
cat ${{ env.logdir }}tab.log >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
else
echo ":heavy_check_mark: No tabs found" >> ${{env.reportdir}}${{ env.reportfilename }}
fi
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# Exit the step with appropriate code
[ $tabErrors -eq 0 ]
# Run Python lints
python3 tools/lint/generic_checks.py \
--tabs-check \
--files "${{ inputs.changedFiles }}" \
--report-file "${{ env.reportdir }}${{ env.reportfilename }}" \
--log-dir "${{ env.logdir }}"
# Python linting steps
- name: Pylint
if: inputs.checkPylint && inputs.changedPythonFiles != '' && always()
continue-on-error: ${{ inputs.pylintFailSilent }}
run: |
pylintErrors=0
pylintWarnings=0
pylintRefactorings=0
pylintConventions=0
pip install --break-system-packages pylint
# List enabled pylint checks
pylint --list-msgs-enabled > ${{ env.logdir }}pylint-enabled-checks.log
# Run pylint on all python files
set +e
pylint --disable=${{ inputs.pylintDisable }} ${{ inputs.changedPythonFiles }} > ${{ env.logdir }}pylint.log
exitCode=$?
set -e
# If pylint has run successfully, write the Log to the console with the Problem Matchers
if [ -f ${{ env.logdir }}pylint.log ]
then
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/pylintError.json"
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/pylintWarning.json"
cat ${{ env.logdir }}pylint.log
echo "::remove-matcher owner=pylint-error::"
echo "::remove-matcher owner=pylint-warning::"
pylintErrors=$( grep -oP '(?<=error \|)\d+' ${{ env.logdir }}pylint.log) || true # grep returns 0 if no match is found
pylintWarnings=$( grep -oP '(?<=warning \|)\d+' ${{ env.logdir }}pylint.log) || true
pylintRefactorings=$( grep -oP '(?<=refactor \|)\d+' ${{ env.logdir }}pylint.log) || true
pylintConventions=$( grep -oP '(?<=convention \|)\d+' ${{ env.logdir }}pylint.log) || true
fi
echo "Found $pylintErrors errors, $pylintWarnings warnings, $pylintRefactorings refactorings, $pylintConventions conventions"
# Write the report
if [ $pylintErrors -gt 0 ]
then
echo "<details><summary>:fire: Pylint found :fire: $pylintErrors errors, :warning: $pylintWarnings warnings, :construction: $pylintRefactorings refactorings and :pencil2: $pylintConventions conventions</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
elif [ $pylintWarnings -gt 0 ]
then
echo "<details><summary>:warning: Pylint found :warning: $pylintWarnings warnings, :construction: $pylintRefactorings refactorings and :pencil2: $pylintConventions conventions</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
elif [ $pylintRefactorings -gt 0 ]
then
echo "<details><summary>:construction: Pylint found :construction: $pylintRefactorings refactorings and :pencil2: $pylintConventions conventions</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
elif [ $pylintConventions -gt 0 ]
then
echo "<details><summary>:pencil2: Pylint found :pencil2: $pylintConventions conventions</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
else
echo "<details><summary>:heavy_check_mark: No pylint errors found </summary> " >> ${{env.reportdir}}${{ env.reportfilename }}
fi
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# List enabled checks in the report
echo "<details><summary>:information_source: Enabled checks</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
cat ${{ env.logdir }}pylint-enabled-checks.log >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
cat ${{ env.logdir }}pylint.log >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# Exit the step with appropriate code
[ $pylintErrors -eq 0 ]
- name: Black (Python)
python3 tools/lint/pylint.py \
--files "${{ inputs.changedPythonFiles }}" \
--disable "${{ inputs.pylintDisable }}" \
--log-dir "${{ env.logdir }}" \
--report-file "${{ env.reportdir }}${{ env.reportfilename }}"
- name: Black
if: inputs.checkBlack && inputs.changedPythonFiles != '' && always()
continue-on-error: ${{ inputs.blackFailSilent }}
run: |
blackReformats=0
blackFails=0
pip install --break-system-packages black
set +e
black --check ${{ inputs.changedPythonFiles }} &> ${{ env.logdir }}black.log
exitCode=$?
set -e
# If black has run successfully, write the Log to the console with the Problem Matchers
if [ -f ${{ env.logdir }}black.log ]
then
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/blackWarning.json"
cat ${{ env.logdir }}black.log
echo "::remove-matcher owner=black-warning::"
blackReformats=$( grep -oP '\d+(?= fil.+ would be reformatted)' ${{ env.logdir }}black.log) || true # grep returns 0 if no match is found
blackFails=$( grep -oP '\d+(?= fil.+ would fail to reformat)' ${{ env.logdir }}black.log) || true
fi
echo "Found $blackReformats files would be reformatted and $blackFails files would fail to reformat"
# Write the report
if [ $blackReformats -gt 0 ] || [ $blackFails -gt 0 ] #FIXME purpose of testing $blackFails as we don't use it then
then
echo "<details><summary>:pencil2: Black would reformat $blackReformats files</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
else
echo "<details><summary>:heavy_check_mark: Black would reformat no file</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
fi
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
cat ${{ env.logdir }}black.log >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# Exit the step with appropriate code
[ $exitCode -eq 0 ]
# Run C++ lints
python3 tools/lint/black.py \
--files "${{ inputs.changedPythonFiles }}" \
--log-dir "${{ env.logdir }}" \
--report-file "${{ env.reportdir }}${{ env.reportfilename }}"
# C++ linting steps
- name: Install FreeCAD dependencies
if: inputs.changedCppFiles != '' && always()
run: |
sudo apt-get update -qq
sudo apt-get install -y --no-install-recommends \
doxygen \
graphviz \
imagemagick \
libboost-date-time-dev \
libboost-dev \
libboost-filesystem-dev \
libboost-graph-dev \
libboost-iostreams-dev \
libboost-program-options-dev \
libboost-python-dev \
libboost-regex-dev \
libboost-serialization-dev \
libboost-thread-dev \
libcoin-dev \
libeigen3-dev \
libgts-bin \
libgts-dev \
libkdtree++-dev \
libmedc-dev \
libocct-data-exchange-dev \
libocct-ocaf-dev \
libocct-visualization-dev \
libopencv-dev \
libproj-dev \
libpyside2-dev \
libqt5opengl5-dev \
libqt5svg5-dev \
libqt5x11extras5-dev \
libshiboken2-dev \
libspnav-dev \
libvtk9-dev \
libx11-dev \
libxerces-c-dev \
libyaml-cpp-dev \
libzipios++-dev \
netgen \
netgen-headers \
occt-draw \
pyside2-tools \
python3-dev \
python3-git \
python3-markdown \
python3-matplotlib \
python3-packaging \
python3-pivy \
python3-ply \
python3-pyside2.qtcore \
python3-pyside2.qtgui \
python3-pyside2.qtnetwork \
python3-pyside2.qtsvg \
python3-pyside2.qtwidgets \
qtbase5-dev \
qttools5-dev \
shiboken2 \
swig \
ccache \
xvfb
run: ./package/ubuntu/install-apt-packages.sh
- name: Run CMake # This is needed for Clang tools to work correctly
if: inputs.changedCppFiles != '' && always()
run: |
mkdir build && cmake -S ./ -B ./build/ -D CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE
- name: Check old Qt string-based connections (https://wiki.qt.io/New_Signal_Slot_Syntax)
if: inputs.checkQtConnections && inputs.changedCppFiles != '' && always()
continue-on-error: ${{ inputs.qtConnectionsFailSilent }}
run: |
qtconnectionSyntax=0
exclude="*[.md,.log,.ts,.git]"
# Check all files for QT string-based connections
for file in ${{ inputs.changedFiles }} #TODO does this makes sense in Python files ?
do
grep -nIHE --exclude="$exclude" $' SIGNAL| SLOT' $file | sed -e "s/$/ <--Consider using Functor-Based Connections/" >> ${{ env.logdir }}qtConnections.log || true #TODO seems to trigger false positives
done
# Write the Log to the console with the Problem Matchers
if [ -f ${{ env.logdir }}qtConnections.log ]; then
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/grepMatcherWarning.json"
cat ${{ env.logdir }}qtConnections.log
echo "::remove-matcher owner=grepMatcher-warning::"
qtconnectionSyntax=$(wc -l < ${{ env.logdir }}qtConnections.log)
fi
echo "Found $qtconnectionSyntax QT string-based connections"
# Write the report
if [ $qtconnectionSyntax -gt 0 ]; then
echo "<details><summary>:information_source: Found $qtconnectionSyntax QT string-based connections :arrow_right: consider using QT functor-Based Connections</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# documentation link
echo "For more information see: https://wiki.qt.io/New_Signal_Slot_Syntax or https://github.com/FreeCAD/FreeCAD/issues/6166" >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
cat ${{ env.logdir }}qtConnections.log >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
else
echo ":heavy_check_mark: No string-based connections found " >> ${{env.reportdir}}${{ env.reportfilename }}
fi
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# Exit the step with appropriate code
[ $qtconnectionSyntax -eq 0 ]
python3 tools/lint/qt_connections.py \
--files "${{ inputs.changedFiles }}" \
--log-dir "${{ env.logdir }}" \
--report-file "${{ env.reportdir }}${{ env.reportfilename }}"
- name: Cpplint
if: inputs.checkCpplint && inputs.changedCppFiles != '' && always()
continue-on-error: ${{ inputs.cpplintFailSilent }}
run: |
cpplintErrors=0
pip install --break-system-packages cpplint
# Run cpplint
for file in ${{ inputs.changedCppFiles }}
do
cpplint --filter=${{ inputs.cpplintFilters }} --linelength=${{ inputs.cpplintLineLength }} $file &>> ${{ env.logdir }}cpplint.log || true
done
# If cpplint has run successfully, write the Log to the console with the Problem Matchers
if [ ${{ env.logdir }}cpplint.log ]
then
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/cpplint.json"
cat ${{ env.logdir }}cpplint.log
echo "::remove-matcher owner=cpplint::"
cpplintErrors=$(grep -nIHE "\[[0-9]\]$" ${{ env.logdir }}cpplint.log | wc -l ) || true
fi
echo "Found $cpplintErrors cpplint errors"
# Write the report
if [ $cpplintErrors -gt 0 ]
then
echo "<details><summary>:warning: CppLint found $cpplintErrors errors / warnings</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
else
echo "<details><summary>:heavy_check_mark: No cpplint errors found </summary> " >> ${{env.reportdir}}${{ env.reportfilename }}
fi
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
cat ${{ env.logdir }}cpplint.log >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# Exit the step with appropriate code
[ $cpplintErrors -eq 0 ]
python3 tools/lint/cpplint.py \
--files "${{ inputs.changedCppFiles }}" \
--log-dir "${{ env.logdir }}" \
--report-file "${{ env.reportdir }}${{ env.reportfilename }}"
- name: Clang-format
if: inputs.checkClangFormat && inputs.changedCppFiles != '' && always()
continue-on-error: ${{ inputs.clangFormatFailSilent }}
run: |
clangFormatErrors=0
# Run clang-format on all cpp files
clang-format --dry-run --ferror-limit=1 --verbose --style=${{ inputs.clangStyle }} ${{ inputs.changedCppFiles }} &>> ${{ env.logdir }}clang-format.log || true
# If clang-format has run successfully, write the Log to the console with the Problem Matchers
if [ -f ${{ env.logdir }}clang-format.log ]
then
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/clang.json"
cat ${{ env.logdir }}clang-format.log
echo "::remove-matcher owner=clang::"
clangFormatErrors=$(grep -nIHE "\[-Wclang-format-violations]$" ${{ env.logdir }}clang-format.log | wc -l ) || true
fi
echo "Found $clangFormatErrors clang-format errors"
# Write the report
if [ $clangFormatErrors -gt 0 ]
then
echo "<details><summary>:pencil2: Clang-format would reformat $clangFormatErrors files</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
else
echo "<details><summary>:heavy_check_mark: Clang-format would reformat no file</summary> " >> ${{env.reportdir}}${{ env.reportfilename }}
fi
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
cat ${{ env.logdir }}clang-format.log >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# Exit the step with appropriate code
[ $clangFormatErrors -eq 0 ]
python3 tools/lint/clang_format.py \
--files "${{ inputs.changedCppFiles }}" \
--clang-style "${{ inputs.clangStyle }}" \
--log-dir "${{ env.logdir }}" \
--report-file "${{ env.reportdir }}${{ env.reportfilename }}"
- name: Codespell
if: inputs.checkSpelling && always()
continue-on-error: ${{ inputs.codespellFailSilent }}
run: |
pip install --break-system-packages codespell
wget https://raw.githubusercontent.com/codespell-project/codespell/master/codespell_lib/data/dictionary.txt
#wget https://raw.githubusercontent.com/codespell-project/codespell/master/codespell_lib/data/dictionary_rare.txt
set +e
misspellings=$( { codespell --quiet-level 3 --summary --count --ignore-words ${{ inputs.listIgnoredMisspelling }} --skip ${{ inputs.spellingIgnore }} -D dictionary.txt ${{ inputs.changedFiles }} > ${{ env.logdir }}codespell.log ; } 2>&1 )
set -e
# If codespell has run successfully, write the Log to the console with the Problem Matchers
if [ -f ${{ env.logdir }}codespell.log ]
then
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/codespell.json"
cat ${{ env.logdir }}codespell.log
echo "::remove-matcher owner=codespell::"
fi
echo "Found $misspellings misspellings"
# Write the report
if [ $misspellings -gt 0 ]
then
echo "<details><summary>:pencil2: Codespell found $misspellings misspellings</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
else
echo "<details><summary>:heavy_check_mark: Codespell found no misspellings</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
fi
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "To ignore false positives, append the word to the [.github/codespellignore](https://github.com/FreeCAD/FreeCAD/blob/master/.github/codespellignore) file (lowercase)" >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
cat ${{ env.logdir }}codespell.log >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# Exit the step with appropriate code
[ $misspellings -eq 0 ]
python3 tools/lint/codespell.py \
--files ${{ inputs.changedFiles }} \
--ignore-words "${{ inputs.listIgnoredMisspelling }}" \
--skip "${{ inputs.spellingIgnore }}" \
--log-dir "${{ env.logdir }}" \
--report-file "${{ env.reportdir }}${{ env.reportfilename }}"
- name: Clang-tidy
if: inputs.checkClangTidy && inputs.changedCppFiles != '' && always()
continue-on-error: ${{ inputs.clangTidyFailSilent }}
run: |
clangTidyErrors=0
clangTidyWarnings=0
clangTidyNotes=0
sudo apt-get install -y --no-install-recommends clang-tidy
#TODO: check where this "clang-tidy.yaml" goes ; shall this be put in the fixes ?
clang-tidy --quiet --format-style=${{ inputs.clangStyle }} --export-fixes=clang-tidy.yaml -checks=${{ inputs.clangTidyChecks }} -p build/ --explain-config &>> ${{ env.logdir }}clang-tidy-enabled-checks.log
# Run clang-tidy on all cpp files
set +e
clang-tidy --quiet --format-style=${{ inputs.clangStyle }} --export-fixes=clang-tidy.yaml -checks=${{ inputs.clangTidyChecks }} -p build/ ${{ inputs.changedCppFiles }} &>> ${{ env.logdir }}clang-tidy.log
exitCode=$?
set -e
# If clang-tidy has run successfully, write the Log to the console with the Problem Matchers
if [ -f ${{ env.logdir }}clang-tidy.log ]
then
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/clang.json"
cat ${{ env.logdir }}clang-tidy.log
echo "::remove-matcher owner=clang::"
clangTidyErrors=$(grep -nIHE "^(.+):([0-9]+):([0-9]+): error: .+$" ${{ env.logdir }}clang-tidy.log | wc -l ) || true
clangTidyWarnings=$(grep -nIHE "^(.+):([0-9]+):([0-9]+): warning: .+$" ${{ env.logdir }}clang-tidy.log | wc -l ) || true
clangTidyNotes=$(grep -nIHE "^(.+):([0-9]+):([0-9]+): note: .+$" ${{ env.logdir }}clang-tidy.log | wc -l ) || true
fi
echo "Found $clangTidyErrors errors, $clangTidyWarnings warnings, $clangTidyNotes notes"
# Write the report
if [ $clangTidyErrors -gt 0 ]
then
echo "<details><summary>:fire: Clang-Tidy found :fire: $clangTidyErrors errors, :warning: $clangTidyWarnings warnings and :pencil2: $clangTidyNotes notes</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
elif [ $clangTidyWarnings -gt 0 ]
then
echo "<details><summary>:warning: Clang-Tidy found :warning: $clangTidyWarnings warnings and :pencil2: $clangTidyNotes notes</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
elif [ $clangTidyNotes -gt 0 ]
then
echo "<details><summary>:pencil2: Clang-Tidy found :pencil2: $clangTidyNotes notes</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
else
echo "<details><summary>:heavy_check_mark: Clang-Tidy found no errors, warnings or notes</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
fi
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# List enabled checks in the report
echo "<details><summary>:information_source: Enabled checks</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
cat ${{ env.logdir }}clang-tidy-enabled-checks.log >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
cat ${{ env.logdir }}clang-tidy.log >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# Exit the step with appropriate code
[ $clangTidyErrors -eq 0 ]
python3 tools/lint/clang_tidy.py \
--files "${{ inputs.changedCppFiles }}" \
--line-filter '${{ inputs.changedCppLines }}' \
--clang-style "${{ inputs.clangStyle }}" \
--log-dir "${{ env.logdir }}" \
--report-file "${{ env.reportdir }}${{ env.reportfilename }}"
- name: Clazy
if: inputs.checkClazy && inputs.changedCppFiles != '' && always()
continue-on-error: ${{ inputs.clazyFailSilent }}
run: |
clazyErrors=0
clazyWarnings=0
clazyNotes=0
sudo apt-get install -y --no-install-recommends clazy
#TODO: check where this "clazy.yaml" goes ; shall this be put in the fixes ?
# Run clazy on all cpp files
clazy-standalone --export-fixes=clazy.yaml -checks=${{ inputs.clazyChecks }} -p build/ ${{ inputs.changedCppFiles }} &>> ${{ env.logdir }}clazy.log || true
# If clazy has run successfully, write the Log to the console with the Problem Matchers
if [ -f ${{ env.logdir }}clazy.log ]
then
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/clang.json"
cat ${{ env.logdir }}clazy.log
echo "::remove-matcher owner=clang::"
clazyErrors=$(grep -nIHE "^(.+):([0-9]+):([0-9]+): error: .+$" ${{ env.logdir }}clazy.log | wc -l ) || true
clazyWarnings=$(grep -nIHE "^(.+):([0-9]+):([0-9]+): warning: .+$" ${{ env.logdir }}clazy.log | wc -l ) || true
clazyNotes=$(grep -nIHE "^(.+):([0-9]+):([0-9]+): note: .+$" ${{ env.logdir }}clazy.log | wc -l ) || true
fi
echo "Found $clazyErrors errors, $clazyWarnings warnings, $clazyNotes notes"
# Write the report
if [ "$clazyErrors" -gt 0 ]
then
echo "<details><summary>:fire: Clazy found :fire: $clazyErrors errors, :warning: $clazyWarnings warnings and :pencil2: $clazyNotes notes</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
elif [ "$clazyWarnings" -gt 0 ]
then
echo "<details><summary>:warning: Clazy found :warning: $clazyWarnings warnings and :pencil2: $clazyNotes notes</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
elif [ "$clazyNotes" -gt 0 ]
then
echo "<details><summary>:pencil2: Clazy found :pencil2: $clazyNotes notes</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
else
echo "<details><summary>:heavy_check_mark: Clazy found no errors, warnings or notes</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
fi
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "[List of checks](https://github.com/KDE/clazy#list-of-checks), [This explains some of the clazy warnings](https://www.kdab.com/uncovering-32-qt-best-practices-compile-time-clazy/) " >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
cat ${{ env.logdir }}clazy.log >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# Exit the step with appropriate code
[ $clazyErrors -eq 0 ]
python3 tools/lint/clazy.py \
--files "${{ inputs.changedCppFiles }}" \
--clazy-checks "${{ inputs.clazyChecks }}" \
--log-dir "${{ env.logdir }}" \
--report-file "${{ env.reportdir }}${{ env.reportfilename }}"
- name: Clazy-QT6
if: inputs.checkClazyQT6 && inputs.changedCppFiles != '' && github.ref == inputs.QT6Branch && always()
continue-on-error: ${{ inputs.clazyQT6FailSilent }}
run: |
clazyQT6Errors=0
clazyQT6Warnings=0
clazyQT6Notes=0
sudo apt-get install -y --no-install-recommends clazy
#TODO: check where this "clazyQT6.yaml" goes ; shall this be put in the fixes ?
# Run clazy checks for Qt6 on all cpp files
clazy-standalone --export-fixes=clazyQT6.yaml -checks=${{ inputs.clazyQT6Checks }} -p build/ ${{ inputs.changedCppFiles }} &>> ${{ env.logdir }}clazyQT6.log || true
# If clazy has run successfully, write the Log to the console with the Problem Matchers
if [ -f ${{ env.logdir }}clazyQT6.log ]
then
echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/clang.json"
cat ${{ env.logdir }}clazyQT6.log
echo "::remove-matcher owner=clang::"
clazyQT6Errors=$(grep -nIHE "^(.+):([0-9]+):([0-9]+): error: .+$" ${{ env.logdir }}clazyQT6.log | wc -l ) || true
clazyQT6Warnings=$(grep -nIHE "^(.+):([0-9]+):([0-9]+): warning: .+$" ${{ env.logdir }}clazyQT6.log | wc -l ) || true
clazyQT6Notes=$(grep -nIHE "^(.+):([0-9]+):([0-9]+): note: .+$" ${{ env.logdir }}clazyQT6.log | wc -l ) || true
fi
echo "Found $clazyQT6Errors errors, $clazyQT6Warnings warnings, $clazyQT6Notes notes"
# Write the report
if [ "$clazyQT6Errors" -gt 0 ]
then
echo "<details><summary>:fire: Clazy found :fire: $clazyQT6Errors errors, :warning: $clazyQT6Warnings warnings and :pencil2: $clazyQT6Notes notes for porting to QT6</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
elif [ "$clazyQT6Warnings" -gt 0 ]
then
echo "<details><summary>:warning: Clazy found :warning: $clazyQT6Warnings warnings and :pencil2: $clazyQT6Notes notes for porting to QT6</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
elif [ "$clazyNotes" -gt 0 ]
then
echo "<details><summary>:pencil2: Clazy found :pencil2: $clazyQT6Notes notes for porting to QT6</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
else
echo "<details><summary>:heavy_check_mark: Clazy found no errors, warnings or notes for porting to QT6</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
fi
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
cat ${{ env.logdir }}clazyQT6.log >> ${{env.reportdir}}${{ env.reportfilename }}
echo '```' >> ${{env.reportdir}}${{ env.reportfilename }}
echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
# Exit the step with appropriate code
[ $clazyQT6Errors -eq 0 ]
python3 tools/lint/clazy_qt6.py \
--files "${{ inputs.changedCppFiles }}" \
--clazy-qt6-checks "${{ inputs.clazyQT6Checks }}" \
--log-dir "${{ env.logdir }}" \
--report-file "${{ env.reportdir }}${{ env.reportfilename }}"
# Upload steps
- name: Upload logs and fixes
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: ${{ inputs.artifactBasename }}-Logs
path: |
${{ env.logdir }}
${{ env.fixesdir }}
- name: Upload report
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: ${{ env.reportfilename }}
path: |
+38 -6
View File
@@ -46,10 +46,16 @@ on:
value: ${{ jobs.Prepare.outputs.reportFile }}
changedFiles:
value: ${{ jobs.Prepare.outputs.changedFiles }}
changedLines:
value: ${{ jobs.Prepare.outputs.changedLines }}
changedPythonFiles:
value: ${{ jobs.Prepare.outputs.changedPythonFiles }}
changedPythonLines:
value: ${{ jobs.Prepare.outputs.changedPythonLines }}
changedCppFiles:
value: ${{ jobs.Prepare.outputs.changedCppFiles }}
changedCppLines:
value: ${{ jobs.Prepare.outputs.changedCppLines }}
jobs:
@@ -67,10 +73,18 @@ jobs:
outputs:
reportFile: ${{ steps.Init.outputs.reportFile }}
changedFiles: ${{ steps.Output.outputs.changedFiles }}
changedLines: ${{ steps.Output.outputs.changedLines }}
changedPythonFiles: ${{ steps.Output.outputs.changedPythonFiles }}
changedPythonLines: ${{ steps.Output.outputs.changedPythonLines }}
changedCppFiles: ${{ steps.Output.outputs.changedCppFiles }}
changedCppLines: ${{ steps.Output.outputs.changedCppLines }}
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
- name: Make needed directories, files and initializations
id: Init
run: |
@@ -79,6 +93,10 @@ jobs:
commitCnt=0
touch ${{ env.logdir }}changedFiles.lst ${{ env.logdir }}changedCppFiles.lst ${{ env.logdir }}changedPythonFiles.lst
echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- name: Check out code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- name: Determine base and head SHA in case of PR
if: env.isPR == 'true'
run: |
@@ -128,11 +146,22 @@ jobs:
commitCnt=$(jq -re '.ahead_by' ${{ env.logdir }}compare.json)
echo "Changeset is composed of $commitCnt commit(s)" | tee -a ${{env.reportdir}}${{ env.reportfilename }}
- name: Get files modified in changeset #TODO check what happens with deleted file in the subsequent process
if: env.isPR == 'true' || env.isPush == 'true'
if: env.isPR == 'true'
env:
API_URL: ${{ github.api_url }}
TOKEN: ${{ github.token }}
REPO: ${{ github.repository }}
REF: ${{ github.ref_name }}
PR: ${{ github.event.number }}
run: |
jq '.files[] | if .status != "removed" then .filename else empty end' ${{ env.logdir }}compare.json > ${{ env.logdir }}changedFiles.lst
grep -E '\.(py|py3)"' ${{ env.logdir }}changedFiles.lst > ${{ env.logdir }}changedPythonFiles.lst || true
grep -E '\.(c|c\+\+|cc|cpp|cu|cuh|cxx|h|h\+\+|hh|hpp|hxx)"' ${{ env.logdir }}changedFiles.lst > ${{ env.logdir }}changedCppFiles.lst || true
# could reduce this to a single
python3 tools/lint/changed_lines.py --api-url ${API_URL} --token ${TOKEN} --repo ${REPO} --ref=${REF} --pr=${PR} > ${{ env.logdir }}changedLines.lst
cat ${{ env.logdir }}changedLines.lst | jq '.[].name' > ${{ env.logdir }}changedFiles.lst
python3 tools/lint/changed_lines.py --api-url ${API_URL} --token ${TOKEN} --repo ${REPO} --ref=${REF} --pr=${PR} --file-filter '.py, .pyi' > ${{ env.logdir }}changedPythonLines.lst
cat ${{ env.logdir }}changedPythonLines.lst | jq '.[].name' > ${{ env.logdir }}changedPythonFiles.lst
python3 tools/lint/changed_lines.py --api-url ${API_URL} --token ${TOKEN} --repo ${REPO} --ref=${REF} --pr=${PR} --file-filter '.c, .cc, .cu, .cuh, .c++, .cpp, .cxx, .h, .hh, .h++, .hpp, .hxx' > ${{ env.logdir }}changedCppLines.lst
cat ${{ env.logdir }}changedCppLines.lst | jq '.[].name' > ${{ env.logdir }}changedCppFiles.lst
# Write the report
echo "::group::Modified files in changeset (removed files are ignored) :" ; cat ${{ env.logdir }}changedFiles.lst ; echo "::endgroup::"
echo "<details><summary>Modified files (removed files are ignored):</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
@@ -143,19 +172,22 @@ jobs:
id: Output
run: |
echo "changedFiles=$(cat ${{ env.logdir }}changedFiles.lst | tr '\n' ' ')" >> $GITHUB_OUTPUT
echo "changedLines=$(cat ${{ env.logdir }}changedLines.lst | tr '\n' ' ')" >> $GITHUB_OUTPUT
echo "changedPythonFiles=$(cat ${{ env.logdir }}changedPythonFiles.lst | tr '\n' ' ')" >> $GITHUB_OUTPUT
echo "changedPythonLines=$(cat ${{ env.logdir }}changedPythonLines.lst | tr '\n' ' ')" >> $GITHUB_OUTPUT
echo "changedCppFiles=$(cat ${{ env.logdir }}changedCppFiles.lst | tr '\n' ' ')" >> $GITHUB_OUTPUT
echo "changedCppLines=$(cat ${{ env.logdir }}changedCppLines.lst | tr '\n' ' ')" >> $GITHUB_OUTPUT
echo "" >> $GITHUB_OUTPUT
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: ${{ inputs.artifactBasename }}-Logs
path: |
${{ env.logdir }}
- name: Upload report
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: ${{ env.reportfilename }}
path: |
+10 -2
View File
@@ -39,6 +39,9 @@ on:
type: string
required: true
permissions:
contents: read
jobs:
WrapUp:
@@ -50,11 +53,16 @@ jobs:
shell: bash
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@58077d3c7e43986b6b15fba718e8ea69e387dfcc # v2.15.1
with:
egress-policy: audit
- name: Make needed directories, files and initializations
run: |
mkdir -p ${{ env.artifactsDownloadDir }}
- name: Download artifacts
uses: actions/download-artifact@v4
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
path: ${{ env.artifactsDownloadDir }}
- name: Save input data to file
@@ -111,7 +119,7 @@ jobs:
cat report.md >> $GITHUB_STEP_SUMMARY
- name: Delete used artifacts
continue-on-error: true
uses: geekyeggo/delete-artifact@v5
uses: geekyeggo/delete-artifact@f275313e70c08f6120db482d7a6b98377786765b # v5.1.0
with:
name: |
${{ env.usedArtifacts }}
+16
View File
@@ -0,0 +1,16 @@
> [!IMPORTANT]
> Bleeding edge FreeCAD development builds for testing bugfixes, regressions, and recently implemented features. Do not use in a production environment.
**Changes since last weekly:** <!--DIFF_LINK-->
### How-to use
1. Download the appropriate asset for your OS below
2. Unpack the bundle to any folder on your system
3. Launch the application
- **Windows**
Run `\FreeCAD.exe` in the extracted directory
- **macOS**
Launch `/FreeCAD.app` in the extracted directory
- **Linux**
Open the `*.AppImage`
+140
View File
@@ -0,0 +1,140 @@
name: Weekly compare link to release notes
on:
release:
types: [published] # run automatically when a (pre-)release is published
workflow_dispatch: # allow manual runs too
inputs:
current_tag:
description: "Weekly tag (e.g., weekly-2026.01.07). Leave empty to auto-detect latest weekly pre-release."
required: false
dry_run:
description: "Only compute; do not update the release body."
required: false
type: boolean
default: false
permissions:
contents: write # required to PATCH the release body
jobs:
update-notes:
runs-on: ubuntu-latest
steps:
- name: Inject compare link into weekly release notes
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
# Pass manual inputs via env for convenience
CURRENT_TAG: ${{ github.event.inputs.current_tag }}
DRY_RUN: ${{ github.event.inputs.dry_run }}
PLACEHOLDER: "<!--DIFF_LINK-->"
with:
script: |
// Updates the current weekly release notes with a compare link to the previous weekly.
// Works for both release-published events and manual (workflow_dispatch) runs.
const owner = context.repo.owner;
const repo = context.repo.repo;
const rx = /^weekly-(\d{4})\.(\d{2})\.(\d{2})$/;
// Determine currentTag:
// 1) Manual input via workflow_dispatch (env.CURRENT_TAG)
// 2) Tag from release event payload
// 3) Fallback: newest weekly pre-release
let currentTag = process.env.CURRENT_TAG || (context.payload?.release?.tag_name) || null;
async function detectLatestWeeklyTag() {
const releases = await github.paginate(github.rest.repos.listReleases, { owner, repo, per_page: 100 });
const cand = releases.find(r => r.prerelease && typeof r.tag_name === 'string' && rx.test(r.tag_name));
return cand?.tag_name || null;
}
if (!currentTag) {
currentTag = await detectLatestWeeklyTag();
}
if (!currentTag || !rx.test(currentTag)) {
core.info(`No weekly tag detected or tag format mismatch ('${currentTag}'). Skipping.`);
return;
}
// Resolve the current release object
let curRel;
try {
const { data } = await github.rest.repos.getReleaseByTag({ owner, repo, tag: currentTag });
curRel = data;
} catch (e) {
core.setFailed(`No release for tag ${currentTag}: ${e.message}`);
return;
}
// If event is a normal release (not pre-release), skip automatically-run case;
// but allow manual override (manual runs can patch any weekly tag).
const isManual = context.eventName === 'workflow_dispatch';
if (!isManual && !curRel.prerelease) {
core.info('Current release is not a pre-release; skipping (auto run).');
return;
}
// Helpers
const toPrevWeeklyTag = (tag) => {
const [, y, m, d] = tag.match(rx);
const dt = new Date(Date.UTC(+y, +m - 1, +d));
const prev = new Date(dt.getTime() - 7 * 24 * 3600 * 1000); // minus 7 days
const iso = prev.toISOString().slice(0, 10); // YYYY-MM-DD
return `weekly-${iso.replace(/-/g, '.')}`; // weekly-YYYY.MM.DD
};
const ymdKey = (t) => t.replace(rx, '$1$2$3'); // YYYYMMDD
async function tagExists(tag) {
try {
await github.rest.git.getRef({ owner, repo, ref: `tags/${tag}` });
return true;
} catch {
return false;
}
}
// Compute previous weekly deterministically, then fall back if needed
let prevTag = toPrevWeeklyTag(currentTag);
if (!(await tagExists(prevTag))) {
core.info(`Computed previous tag ${prevTag} not found; scanning older weeklies...`);
const releases = await github.paginate(github.rest.repos.listReleases, { owner, repo, per_page: 100 });
const curKey = ymdKey(currentTag);
const older = releases
.filter(r => r.prerelease && typeof r.tag_name === 'string' && rx.test(r.tag_name))
.map(r => ({ tag: r.tag_name, key: ymdKey(r.tag_name) }))
.filter(x => x.key < curKey)
.sort((a, b) => b.key.localeCompare(a.key)); // newest older first
if (!older.length) {
core.info('No older weekly found; nothing to do.');
return;
}
prevTag = older[0].tag;
}
const compareUrl = `https://github.com/${owner}/${repo}/compare/${prevTag}...${currentTag}`;
const head = `**Changes since last weekly (${prevTag} → ${currentTag}):**\n${compareUrl}\n`;
if (process.env.DRY_RUN === 'true') {
core.info(`[DRY RUN] Would update release ${currentTag} with: ${compareUrl}`);
return;
}
// Idempotent body update
let body = curRel.body || '';
if (body.includes(compareUrl)) {
core.info('Compare URL already present; done.');
return;
}
const placeholder = process.env.PLACEHOLDER || '<!--DIFF_LINK-->';
if (body.includes(placeholder)) {
body = body.replace(placeholder, compareUrl);
} else if (/\*\*Changes since last weekly:/i.test(body)) {
body = body.replace(/\*\*Changes since last weekly:[^\n]*\n?/i, head + '\n');
} else {
body += (body.endsWith('\n') ? '\n' : '\n\n') + head;
}
await github.rest.repos.updateRelease({ owner, repo, release_id: curRel.id, body });
core.info(`Release notes updated with compare link: ${compareUrl}`);
+35 -25
View File
@@ -1,63 +1,73 @@
# file types to ignore
.*
!*.gitattributes
!*.gitignore
!/.clang-format
!/.clang-tidy
!/.git-blame-ignore-revs
!/.gitattributes
!/.github/
!/.gitignore
!/.gitmodules
!/.packit.yaml
!/.pre-commit-config.yaml
!/.pylintrc
!/.github/
!/contrib/.vscode/
!*.gitattributes
!*.gitignore
*.clangd
*.DS_Store
*.pyc
*.obj
*.lib
*.pch
*.vcproj
*.kdev4
*.exp
*.dep
*.exp
*.kdev4
*.lib
*.manifest
*.o
*.obj
*.orig
*.output
qrc_*.cpp
BuildLog.htm
cmake_install.cmake
*~
CMakeFiles/
*.pch
*.pyc
*.vcproj
# Ignore .db files created by Qt Designer when editing .ui files
*.db
*qrc.depends
ui_*.h
moc_*.cpp
Makefile
*~
BuildLog.htm
CMakeCache.txt
CMakeFiles/
CMakeLists.txt.user
Makefile
cmake_install.cmake
config.h
install_manifest.txt
/bin/
moc_*.cpp
qrc_*.cpp
ui_*.h
/.vscode/
/ALL_BUILD.dir/
/doc/
/lib/
/Mod/
/ZERO_CHECK.dir/
/bin/
/build-*/
/build/
/cmake-build*/
/src/Tools/offlinedoc/localwiki/
/src/Tools/offlinedoc/*.txt
/conda/environment.yml
/.vscode/
/doc/
/lib/
/src/Tools/offlinedoc/*.txt
/src/Tools/offlinedoc/localwiki/
OpenSCAD_rc.py
tags
/CMakeUserPresets.json
Testing
compile_commands.json
*.sublime-project
*.sublime-workspace
# crowdin file
files_to_translate.txt
src/Tools/freecad.zip
tsupdate_stderr.log
tsupdate_stdout.log
files_to_translate.txt
# pixi environments
*.egg-info
.pixi
+4 -1
View File
@@ -1,9 +1,12 @@
[submodule "src/3rdParty/OndselSolver"]
path = src/3rdParty/OndselSolver
url = https://github.com/Ondsel-Development/OndselSolver.git
url = https://github.com/FreeCAD/OndselSolver.git
[submodule "tests/lib"]
path = tests/lib
url = https://github.com/google/googletest
[submodule "src/3rdParty/GSL"]
path = src/3rdParty/GSL
url = https://github.com/microsoft/GSL
[submodule "src/Mod/AddonManager"]
path = src/Mod/AddonManager
url = https://github.com/FreeCAD/AddonManager.git
+68
View File
@@ -0,0 +1,68 @@
specfile_path: package/fedora/freecad.spec
files_to_sync:
- .packit.yaml
actions:
post-upstream-clone:
- bash -c '/usr/bin/python3 package/scripts/write_version_info.py freecad_version.txt'
- rm -f freecad-sources.tar.gz
changelog-entry:
- bash -c 'git log --no-merges --pretty="format:- %s (%an)" $(git describe --tags --abbrev=0 )..HEAD -- |sed 's/%/%%/g''
create-archive:
- git submodule update --init
- bash -c 'git ls-files --recurse-submodules | tar -caf freecad-sources.tar.gz -T-'
- echo -n 'freecad-sources.tar.gz'
downstream_package_name: freecad
additional_packages:
- python3
jobs:
- job: copr_build
identifier: pull_request
trigger: pull_request
notifications:
pull_request:
successful_build: True
branch: main
additional_repos:
- copr://bpostle/IfcOpenShell
manual_trigger: true
targets:
fedora-stable:
without_opts:
- debug_info
fedora-development:
without_opts:
- debug_info
- job: tests
identifier: pull_request
trigger: pull_request
branch: main
manual_trigger: true
targets:
fedora-latest-stable:
without_opts:
- debug_info
fmf_path: package/fedora/tests
- job: copr_build
identifier: main
trigger: commit
manual_trigger: true
branch: main
additional_repos:
- copr://bpostle/IfcOpenShell
owner: freecad
project: nightly
- job: copr_build
identifier: release
trigger: release
owner: freecad
project: freecad
additional_repos:
- copr://bpostle/IfcOpenShell
targets:
fedora-all:
without_opts:
- tests
+21 -10
View File
@@ -4,23 +4,26 @@
# See https://pre-commit.com/hooks.html for more hooks
files: |
(?x)^(
.github|
src/Base|
src/Gui|
src/Main|
src/Tools|
tests/src|
src/Mod/AddonManager|
src/Mod/Assembly|
src/Mod/BIM|
src/Mod/CAM|
src/Mod/Cloud|
src/Mod/Drawing|
src/Mod/Draft|
src/Mod/Fem|
src/Mod/Help|
src/Mod/Import|
src/Mod/Inspection|
src/Mod/JtReader|
src/Mod/Measure|
src/Mod/Mesh|
src/Mod/MeshPart|
src/Mod/Mesh|
src/Mod/PartDesign|
src/Mod/Part|
src/Mod/Plot|
src/Mod/Points|
src/Mod/ReverseEngineering|
@@ -32,7 +35,8 @@ files: |
src/Mod/Surface|
src/Mod/Test|
src/Mod/Tux|
src/Mod/Web
src/Mod/Web|
tests/src
)
exclude: |
(?x)^(
@@ -42,28 +46,35 @@ exclude: |
src/App/ExpressionParser.tab.h|
src/App/ExpressionParser.y|
src/App/lex.ExpressionParser.c|
src/Doc/ThirdPartyLibraries.html.cmake|
src/Gui/3Dconnexion/navlib|
src/Gui/QSint|
src/Gui/Quarter|
src/Mod/Fem/femexamples|
src/Mod/Import/App/SCL|
src/Mod/Import/App/SCL_output|
src/Mod/Mesh/App/TestData|
src/Mod/Mesh/App/WildMagic4|
src/Mod/Robot/App/kdl_cp|
src/Mod/Robot/Lib
src/Mod/Robot/Lib|
.*\.ts$|
.*\.brep$
)
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: 2c9f875913ee60ca25ce70243dc24d5b6415598c # frozen: v4.6.0
rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # frozen: v6.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- id: mixed-line-ending
- repo: https://github.com/psf/black
rev: b965c2a5026f8ba399283ba3e01898b012853c79 # frozen: 24.8.0
- repo: https://github.com/psf/black-pre-commit-mirror
rev: fa505ab9c3e0fedafe1709fd7ac2b5f8996c670d # frozen: 26.3.1
hooks:
- id: black
args: ['--line-length', '100']
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: 7d85583be209cb547946c82fbe51f4bc5dd1d017 # frozen: v18.1.8
rev: 88c364bab316f4b6b18f6c298133bbbf32d7cd15 # frozen: v22.1.1
hooks:
- id: clang-format
+2 -6
View File
@@ -82,15 +82,11 @@ persistent=yes
# Minimum Python version to use for version dependent checks. Will default to
# the version used to run pylint.
py-version=3.8
py-version=3.10
# Discover python modules and packages in the file system subtree.
recursive=no
# When enabled, pylint would attempt to guess common misconfiguration and emit
# user-friendly hints instead of false-positive error messages.
suggestion-mode=yes
# Allow loading of arbitrary C extensions. Extensions are imported into the
# active Python interpreter and may run arbitrary code.
unsafe-load-any-extension=no
@@ -402,7 +398,7 @@ indent-after-paren=4
indent-string=' '
# Maximum number of characters on a single line.
max-line-length=100
max-line-length=120
# Maximum number of lines in a module.
max-module-lines=1000
+55 -19
View File
@@ -1,37 +1,61 @@
# As of January 2023 we require CMake 3.16.3
# see https://forum.freecad.org/viewtopic.php?f=10&t=72173
# for further info why
cmake_minimum_required(VERSION 3.16.3 FATAL_ERROR)
# As of February 2025 we require CMake 3.22.0
cmake_minimum_required(VERSION 3.22.0 FATAL_ERROR)
# policy CMP0072 was introduced with CMake 3.11
# relates to FindOpenGL module
# and cache variables OPENGL_gl_LIBRARY, OPENGL_glu_LIBRARY
if (POLICY CMP0072)
set(OpenGL_GL_PREFERENCE LEGACY)
endif(POLICY CMP0072)
# FindPythonInterp and FindPythonLibs modules are deprecated.
# Currently, they are still used by shiboken's CMake files
if (POLICY CMP0148)
# As of cMake 3.27, find_package() will look for both case-sensitive and all-uppercase versions
# of the package. This seems to affect FLANN as included by Pixi
if(POLICY CMP0144)
cmake_policy(SET CMP0144 NEW)
endif()
# FindPythonInterp and FindPythonLibs modules are deprecated, but are still in use by
# all versions of Shiboken2. This policy must be kept at OLD until Shiboken2 is no longer
# supported
if(POLICY CMP0148)
cmake_policy(SET CMP0148 OLD)
endif()
# The exec_program command was deprecated in cMake 3.0, and policy CMP0153 was added in cMake
# 3.28 to control whether this gives a warning (the OLD behavior) or a fatal error (NEW)
if(POLICY CMP0153)
cmake_policy(SET CMP0153 NEW)
endif()
# Suppress 'FindBoost module is removed' warning. Will use BoostConfig.cmake instead
if(POLICY CMP0167)
cmake_policy(SET CMP0167 NEW)
endif()
# As of cMake 3.31 add_custom_command() rejects invalid arguments
if(POLICY CMP0175)
cmake_policy(SET CMP0175 NEW)
endif()
# Added in cMake 3.31, enforce normalization of all DESTINATION paths given to install()
if(POLICY CMP0177)
cmake_policy(SET CMP0177 NEW)
endif()
option(FREECAD_USE_CCACHE "Auto detect and use ccache during compilation" ON)
if(FREECAD_USE_CCACHE)
find_program(CCACHE_PROGRAM ccache) #This check should occur before project()
if(CCACHE_PROGRAM)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
message(STATUS "Using ccache found at: " ${CCACHE_PROGRAM})
set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE_PROGRAM}")
set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PROGRAM}")
endif()
endif()
project(FreeCAD)
set(PACKAGE_VERSION_MAJOR "1")
set(PACKAGE_VERSION_MINOR "0")
set(PACKAGE_VERSION_MINOR "2")
set(PACKAGE_VERSION_PATCH "0") # number of patch release (e.g. "4" for the 0.18.4 release)
set(PACKAGE_VERSION_SUFFIX "RC4") # either "dev" for development snapshot or "" (empty string)
set(PACKAGE_VERSION_SUFFIX "dev") # either "dev" for development snapshot or "" (empty string)
set(PACKAGE_BUILD_VERSION "0") # used when the same FreeCAD version will be re-released (for example using an updated LibPack)
string(TIMESTAMP PACKAGE_COPYRIGHT_YEAR "%Y")
set(PACKAGE_VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH}")
set(PACKAGE_STRING "${PROJECT_NAME} ${PACKAGE_VERSION}")
@@ -53,6 +77,8 @@ FreeCADLibpackChecks()
SetupDoxygen()
SetupLibFmt()
SetupYamlCpp()
SetupZipIos()
find_package(ICU REQUIRED COMPONENTS uc i18n)
if(NOT FREECAD_LIBPACK_USE OR FREECAD_LIBPACK_CHECKFILE_CLBUNDLER OR FREECAD_LIBPACK_CHECKFILE_VERSION)
SetupPython()
SetupPCL()
@@ -67,11 +93,13 @@ if(NOT FREECAD_LIBPACK_USE OR FREECAD_LIBPACK_CHECKFILE_CLBUNDLER OR FREECAD_LIB
# OPENGL_gl_LIBRARY empty that results into linker errors
SetupOpenGL()
endif(BUILD_GUI)
SetupBoost()
SetupSalomeSMESH()
if (BUILD_FEM_NETGEN)
find_package(NETGEN)
endif(BUILD_FEM_NETGEN)
set(NETGEN_DEFINITIONS -DNO_PARALLEL_THREADS -DOCCGEOMETRY)
if (NOT FREECAD_USE_EXTERNAL_SMESH)
find_package(NETGEN REQUIRED)
endif()
endif()
# not needed at the moment
#find_package(OpenCV REQUIRED)
SetupSwig()
@@ -83,10 +111,18 @@ if(NOT FREECAD_LIBPACK_USE OR FREECAD_LIBPACK_CHECKFILE_CLBUNDLER OR FREECAD_LIB
if(BUILD_GUI)
SetupCoin3D()
SetupPivy()
SetupSpaceball()
SetupShibokenAndPyside()
SetupMatplotlib()
endif(BUILD_GUI)
# SetupCoin3D can overwrite find_package(Boost) output so keep this after.
SetupBoost()
if(BUILD_BIM)
SetupLark()
endif()
endif()
if(BUILD_VR)
+205 -60
View File
@@ -13,6 +13,18 @@
"CMAKE_EXPORT_COMPILE_COMMANDS": {
"type": "BOOL",
"value": "ON"
},
"CMAKE_JOB_POOL_COMPILE": {
"type": "STRING",
"value": "compile_jobs"
},
"CMAKE_JOB_POOL_LINK": {
"type": "STRING",
"value": "link_jobs"
},
"CMAKE_POLICY_VERSION_MINIMUM": {
"type": "STRING",
"value": "3.5"
}
}
},
@@ -51,14 +63,6 @@
"hidden": true,
"generator": "Ninja",
"cacheVariables": {
"Boost_NO_BOOST_CMAKE": {
"type": "BOOL",
"value": "ON"
},
"BUILD_DYNAMIC_LINK_PYTHON": {
"type": "BOOL",
"value": "ON"
},
"BUILD_FEM_NETGEN": {
"type": "BOOL",
"value": "ON"
@@ -99,9 +103,9 @@
"type": "BOOL",
"value": "ON"
},
"USE_BOOST_PYTHON": {
"type": "BOOL",
"value": "OFF"
"QT_HOST_PATH": {
"type": "PATH",
"value": "$env{CONDA_PREFIX}"
}
}
},
@@ -113,31 +117,38 @@
"lhs": "${hostSystemName}",
"rhs": "Linux"
},
"cmakeExecutable": "${sourceDir}/conda/cmake.sh",
"cacheVariables": {
"CMAKE_INCLUDE_PATH": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad/include"
"CMAKE_C_COMPILER": {
"type": "STRING",
"value": "clang"
},
"CMAKE_INSTALL_LIBDIR": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad/lib"
"CMAKE_CXX_COMPILER": {
"type": "STRING",
"value": "clang++"
},
"CMAKE_EXE_LINKER_FLAGS": {
"type": "STRING",
"value": "-fuse-ld=mold"
},
"CMAKE_INSTALL_PREFIX": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad"
},
"CMAKE_LIBRARY_PATH":{
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad/lib"
"value": "$env{CONDA_PREFIX}"
},
"CMAKE_PREFIX_PATH": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad"
"value": "$env{CONDA_PREFIX}"
},
"CMAKE_SHARED_LINKER_FLAGS": {
"type": "STRING",
"value": "-fuse-ld=mold"
},
"OCC_INCLUDE_DIR": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad/include/opencascade"
"value": "$env{CONDA_PREFIX}/include/opencascade"
},
"OCC_LIBRARY_DIR": {
"type": "FILEPATH",
"value": "$env{CONDA_PREFIX}/lib"
}
}
},
@@ -149,35 +160,30 @@
"lhs": "${hostSystemName}",
"rhs": "Darwin"
},
"cmakeExecutable": "${sourceDir}/conda/cmake.sh",
"cacheVariables": {
"CMAKE_IGNORE_PREFIX_PATH": {
"type": "STRING",
"value": "/opt/homebrew;/usr/local/homebrew"
},
"CMAKE_INCLUDE_PATH": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad/include"
},
"CMAKE_INSTALL_LIBDIR": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad/lib"
},
"CMAKE_INSTALL_PREFIX": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad"
},
"CMAKE_LIBRARY_PATH":{
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad/lib"
"value": "$env{CONDA_PREFIX}"
},
"CMAKE_PREFIX_PATH": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad"
"value": "$env{CONDA_PREFIX}"
},
"FREECAD_3DCONNEXION_SUPPORT": {
"type": "STRING",
"value": "Both"
},
"OCC_INCLUDE_DIR": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad/include/opencascade"
"value": "$env{CONDA_PREFIX}/include/opencascade"
},
"OCC_LIBRARY_DIR": {
"type": "FILEPATH",
"value": "$env{CONDA_PREFIX}/lib"
}
}
},
@@ -189,31 +195,26 @@
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"cmakeExecutable": "${sourceDir}/conda/cmake.cmd",
"cacheVariables": {
"CMAKE_INCLUDE_PATH": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad/Library/include"
},
"CMAKE_INSTALL_LIBDIR": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad/Library/lib"
},
"CMAKE_INSTALL_PREFIX": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad/Library"
},
"CMAKE_LIBRARY_PATH":{
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad/Library/lib"
"value": "$env{CONDA_PREFIX}/Library"
},
"CMAKE_PREFIX_PATH": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad/Library"
"value": "$env{CONDA_PREFIX}/Library"
},
"FREECAD_3DCONNEXION_SUPPORT": {
"type": "STRING",
"value": "Both"
},
"OCC_INCLUDE_DIR": {
"type": "FILEPATH",
"value": "${sourceDir}/.conda/freecad/Library/include/opencascade"
"value": "$env{CONDA_PREFIX}/Library/include/opencascade"
},
"OCC_LIBRARY_DIR": {
"type": "FILEPATH",
"value": "$env{CONDA_PREFIX}/Library/lib"
}
}
},
@@ -295,7 +296,151 @@
"inherits": [
"conda-release",
"conda-windows"
]
}
],
"cacheVariables": {
"FREECAD_RELEASE_PDB": {
"type": "BOOL",
"value": "OFF"
}
}
},
{
"name": "rpm",
"description": "Settings like rpm build",
"displayName": "rpm",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/rpm",
"cacheVariables": {
"CMAKE_INSTALL_DATAROOTDIR": {
"type": "PATH",
"value": "/usr/share"
},
"CMAKE_C_FLAGS_RELEASE": {
"type": "STRING",
"value": "-DNDEBUG"
},
"CMAKE_CXX_FLAGS_RELEASE": {
"type": "STRING",
"value": "-DNDEBUG"
},
"CMAKE_Fortran_FLAGS_RELEASE": {
"type": "STRING",
"value": "-DNDEBUG"
},
"CMAKE_VERBOSE_MAKEFILE": {
"type": "BOOL",
"value": "ON"
},
"CMAKE_INSTALL_DO_STRIP": {
"type": "BOOL",
"value": "OFF"
},
"CMAKE_INSTALL_PREFIX": {
"type": "PATH",
"value": "/usr/lib64/freecad"
},
"CMAKE_INSTALL_FULL_SBINDIR": {
"type": "PATH",
"value": "/usr/bin"
},
"CMAKE_INSTALL_SBINDIR": {
"type": "PATH",
"value": "bin"
},
"INCLUDE_INSTALL_DIR": {
"type": "PATH",
"value": "/usr/include"
},
"LIB_INSTALL_DIR": {
"type": "PATH",
"value": "/usr/lib64"
},
"SYSCONF_INSTALL_DIR": {
"type": "PATH",
"value": "/etc"
},
"SHARE_INSTALL_PREFIX": {
"type": "PATH",
"value": "/usr/share"
},
"LIB_SUFFIX": {
"type": "STRING",
"value": "64"
},
"BUILD_SHARED_LIBS": {
"type": "BOOL",
"value": "ON"
},
"CMAKE_INSTALL_DOCDIR": {
"type": "PATH",
"value": "/usr/share/doc/freecad"
},
"CMAKE_INSTALL_INCLUDEDIR": {
"type": "PATH",
"value": "/usr/include"
},
"RESOURCEDIR": {
"type": "PATH",
"value": "/usr/share/freecad"
},
"FREECAD_USE_EXTERNAL_PIVY": {
"type": "BOOL",
"value": "TRUE"
},
"FREECAD_USE_EXTERNAL_FMT": {
"type": "BOOL",
"value": "TRUE"
},
"FREECAD_USE_PCL": {
"type": "BOOL",
"value": "OFF"
},
"FREECAD_QT_VERSION": {
"type": "STRING",
"value": "6"
},
"OpenGL_GL_PREFERENCE": {
"type": "STRING",
"value": "GLVND"
},
"USE_OCC": {
"type": "BOOL",
"value": "TRUE"
},
"PYCXX_INCLUDE_DIR": {
"type": "PATH",
"value": "/usr/include"
},
"PYCXX_SOURCE_DIR": {
"type": "PATH",
"value": "/usr/src/CXX"
},
"ENABLE_DEVELOPER_TESTS": {
"type": "BOOL",
"value": "TRUE"
},
"FREECAD_USE_EXTERNAL_GTEST": {
"type": "BOOL",
"value": "TRUE"
},
"ONDSELSOLVER_BUILD_EXE": {
"type": "BOOL",
"value": "TRUE"
},
"BUILD_GUI": {
"type": "BOOL",
"value": "TRUE"
}
},
"environment": {
"CC": "gcc",
"CXX": "g++",
"LT_SYS_LIBRARY_PATH": "/usr/lib64:",
"CCACHE_PROGRAM": "/usr/bin/ccache",
"CFLAGS": "-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer",
"CXXFLAGS": "-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer",
"LDFLAGS": "-Wl,--as-needed -Wl,--no-undefined"
}
}
]
}
}
+17 -8
View File
@@ -26,7 +26,7 @@ The FreeCAD Contribution Process is expressed here with the following specific g
1. FreeCAD uses the git distributed revision control system.
2. Source code for the main application and related subprojects is hosted on github.com in the FreeCAD organization.
3. Problems are discrete, well-defined limitations or bugs.
4. FreeCAD uses GitHub's issue-tracking system to track problems and contributions. For help requests and general discussions, use the project forum.
4. FreeCAD uses GitHub's issue-tracking system to track problems and contributions. For help requests and general discussions, use the project forum.
5. Contributions are sets of code changes that resolve a single problem.
6. FreeCAD uses the Pull Request workflow for evaluating and accepting contributions.
@@ -47,7 +47,7 @@ The FreeCAD Contribution Process is expressed here with the following specific g
## 5. Contribution Requirements
1. Contributions are submitted in the form of Pull Requests (PR).
2. Maintainers and Contributors MUST have a GitHub account and SHOULD use their real names or a well-known alias.
2. Maintainers and Contributors MUST have a GitHub account and SHOULD use their real names or a well-known alias.
3. If the GitHub username differs from the username on the FreeCAD Forum, effort SHOULD be taken to avoid confusion.
4. A PR SHOULD be a minimal and accurate answer to exactly one identified and agreed-on problem.
5. A PR SHOULD refrain from adding additional dependencies to the FreeCAD project unless no other option is available.
@@ -55,9 +55,16 @@ The FreeCAD Contribution Process is expressed here with the following specific g
7. If a PR contains multiple commits, each commit MUST compile cleanly when merged with all previous commits of the same PR. Each commit SHOULD add value to the history of the project. Checkpoint commits SHOULD be squashed.
8. A PR SHALL NOT include non-trivial code from other projects unless the Contributor is the original author of that code.
9. A PR MUST compile cleanly and pass project self-tests on all target platforms.
10. Each commit message in a PR MUST succinctly explain what the commit achieves. The commit message SHALL follow the suggestions in the `git commit --help` documentation, section DISCUSSION.
11. The PR message MUST consist of a single short line, the PR Title, summarizing the problem being solved, followed by a blank line and then the proposed solution in the Body. If a PR consists of more than one commit, the PR Title MUST succinctly explain what the PR achieves. The Body MAY be as detailed as needed. If a PR changes the user interface (UI), the body of the text MUST include a presentation of these UI changes, preferably with screenshots of the previous and revised state.
12. A “Valid PR” is one which satisfies the above requirements.
10. Changes that break python API used by extensions SHALL be avoided. If it is not possible to avoid breaking changes, the amount of them MUST be minimized and PR MUST clearly describe all breaking changes with clear description on how to replace no longer working solution with newer one. Contributor SHOULD search for addons that will be broken and list them in the PR.
11. Each commit message in a PR MUST succinctly explain what the commit achieves. The commit message SHALL follow the suggestions in the `git commit --help` documentation, section DISCUSSION.
12. The PR Title MUST succinctly explain what the PR achieves. The Body MAY be as detailed as needed. If a PR changes the user interface (UI), the body of the text MUST include a presentation of these UI changes, preferably with screenshots of the previous and revised state.
13. If a PR contains the work of another author (for example, if it is cherry-picked from a fork by someone other than the PR-submitter):
1. the PR description MUST contain proper attribution as the first line, for example: "This is work of XYZ cherry-picked from <link>";
2. all commits MUST have proper authorship, i.e. be authored by the original author and committed by the author of the PR;
3. if changes to cherry-picked commits are necessary they SHOULD be done as follow-up commits. If it is not possible to do so, then the modified commits MUST contain a `Co-Authored-By` trailer in their commit message.
14. Contributions must meet existing quality standards. Raw AI output is not accepted under any circumstances. AI may be used only as an assistive tool; in all cases, the resulting content must be reviewed, validated, and justifiable by the contributor. The contributor should be able to explain design and code decisions, answer reviewers questions, and ensure that AI use does not waste reviewers time during review. That being said, the use of AI is not recommended under any circumstances or in any manner.
15. The contributor provides reasonable assurance that the contribution does not infringe third-party copyrights or license terms.
16. A “Valid PR” is one which satisfies the above requirements.
## 6. Process
@@ -81,9 +88,11 @@ The FreeCAD Contribution Process is expressed here with the following specific g
2. capture toxic contributions in the historical record
3. engage with the Contributor on improving their contribution quality.
14. Maintainers SHALL NOT make value judgments on correct contributions.
15. Any Contributor who has value judgments on a PR SHOULD express these via their own PR.
16. The User who created an issue SHOULD close the issue after checking the PR is successful.
17. Maintainers SHOULD close issues that are left open without action or update for an unreasonable period.
15. If a PR requires significant further work before merging, the PR SHOULD be moved to draft status.
16. If a PR is complete, but should not be merged yet (for example, because it depends on another in-process PR), the "On hold" label SHOULD be applied.
17. Any Contributor who has value judgments on a PR SHOULD express these via their own PR.
18. The User who created an issue SHOULD close the issue after checking the PR is successful.
19. Maintainers SHOULD close issues that are left open without action or update for an unreasonable period.
## 7. Branches and Releases
+121 -98
View File
@@ -1,113 +1,125 @@
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991 Free Software Foundation, Inc.
51 Franklin Street - Fifth Floor
Boston, MA 02110-1301, USA.
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it. You can use it for
your libraries, too.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if
you distribute copies of the library, or if you modify it.
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library. If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software. To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs. This
license, the GNU Library General Public License, applies to certain
designated libraries. This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it. Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program. However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries. We
concluded that weaker conditions might promote sharing better.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves. This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them. (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.) The hope is that this
will lead to faster development of free libraries.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, while the latter only
works together with the library.
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License"). Each licensee is
addressed as "you".
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
@@ -134,7 +146,7 @@ such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
@@ -146,7 +158,7 @@ Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
@@ -204,7 +216,7 @@ instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
@@ -255,8 +267,8 @@ Library will still fall under Section 6.)
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
@@ -283,23 +295,31 @@ of these things:
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Accompany the work with a written offer, valid for at
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
d) Verify that the user has already received a copy of these
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
@@ -309,7 +329,7 @@ restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
@@ -348,9 +368,9 @@ Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
@@ -391,7 +411,7 @@ excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Library General Public License from time to time.
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
@@ -402,7 +422,7 @@ conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
@@ -412,7 +432,7 @@ decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
@@ -435,8 +455,9 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
@@ -455,7 +476,7 @@ convey the exclusion of warranty; and each file should have at least the
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -464,7 +485,8 @@ convey the exclusion of warranty; and each file should have at least the
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA
Also add information on how to contact you by electronic and paper mail.
@@ -473,7 +495,8 @@ school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
library `Frob' (a library for tweaking knobs) written by James Random
Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
+4 -8
View File
@@ -4,10 +4,7 @@ The FreeCAD application does not collect, transmit, share or use any Personal Da
FreeCAD is community-developed Free Software. The community does not condone the unauthorized usage of private data, so our software does not gather or send personal data.
The FreeCAD website is mostly static, it does not contain any trackers, neither ours nor third-party. The website uses cookies to remember logged in status, timezone and other
data related to navigating the site.
The website does not contain advertisements.
The FreeCAD website is mostly static, it does not contain any trackers, neither ours nor third-party. The website uses cookies to remember logged in status, timezone and other data related to navigating the site. The website does not contain advertisements.
The software does not contain advertisements or trackers either.
@@ -15,9 +12,9 @@ The software does not contain advertisements or trackers either.
FreeCAD is able to load or save files to/from remote servers (for some protocols and platforms). If you choose to load or save a remote file, your IP or other private data might be shared as part of the normal connection flow for the given protocol. This is out of our control and it is up to you to decide whether you trust a remote host.
The FreeCAD eco system includes user developed workbenches. These workbenches can be installed/updated using the Add-on Manager. The Add-on Manager retrieves workbenches from remote servers across the internet. Add-on workbenches are not checked for malicious content. It is your responsibility to decide whether you trust an add-on workbench.
The FreeCAD eco system includes user developed workbenches. These workbenches can be installed/updated using the Add-on Manager. The Add-on Manager retrieves workbenches from remote servers across the internet. Add-on workbenches are not checked for malicious content. It is your responsibility to decide whether you trust an add-on workbench.
FreeCAD is meant to manipulate CAD files which may contain metadata. It is your responsibility to verify the metadata contained in your files before you share them with others. These files may contain local directory paths which could reveal user names if the user name forms part of the path - as in “C:\MrsCAD\Documents\myFreeCADFile.FCstd”.
FreeCAD is meant to manipulate CAD files which may contain metadata. It is your responsibility to verify the metadata contained in your files before you share them with others. These files may contain local directory paths which could reveal user names if the user name forms part of the path - as in “C:\MrsCAD\Documents\myFreeCADFile.FCstd”.
FreeCAD can also be used to create and run macros. These are Python scripts that can perform any action that the user can perform on a system. When running a macro from an outside source, it is your responsibility to ensure you trust the author.
@@ -28,5 +25,4 @@ When reading the online version of the User Manual within FreeCAD, manual conten
FreeCAD is Free Software and therefore may be packaged by other people, who may include additional software or modify the source code. We do not vouch for these third-party packages and cannot tell you what they contain and what they do regarding your privacy. The official packages are explicitly listed in our download page.
- [based on the GIMP privacy policy](https://www.gimp.org/about/privacy.html)
*The above privacy policy is based on the [GIMP privacy policy](https://www.gimp.org/about/privacy.html).*
+22 -34
View File
@@ -1,6 +1,6 @@
<a href="https://freecad.org"><img src="/src/Gui/Icons/freecad.svg" height="100px" width="100px"></a>
### Your own 3D parametric modeler
### Your own 3D Parametric Modeler
[Website](https://www.freecad.org) •
[Documentation](https://wiki.freecad.org) •
@@ -10,7 +10,7 @@
[Blog](https://blog.freecad.org)
[![Release](https://img.shields.io/github/release/freecad/freecad.svg)](https://github.com/freecad/freecad/releases/latest) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/freecad/localized.svg)](https://crowdin.com/project/freecad) [![Liberapay](https://img.shields.io/liberapay/receives/FreeCAD.svg?logo=liberapay)](https://liberapay.com/FreeCAD)
[![Release](https://img.shields.io/github/release/freecad/freecad.svg)](https://github.com/freecad/freecad/releases/latest) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/freecad/localized.svg)](https://crowdin.com/project/freecad)
<img src="/.github/images/partdesign.png" width="800"/>
@@ -22,8 +22,8 @@ modeler made primarily to design real-life objects of any size.
Parametric modeling allows you to easily modify your design by going back into
your model history to change its parameters.
* **Create 3D from 2D and back** FreeCAD lets you to sketch geometry constrained
2D shapes and use them as a base to build other objects.
* **Create 3D from 2D and back** FreeCAD lets you sketch geometry-constrained
2D shapes and use them as a base to build other objects.
It contains many components to adjust dimensions or extract design details from
3D models to create high quality production-ready drawings.
@@ -44,33 +44,20 @@ Installing
----------
Precompiled packages for stable releases are available for Windows, macOS and Linux on the
[Releases page](https://github.com/FreeCAD/FreeCAD/releases).
[latest releases page](https://github.com/FreeCAD/FreeCAD/releases/latest).
On most Linux distributions, FreeCAD is also directly installable from the
software center application.
For development releases check the [weekly-builds page](https://github.com/FreeCAD/FreeCAD-Bundle/releases/tag/weekly-builds).
For weekly development releases visit the [releases page](https://github.com/FreeCAD/FreeCAD/releases/).
Other options are described at the [wiki Download page](https://wiki.freecad.org/Download).
Other options are described on the [wiki Download page](https://wiki.freecad.org/Download).
Compiling
---------
Compiling FreeCAD requires installation of several libraries and their
development files such as OCCT (Open Cascade), Coin and Qt, listed in the
pages below. Once this is done, FreeCAD can be compiled with
CMake. On Windows, these libraries are bundled and offered by the
FreeCAD team in a convenient package. On Linux, they are usually found
in your distribution's repositories, and on macOS and other platforms,
you will usually have to compile them yourself.
The pages below contain up-to-date build instructions:
- [Linux](https://wiki.freecad.org/Compile_on_Linux)
- [Windows](https://wiki.freecad.org/Compile_on_Windows)
- [macOS](https://wiki.freecad.org/Compile_on_MacOS)
- [Cygwin](https://wiki.freecad.org/Compile_on_Cygwin)
- [MinGW](https://wiki.freecad.org/Compile_on_MinGW)
See the [Developers Handbook Getting Started](https://freecad.github.io/DevelopersHandbook/gettingstarted/)
for build instructions.
Reporting Issues
@@ -78,45 +65,46 @@ Reporting Issues
To report an issue please:
- Consider posting to the [Forum](https://forum.freecad.org), [Discord](https://discord.com/invite/F4hdxzYZfc) channel, or [Reddit](https://www.reddit.com/r/FreeCAD) to verify the issue;
- Consider posting to the [Forum](https://forum.freecad.org), [Discord](https://discord.com/invite/w2cTKGzccC) channel, or [Reddit](https://www.reddit.com/r/FreeCAD) to verify the issue;
- Search the existing [issues](https://github.com/FreeCAD/FreeCAD/issues) for potential duplicates;
- Use the most updated stable or [development versions](https://github.com/FreeCAD/FreeCAD-Bundle/releases/tag/weekly-builds) of FreeCAD;
- Post version info from e.g. `Help > About FreeCAD > Copy to clipboard`;
- Use the most updated stable or [development versions](https://github.com/FreeCAD/FreeCAD/releases/) of FreeCAD;
- Post version info from `Help > About FreeCAD > Copy to clipboard`;
- Restart FreeCAD in safe mode `Help > Restart in safe mode` and try to reproduce the issue again. If the issue is resolved it can be fixed by deleting the FreeCAD config files.
- Start recording a macro `Macro > Macro recording...` and repeat all steps. Stop recording after the issue occurs and upload the saved macro or copy the macro code in the issue;
- Post a Step-By-Step explanation on how to recreate the issue;
- Upload an example file (FCStd as ZIP file) to demonstrate the problem;
For more detail see:
For more details see:
- [Bug Tracker](https://github.com/FreeCAD/FreeCAD/issues)
- [Reporting Issues and Requesting Features](https://github.com/FreeCAD/FreeCAD/issues/new/choose)
- [Contributing](https://github.com/FreeCAD/FreeCAD/blob/main/CONTRIBUTING.md)
- [Help Forum](https://forum.freecad.org/viewforum.php?f=3)
- [Developers Handbook](https://freecad.github.io/DevelopersHandbook/)
> [!NOTE]
The [FPA](https://fpa.freecad.org) offers developers the opportunity
to apply for a grant to work on projects of their choosing. Check
[jobs and funding](https://blog.freecad.org/jobs/) to know more.
Usage & Getting help
Usage & Getting Help
--------------------
The FreeCAD wiki contains documentation on
general FreeCAD usage, Python scripting, and development. These
pages might help you get started:
general FreeCAD usage, Python scripting, and development.
View these pages for more information:
- [Getting started](https://wiki.freecad.org/Getting_started)
- [Features list](https://wiki.freecad.org/Feature_list)
- [Frequent questions](https://wiki.freecad.org/FAQ/en)
- [Workbenches](https://wiki.freecad.org/Workbenches)
- [Scripting](https://wiki.freecad.org/Power_users_hub)
- [Development](https://wiki.freecad.org/Developer_hub)
- [Developers Handbook](https://freecad.github.io/DevelopersHandbook/)
The [FreeCAD forum](https://forum.freecad.org) is also a great place
to find help and solve specific problems you might encounter when
learning to use FreeCAD.
The [FreeCAD forum](https://forum.freecad.org) is a great place
to find help and solve specific problems when learning to use FreeCAD.
---
<p>This project receives generous infrastructure support from
<a href="https://www.digitalocean.com/">
+9 -9
View File
@@ -1,29 +1,29 @@
# Security Policy
The FreeCAD project is a FOSS (Free and Open-Source Software) project that has a community of thousands of users and
The FreeCAD project is a FOSS (Free and Open-Source Software) project that has a community of thousands of users and
hundreds of developers worldwide. We encourage responsible reporting of security vulnerabilities that may affect users
of this software, and will endeavor to address these vulnerabilities when they are discovered.
## Bounties
FreeCAD does not have a program to pay bounties for security bugs. If you discover a vulnerability that affects a part
of the FreeCAD project (either directly in FreeCAD, in a library it depends on, or in any of the various other
FreeCAD does not have a program to pay bounties for security bugs. If you discover a vulnerability that affects a part
of the FreeCAD project (either directly in FreeCAD, in a library it depends on, or in any of the various other
subprojects such as our website, forums, etc.) we ask you to join the large community of volunteer contributors and
file a report about the issue.
Note that funds may be available from the [FreeCAD Project Association (FPA)](https://fpa.freecad.org) to pursue
security research and/or the development of fixes to any vulnerabilities discovered. However, vulnerabilities held as
Note that funds may be available from the [FreeCAD Project Association (FPA)](https://fpa.freecad.org) to pursue
security research and/or the development of fixes to any vulnerabilities discovered. However, vulnerabilities held as
hostage in demands for "bounties" will not be entertained. Contact the FPA at fpa@freecad.org for more information.
## Supported Versions
FreeCAD implements security fixes to the current release series, and to the current development on the master branch.
FreeCAD implements security fixes to the current release series, and to the current development on the main branch.
| Version | Supported |
|---------| ------------------ |
| 0.22dev | :white_check_mark: |
| 0.21 | :white_check_mark: |
| < 0.21 | :x: |
| 1.1dev | :white_check_mark: |
| 1.0 | :white_check_mark: |
| < 1.0 | :x: |
## Reporting a Vulnerability
+23 -12
View File
@@ -1,8 +1,8 @@
# - Try to find Eigen3 lib
#
# This module supports requiring a minimum version, e.g. you can do
# find_package(Eigen3 3.1.2)
# to require version 3.1.2 or newer of Eigen3.
# find_package(Eigen3 3.4.0)
# to require version 3.4.0 or newer of Eigen3.
#
# Once done this will define
#
@@ -17,22 +17,33 @@
if(NOT Eigen3_FIND_VERSION)
set(Eigen3_FIND_VERSION_MAJOR 3)
set(Eigen3_FIND_VERSION_MINOR 0)
set(Eigen3_FIND_VERSION_MINOR 4)
set(Eigen3_FIND_VERSION_PATCH 0)
set(Eigen3_FIND_VERSION "${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}")
endif(NOT Eigen3_FIND_VERSION)
macro(_eigen3_check_version)
file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header)
# file Version exists from Eigen3 5.0.0
if (EXISTS "${EIGEN3_INCLUDE_DIR}/Eigen/Version")
file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/Version" _eigen3_version_header)
string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}")
set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}")
string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}")
set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}")
string(REGEX MATCH "define[ \t]+EIGEN_PATCH_VERSION[ \t]+([0-9]+)" _eigen3_patch_version_match "${_eigen3_version_header}")
set(EIGEN3_PATCH_VERSION "${CMAKE_MATCH_1}")
set(EIGEN3_VERSION ${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION}.${EIGEN3_PATCH_VERSION})
else()
file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header)
string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}")
set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}")
string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}")
set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}")
string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}")
set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}")
set(EIGEN3_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION})
endif()
string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}")
set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}")
string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}")
set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}")
string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}")
set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}")
set(EIGEN3_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION})
if(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
set(EIGEN3_VERSION_OK FALSE)
message(STATUS "Eigen3 version ${EIGEN3_VERSION} found in ${EIGEN3_INCLUDE_DIR}, "
+4 -7
View File
@@ -9,10 +9,10 @@
IF ( CMAKE_PKGCONFIG_EXECUTABLE )
MESSAGE( STATUS "Detecting KDL" )
SET(ENV{PKG_CONFIG_PATH} "${KDL_INSTALL}/lib/pkgconfig/")
MESSAGE( "Looking for KDL in: ${KDL_INSTALL}")
PKGCONFIG( "orocos-kdl >= 0.99" KDL_FOUND KDL_INCLUDE_DIRS KDL_DEFINES KDL_LINK_DIRS KDL_LIBS )
PKGCONFIG( "orocos-kdl >= 1.4.0" KDL_FOUND KDL_INCLUDE_DIRS KDL_DEFINES KDL_LINK_DIRS KDL_LIBS )
IF( KDL_FOUND )
MESSAGE(" Includes in: ${KDL_INCLUDE_DIRS}")
@@ -22,13 +22,10 @@ IF ( CMAKE_PKGCONFIG_EXECUTABLE )
INCLUDE_DIRECTORIES( ${KDL_INCLUDE_DIRS} )
LINK_DIRECTORIES( ${KDL_LINK_DIRS})
#OROCOS_PKGCONFIG_INCPATH("${KDLTK_INCLUDE_DIRS}")
#OROCOS_PKGCONFIG_LIBS("${KDL_LIBS}")
#OROCOS_PKGCONFIG_LIBPATH("${KDL_LINK_DIRS}")
SET(ENV{PKG_CONFIG_PATH} "${KDL_INSTALL}/lib/pkgconfig/:${OROCOS_INSTALL}/lib/pkgconfig")
MESSAGE( "Looking for KDL Toolkit in: ${PKG_CONFIG_PATH}")
PKGCONFIG( "orocos-kdltk-${OROCOS_TARGET} >= 0.99" KDLTK_FOUND KDLTK_INCLUDE_DIRS KDLTK_DEFINES KDLTK_LINK_DIRS KDLTK_LIBS )
PKGCONFIG( "orocos-kdltk-${OROCOS_TARGET} >= 1.4.0" KDLTK_FOUND KDLTK_INCLUDE_DIRS KDLTK_DEFINES KDLTK_LINK_DIRS KDLTK_LIBS )
IF(KDLTK_FOUND)
INCLUDE_DIRECTORIES( ${KDLTK_INCLUDE_DIRS} )
LINK_DIRECTORIES( ${KDLTK_LINK_DIRS})
@@ -38,7 +35,7 @@ IF ( CMAKE_PKGCONFIG_EXECUTABLE )
IF(CORBA_ENABLED)
SET(ENV{PKG_CONFIG_PATH} "${KDL_INSTALL}/lib/pkgconfig/:${OROCOS_INSTALL}/lib/pkgconfig")
MESSAGE("Looking for KDL Toolkit CORBA extension in ${PKG_CONFIG_PATH}")
PKGCONFIG( "orocos-kdltk-corba-${OROCOS_TARGET} >= 0.99" KDLTKCORBA_FOUND KDLTKCORBA_INCLUDE_DIRS KDLTKCORBA_DEFINES KDLTKCORBA_LINK_DIRS KDLTKCORBA_LIBS )
PKGCONFIG( "orocos-kdltk-corba-${OROCOS_TARGET} >= 1.4.0" KDLTKCORBA_FOUND KDLTKCORBA_INCLUDE_DIRS KDLTKCORBA_DEFINES KDLTKCORBA_LINK_DIRS KDLTKCORBA_LIBS )
IF(KDLTKCORBA_FOUND)
INCLUDE_DIRECTORIES( ${KDLTKCORBA_INCLUDE_DIRS} )
LINK_DIRECTORIES( ${KDLTKCORBA_LINK_DIRS})
+53
View File
@@ -0,0 +1,53 @@
# - Find the lark library
# This module finds if lark is installed, and sets the following variables
# indicating where it is.
#
# LARK_FOUND - was lark found
# LARK_VERSION - the version of lark found as a string
# LARK_VERSION_MAJOR - the major version number of lark
# LARK_VERSION_MINOR - the minor version number of lark
# LARK_VERSION_PATCH - the patch version number of lark
include(FindPackageHandleStandardArgs)
if(Python3_EXECUTABLE)
message(STATUS "FindLark: Using Python3_EXECUTABLE = ${Python3_EXECUTABLE}")
# try to import lark into Python interpreter
execute_process(
COMMAND "${Python3_EXECUTABLE}" "-c"
"import lark; print(lark.__version__)"
RESULT_VARIABLE _LARK_SEARCH_SUCCESS
OUTPUT_VARIABLE LARK_VERSION
ERROR_VARIABLE _LARK_ERROR_VALUE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
message(DEBUG "FindLark: Result = ${_LARK_SEARCH_SUCCESS}")
message(DEBUG "FindLark: Version = ${LARK_VERSION}")
message(DEBUG "FindLark: Error = ${_LARK_ERROR_VALUE}")
if(_LARK_SEARCH_SUCCESS MATCHES 0)
# extract version components
string(REGEX REPLACE "\\." ";" _LARK_VERSION_LIST ${LARK_VERSION})
list(LENGTH _LARK_VERSION_LIST _LARK_VERSION_LIST_LEN)
if(_LARK_VERSION_LIST_LEN GREATER_EQUAL 1)
list(GET _LARK_VERSION_LIST 0 LARK_VERSION_MAJOR)
endif()
if(_LARK_VERSION_LIST_LEN GREATER_EQUAL 2)
list(GET _LARK_VERSION_LIST 1 LARK_VERSION_MINOR)
endif()
if(_LARK_VERSION_LIST_LEN GREATER_EQUAL 3)
list(GET _LARK_VERSION_LIST 2 LARK_VERSION_PATCH)
endif()
else()
message(STATUS "The BIM workbench requires the lark python package / module to be installed")
endif()
else()
message(STATUS "FindLark: Python3_EXECUTABLE not set")
endif()
find_package_handle_standard_args(LARK
REQUIRED_VARS LARK_VERSION
VERSION_VAR LARK_VERSION
)
+1 -1
View File
@@ -13,7 +13,7 @@ IF(Python3_Interpreter_FOUND)
# Try to import matplotlib into Python interpreter. Python
# interpreter was found previously as required package, so
# don't take care about this.
execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c"
execute_process(COMMAND "${Python3_EXECUTABLE}" "-c"
"import matplotlib as m; print(m.__version__); print(m.__path__[0]);"
RESULT_VARIABLE _MATPLOTLIB_SEARCH_SUCCESS
OUTPUT_VARIABLE _MATPLOTLIB_VALUES
+6 -5
View File
@@ -13,19 +13,15 @@
# See also: http://git.salome-platform.org/gitweb/?p=NETGENPLUGIN_SRC.git;a=summary
find_package(Netgen CONFIG)
find_package(Netgen CONFIG QUIET)
IF (Netgen_FOUND)
set(NGLIB_INCLUDE_DIR ${NETGEN_INCLUDE_DIRS})
set(NGLIB_LIBRARIES nglib)
set(NETGEN_DEFINITIONS -DNO_PARALLEL_THREADS -DOCCGEOMETRY)
# for external smesh only the following two variables are needed:
set(NETGEN_FOUND True)
set(NETGEN_INCLUDE_DIRS ${NETGEN_INCLUDE_DIRS})
ELSE ()
SET(NETGEN_DEFINITIONS -DNO_PARALLEL_THREADS -DOCCGEOMETRY)
IF (WIN32)
FIND_PATH(NGLIB_INCLUDE_DIR NAMES nglib.h PATHS ${NETGEN_INCLUDEDIR})
SET(NETGEN_LIBS nglib mesh occ interface)
@@ -147,3 +143,8 @@ IF (Netgen_FOUND)
MESSAGE(STATUS "Found NETGEN version ${NETGEN_VERSION_MAJOR}.${NETGEN_VERSION_MINOR}, calculated: ${NETGEN_VERSION_C}")
LIST(APPEND NETGEN_DEFINITIONS -DNETGEN_VERSION=${NETGEN_VERSION_C})
ENDIF ()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(NETGEN
REQUIRED_VARS NGLIB_INCLUDE_DIR NGLIB_LIBRARIES NETGEN_INCLUDE_DIRS
VERSION_VAR NETGEN_VERSION)
+116 -146
View File
@@ -1,4 +1,4 @@
# Try to find OCE / OCC
# Try to find OCC
# Once done this will define
#
# OCC_FOUND - system has OCC - OpenCASCADE
@@ -7,164 +7,134 @@
# OCC_LIBRARIES - Link this to use OCC
# OCC_OCAF_LIBRARIES - Link this to use OCC OCAF framework
# First try to find OpenCASCADE Community Edition
if(NOT DEFINED OCE_DIR)
# Check for OSX needs to come first because UNIX evaluates to true on OSX
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(DEFINED MACPORTS_PREFIX)
find_package(OCE QUIET HINTS ${MACPORTS_PREFIX}/Library/Frameworks)
elseif(DEFINED HOMEBREW_PREFIX)
find_package(OCE QUIET HINTS ${HOMEBREW_PREFIX}/Cellar/oce/*)
endif()
elseif(UNIX)
set(OCE_DIR "/usr/local/share/cmake/")
elseif(WIN32)
set(OCE_DIR "c:/OCE-0.4.0/share/cmake")
endif()
endif()
if(${FREECAD_USE_OCC_VARIANT} MATCHES "Community Edition")
find_package(OCE QUIET)
endif()
if(OCE_FOUND)
message(STATUS "-- OpenCASCADE Community Edition has been found.")
# Disable this define. For more details see bug #0001872
#add_definitions (-DHAVE_CONFIG_H)
set(OCC_INCLUDE_DIR ${OCE_INCLUDE_DIRS})
#set(OCC_LIBRARY_DIR ${OCE_LIBRARY_DIR})
else(OCE_FOUND) #look for OpenCASCADE
# we first try to find opencascade directly:
if(NOT OCCT_CMAKE_FALLBACK)
# we first try to find opencascade directly:
if (NOT OCCT_CMAKE_FALLBACK)
find_package(OpenCASCADE CONFIG QUIET)
if(NOT (CMAKE_VERSION VERSION_LESS 3.6.0))
get_property(flags DIRECTORY PROPERTY COMPILE_DEFINITIONS)
# OCCT 7.5 adds this define that causes hundreds of compiler warnings with Qt5.x, so remove it again
list(FILTER flags EXCLUDE REGEX [[GL_GLEXT_LEGACY]])
set_property(DIRECTORY PROPERTY COMPILE_DEFINITIONS ${flags})
endif()
endif(NOT OCCT_CMAKE_FALLBACK)
if(OpenCASCADE_FOUND)
get_property(flags DIRECTORY PROPERTY COMPILE_DEFINITIONS)
# OCCT 7.5 adds this define that causes hundreds of compiler warnings with Qt5.x, so remove it again
list(FILTER flags EXCLUDE REGEX [[GL_GLEXT_LEGACY]])
set_property(DIRECTORY PROPERTY COMPILE_DEFINITIONS ${flags})
endif ()
if (OpenCASCADE_FOUND)
set(OCC_FOUND ${OpenCASCADE_FOUND})
set(OCC_INCLUDE_DIR ${OpenCASCADE_INCLUDE_DIR})
set(OCC_LIBRARY_DIR ${OpenCASCADE_LIBRARY_DIR})
set(OCC_LIBRARIES ${OpenCASCADE_LIBRARIES})
set(OCC_OCAF_LIBRARIES TKCAF TKXCAF)
else(OpenCASCADE_FOUND)
if(WIN32)
if(CYGWIN OR MINGW)
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
/usr/include/opencascade
/usr/local/include/opencascade
/opt/opencascade/include
/opt/opencascade/inc
else ()
if (WIN32)
if (CYGWIN OR MINGW)
find_path(OCC_INCLUDE_DIR Standard_Version.hxx
/usr/include/opencascade
/usr/local/include/opencascade
/opt/opencascade/include
/opt/opencascade/inc
)
find_path(OCC_LIBRARY TKernel
/usr/lib
/usr/local/lib
/opt/opencascade/lib
)
else ()
find_path(OCC_INCLUDE_DIR Standard_Version.hxx
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/include"
)
find_library(OCC_LIBRARY TKernel
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/lib"
)
endif ()
else ()
find_path(OCC_INCLUDE_DIR Standard_Version.hxx
/usr/include/occt
/usr/include/opencascade
/usr/local/include/opencascade
/opt/opencascade/include
/opt/opencascade/inc
)
FIND_LIBRARY(OCC_LIBRARY TKernel
/usr/lib
/usr/local/lib
/opt/opencascade/lib
find_library(OCC_LIBRARY TKernel
/usr/lib
/usr/local/lib
/opt/opencascade/lib
)
else(CYGWIN OR MINGW)
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/include"
)
FIND_LIBRARY(OCC_LIBRARY TKernel
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\SIM\\OCC\\2;Installation Path]/lib"
)
endif(CYGWIN OR MINGW)
else(WIN32)
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
/usr/include/occt
/usr/include/opencascade
/usr/local/include/opencascade
/opt/opencascade/include
/opt/opencascade/inc
)
FIND_LIBRARY(OCC_LIBRARY TKernel
/usr/lib
/usr/local/lib
/opt/opencascade/lib
)
endif(WIN32)
if(OCC_LIBRARY)
GET_FILENAME_COMPONENT(OCC_LIBRARY_DIR ${OCC_LIBRARY} PATH)
IF(NOT OCC_INCLUDE_DIR)
FIND_PATH(OCC_INCLUDE_DIR Standard_Version.hxx
${OCC_LIBRARY_DIR}/../inc
)
ENDIF()
endif(OCC_LIBRARY)
endif(OpenCASCADE_FOUND)
endif(OCE_FOUND)
endif ()
if (OCC_LIBRARY)
get_filename_component(OCC_LIBRARY_DIR ${OCC_LIBRARY} PATH)
if (NOT OCC_INCLUDE_DIR)
find_path(OCC_INCLUDE_DIR Standard_Version.hxx
${OCC_LIBRARY_DIR}/../inc
)
endif ()
endif ()
endif ()
if(OCC_INCLUDE_DIR)
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAJOR
REGEX "#define OCC_VERSION_MAJOR.*"
)
string(REGEX MATCH "[0-9]+" OCC_MAJOR ${OCC_MAJOR})
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MINOR
REGEX "#define OCC_VERSION_MINOR.*"
)
string(REGEX MATCH "[0-9]+" OCC_MINOR ${OCC_MINOR})
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAINT
REGEX "#define OCC_VERSION_MAINTENANCE.*"
)
string(REGEX MATCH "[0-9]+" OCC_MAINT ${OCC_MAINT})
if (OCC_INCLUDE_DIR)
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAJOR
REGEX "#define OCC_VERSION_MAJOR.*"
)
string(REGEX MATCH "[0-9]+" OCC_MAJOR ${OCC_MAJOR})
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MINOR
REGEX "#define OCC_VERSION_MINOR.*"
)
string(REGEX MATCH "[0-9]+" OCC_MINOR ${OCC_MINOR})
file(STRINGS ${OCC_INCLUDE_DIR}/Standard_Version.hxx OCC_MAINT
REGEX "#define OCC_VERSION_MAINTENANCE.*"
)
string(REGEX MATCH "[0-9]+" OCC_MAINT ${OCC_MAINT})
set(OCC_VERSION_STRING "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}")
endif(OCC_INCLUDE_DIR)
set(OCC_VERSION_STRING "${OCC_MAJOR}.${OCC_MINOR}.${OCC_MAINT}")
endif ()
# handle the QUIETLY and REQUIRED arguments and set OCC_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OCC REQUIRED_VARS OCC_INCLUDE_DIR VERSION_VAR OCC_VERSION_STRING)
find_package_handle_standard_args(OCC REQUIRED_VARS OCC_INCLUDE_DIR VERSION_VAR OCC_VERSION_STRING)
if(OCC_FOUND)
set(OCC_LIBRARIES
TKFillet
TKMesh
TKernel
TKG2d
TKG3d
TKMath
TKShHealing
TKXSBase
TKBool
TKBO
TKBRep
TKTopAlgo
TKGeomAlgo
TKGeomBase
TKOffset
TKPrim
TKHLR
TKFeat
)
set(OCC_OCAF_LIBRARIES
TKBin
TKBinL
TKCAF
TKXCAF
TKLCAF
TKVCAF
TKCDF
TKMeshVS
TKService
TKV3d
)
if (OCC_FOUND)
set(OCC_LIBRARIES
TKFillet
TKMesh
TKernel
TKG2d
TKG3d
TKMath
TKShHealing
TKXSBase
TKBool
TKBO
TKBRep
TKTopAlgo
TKGeomAlgo
TKGeomBase
TKOffset
TKPrim
TKHLR
TKFeat
)
if (OCC_VERSION_STRING VERSION_GREATER_EQUAL 7.9.0)
list(APPEND OCC_LIBRARIES TKExpress)
endif ()
if(NOT OCC_VERSION_STRING VERSION_LESS 7.5.0)
list(APPEND OCC_OCAF_LIBRARIES TKRWMesh)
endif(NOT OCC_VERSION_STRING VERSION_LESS 7.5.0)
if(OCC_VERSION_STRING VERSION_LESS 7.8.0)
list(APPEND OCC_LIBRARIES TKIGES TKSTL TKSTEPBase TKSTEPAttr TKSTEP209 TKSTEP)
list(APPEND OCC_OCAF_LIBRARIES TKXDESTEP TKXDEIGES)
else(OCC_VERSION_STRING VERSION_LESS 7.8.0)
list(APPEND OCC_LIBRARIES TKDESTEP TKDEIGES TKDEGLTF TKDESTL)
endif(OCC_VERSION_STRING VERSION_LESS 7.8.0)
message(STATUS "-- Found OCE/OpenCASCADE version: ${OCC_VERSION_STRING}")
message(STATUS "-- OCE/OpenCASCADE include directory: ${OCC_INCLUDE_DIR}")
message(STATUS "-- OCE/OpenCASCADE shared libraries directory: ${OCC_LIBRARY_DIR}")
else(OCC_FOUND)
#message(SEND_ERROR "Neither OpenCASCADE Community Edition nor OpenCasCade were found: will not build CAD modules!")
endif(OCC_FOUND)
set(OCC_OCAF_LIBRARIES
TKBin
TKBinL
TKCAF
TKXCAF
TKLCAF
TKVCAF
TKCDF
TKMeshVS
TKService
TKV3d
TKRWMesh
)
if (OCC_VERSION_STRING VERSION_LESS 7.8.0)
list(APPEND OCC_LIBRARIES TKIGES TKSTL TKSTEPBase TKSTEPAttr TKSTEP209 TKSTEP)
list(APPEND OCC_OCAF_LIBRARIES TKXDESTEP TKXDEIGES)
else ()
list(APPEND OCC_LIBRARIES TKDESTEP TKDEIGES TKDEGLTF TKDESTL)
endif ()
message(STATUS "Found OpenCASCADE version: ${OCC_VERSION_STRING}")
message(STATUS " OpenCASCADE include directory: ${OCC_INCLUDE_DIR}")
message(STATUS " OpenCASCADE shared libraries directory: ${OCC_LIBRARY_DIR}")
endif ()
+1 -1
View File
@@ -118,7 +118,7 @@ if(PYCXX_FOUND)
${PYCXX_SOURCE_DIR}/IndirectPythonInterface.cxx
)
#set old 6.2 pycxx compatibility
#set old 6.2 pycxx compatibility
list(APPEND PYCXX_SOURCES ${PYCXX_SOURCE_DIR}/cxx_exceptions.cxx)
add_definitions(-DPYCXX_6_2_COMPATIBILITY)
#end old compatibility
+3 -3
View File
@@ -5,7 +5,7 @@
if(WIN32 OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
#pyside2 tools are often in same location as python interpreter
get_filename_component(PYTHON_BIN_DIR ${PYTHON_EXECUTABLE} PATH)
get_filename_component(PYTHON_BIN_DIR ${Python3_EXECUTABLE} PATH)
set(PYSIDE_BIN_DIR ${PYTHON_BIN_DIR})
endif(WIN32 OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
@@ -16,8 +16,8 @@ FIND_PACKAGE(Qt5 COMPONENTS Core Widgets)
IF(Qt5Core_VERSION VERSION_LESS 5.14)
# Legacy (< 5.14)
FIND_PROGRAM(PYSIDE2_UIC_EXECUTABLE NAMES python2-pyside2-uic pyside2-uic pyside2-uic-${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} pyuic5 HINTS ${PYSIDE_BIN_DIR})
FIND_PROGRAM(PYSIDE2_RCC_EXECUTABLE NAMES pyside2-rcc pyside2-rcc-${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} pyrcc5 HINTS ${PYSIDE_BIN_DIR})
FIND_PROGRAM(PYSIDE2_UIC_EXECUTABLE NAMES python2-pyside2-uic pyside2-uic pyside2-uic-${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} pyuic5 HINTS ${PYSIDE_BIN_DIR})
FIND_PROGRAM(PYSIDE2_RCC_EXECUTABLE NAMES pyside2-rcc pyside2-rcc-${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} pyrcc5 HINTS ${PYSIDE_BIN_DIR})
set(UICOPTIONS "")
set(RCCOPTIONS "")
ELSE()
+50 -18
View File
@@ -1,22 +1,54 @@
# The Qt for Python project officially recommends using pip to install PySide, so we expect to find PySide in the
# site-packages directory. The library will be called "PySide6.abi3.*", and there will be an "include" directory inside
# the site-packages/PySide6. Over time some distros may provide custom versions, so we also support using a more normal
# cMake find_package() call
# The Qt for Python project officially recommends using pip to install PySide,
# so we expect to find PySide in the site-packages directory.
# The library will be called "PySide6.abi3.*", and there will
# be an "include" directory inside the site-packages/PySide6.
# Over time some distros may provide custom versions, so we also support
# using a more normal cMake find_package() call
include(FindPackageHandleStandardArgs)
find_package(PySide6 CONFIG QUIET)
if(NOT PySide6_FOUND)
if(NOT PySide6_INCLUDE_DIR AND TARGET PySide6::pyside6)
get_property(PySide6_INCLUDE_DIR TARGET PySide6::pyside6 PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
endif()
if(NOT PySide6_INCLUDE_DIR)
find_pip_package(PySide6)
if (PySide6_FOUND)
set(PYSIDE_INCLUDE_DIR ${PySide6_INCLUDE_DIRS} CACHE INTERNAL "")
set(PYSIDE_LIBRARY ${PySide6_LIBRARIES} CACHE INTERNAL "")
set(PYSIDE_FOUND TRUE CACHE BOOL OFF)
set(PYSIDE_MAJOR_VERSION 6 CACHE INTERNAL 6)
endif()
endif()
find_pip_package(PySide6)
endif()
if(PySide6_FOUND)
# verify PySide6 version matches Qt6 version (major.minor)
if(PySide6_VERSION AND Qt6_VERSION)
string(REGEX MATCH "^([0-9]+)\\.([0-9]+)" _qt6_major_minor "${Qt6_VERSION}")
string(REGEX MATCH "^([0-9]+)\\.([0-9]+)" _pyside6_major_minor "${PySide6_VERSION}")
message(STATUS "Qt version: ${Qt6_VERSION}")
message(STATUS "PySide version: ${PySide6_VERSION}")
if(NOT _qt6_major_minor STREQUAL _pyside6_major_minor)
message(FATAL_ERROR
" --------------------------------------------------------
Qt/PySide version mismatch!
cmake found Qt: ${Qt6_VERSION}
cmake found PySide: ${PySide6_VERSION}
major.minor versions of Qt and PySide must match to avoid errors.
Ensure CMAKE_PREFIX_PATH points to matching Qt and PySide6 installations.
--------------------------------------------------------"
)
endif()
message(STATUS "PySide/Qt version check passed (${_pyside6_major_minor})")
endif()
if(NOT PySide6_INCLUDE_DIRS AND TARGET PySide6::pyside6)
get_property(PySide6_INCLUDE_DIRS TARGET PySide6::pyside6 PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
endif()
find_package_handle_standard_args(PySide6
REQUIRED_VARS PySide6_INCLUDE_DIRS
VERSION_VAR PySide6_VERSION
)
# Also provide the old-style variables so we don't have to update everything yet
set(PYSIDE_INCLUDE_DIR ${PySide6_INCLUDE_DIRS})
set(PYSIDE_LIBRARY ${PySide6_LIBRARIES})
set(PYSIDE_FOUND TRUE)
set(PYSIDE_MAJOR_VERSION 6)
endif()
+6 -6
View File
@@ -3,11 +3,11 @@
# PYSIDE_RCC_EXECUTABLE - Location of PYSIDE6RCC executable
# PYSIDE_TOOLS_FOUND - PYSIDE6 utilities found.
if (TARGET Qt6::uic)
if(TARGET Qt6::uic)
get_target_property(PYSIDE6_UIC_EXECUTABLE Qt6::uic LOCATION)
set(UICOPTIONS "--generator=python")
endif()
if (TARGET Qt6::rcc)
if(TARGET Qt6::rcc)
get_target_property(PYSIDE6_RCC_EXECUTABLE Qt6::rcc LOCATION)
set(RCCOPTIONS "--generator=python" "--compress-algo=zlib" "--compress=1")
endif()
@@ -18,15 +18,15 @@ set(PySideTools_VERSION 6)
if(PYSIDE_RCC_EXECUTABLE AND PYSIDE_UIC_EXECUTABLE)
set(PYSIDE_TOOLS_FOUND TRUE)
if (NOT PYSIDE6Tools_FIND_QUIETLY)
if(NOT PYSIDE6Tools_FIND_QUIETLY)
message(STATUS "Found PYSIDE6 tools: ${PYSIDE_UIC_EXECUTABLE}, ${PYSIDE_RCC_EXECUTABLE}")
endif ()
endif()
else()
if(PYSIDE6Tools_FIND_REQUIRED)
message(FATAL_ERROR "PYSIDE6 tools could not be found, but are required.")
else()
if (NOT PYSIDE6Tools_FIND_QUIETLY)
if(NOT PYSIDE6Tools_FIND_QUIETLY)
message(STATUS "PYSIDE6 tools: not found.")
endif ()
endif()
endif()
endif()
+9 -9
View File
@@ -10,19 +10,19 @@ if(NOT Shiboken6_FOUND)
endif()
if(NOT Shiboken6_INCLUDE_DIR)
find_pip_package(Shiboken6)
if (Shiboken6_FOUND)
set(SHIBOKEN_LIBRARY ${Shiboken6_LIBRARIES} CACHE INTERNAL "")
set(SHIBOKEN_MAJOR_VERSION 6 CACHE INTERNAL 6)
set(SHIBOKEN_FOUND ON CACHE BOOL OFF)
if(Shiboken6_FOUND)
set(SHIBOKEN_LIBRARY ${Shiboken6_LIBRARIES})
set(SHIBOKEN_MAJOR_VERSION 6)
set(SHIBOKEN_FOUND ON)
endif()
# The include directory we actually want is part of shiboken6-generator
find_pip_package(shiboken6_generator)
if (shiboken6_generator_FOUND)
set(SHIBOKEN_INCLUDE_DIR ${shiboken6_generator_INCLUDE_DIRS} CACHE PATH "")
if(shiboken6_generator_FOUND)
set(SHIBOKEN_INCLUDE_DIR ${shiboken6_generator_INCLUDE_DIRS})
endif()
endif()
else()
set(SHIBOKEN_INCLUDE_DIR ${Shiboken6_INCLUDE_DIRS} CACHE PATH "")
set(SHIBOKEN_LIBRARY ${Shiboken6_LIBRARIES} CACHE INTERNAL "")
set(SHIBOKEN_FOUND ON CACHE BOOL OFF)
set(SHIBOKEN_INCLUDE_DIR ${Shiboken6_INCLUDE_DIRS})
set(SHIBOKEN_LIBRARY ${Shiboken6_LIBRARIES})
set(SHIBOKEN_FOUND ON)
endif()
@@ -8,8 +8,8 @@ macro(CheckInterModuleDependencies)
if(${dependent})
foreach(prerequisite IN LISTS ARGN)
if(NOT ${prerequisite})
message(STATUS "${dependent} requires ${prerequisite} to be ON, but it"
" is \"${${prerequisite}}\"")
message(SEND_ERROR "${dependent} requires ${prerequisite} to be ON, but it"
" is \"${${prerequisite}}\"")
set(${dependent} OFF PARENT_SCOPE)
break()
endif(NOT ${prerequisite})
@@ -17,17 +17,19 @@ macro(CheckInterModuleDependencies)
endif(${dependent})
endfunction(REQUIRES_MODS)
REQUIRES_MODS(BUILD_BIM BUILD_PART BUILD_MESH BUILD_DRAFT)
REQUIRES_MODS(BUILD_DRAFT BUILD_SKETCHER)
REQUIRES_MODS(BUILD_ASSEMBLY BUILD_PART BUILD_PART_DESIGN BUILD_SPREADSHEET)
REQUIRES_MODS(BUILD_BIM BUILD_PART BUILD_MESH BUILD_MESH_PART BUILD_DRAFT)
REQUIRES_MODS(BUILD_DRAFT BUILD_SKETCHER BUILD_TECHDRAW)
REQUIRES_MODS(BUILD_DRAWING BUILD_PART BUILD_SPREADSHEET)
REQUIRES_MODS(BUILD_FEM BUILD_PART)
REQUIRES_MODS(BUILD_IDF BUILD_PART)
REQUIRES_MODS(BUILD_IMPORT BUILD_PART)
REQUIRES_MODS(BUILD_IMPORT BUILD_PART BUILD_PART_DESIGN)
REQUIRES_MODS(BUILD_INSPECTION BUILD_MESH BUILD_POINTS BUILD_PART)
REQUIRES_MODS(BUILD_JTREADER BUILD_MESH)
REQUIRES_MODS(BUILD_MESH_PART BUILD_PART BUILD_MESH BUILD_SMESH)
REQUIRES_MODS(BUILD_MESH_PART BUILD_PART BUILD_MESH)
REQUIRES_MODS(BUILD_FLAT_MESH BUILD_MESH_PART)
REQUIRES_MODS(BUILD_OPENSCAD BUILD_MESH_PART BUILD_DRAFT)
REQUIRES_MODS(BUILD_MATERIAL_EXTERNAL BUILD_MATERIAL)
REQUIRES_MODS(BUILD_MEASURE BUILD_PART)
REQUIRES_MODS(BUILD_PART BUILD_MATERIAL)
REQUIRES_MODS(BUILD_PART_DESIGN BUILD_SKETCHER)
# REQUIRES_MODS(BUILD_CAM BUILD_PART BUILD_MESH BUILD_ROBOT)
@@ -37,5 +39,6 @@ macro(CheckInterModuleDependencies)
REQUIRES_MODS(BUILD_SANDBOX BUILD_PART BUILD_MESH)
REQUIRES_MODS(BUILD_SKETCHER BUILD_PART)
REQUIRES_MODS(BUILD_SPREADSHEET BUILD_DRAFT)
REQUIRES_MODS(BUILD_TECHDRAW BUILD_PART BUILD_SPREADSHEET)
REQUIRES_MODS(BUILD_SURFACE BUILD_PART)
REQUIRES_MODS(BUILD_TECHDRAW BUILD_PART BUILD_PART_DESIGN BUILD_SPREADSHEET BUILD_MEASURE BUILD_IMPORT)
endmacro(CheckInterModuleDependencies)
+6 -6
View File
@@ -84,15 +84,15 @@ macro(ChooseQtVersion)
endif ()
set(_FREECAD_QT_VERSION "${FREECAD_QT_VERSION}")
else ()
find_package(Qt5 QUIET COMPONENTS Core)
set(_FREECAD_QT_VERSION 5)
if (NOT Qt5_FOUND)
find_package(Qt6 QUIET COMPONENTS Core)
if (NOT Qt6_FOUND)
find_package(Qt6 QUIET COMPONENTS Core)
set(_FREECAD_QT_VERSION 6)
if (NOT Qt6_FOUND)
find_package(Qt5 QUIET COMPONENTS Core)
if (NOT Qt5_FOUND)
message(FATAL_ERROR
"Could not find a valid Qt installation. Consider setting Qt5_DIR or Qt6_DIR (as needed).")
endif ()
set(_FREECAD_QT_VERSION 6)
set(_FREECAD_QT_VERSION 5)
endif ()
endif ()
set(FREECAD_QT_MAJOR_VERSION "${_FREECAD_QT_VERSION}" CACHE INTERNAL
@@ -9,17 +9,16 @@ macro(CompilerChecksAndSetups)
# ================================================================================
# Needed for boost1.69
# Avoid that Python (pyerrors.h) defines snprintf and vsnprintf
if (MSVC AND NOT MSVC_VERSION VERSION_LESS 1900)
add_definitions(-DHAVE_SNPRINTF)
elseif (MINGW)
add_definitions(-DHAVE_SNPRINTF)
endif()
# Use a heuristic of 1 GiB of RAM needed per compiler job and limit to
# a single link job. Modern linkers are multithreaded and running them concurrently
# can exhaust resources.
cmake_host_system_information(RESULT avail_mem_MiB QUERY TOTAL_PHYSICAL_MEMORY)
math(EXPR max_compile_procs "${avail_mem_MiB} / 1024")
set_property(GLOBAL PROPERTY JOB_POOLS compile_jobs=${max_compile_procs} link_jobs=1)
# Allow developers to use Boost < 1.65
# Allow developers to use Boost < 1.74
if (NOT BOOST_MIN_VERSION)
set(BOOST_MIN_VERSION 1.65)
set(BOOST_MIN_VERSION 1.74)
endif()
# For older cmake versions the variable 'CMAKE_CXX_COMPILER_VERSION' is missing
@@ -28,27 +27,27 @@ macro(CompilerChecksAndSetups)
OUTPUT_VARIABLE CMAKE_CXX_COMPILER_VERSION)
endif(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_CXX_COMPILER_VERSION)
# Enabled C++17 for Freecad 0.20 and later
set(BUILD_ENABLE_CXX_STD "C++17" CACHE STRING "Enable C++ standard")
set_property(CACHE BUILD_ENABLE_CXX_STD PROPERTY STRINGS
"C++17"
"C++20"
)
# Enabled C++20 for Freecad 1.1 and later
set(BUILD_ENABLE_CXX_STD "C++20" CACHE STRING "Enable C++ standard")
set_property(CACHE BUILD_ENABLE_CXX_STD PROPERTY STRINGS
"C++20"
"C++23"
)
if (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3)
message(FATAL_ERROR "FreeCAD 0.20 and later requires C++17. G++ must be 7.3 or later, the used version is ${CMAKE_CXX_COMPILER_VERSION}")
elseif(CMAKE_COMPILER_IS_CLANGXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.0)
message(FATAL_ERROR "FreeCAD 0.20 and later requires C++17. Clang must be 6.0 or later, the used version is ${CMAKE_CXX_COMPILER_VERSION}")
endif()
if (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 11.2)
message(FATAL_ERROR "FreeCAD 1.1 and later requires C++20. G++ must be 11.2 or later, the used version is ${CMAKE_CXX_COMPILER_VERSION}")
elseif(CMAKE_COMPILER_IS_CLANGXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14.0)
message(FATAL_ERROR "FreeCAD 1.1 and later requires C++20. Clang must be 14.0 or later, the used version is ${CMAKE_CXX_COMPILER_VERSION}")
endif()
# Escape the two plus chars as otherwise cmake complains about invalid regex
if(${BUILD_ENABLE_CXX_STD} MATCHES "C\\+\\+23")
set(CMAKE_CXX_STANDARD 23)
elseif(${BUILD_ENABLE_CXX_STD} MATCHES "C\\+\\+20")
else()
set(CMAKE_CXX_STANDARD 20)
else()#Enabled C++17
set(CMAKE_CXX_STANDARD 17)
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Log the compiler and version
message(STATUS "Compiler: ${CMAKE_CXX_COMPILER_ID}, version: ${CMAKE_CXX_COMPILER_VERSION}")
@@ -58,6 +57,8 @@ macro(CompilerChecksAndSetups)
configure_file(${CMAKE_SOURCE_DIR}/src/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
add_definitions(-DHAVE_CONFIG_H)
set(CMAKE_CXX_FLAGS "-fdiagnostics-color ${CMAKE_CXX_FLAGS}")
# For now only set pedantic option for clang
if(CMAKE_COMPILER_IS_CLANGXX)
set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wpedantic -Wno-write-strings ${CMAKE_CXX_FLAGS}")
@@ -82,6 +83,15 @@ macro(CompilerChecksAndSetups)
endif()
endif()
endif(BUILD_DYNAMIC_LINK_PYTHON)
if(BUILD_USE_LIBCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
endif()
if(BUILD_ENABLE_TIME_TRACE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ftime-trace")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftime-trace")
endif()
endif(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX)
if(CMAKE_COMPILER_IS_CLANGXX)
@@ -90,15 +100,15 @@ macro(CompilerChecksAndSetups)
#
# https://en.wikipedia.org/wiki/Xcode#Latest_versions
if (APPLE)
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-undefined-var-template")
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-undefined-var-template")
add_definitions(-DGL_SILENCE_DEPRECATION)
elseif (UNIX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-undefined-var-template")
endif()
# older boost.preprocessor turn off variadics for clang
# boost.preprocessor 1.74 and earlier turns off variadics for clang regardless of version, even though they
# work in all versions of clang that we support. Manually force variadic macro support until our oldest
# supported version of boost is 1.75 or higher.
add_definitions(-DBOOST_PP_VARIADICS=1)
message(STATUS "Force BOOST_PP_VARIADICS=1 for clang")
endif()
@@ -16,10 +16,10 @@ macro(ConfigureCMakeVariables)
endif()
set(PYCXX_INCLUDE_DIR
"${CMAKE_SOURCE_DIR}/src" CACHE PATH
"${CMAKE_SOURCE_DIR}/src/3rdParty/PyCXX" CACHE PATH
"Path to the directory containing PyCXX's CXX/Config.hxx include file")
set(PYCXX_SOURCE_DIR
"${CMAKE_SOURCE_DIR}/src/CXX" CACHE PATH
"${CMAKE_SOURCE_DIR}/src/3rdParty/PyCXX/CXX" CACHE PATH
"Path to the directory containing PyCXX's cxxextensions.c source file")
# used as compiler defines
@@ -3,19 +3,21 @@ macro(CopyLibpackDirectories)
if(FREECAD_COPY_DEPEND_DIRS_TO_BUILD)
message(STATUS "Copying libpack dependency directories to build directory...")
file(COPY ${FREECAD_LIBPACK_DIR}/bin/assistant.exe DESTINATION ${CMAKE_BINARY_DIR}/bin)
file(COPY ${FREECAD_LIBPACK_DIR}/bin/qt.conf DESTINATION ${CMAKE_BINARY_DIR}/bin)
file(COPY ${FREECAD_LIBPACK_DIR}/plugins/platforms DESTINATION ${CMAKE_BINARY_DIR}/bin)
file(COPY ${FREECAD_LIBPACK_DIR}/plugins/imageformats DESTINATION ${CMAKE_BINARY_DIR}/bin)
file(COPY ${FREECAD_LIBPACK_DIR}/plugins/iconengines DESTINATION ${CMAKE_BINARY_DIR}/bin)
file(COPY ${FREECAD_LIBPACK_DIR}/plugins/sqldrivers DESTINATION ${CMAKE_BINARY_DIR}/bin)
file(COPY ${FREECAD_LIBPACK_DIR}/plugins/styles DESTINATION ${CMAKE_BINARY_DIR}/bin)
file(WRITE ${CMAKE_BINARY_DIR}/bin/qt.conf "[Paths]\nPrefix=..\n")
if(NOT FREECAD_LIBPACK_VERSION VERSION_GREATER_EQUAL "3.0.0")
file(COPY ${FREECAD_LIBPACK_DIR}/plugins/printsupport DESTINATION ${CMAKE_BINARY_DIR}/bin)
endif()
if(FREECAD_LIBPACK_VERSION VERSION_GREATER_EQUAL "3.0.0")
file(COPY ${FREECAD_LIBPACK_DIR}/plugins/tls DESTINATION ${CMAKE_BINARY_DIR}/bin)
endif()
file(COPY ${FREECAD_LIBPACK_DIR}/resources DESTINATION ${CMAKE_BINARY_DIR})
if(FREECAD_LIBPACK_VERSION VERSION_GREATER_EQUAL "3.0.0" AND FREECAD_LIBPACK_VERSION VERSION_LESS "3.1.0")
file(COPY ${FREECAD_LIBPACK_DIR}/resources DESTINATION ${CMAKE_BINARY_DIR})
endif()
message(STATUS "... end copying.\n=======================================\n")
endif()
@@ -40,8 +42,9 @@ macro(CopyLibpackDirectories)
file(COPY ${FREECAD_LIBPACK_DIR}/plugins/imageformats DESTINATION ${CMAKE_BINARY_DIR}/bin)
file(COPY ${FREECAD_LIBPACK_DIR}/plugins/platforms DESTINATION ${CMAKE_BINARY_DIR}/bin)
file(COPY ${FREECAD_LIBPACK_DIR}/plugins/styles DESTINATION ${CMAKE_BINARY_DIR}/bin)
file(COPY ${FREECAD_LIBPACK_DIR}/resources DESTINATION ${CMAKE_BINARY_DIR})
file(WRITE ${CMAKE_BINARY_DIR}/bin/qt.conf "[Paths]\nPrefix=..\n")
if(FREECAD_LIBPACK_VERSION VERSION_LESS "3.1.0")
file(COPY ${FREECAD_LIBPACK_DIR}/resources DESTINATION ${CMAKE_BINARY_DIR})
endif()
endif()
endif()
@@ -59,7 +62,9 @@ macro(CopyLibpackDirectories)
if(FREECAD_LIBPACK_VERSION VERSION_GREATER_EQUAL "3.0.0")
install(DIRECTORY ${FREECAD_LIBPACK_DIR}/plugins/tls DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
endif()
install(DIRECTORY ${FREECAD_LIBPACK_DIR}/resources DESTINATION ${CMAKE_INSTALL_PREFIX})
if(FREECAD_LIBPACK_VERSION VERSION_LESS "3.1.0")
install(DIRECTORY ${FREECAD_LIBPACK_DIR}/resources DESTINATION ${CMAKE_INSTALL_PREFIX})
endif()
install(DIRECTORY ${FREECAD_LIBPACK_DIR}/bin DESTINATION ${CMAKE_INSTALL_PREFIX})
install(DIRECTORY ${FREECAD_LIBPACK_DIR}/lib DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.dll")
if(FREECAD_LIBPACK_VERSION VERSION_GREATER_EQUAL "3.0.0")
@@ -4,14 +4,14 @@ macro(CreatePackagingTargets)
#
#add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
add_custom_target(dist-git
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/Tools/makedist.py
COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/Tools/makedist.py
--bindir=${CMAKE_BINARY_DIR}
--major=${PACKAGE_VERSION_MAJOR}
--minor=${PACKAGE_VERSION_MINOR}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
add_custom_target(distdfsg-git
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/Tools/makedist.py
COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/Tools/makedist.py
--bindir=${CMAKE_BINARY_DIR}
--major=${PACKAGE_VERSION_MAJOR}
--minor=${PACKAGE_VERSION_MINOR}
@@ -20,7 +20,7 @@ macro(CreatePackagingTargets)
)
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX OR MINGW)
add_custom_target(distcheck-git
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/Tools/makedist.py
COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/Tools/makedist.py
--bindir=${CMAKE_BINARY_DIR}
--major=${PACKAGE_VERSION_MAJOR}
--minor=${PACKAGE_VERSION_MINOR}
@@ -28,7 +28,7 @@ macro(CreatePackagingTargets)
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
add_custom_target(distcheckdfsg-git
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/Tools/makedist.py
COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/Tools/makedist.py
--bindir=${CMAKE_BINARY_DIR}
--major=${PACKAGE_VERSION_MAJOR}
--minor=${PACKAGE_VERSION_MINOR}
@@ -10,17 +10,21 @@ macro(InitializeFreeCADBuildOptions)
option(FREECAD_USE_EXTERNAL_KDL "Use system installed orocos-kdl instead of the bundled." OFF)
option(FREECAD_USE_EXTERNAL_FMT "Use system installed fmt library if available instead of fetching the source." ON)
option(FREECAD_USE_EXTERNAL_ONDSELSOLVER "Use system installed OndselSolver instead of git submodule." OFF)
option(FREECAD_USE_EXTERNAL_E57FORMAT "Use system installed libE57Format instead of the bundled." OFF)
option(FREECAD_USE_EXTERNAL_GTEST "Use system installed Google Test and Google Mock" OFF)
option(FREECAD_USE_FREETYPE "Builds the features using FreeType libs" ON)
option(FREECAD_BUILD_DEBIAN "Prepare for a build of a Debian package" OFF)
option(FREECAD_CHECK_PIVY "Check for pivy version using Python at build time" ON)
option(FREECAD_PARALLEL_COMPILE_JOBS "Compilation jobs pool size to fit memory limitations.")
option(FREECAD_PARALLEL_LINK_JOBS "Linkage jobs pool size to fit memory limitations.")
option(BUILD_WITH_CONDA "Set ON if you build FreeCAD with conda" OFF)
option(BUILD_DYNAMIC_LINK_PYTHON "If OFF extension-modules do not link against python-libraries" ON)
option(BUILD_TRACY_FRAME_PROFILER "If ON then enables support for the Tracy frame profiler" OFF)
option(INSTALL_TO_SITEPACKAGES "If ON the freecad root namespace (python) is installed into python's site-packages" ON)
option(INSTALL_PREFER_SYMLINKS "If ON then fc_copy_sources macro will create symlinks instead of copying files" OFF)
option(OCCT_CMAKE_FALLBACK "disable usage of occt-config files" OFF)
if (WIN32 OR APPLE)
option(FREECAD_USE_QT_FILEDIALOG "Use Qt's file dialog instead of the native one." OFF)
else()
option(FREECAD_USE_QT_FILEDIALOG "Use Qt's file dialog instead of the native one." ON)
endif()
option(FREECAD_USE_QT_DIALOGS "Use Qt's dialogs instead of the native one." OFF)
# == Win32 is default behaviour use the LibPack copied in Source tree ==========
if(MSVC)
@@ -68,15 +72,6 @@ macro(InitializeFreeCADBuildOptions)
ChooseQtVersion()
# https://blog.kitware.com/constraining-values-with-comboboxes-in-cmake-cmake-gui/
set(FREECAD_USE_OCC_VARIANT "Community Edition" CACHE STRING "Official OpenCASCADE version or community edition")
set_property(CACHE FREECAD_USE_OCC_VARIANT PROPERTY STRINGS
"Official Version"
"Community Edition"
)
configure_file(${CMAKE_SOURCE_DIR}/src/QtOpenGL.h.cmake ${CMAKE_BINARY_DIR}/src/QtOpenGL.h)
option(BUILD_DESIGNER_PLUGIN "Build and install the designer plugin" OFF)
if(APPLE)
@@ -116,6 +111,7 @@ macro(InitializeFreeCADBuildOptions)
option(BUILD_INSPECTION "Build the FreeCAD inspection module" ON)
option(BUILD_JTREADER "Build the FreeCAD jt reader module" OFF)
option(BUILD_MATERIAL "Build the FreeCAD material module" ON)
option(BUILD_MATERIAL_EXTERNAL "Build the FreeCAD material external interface module" OFF)
option(BUILD_MESH "Build the FreeCAD mesh module" ON)
option(BUILD_MESH_PART "Build the FreeCAD mesh part module" ON)
option(BUILD_FLAT_MESH "Build the FreeCAD flat mesh module" ON)
@@ -142,52 +138,65 @@ macro(InitializeFreeCADBuildOptions)
option(BUILD_CLOUD "Build the FreeCAD cloud module" OFF)
option(ENABLE_DEVELOPER_TESTS "Build the FreeCAD unit tests suit" ON)
if(MSVC)
if(MSVC OR APPLE)
set(FREECAD_3DCONNEXION_SUPPORT "NavLib" CACHE STRING "Select version of the 3Dconnexion device integration")
set_property(CACHE FREECAD_3DCONNEXION_SUPPORT PROPERTY STRINGS "NavLib" "Raw input")
else(MSVC)
set(FREECAD_3DCONNEXION_SUPPORT "Raw input")
endif(MSVC)
set_property(CACHE FREECAD_3DCONNEXION_SUPPORT PROPERTY STRINGS "None" "NavLib" "Legacy" "Both")
else(MSVC OR APPLE)
option(FREECAD_USE_3DCONNEXION_LEGACY "Enable support for 3Dconnexion devices." ON)
endif(MSVC OR APPLE)
if(FREECAD_3DCONNEXION_SUPPORT STREQUAL "NavLib")
set(FREECAD_USE_3DCONNEXION_NAVLIB ON)
elseif(FREECAD_3DCONNEXION_SUPPORT STREQUAL "Both")
set(FREECAD_USE_3DCONNEXION_NAVLIB ON)
set(FREECAD_USE_3DCONNEXION_LEGACY ON)
elseif(FREECAD_3DCONNEXION_SUPPORT STREQUAL "Legacy")
set(FREECAD_USE_3DCONNEXION_LEGACY ON)
elseif(FREECAD_3DCONNEXION_SUPPORT STREQUAL "None")
set(FREECAD_USE_3DCONNEXION_NAVLIB OFF)
set(FREECAD_USE_3DCONNEXION_LEGACY OFF)
endif()
if(APPLE AND FREECAD_USE_3DCONNEXION_LEGACY)
find_library(3DCONNEXIONCLIENT_FRAMEWORK 3DconnexionClient)
if(NOT (IS_DIRECTORY ${3DCONNEXIONCLIENT_FRAMEWORK}))
set(FREECAD_USE_3DCONNEXION_LEGACY OFF)
endif()
endif()
if(MSVC)
option(BUILD_FEM_NETGEN "Build the FreeCAD FEM module with the NETGEN mesher" ON)
option(FREECAD_USE_PCL "Build the features that use PCL libs" OFF) # 3/5/2021 current LibPack uses non-C++17 FLANN
option(FREECAD_USE_3DCONNEXION "Use the 3D connexion SDK to support 3d mouse." ON)
elseif(APPLE)
find_library(3DCONNEXIONCLIENT_FRAMEWORK 3DconnexionClient)
if(IS_DIRECTORY ${3DCONNEXIONCLIENT_FRAMEWORK})
option(FREECAD_USE_3DCONNEXION "Use the 3D connexion SDK to support 3d mouse." ON)
else(IS_DIRECTORY ${3DCONNEXIONCLIENT_FRAMEWORK})
option(FREECAD_USE_3DCONNEXION "Use the 3D connexion SDK to support 3d mouse." OFF)
endif(IS_DIRECTORY ${3DCONNEXIONCLIENT_FRAMEWORK})
else(MSVC)
set(FREECAD_USE_3DCONNEXION OFF )
option(FREECAD_USE_PCL "Build the features that use PCL libs" OFF)
endif(MSVC)
if(NOT MSVC)
option(BUILD_FEM_NETGEN "Build the FreeCAD FEM module with the NETGEN mesher" OFF)
option(FREECAD_USE_PCL "Build the features that use PCL libs" OFF)
endif(NOT MSVC)
if(FREECAD_3DCONNEXION_SUPPORT STREQUAL "NavLib" AND FREECAD_USE_3DCONNEXION)
set(FREECAD_USE_3DCONNEXION_NAVLIB ON)
set(FREECAD_USE_3DCONNEXION OFF)
endif()
# if this is set override some options
if (FREECAD_BUILD_DEBIAN)
set(FREECAD_USE_EXTERNAL_ZIPIOS ON )
# Disable it until the upstream package has been fixed. See
# https://github.com/FreeCAD/FreeCAD/issues/13676#issuecomment-2539978468
# https://github.com/FreeCAD/FreeCAD/issues/13676#issuecomment-2541513308
set(FREECAD_USE_EXTERNAL_ZIPIOS OFF )
# A Debian package for SMESH doesn't exist
#set(FREECAD_USE_EXTERNAL_SMESH ON )
endif (FREECAD_BUILD_DEBIAN)
if(BUILD_FEM)
set(BUILD_SMESH ON )
if(BUILD_FEM OR BUILD_MESH_PART)
set(FREECAD_USE_SMESH ON)
if(FREECAD_USE_EXTERNAL_SMESH)
set(BUILD_SMESH OFF)
else()
set(BUILD_SMESH ON)
endif()
else()
set(FREECAD_USE_SMESH OFF)
set(BUILD_SMESH OFF)
endif()
# for Windows the minimum required cmake version is 3.4.3 to build the CAM module
if(WIN32 AND CMAKE_VERSION VERSION_LESS 3.4.3)
message(WARNING "Disable CAM, requires cmake >= 3.4.3 in order to build this module")
set(BUILD_CAM OFF )
if (BUILD_CAM OR BUILD_FLAT_MESH)
set(FREECAD_USE_PYBIND11 ON)
endif()
# force build directory to be different to source directory
@@ -197,4 +206,22 @@ macro(InitializeFreeCADBuildOptions)
"Please choose another build directory! Or disable the option BUILD_FORCE_DIRECTORY.")
endif()
endif()
if(FREECAD_PARALLEL_COMPILE_JOBS)
if(CMAKE_GENERATOR MATCHES "Ninja")
set_property(GLOBAL APPEND PROPERTY JOB_POOLS compile_job_pool=${FREECAD_PARALLEL_COMPILE_JOBS})
set(CMAKE_JOB_POOL_COMPILE compile_job_pool)
else()
message(WARNING "Job pooling is only available with Ninja generators.")
endif()
endif()
if(FREECAD_PARALLEL_LINK_JOBS)
if(CMAKE_GENERATOR MATCHES "Ninja")
set_property(GLOBAL APPEND PROPERTY JOB_POOLS link_job_pool=${FREECAD_PARALLEL_LINK_JOBS})
set(CMAKE_JOB_POOL_LINK link_job_pool)
else()
message(WARNING "Job pooling is only available with Ninja generators.")
endif()
endif()
endmacro(InitializeFreeCADBuildOptions)
+21 -11
View File
@@ -14,7 +14,7 @@ macro(PrintFinalReport)
# just a value
macro(value)
unset(val)
unset(val)
set(name ${ARGV0})
if(${name})
set(val ${${name}}) # name has a value
@@ -58,13 +58,14 @@ macro(PrintFinalReport)
simple(Compiler "${CMAKE_CXX_COMPILER} (${CMAKE_CXX_COMPILER_VERSION})")
value(CMAKE_VERSION)
conditional(ccache CCACHE_PROGRAM "not enabled" ${CCACHE_PROGRAM})
simple(prefix ${CMAKE_INSTALL_PREFIX})
simple(bindir ${CMAKE_INSTALL_BINDIR})
simple(datadir ${CMAKE_INSTALL_DATADIR})
simple(docdir ${CMAKE_INSTALL_DOCDIR})
simple(includedir ${CMAKE_INSTALL_INCLUDEDIR})
simple(libdir ${CMAKE_INSTALL_LIBDIR})
simple(Python "${Python3_VERSION} [${PYTHON_EXECUTABLE}] Suffix: [${PYTHON_CONFIG_SUFFIX}]")
simple(Python "${Python3_VERSION} [${Python3_EXECUTABLE}] Suffix: [${PYTHON_CONFIG_SUFFIX}]")
value(BLAS)
section_end()
@@ -83,11 +84,12 @@ macro(PrintFinalReport)
value(BUILD_VR)
value(CMAKE_PREFIX_PATH)
value(FREECAD_QT_VERSION)
value(PYTHON_EXECUTABLE)
value(Python3_EXECUTABLE)
value(PYTHON_LIBRARY)
value(FREECAD_CREATE_MAC_APP)
value(FREECAD_USE_PYBIND11)
value(FREECAD_USE_EXTERNAL_KDL)
value(FREECAD_USE_PYSIDE)
value(FREECAD_USE_SHIBOKEN)
value(BUILD_ADDONMGR)
value(BUILD_BIM)
value(BUILD_ASSEMBLY)
@@ -102,6 +104,7 @@ macro(PrintFinalReport)
value(BUILD_INSPECTION)
value(BUILD_JTREADER)
value(BUILD_MATERIAL)
value(BUILD_MATERIAL_EXTERNAL)
value(BUILD_MESH)
value(BUILD_MESH_PART)
value(BUILD_OPENSCAD)
@@ -138,20 +141,20 @@ macro(PrintFinalReport)
conditional(pybind11 pybind11_FOUND "not enabled" ${pybind11_VERSION})
simple(Boost ${Boost_VERSION})
simple(XercesC "${XercesC_VERSION} [${XercesC_LIBRARIES}] [${XercesC_INCLUDE_DIRS}]")
simple(ICU "${ICU_VERSION}")
simple(ZLIB "${ZLIB_VERSION_STRING}")
simple(OCC "${OCC_VERSION_STRING} [${OCC_LIBRARY_DIR}] [${OCC_INCLUDE_DIR}]")
simple(OCC_Libs "[${OCC_LIBRARIES}]")
if(BUILD_SMESH)
if(FREECAD_USE_SMESH)
if(FREECAD_USE_EXTERNAL_SMESH)
simple(SMESH "${SMESH_VERSION_MAJOR}.${SMESH_VERSION_MINOR}.${SMESH_VERSION_PATCH}.${SMESH_VERSION_TWEAK}")
else()
simple(SMESH "${SMESH_VERSION_MAJOR}.${SMESH_VERSION_MINOR}.${SMESH_VERSION_PATCH}.${SMESH_VERSION_TWEAK} build internal")
simple(MEDFile "${MEDFILE_VERSION} [${MEDFILE_LIBRARIES}] [${MEDFILE_INCLUDE_DIRS}]")
simple(HDF5 ${HDF5_VERSION})
simple(VTK ${VTK_VERSION})
endif()
else()
simple(SMESH "do not build")
simple(SMESH "not enabled")
endif()
conditional(NETGEN NETGEN_FOUND
"not enabled"
@@ -164,6 +167,7 @@ macro(PrintFinalReport)
simple(QtCore ${QtCore_VERSION})
simple(QtNetwork ${QtNetwork_VERSION})
conditional(QtOpenGL BUILD_GUI "not needed" ${QtOpenGL_VERSION})
conditional(QtOpenGLWidgets BUILD_GUI "not needed" ${QtOpenGLWidgets_VERSION})
conditional(QtPrintSupport BUILD_GUI "not needed" ${QtPrintSupport_VERSION})
conditional(QtSvg BUILD_GUI "not needed" ${QtSvg_VERSION})
conditional(QtUiTools BUILD_GUI "not needed" ${QtUiTools_VERSION})
@@ -192,11 +196,13 @@ macro(PrintFinalReport)
simple(OpenGLU_Incl [${OPENGL_INCLUDE_DIR}])
simple(Coin3D "${COIN3D_VERSION} [${COIN3D_LIBRARIES}] [${COIN3D_INCLUDE_DIRS}]")
simple(pivy ${PIVY_VERSION})
if (WIN32)
if (FREECAD_USE_3DCONNEXION)
simple(3Dconnexion "Building 3Dconnexion support with original code")
if(WIN32 OR APPLE)
if(FREECAD_USE_3DCONNEXION_LEGACY AND FREECAD_USE_3DCONNEXION_NAVLIB)
simple(3Dconnexion "Building with 3Dconnexion legacy and NavLib support")
elseif(FREECAD_USE_3DCONNEXION_LEGACY)
simple(3Dconnexion "Building with 3Dconnexion legacy support")
elseif(FREECAD_USE_3DCONNEXION_NAVLIB)
simple(3Dconnexion "Building 3Dconnexion support with NavLib")
simple(3Dconnexion "Building with 3Dconnexion NavLib support")
else()
simple(3Dconnexion "Not building 3Dconnexion device support")
endif()
@@ -214,6 +220,10 @@ macro(PrintFinalReport)
conditional(PYCXX PYCXX_FOUND "not found" "${PYCXX_VERSION} Incl: ${PYCXX_INCLUDE_DIR} Src:${PYCXX_SOURCE_DIR}")
conditional(fmt fmt_FOUND "Sources downloaded to ${fmt_SOURCE_DIR}" "${fmt_VERSION}")
conditional(yaml-cpp yaml-cpp_FOUND "not found" "${yaml-cpp_VERSION}")
conditional(Vtk VTK_FOUND "not found" ${VTK_VERSION})
if(BUILD_BIM)
conditional(Lark LARK_FOUND "not found" "${LARK_VERSION}")
endif()
section_end()
@@ -19,18 +19,29 @@ macro(SetGlobalCompilerAndLinkerSettings)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mxgot")
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
# Only add -O0 if no -O* optimization flag exists
if (NOT "${CMAKE_C_FLAGS_DEBUG}" MATCHES "-O[a-z0-9]+")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0")
endif()
if (NOT "${CMAKE_CXX_FLAGS_DEBUG}" MATCHES "-O[a-z0-9]+")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0")
endif()
endif()
if(MSVC)
# set default compiler settings
add_definitions(-D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR -DNOMINMAX)
add_compile_options(/Zm150 /bigobj)
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFC_DEBUG")
# set default libs
set (CMAKE_C_STANDARD_LIBRARIES "kernel32.lib user32.lib gdi32.lib winspool.lib SHFolder.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib winmm.lib comsupp.lib Ws2_32.lib dbghelp.lib ")
set (CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES}")
# set linker flag /nodefaultlib
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /NODEFAULTLIB")
set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /NODEFAULTLIB")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB")
if (MSVC_VERSION LESS 1930) # Anything before VS 2022
# set default libs
set (CMAKE_C_STANDARD_LIBRARIES "kernel32.lib user32.lib gdi32.lib winspool.lib SHFolder.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib winmm.lib comsupp.lib Ws2_32.lib dbghelp.lib ")
set (CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES}")
# set linker flag /nodefaultlib
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /NODEFAULTLIB")
set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /NODEFAULTLIB")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB")
endif()
if(FREECAD_RELEASE_PDB)
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
set (CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG")
+1 -1
View File
@@ -3,7 +3,7 @@ macro(SetupBoost)
set(_boost_TEST_VERSIONS ${Boost_ADDITIONAL_VERSIONS})
set (BOOST_COMPONENTS filesystem program_options regex system thread date_time)
set (BOOST_COMPONENTS program_options regex thread date_time)
find_package(Boost ${BOOST_MIN_VERSION}
COMPONENTS ${BOOST_COMPONENTS} REQUIRED)
+55 -17
View File
@@ -6,16 +6,22 @@ macro(SetupCoin3D)
find_library(COIN3D_LIBRARIES Coin)
endif ()
# Try MODULE mode
find_package(Coin3D)
if (NOT COIN3D_FOUND)
# Try CONFIG mode
find_package(Coin CONFIG REQUIRED)
if (Coin_FOUND)
set(COIN3D_INCLUDE_DIRS ${Coin_INCLUDE_DIR})
set(COIN3D_LIBRARIES ${Coin_LIBRARIES})
# Try CONFIG mode -- Coin supports very old CMake files, which emits noisy warnings. Silence them.
set(CMAKE_WARN_DEPRECATED_OLD_STATE ${CMAKE_WARN_DEPRECATED})
set(CMAKE_WARN_DEPRECATED OFF CACHE BOOL "" FORCE)
find_package(Coin CONFIG)
set(CMAKE_WARN_DEPRECATED ${CMAKE_WARN_DEPRECATED_OLD_STATE} CACHE BOOL "" FORCE)
if (Coin_FOUND)
set(COIN3D_INCLUDE_DIRS ${Coin_INCLUDE_DIR})
set(COIN3D_LIBRARIES ${Coin_LIBRARIES})
set(COIN3D_LIB_DIRS ${Coin_LIB_DIR})
else ()
# Try MODULE mode (FindCoin3D.cmake, included by CMake)
find_package(Coin3D)
if (NOT COIN3D_FOUND)
message(FATAL_ERROR "Could not find Coin3D")
endif ()
ENDIF ()
endif ()
IF (NOT COIN3D_VERSION)
file(READ "${COIN3D_INCLUDE_DIRS}/Inventor/C/basic.h" _coin3d_basic_h)
@@ -27,18 +33,50 @@ macro(SetupCoin3D)
set(COIN3D_MICRO_VERSION "${CMAKE_MATCH_1}")
set(COIN3D_VERSION "${COIN3D_MAJOR_VERSION}.${COIN3D_MINOR_VERSION}.${COIN3D_MICRO_VERSION}")
ENDIF ()
endmacro(SetupCoin3D)
IF (NOT PIVY_VERSION)
message(STATUS "Checking Pivy version by importing it in a Python program...")
macro(SetupPivy)
# -------------------------------- Pivy --------------------------------
IF (FREECAD_CHECK_PIVY) # do not make pivy a host dependency for cross compiling
IF (NOT PIVY_VERSION)
message(STATUS "Checking Pivy version by importing it in a Python program...")
execute_process(
COMMAND ${Python3_EXECUTABLE} -c "import pivy as p; print(p.__version__,end='')"
OUTPUT_VARIABLE PIVY_VERSION
RESULT_VARIABLE RETURN_CODE)
if (RETURN_CODE EQUAL 0)
message(STATUS "Found Pivy ${PIVY_VERSION}")
else ()
message(ERROR "Failed to import Pivy using ${Python3_EXECUTABLE}")
endif ()
ENDIF ()
message(STATUS "Checking Pivy Coin3D version by importing it in a Python program...")
execute_process(
COMMAND ${Python3_EXECUTABLE} -c "import pivy as p; print(p.__version__,end='')"
OUTPUT_VARIABLE PIVY_VERSION
COMMAND ${Python3_EXECUTABLE} -c "import pivy as p; print(p.SoDB.getVersion(),end='')"
OUTPUT_VARIABLE PIVY_COIN_VERSION
RESULT_VARIABLE RETURN_CODE)
if (RETURN_CODE EQUAL 0)
message(STATUS "Found Pivy ${PIVY_VERSION}")
message(STATUS "Found Pivy Coin3D ${PIVY_COIN_VERSION}")
else ()
message(ERROR "Failed to import Pivy using ${Python3_EXECUTABLE}")
message(ERROR "Failed to get Pivy Coin3D version using ${Python3_EXECUTABLE}")
endif ()
ENDIF ()
endmacro(SetupCoin3D)
if (${PIVY_COIN_VERSION} MATCHES "([0-9]+)\\.([0-9]+)\\.([0-9]+)")
set(PIVY_COIN_MAJOR_VERSION ${CMAKE_MATCH_1})
set(PIVY_COIN_MINOR_VERSION ${CMAKE_MATCH_2})
set(PIVY_COIN_MICRO_VERSION ${CMAKE_MATCH_3})
set(PIVY_COIN_VERSION "${PIVY_COIN_MAJOR_VERSION}.${PIVY_COIN_MINOR_VERSION}.${PIVY_COIN_MICRO_VERSION}")
else ()
message(FATAL_ERROR "Failed to match Pivy Coin3D version string output")
endif ()
if (NOT (
(${COIN3D_MAJOR_VERSION} EQUAL ${PIVY_COIN_MAJOR_VERSION}) AND
(${COIN3D_MINOR_VERSION} EQUAL ${PIVY_COIN_MINOR_VERSION}) AND
(${COIN3D_MICRO_VERSION} EQUAL ${PIVY_COIN_MICRO_VERSION})))
message(FATAL_ERROR "Coin3D version ${COIN3D_VERSION} mismatches Pivy Coin3D ${PIVY_COIN_VERSION}.")
endif ()
endif(FREECAD_CHECK_PIVY)
endmacro(SetupPivy)
+2 -11
View File
@@ -11,19 +11,10 @@ macro(SetupEigen)
"=================\n")
endif(NOT EIGEN3_FOUND)
if (EIGEN3_FOUND AND ${EIGEN3_VERSION} VERSION_LESS "3.3.1")
if (EIGEN3_FOUND AND ${EIGEN3_VERSION} VERSION_LESS "3.4.0")
message(WARNING "Disable module flatmesh because it requires "
"minimum Eigen3 version 3.3.1 but version ${EIGEN3_VERSION} was found")
"minimum Eigen3 version 3.4.0 but version ${EIGEN3_VERSION} was found")
set (BUILD_FLAT_MESH OFF)
endif()
# Older versions raise the warning -Wdeprecated-copy with clang10/gcc10
if (EIGEN3_FOUND AND ${EIGEN3_VERSION} VERSION_LESS "3.3.8")
unset(_flag_found CACHE)
check_cxx_compiler_flag("-Wno-deprecated-copy" _flag_found)
if (_flag_found)
set (EIGEN3_NO_DEPRECATED_COPY "-Wno-deprecated-copy")
endif ()
endif()
endmacro(SetupEigen)
+16
View File
@@ -7,6 +7,22 @@ macro(SetupFreetype)
message("===============================================================\n"
"FreeType2 not found. Part module will lack of makeWireString().\n"
"===============================================================\n")
else()
# find_package(harfbuzz CONFIG) fails on windows
# lets do it the complicated way instead.
find_path(HARFBUZZ_INCLUDE_DIR hb.h PATH_SUFFIXES harfbuzz)
find_library(HARFBUZZ_LIBRARY NAMES harfbuzz)
if(HARFBUZZ_INCLUDE_DIR AND HARFBUZZ_LIBRARY)
if(NOT TARGET harfbuzz::harfbuzz)
add_library(harfbuzz::harfbuzz UNKNOWN IMPORTED)
set_target_properties(harfbuzz::harfbuzz PROPERTIES
IMPORTED_LOCATION "${HARFBUZZ_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${HARFBUZZ_INCLUDE_DIR}"
)
endif()
else()
message(FATAL_ERROR "HarfBuzz not found")
endif()
endif(NOT FREETYPE_FOUND)
endif(FREECAD_USE_FREETYPE)
+7
View File
@@ -0,0 +1,7 @@
macro(SetupLark)
# ------------------------------ Lark ------------------------------
find_package(LARK MODULE REQUIRED)
message(STATUS "Found Lark: version ${LARK_VERSION}")
endmacro()
+2 -2
View File
@@ -34,8 +34,8 @@ macro(SetupLibFmt)
cmake_policy(SET CMP0135 NEW)
endif()
FetchContent_Declare(fmt
URL https://github.com/fmtlib/fmt/archive/refs/tags/9.1.0.zip
URL_MD5 e6754011ff56bfc37631fcc90961e377
URL https://github.com/fmtlib/fmt/archive/refs/tags/11.1.4.zip
URL_MD5 90667b07f34d91554cf8285ae234ff66
)
FetchContent_MakeAvailable(fmt)
set_target_properties(fmt PROPERTIES POSITION_INDEPENDENT_CODE ON)
+3 -6
View File
@@ -1,11 +1,8 @@
macro(SetupOpenCasCade)
# -------------------------------- OpenCasCade --------------------------------
find_package(OCC)
if(NOT OCC_FOUND)
message(FATAL_ERROR "================================================================\n"
"Neither OpenCASCADE Community Edition nor OpenCASCADE was found!\n"
"OpenCASCADE not found!\n"
"================================================================\n")
endif(NOT OCC_FOUND)
endmacro(SetupOpenCasCade)
endif()
endmacro()
+5
View File
@@ -1,6 +1,11 @@
macro(SetupOpenGL)
# -------------------------------- OpenGL --------------------------------
# If on a system with both a legacy GL library and GLVND, prefer the legacy library.
# This is probably needed until we no longer have any gl.*ARB calls in the codebase
# See, e.g. SoBrepFaceSet.cpp
set(OpenGL_GL_PREFERENCE LEGACY)
find_package(OpenGL)
include(FindPackageMessage)
if(OPENGL_GLU_FOUND)
@@ -2,7 +2,6 @@ macro(SetupPybind11)
# -------------------------------- PyBind11 -----------------------------
# necessary for flat-mesh feature
option(FREECAD_USE_PYBIND11 "Use pybind11" OFF)
if (FREECAD_USE_PYBIND11)
find_package(pybind11 REQUIRED)
endif()
+5 -4
View File
@@ -3,7 +3,12 @@ macro(SetupPython)
find_package(Python3 COMPONENTS Interpreter Development REQUIRED)
if (${Python3_VERSION} VERSION_LESS "3.10")
message(FATAL_ERROR "To build FreeCAD you need at least Python 3.10\n")
endif()
# For backwards compatibility with old CMake scripts
# See: https://github.com/FreeCAD/FreeCAD/pull/19635#issuecomment-2725612407
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
set(PYTHON_LIBRARIES ${Python3_LIBRARIES})
set(PYTHON_INCLUDE_DIRS ${Python3_INCLUDE_DIRS})
@@ -14,8 +19,4 @@ macro(SetupPython)
set(PYTHON_VERSION_PATCH ${Python3_VERSION_PATCH})
set(PYTHONINTERP_FOUND ${Python3_Interpreter_FOUND})
if (${PYTHON_VERSION_STRING} VERSION_LESS "3.8")
message(FATAL_ERROR "To build FreeCAD you need at least Python 3.8\n")
endif()
endmacro(SetupPython)
+2
View File
@@ -13,6 +13,7 @@ if(BUILD_GUI)
elseif (FREECAD_QT_MAJOR_VERSION EQUAL 6)
list (APPEND FREECAD_QT_COMPONENTS GuiTools)
list (APPEND FREECAD_QT_COMPONENTS SvgWidgets)
list (APPEND FREECAD_QT_COMPONENTS OpenGLWidgets)
endif()
list (APPEND FREECAD_QT_COMPONENTS OpenGL PrintSupport Svg UiTools Widgets LinguistTools)
@@ -78,6 +79,7 @@ else()
endif()
configure_file(${CMAKE_SOURCE_DIR}/src/QtCore.h.cmake ${CMAKE_BINARY_DIR}/src/QtCore.h)
configure_file(${CMAKE_SOURCE_DIR}/src/QtWidgets.h.cmake ${CMAKE_BINARY_DIR}/src/QtWidgets.h)
function(qt_find_and_add_translation _qm_files _tr_dir _qm_dir)
file(GLOB _ts_files ${_tr_dir})
+37 -17
View File
@@ -1,8 +1,8 @@
macro(SetupSalomeSMESH)
# -------------------------------- Salome SMESH --------------------------
# Salome SMESH sources are under src/3rdParty now
if(BUILD_SMESH)
if(FREECAD_USE_SMESH)
# set the internal smesh version:
# see src/3rdParty/salomonemesh/CMakeLists.txt and commit https://github.com/FreeCAD/FreeCAD/commit/666a3e5 and https://forum.freecad.org/viewtopic.php?f=10&t=30838
set(SMESH_VERSION_MAJOR 7)
@@ -42,7 +42,7 @@ macro(SetupSalomeSMESH)
endif()
endforeach()
else()
set(VTK_COMPONENTS "CommonCore;CommonDataModel;FiltersVerdict;IOXML;FiltersCore;FiltersGeneral;IOLegacy;FiltersExtraction;FiltersSources;FiltersGeometry")
set(VTK_COMPONENTS "CommonCore;CommonDataModel;FiltersVerdict;IOXML;FiltersCore;FiltersGeneral;IOLegacy;FiltersExtraction;FiltersSources;FiltersGeometry;WrappingPythonCore")
list(APPEND VTK_COMPONENTS "IOMPIParallel;ParallelMPI;hdf5;FiltersParallelDIY2;RenderingCore;InteractionStyle;RenderingFreeType;RenderingOpenGL2")
foreach(_module ${VTK_COMPONENTS})
list (FIND VTK_AVAILABLE_COMPONENTS ${_module} _index)
@@ -63,6 +63,17 @@ macro(SetupSalomeSMESH)
endif()
set(BUILD_FEM_VTK ON)
# Check if PythonWrapperCore was found
# Note: VTK 9 only, as the implementations use the VTK modules introduced in 8.1
# VTK_WrappingPythonCore_FOUND is named differently for versions <9.0
if (${VTK_WrappingPythonCore_FOUND})
set(BUILD_FEM_VTK_PYTHON 1)
message(STATUS "VTK python wrapper: available")
else()
message(STATUS "VTK python wrapper: NOT available")
endif()
if(${VTK_MAJOR_VERSION} LESS 6)
message( FATAL_ERROR "Found VTK version is <6, this is not compatible" )
endif()
@@ -92,25 +103,34 @@ macro(SetupSalomeSMESH)
set(HDF5_VARIANT "hdf5-serial")
else()
message(STATUS "We guess that libmed was built using hdf5-openmpi version")
set(HDF5_VARIANT "hdf5-openmpi")
set(HDF5_VARIANT "hdf5-openmpi;hdf5_openmpi")
set(HDF5_PREFER_PARALLEL TRUE) # if pkg-config fails, find_package(HDF5) needs this
endif()
pkg_search_module(HDF5 ${HDF5_VARIANT})
if(NOT HDF5_FOUND)
pkg_search_module(PCHDF5 ${HDF5_VARIANT})
if(NOT PCHDF5_FOUND)
find_package(HDF5 REQUIRED)
else()
add_compile_options(${HDF5_CFLAGS})
link_directories(${HDF5_LIBRARY_DIRS})
link_libraries(${HDF5_LIBRARIES})
find_file(Hdf5dotH hdf5.h PATHS ${HDF5_INCLUDE_DIRS} NO_DEFAULT_PATH)
if(NOT Hdf5dotH)
message( FATAL_ERROR "${HDF5_VARIANT} development header not found.")
add_compile_options(${PCHDF5_CFLAGS})
link_directories(${PCHDF5_LIBRARY_DIRS})
link_libraries(${PCHDF5_LIBRARIES})
# workaround to define include dir from PCHDF5_CFLAGS (pkg-config PCHDF5_INCLUDEDIR is only filled since hdf5 1.14.6)
set(hdf5_include_path "")
foreach(flag IN LISTS PCHDF5_CFLAGS)
if(flag MATCHES "^-I")
string(REGEX REPLACE "^-I[ ]*" "" flag "${flag}")
list(APPEND hdf5_include_path "${flag}")
endif()
endforeach()
set(_save_INC CMAKE_REQUIRED_INCLUDES)
set(CMAKE_REQUIRED_INCLUDES ${hdf5_include_path})
check_include_file_cxx(hdf5.h HDF5_HEAD_FOUND)
set(CMAKE_REQUIRED_INCLUDES ${_save_INC})
if(NOT HDF5_HEAD_FOUND)
message( FATAL_ERROR "hdf5.h was not found (tested pkg-config ${HDF5_VARIANT}, suggested header location was '${hdf5_include_path}').")
endif()
endif()
check_include_file_cxx(hdf5.h HDF5_FOUND)
if(NOT HDF5_FOUND)
message( FATAL_ERROR "hdf5.h was not found.")
endif()
# Med Fichier can require MPI
pkg_search_module(OPENMPI ompi-cxx)
@@ -145,6 +165,6 @@ macro(SetupSalomeSMESH)
set(SMESH_FOUND TRUE)
configure_file(${CMAKE_SOURCE_DIR}/src/SMESH_Version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/SMESH_Version.h)
endif(BUILD_SMESH)
endif(FREECAD_USE_SMESH)
endmacro(SetupSalomeSMESH)
@@ -7,7 +7,7 @@ macro(SetupShibokenAndPyside)
if(DEFINED MACPORTS_PREFIX)
find_package(Shiboken REQUIRED HINTS "${PYTHON_LIBRARY_DIR}/cmake")
find_package(PySide REQUIRED HINTS "${PYTHON_LIBRARY_DIR}/cmake")
endif(DEFINED MACPORTS_PREFIX)
endif()
if(FREECAD_QT_MAJOR_VERSION EQUAL 5)
set(SHIBOKEN_MAJOR_VERSION 2)
@@ -21,16 +21,16 @@ macro(SetupShibokenAndPyside)
# Shiboken2Config.cmake may explicitly set CMAKE_BUILD_TYPE to Release which causes
# CMake to fail to create Makefiles for a debug build.
# So as a workaround we save and restore the value after checking for Shiboken2.
set (SAVE_BUILD_TYPE ${CMAKE_BUILD_TYPE})
set(SAVE_BUILD_TYPE ${CMAKE_BUILD_TYPE})
find_package(Shiboken${SHIBOKEN_MAJOR_VERSION} QUIET)
set (CMAKE_BUILD_TYPE ${SAVE_BUILD_TYPE})
if (Shiboken${SHIBOKEN_MAJOR_VERSION}_FOUND)
set(CMAKE_BUILD_TYPE ${SAVE_BUILD_TYPE})
if(Shiboken${SHIBOKEN_MAJOR_VERSION}_FOUND)
# Shiboken config file was found but it may use the wrong Python version
# Try to get the matching config suffix and repeat finding the package
set(SHIBOKEN_PATTERN .cpython-${Python3_VERSION_MAJOR}${Python3_VERSION_MINOR})
file(GLOB SHIBOKEN_CONFIG "${Shiboken${SHIBOKEN_MAJOR_VERSION}_DIR}/Shiboken${SHIBOKEN_MAJOR_VERSION}Config${SHIBOKEN_PATTERN}*.cmake")
if (SHIBOKEN_CONFIG)
if(SHIBOKEN_CONFIG)
get_filename_component(SHIBOKEN_CONFIG_SUFFIX ${SHIBOKEN_CONFIG} NAME)
string(SUBSTRING ${SHIBOKEN_CONFIG_SUFFIX} 15 -1 SHIBOKEN_CONFIG_SUFFIX)
string(REPLACE ".cmake" "" PYTHON_CONFIG_SUFFIX ${SHIBOKEN_CONFIG_SUFFIX})
@@ -47,11 +47,11 @@ macro(SetupShibokenAndPyside)
# to dance to be compatible with the old (<5.12) and the new versions (>=5.12)
if(NOT SHIBOKEN_INCLUDE_DIR AND TARGET Shiboken${SHIBOKEN_MAJOR_VERSION}::libshiboken)
get_property(SHIBOKEN_INCLUDE_DIR TARGET Shiboken${SHIBOKEN_MAJOR_VERSION}::libshiboken PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
endif(NOT SHIBOKEN_INCLUDE_DIR AND TARGET Shiboken${SHIBOKEN_MAJOR_VERSION}::libshiboken)
endif()
if(NOT SHIBOKEN_INCLUDE_DIR)
find_pip_package(Shiboken${SHIBOKEN_MAJOR_VERSION})
if (Shiboken${SHIBOKEN_MAJOR_VERSION}_FOUND)
if(Shiboken${SHIBOKEN_MAJOR_VERSION}_FOUND)
set(SHIBOKEN_INCLUDE_DIR ${Shiboken${SHIBOKEN_MAJOR_VERSION}_INCLUDE_DIRS})
set(SHIBOKEN_LIBRARY ${Shiboken${SHIBOKEN_MAJOR_VERSION}_LIBRARIES})
endif()
@@ -59,15 +59,18 @@ macro(SetupShibokenAndPyside)
find_package(PySide${PYSIDE_MAJOR_VERSION} QUIET)
if(NOT PYSIDE_INCLUDE_DIR AND TARGET PySide${PYSIDE_MAJOR_VERSION}::pyside${PYSIDE_MAJOR_VERSION})
get_property(PYSIDE_INCLUDE_DIR TARGET PySide${PYSIDE_MAJOR_VERSION}::pyside${PYSIDE_MAJOR_VERSION} PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
endif(NOT PYSIDE_INCLUDE_DIR AND TARGET PySide${PYSIDE_MAJOR_VERSION}::pyside${PYSIDE_MAJOR_VERSION})
if(${PYSIDE_MAJOR_VERSION} EQUAL 2)
# Our internal FindPySide6.cmake file already provides these for PySide6
if(NOT PYSIDE_INCLUDE_DIR AND TARGET PySide${PYSIDE_MAJOR_VERSION}::pyside${PYSIDE_MAJOR_VERSION})
get_property(PYSIDE_INCLUDE_DIR TARGET PySide${PYSIDE_MAJOR_VERSION}::pyside${PYSIDE_MAJOR_VERSION} PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
endif()
if(NOT PYSIDE_INCLUDE_DIR)
find_pip_package(PySide${PYSIDE_MAJOR_VERSION})
if (PySide${PYSIDE_MAJOR_VERSION}_FOUND)
set(PYSIDE_INCLUDE_DIR ${PySide${PYSIDE_MAJOR_VERSION}_INCLUDE_DIRS})
set(PYSIDE_LIBRARY ${PySide${PYSIDE_MAJOR_VERSION}_LIBRARIES})
if(NOT PYSIDE_INCLUDE_DIR)
find_pip_package(PySide${PYSIDE_MAJOR_VERSION})
if(PySide${PYSIDE_MAJOR_VERSION}_FOUND)
set(PYSIDE_INCLUDE_DIR ${PySide${PYSIDE_MAJOR_VERSION}_INCLUDE_DIRS})
set(PYSIDE_LIBRARY ${PySide${PYSIDE_MAJOR_VERSION}_LIBRARIES})
endif()
endif()
endif()
@@ -128,7 +131,7 @@ macro(SetupShibokenAndPyside)
# Now try to import the shiboken Python module and print a warning if it can't be loaded
execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c "import shiboken${SHIBOKEN_MAJOR_VERSION}"
COMMAND ${Python3_EXECUTABLE} -c "import shiboken${SHIBOKEN_MAJOR_VERSION}"
RESULT_VARIABLE FAILURE
OUTPUT_VARIABLE PRINT_OUTPUT
)
@@ -140,7 +143,7 @@ macro(SetupShibokenAndPyside)
"==================================\n")
else()
execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c "import shiboken${SHIBOKEN_MAJOR_VERSION};print(shiboken${SHIBOKEN_MAJOR_VERSION}.__version__, end='')"
COMMAND ${Python3_EXECUTABLE} -c "import shiboken${SHIBOKEN_MAJOR_VERSION};print(shiboken${SHIBOKEN_MAJOR_VERSION}.__version__, end='')"
RESULT_VARIABLE FAILURE
OUTPUT_VARIABLE Shiboken_VERSION
)
@@ -154,7 +157,7 @@ macro(SetupShibokenAndPyside)
# Independent of the build option PySide modules must be loaded at runtime. Print a warning if it fails.
execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c "import PySide${PYSIDE_MAJOR_VERSION};import os;print(os.path.dirname(PySide${PYSIDE_MAJOR_VERSION}.__file__), end='')"
COMMAND ${Python3_EXECUTABLE} -c "import PySide${PYSIDE_MAJOR_VERSION};import os;print(os.path.dirname(PySide${PYSIDE_MAJOR_VERSION}.__file__), end='')"
RESULT_VARIABLE FAILURE
OUTPUT_VARIABLE PRINT_OUTPUT
)
@@ -165,61 +168,29 @@ macro(SetupShibokenAndPyside)
"================================\n")
else()
execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c "import PySide${PYSIDE_MAJOR_VERSION};print(PySide${PYSIDE_MAJOR_VERSION}.__version__, end='')"
COMMAND ${Python3_EXECUTABLE} -c "import PySide${PYSIDE_MAJOR_VERSION};print(PySide${PYSIDE_MAJOR_VERSION}.__version__, end='')"
RESULT_VARIABLE FAILURE
OUTPUT_VARIABLE PySide_VERSION
)
message(STATUS "PySide ${PySide_VERSION} Python module found at ${PRINT_OUTPUT}.\n")
endif()
endmacro(SetupShibokenAndPyside)
endmacro()
# Macros similar to FindQt4.cmake's WRAP_UI and WRAP_RC, for the automatic generation of Python
# code from Qt4's user interface ('.ui') and resource ('.qrc') files. These macros are called:
# - PYSIDE_WRAP_UI
# - PYSIDE_WRAP_RC
MACRO(PYSIDE_WRAP_UI outfiles)
if (NOT PYSIDE_UIC_EXECUTABLE)
message(FATAL_ERROR "Qt uic is required for generating ${ARGN}")
endif()
FOREACH(it ${ARGN})
GET_FILENAME_COMPONENT(outfile ${it} NAME_WE)
GET_FILENAME_COMPONENT(infile ${it} ABSOLUTE)
SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/ui_${outfile}.py)
if(WIN32 OR APPLE)
ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
COMMAND ${PYSIDE_UIC_EXECUTABLE} ${UICOPTIONS} ${infile} -o ${outfile}
MAIN_DEPENDENCY ${infile}
)
else()
# Especially on Open Build Service we don't want changing date like
# pyside2-uic generates in comments at beginning., which is why
# we follow the tool command with a POSIX-friendly sed.
ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
COMMAND "${PYSIDE_UIC_EXECUTABLE}" ${UICOPTIONS} "${infile}" -o "${outfile}"
COMMAND sed "/^# /d" "${outfile}" >"${outfile}.tmp" && mv "${outfile}.tmp" "${outfile}"
MAIN_DEPENDENCY "${infile}"
)
endif()
list(APPEND ${outfiles} ${outfile})
ENDFOREACH(it)
ENDMACRO (PYSIDE_WRAP_UI)
MACRO(PYSIDE_WRAP_RC outfiles)
if (NOT PYSIDE_RCC_EXECUTABLE)
macro(PYSIDE_WRAP_RC outfiles)
if(NOT PYSIDE_RCC_EXECUTABLE)
message(FATAL_ERROR "Qt rcc is required for generating ${ARGN}")
endif()
FOREACH(it ${ARGN})
GET_FILENAME_COMPONENT(outfile ${it} NAME_WE)
GET_FILENAME_COMPONENT(infile ${it} ABSOLUTE)
SET(outfile "${CMAKE_CURRENT_BINARY_DIR}/${outfile}_rc.py")
foreach(it ${ARGN})
get_filename_component(outfile ${it} NAME_WE)
get_filename_component(infile ${it} ABSOLUTE)
set(outfile "${CMAKE_CURRENT_BINARY_DIR}/${outfile}_rc.py")
#ADD_CUSTOM_TARGET(${it} ALL
# DEPENDS ${outfile}
#)
if(WIN32 OR APPLE)
ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
add_custom_command(OUTPUT ${outfile}
COMMAND ${PYSIDE_RCC_EXECUTABLE} ${RCCOPTIONS} ${infile} -o ${outfile}
MAIN_DEPENDENCY ${infile}
)
@@ -227,7 +198,7 @@ MACRO(PYSIDE_WRAP_RC outfiles)
# Especially on Open Build Service we don't want changing date like
# pyside-rcc generates in comments at beginning, which is why
# we follow the tool command with in-place sed.
ADD_CUSTOM_COMMAND(OUTPUT "${outfile}"
add_custom_command(OUTPUT "${outfile}"
COMMAND "${PYSIDE_RCC_EXECUTABLE}" ${RCCOPTIONS} "${infile}" ${PY_ATTRIBUTE} -o "${outfile}"
# The line below sometimes catches unwanted lines too - but there is no date in the file
# anymore with Qt5 RCC, so commenting it out for now...
@@ -236,5 +207,5 @@ MACRO(PYSIDE_WRAP_RC outfiles)
)
endif()
list(APPEND ${outfiles} ${outfile})
ENDFOREACH(it)
ENDMACRO (PYSIDE_WRAP_RC)
endforeach()
endmacro()
+156 -8
View File
@@ -1,12 +1,160 @@
macro(SetupSwig)
# -------------------------------- Swig ----------------------------------
find_package(SWIG)
#-------------------------------- Swig ----------------------------------
if (NOT SWIG_FOUND)
message("=====================================================\n"
"SWIG not found, will not build SWIG binding for pivy.\n"
"=====================================================\n")
endif(NOT SWIG_FOUND)
# force cmake to re-search for SWIG when CMAKE_PREFIX_PATH changes
unset(SWIG_EXECUTABLE CACHE)
unset(SWIG_DIR CACHE)
unset(SWIG_VERSION CACHE)
unset(SWIG_FOUND CACHE)
endmacro(SetupSwig)
if(BUILD_SKETCHER)
# SWIG is required for sketcher WB (use QUIET to provide custom error message)
find_package(SWIG QUIET)
if(NOT SWIG_FOUND)
message(FATAL_ERROR
"-----------------------------------------------------\n"
"SWIG not found, swig & pivy required for sketcher WB.\n"
"-----------------------------------------------------\n")
# do not continue with check if swig not found
return()
endif()
# check swig/pivy runtime compatibility
message(STATUS "checking SWIG/Pivy runtime compatibility...")
# get SWIG's runtime version using -external-runtime flag
execute_process(
COMMAND ${SWIG_EXECUTABLE} -python -external-runtime "${CMAKE_BINARY_DIR}/swig_runtime_check.h"
RESULT_VARIABLE SWIG_EXTERNAL_RUNTIME_RESULT
ERROR_VARIABLE SWIG_EXTERNAL_RUNTIME_ERROR
ERROR_QUIET
)
# NOTE: only print the below output if using `cmake --log-level=DEBUG`
message(DEBUG "SWIG external-runtime result: ${SWIG_EXTERNAL_RUNTIME_RESULT}")
message(DEBUG "SWIG external-runtime error: ${SWIG_EXTERNAL_RUNTIME_ERROR}")
message(STATUS "Looking for: ${CMAKE_BINARY_DIR}/swig_runtime_check.h")
if(EXISTS "${CMAKE_BINARY_DIR}/swig_runtime_check.h")
message(STATUS "File exists: YES")
else()
message(STATUS "File exists: NO")
endif()
if(EXISTS "${CMAKE_BINARY_DIR}/swig_runtime_check.h")
file(STRINGS "${CMAKE_BINARY_DIR}/swig_runtime_check.h"
SWIG_RUNTIME_VERSION_LINE
REGEX "^#define SWIG_RUNTIME_VERSION")
message(STATUS "SWIG_RUNTIME_VERSION_LINE: ${SWIG_RUNTIME_VERSION_LINE}")
if(SWIG_RUNTIME_VERSION_LINE)
# extract the version number (it's in quotes: "5")
string(REGEX MATCH "\"([0-9]+)\"" _ "${SWIG_RUNTIME_VERSION_LINE}")
set(SWIG_RUNTIME_VERSION "${CMAKE_MATCH_1}")
message(STATUS "Extracted SWIG_RUNTIME_VERSION: ${SWIG_RUNTIME_VERSION}")
endif()
file(REMOVE "${CMAKE_BINARY_DIR}/swig_runtime_check.h")
else()
message(STATUS "swig_runtime_check.h not found!")
endif()
# extract pivy's SWIG runtime version from the compiled module
# NOTE: python code can not be indented
set(PYTHON_CHECK_PIVY_RUNTIME [=[
import sys
import os
import re
try:
import pivy
pivy_dir = os.path.dirname(pivy.__file__)
print(f'DEBUG:pivy_dir={pivy_dir}', file=sys.stderr)
print(f'DEBUG:files={os.listdir(pivy_dir)}', file=sys.stderr)
pivy_path = None
# Look for _coin module with any extension (.so on Unix, .pyd on Windows)
for f in os.listdir(pivy_dir):
print(f'DEBUG:checking={f}', file=sys.stderr)
if f.startswith('_coin') and (f.endswith('.so') or f.endswith('.pyd')):
pivy_path = os.path.join(pivy_dir, f)
break
print(f'DEBUG:pivy_path={pivy_path}', file=sys.stderr)
if pivy_path and os.path.exists(pivy_path):
with open(pivy_path, 'rb') as f:
content = f.read().decode('latin-1', errors='ignore')
print(f'DEBUG:content_len={len(content)}', file=sys.stderr)
# Use regex to find swig_runtime_data followed by a number
match = re.search(r'swig_runtime_data(\d+)', content)
print(f'DEBUG:match={match}', file=sys.stderr)
if match:
print(match.group(1))
except ImportError as e:
print(f'DEBUG:import_error={e}', file=sys.stderr)
print('ERROR_IMPORT')
except Exception as e:
print(f'DEBUG:exception={e}', file=sys.stderr)
]=])
execute_process(
COMMAND ${Python3_EXECUTABLE} -c "${PYTHON_CHECK_PIVY_RUNTIME}"
OUTPUT_VARIABLE PIVY_RUNTIME_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_VARIABLE PIVY_DEBUG_OUTPUT
TIMEOUT 10
)
message(DEBUG "Pivy debug output: ${PIVY_DEBUG_OUTPUT}")
# Handle errors and compare versions
if(PIVY_RUNTIME_VERSION STREQUAL "ERROR_IMPORT")
message(WARNING
"Could not import pivy to check SWIG compatibility.\n"
"Proceeding without SWIG version check."
)
elseif(SWIG_RUNTIME_VERSION AND PIVY_RUNTIME_VERSION)
if(NOT SWIG_RUNTIME_VERSION STREQUAL PIVY_RUNTIME_VERSION)
message(FATAL_ERROR
" --------------------------------------------------------
SWIG / PIVY RUNTIME VERSION MISMATCH DETECTED!
SWIG runtime API version: ${SWIG_RUNTIME_VERSION}
Pivy runtime API version: ${PIVY_RUNTIME_VERSION}
These must match for compatibility.
This will cause runtime errors: 'No SWIG wrapped library loaded'
swig v4.4.x is not compatible with pivy built with swig <=4.3.x
FIX: Install a SWIG version that uses runtime ${PIVY_RUNTIME_VERSION}
or rebuild Pivy with your current SWIG ${SWIG_VERSION}.
--------------------------------------------------------"
)
else()
message(STATUS "SWIG/Pivy runtime compatibility: PASSED")
message(STATUS "swig runtime API version: ${SWIG_RUNTIME_VERSION}")
message(STATUS "pivy runtime API version: ${PIVY_RUNTIME_VERSION}")
message(STATUS "swig binary version building freecad: ${SWIG_VERSION}")
endif()
else()
if(NOT SWIG_RUNTIME_VERSION)
message(WARNING "Could not determine SWIG runtime version")
endif()
if(NOT PIVY_RUNTIME_VERSION)
message(WARNING "Could not determine Pivy runtime version")
endif()
message(WARNING "Proceeding without SWIG/Pivy compatibility check.")
endif()
endif()
endmacro()

Some files were not shown because too many files have changed in this diff Show More