Commit Graph

2150 Commits

Author SHA1 Message Date
Kacper Donat
646fb6dce8 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
Chris Hennes
f90ada9c4c Merge pull request #21713 from 3x380V/pd_fixes
PartDesign: Random fixes
2025-09-29 10:54:46 -05:00
Syres916
ac0a60f7a6 [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
wmayer
0f82956a9e PD: Positive offset on a binder shouldn't turn holes into squares
Fixes issue 18776
2025-09-26 23:44:28 +02:00
Frank Martinez
abb1a1f5ca Fix #24257: findSubShapesWithSharedVertex signature parsing 2025-09-26 15:38:19 -05:00
Markus Reitböck
68114945fa 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
Pieter Hijma
deadbb5793 Part: Add deprecation warning for import/export 2025-09-12 16:30:25 -05:00
Markus Reitböck
496b31b087 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
Chris Hennes
ff349c81d6 Merge pull request #23746 from 3x380V/cmake
CMake: Use scoped include and library directories
2025-09-10 21:54:51 -05:00
Benjamin Nauck
c4f08b1144 Revert "Part: Remove mode from Offset, keep in Offset2D"
This reverts commit b13b78b2e1.
2025-09-09 08:43:51 +02:00
wmayer
ac51455a0a CMake: Replace include_directories with target_include_directories 2025-09-08 19:04:34 +02:00
Benjamin Nauck
9fceb4bf51 Part: Remove mode from Offset, keep in Offset2D 2025-09-08 10:42:15 -05:00
Max Wilfinger
0b06f8d30e Part: Make dragger attach to the midpoint / axis for circular edges and faces 2025-09-04 22:23:46 +02:00
Benjamin Nauck
f9c470cf9a Merge pull request #23502 from maxwxyz/issue-20633
Part: Improve TopoShape::findPlane
2025-09-01 17:47:32 +02:00
PaddleStroke
defb2773a9 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
luzpaz
851d2ba943 Part: remove trailing whitespace 2025-08-31 23:21:13 -05:00
wmayer
097e332c24 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
Chris Hennes
d1c8362076 Part: Remove unused arguments from isLinearEdge 2025-08-28 18:30:22 -05:00
Max Wilfinger
3b215da227 Update UI strings from Crowdin reports for consistency 2025-08-28 11:45:38 -05:00
Benjamin Nauck
1b49998f6f Merge pull request #23291 from 3x380V/measurement
Measure: Useability improvements
2025-08-26 06:51:50 +02:00
PaddleStroke
679a072a4a PartDesign: Extrude 2 sides (#21794)
* PartDesign: extrude 2 sides

* Part: OpCodes XOR

* PartDesign: Remove deprecated generatePrism functions

* PartDesign: Extrude : Update Sides combobox strings

* Change "Sides" to "Mode"

* Use OpCodes::Extrude instead of Prism.
2025-08-25 17:17:23 +00:00
tetektoza
0c909af75c Part: Start listing BoundBox properties for Expression Editor
As the title says. It was missing, so this patch adds all needed.
2025-08-25 18:04:22 +02:00
wmayer
7b9a853025 Measure: Extend angle measurements
Support to measure the angle using a planar B-spline surface
2025-08-25 09:29:29 +02:00
wmayer
01c427d5e3 PD: Increase the tolerance to check for planar surfaces
The default tolerance to check for a planar B-spline surface is 1.0e-7 which might be too strict in some cases.
Therefore the tolerance is increased to 2.0e-7.

This fixes issue 21242
2025-08-25 09:29:29 +02:00
wmayer
f00fbe0070 Measure: Allow any surface type for MeasureArea 2025-08-25 09:23:54 +02:00
Max Wilfinger
3129bc9a1e Fix UI strings reported on Crowdin (#23297)
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2025-08-25 06:10:53 +00:00
wmayer
4a1076c0cd 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
wmayer
7fe89bdc0b 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
Kacper Donat
6c9c5127a6 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
ab5e9e0ded 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
Kacper Donat
09b199d879 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
Benjamin Nauck
b72d1e5359 Part: Fix WireJoiner error handling (#23241)
* Part: Fix WireJoiner error handling

* Part: Rename assertCheck to ENSURE
2025-08-20 22:26:56 +02:00
drwho495
a48cc162cb 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
drwho495
f818535768 Toponaming: Fix bad element map in Part Design Bodies (#22767) 2025-08-11 10:41:39 -05:00
Kacper Donat
2c5d8bce3e Part: Cleanup setupCoinGeometry method 2025-08-07 00:37:47 +02:00
Kacper Donat
c4b741f488 PartDesign: Add transparent previews 2025-08-07 00:37:21 +02:00
Max Wilfinger
0be9b79093 Part: Update UI strings for consistency
Closes: #22133
2025-08-04 20:14:51 +02:00
Chris Hennes
a4d0a691b5 Part: Add error handling to TopoShape::isLinearEdge 2025-07-26 11:17:33 +02:00
tomate44
163a4a4a2d Part: Feature Offset2D fix #22563 2025-07-22 20:40:51 -05:00
Max Wilfinger
05505e3f31 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
6f3f0b1d0d Attacher: Orient normals correctly for Midpoint
Co-authored-by: Max Wilfinger <max@wilfinger.de>
2025-07-18 01:12:22 +02:00
theo-vt
50840e358f Use correct flag 2025-07-14 18:28:33 +02:00
theo-vt
a933c22dad Allow open wires in Part::getProfileNormal 2025-07-14 17:38:51 +02:00
FEA-eng
393edbcb3e 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
Bas Ruigrok
7a63946762 Part: Align to planar curves normal direction 2025-06-22 21:43:45 -05:00
Chris Hennes
f0b53af32f Part: Remove remnants of code from TNP merge 2025-06-20 22:41:24 +02:00
paddle
24efbf4234 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
Joao Matos
2da938b545 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
theo-vt
1a0a68ae69 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
hlorus
900afce86f Measure: Add MeasureElementType::Surface 2025-05-20 12:01:14 +02:00