Commit Graph

31061 Commits

Author SHA1 Message Date
tetektoza
fcfd26b97a 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
f681e241bc 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
0c068415b9 Sketcher: Avoid an unnecessary geometry update when trimming 2025-04-28 11:11:57 -05:00
Roy-043
bfef06f580 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
João Neves
05f0c606d5 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
1d2fd7fe6c 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
J-Dunn
5b70817944 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
7f551072c6 CAM: Fix array warning 2 2025-04-28 10:38:24 -05:00
David Carter
827ff3eb99 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
1d0e6b368d making the buttons of the temperature constrain expandable (#20894) 2025-04-28 10:11:40 -05:00
paul
e4b1190956 [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
f915ad7190 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
ac9b65aa65 Misc: Fix various typos
Found via codespell
2025-04-27 19:32:19 -05:00
tetektoza
8fda3b4bd1 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
Kacper Donat
6c7c7a747d Material: Replace dynamic_cast with qobject_cast 2025-04-26 14:23:25 +02:00
Kacper Donat
b9c74ef138 Sketcher: Replace dynamic_cast with qobject_cast 2025-04-26 14:23:25 +02:00
Kacper Donat
5658331bb0 Spreadsheet: Replace dynamic_cast with qobject_cast 2025-04-26 14:23:25 +02:00
Kacper Donat
ed6e953c90 TechDraw: Replace dynamic_cast with qobject_cast 2025-04-26 14:23:25 +02:00
Kacper Donat
585d277e49 Sketcher: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat
9fba1b9fad Fem: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat
2fb8b2d7f1 Part: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat
a5071587de Spreadsheet: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat
c5a137df89 Robot: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat
c05ade50ae PartDesign: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat
b999ce0336 TechDraw: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat
4bd2cdeb2a Mesh: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat
ff99df4c4d Assembly: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat
0e2fd36551 Points: Use freecad_cast whenever possible 2025-04-26 14:23:25 +02:00
Kacper Donat
929f926846 Surface: Add missing SurfaceExport in Surface classes 2025-04-26 14:23:25 +02:00
Kacper Donat
cc50b2ede4 Part: Add missing PartExports in Part Features 2025-04-26 14:23:25 +02:00
Kacper Donat
6f262b1ee6 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
aprospero
f3fe554af7 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
ff92a96170 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
33272a76c8 [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
061ae88878 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
Furgo
8dfa7a9a63 Assembly: BOM, handle enumerations as well 2025-04-25 01:53:11 +02:00
Furgo
160916cba3 Assembly: BOM, use getUserString to simplify code 2025-04-24 14:20:35 +02:00
Furgo
323bcb019e Assembly: BOM, use freecad_cast 2025-04-24 14:20:35 +02:00
Furgo
ce4b0205a8 Assembly: BOM, support superset property type only 2025-04-24 14:20:35 +02:00
Furgo
242c724be2 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
ed518f5c44 Assembly: BOM, internationalize strings 2025-04-24 14:20:35 +02:00
Furgo
3871379ad2 Assembly: BOM properties, update help message 2025-04-24 14:20:35 +02:00
Furgo
c4c1b7a1a3 Assembly: BOM custom columns can now return property values 2025-04-24 14:20:35 +02:00
Roy-043
37fc925480 Draft: Change 'Chain Mode' GUI text to sentence case 2025-04-24 10:10:18 +02:00
Furgo
e25c43537a 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
84166128c4 Draft: adjust formatting of params.py (#20946) 2025-04-23 19:16:40 +02:00
Roy-043
a93703974b Draft: adjust formatting of params.py 2025-04-23 17:03:07 +02:00
tetektoza
354cef7463 TechDraw: Use static_cast when casting scene's child to TextField 2025-04-23 16:32:31 +02:00
tetektoza
bbcdb77003 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
Kacper Donat
b24af528d5 Merge pull request #20778 from FlachyJoe/LockedProperty2
Prevent user to remove core properties
2025-04-23 00:23:37 +02:00