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.
`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).
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.
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.
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.
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.
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
* [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>
* [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.ciFixes#20111
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
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.
* 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>
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
```
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")
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.
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.
* 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.
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>
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.
* [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>
Update module dependencies to ensure that automated testing code is considered as well as direct dependencies. Update some automated tests to eliminate unwanted dependencies.
* 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.
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.
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
* 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
printf is used to output formated stringstream. Not only introductory
information is somewhat repeated, but text can be sent directly to
standard output.
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.
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.
* 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>
* 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>
* 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
* 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>
* 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
* [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
* 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>
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
* 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: f045df1e2509e59bd4f3cb72
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
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.
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
* 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
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.
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.
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.
* 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>
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.
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)
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.
Rename original SolverCalculix.ui to SolverCcxTools.ui to prevent
collision on case insensitive filesystems.
Fixes: 4f7a835e22 ("Fem: SolverCalculiX object refactor")
* 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>
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.
* 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
* 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.
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>
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.
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.
* 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>
* 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
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.
* 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
* 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>
* 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>
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
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.
* 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.
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.
* renamed SoFCCSysDragger to SoTransformDragger
* moved TDragger, RDragger and TPlanarDragger to separate files and also renamed them to be more descriptive
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.
* 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>
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
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.
This adds optional origin indicator ofr SoFCPlacementIndicator. This is
something that can be used to clearly indicate origin placement with
small sphere.
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.
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.
* parametrize draft vector utils precision
* fix: a single function didn't get the complete latest update.
* compatibility: reintroduce DraftVecUtils.precision() as deprecated.
* 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>
* 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>
* 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>
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
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>
* 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>
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.
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.
Previously, StdCmdToggleFreeze only unfroze child objects using
getInListRecursive(). This update ensures that dependent objects
are properly unfrozen.
Freezing behavior remains unchanged.
* 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>
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.
- Renamed dataProperty -> dataPropertyName because the function returns
variants for the property name.
- Add an enum for the column to remove magic numbers
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.
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"`
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.
* 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>
-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
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.
* 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>
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.
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.
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".
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.
- 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.
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.
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).
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.
Can't rely purely on `TaskHoleParameters::threadDiameterChanged` to update it since the signal is intentionally blocked while syncing state to GUI.
Closes#19744
* 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
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.
* 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.
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()`.
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).
- 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
* [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>
* [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>
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.
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.
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).
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).
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.
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.
* 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
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).
* 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
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.
* 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>
* 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
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.
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.
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
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")
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.
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.
* 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>
* Add const
* Add final
* [[nodiscard]]
* Fix parameter names
* Add TypeId instead of unsigned int
* Add "BadType" string constant
Some some other tweaks
* 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
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.
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.
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.
* 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>
* 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
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
* [ArchWindow] Improve SubVolume() HoleDepth deduction algorithm
https://github.com/FreeCAD/FreeCAD/issues/19559https://forum.freecad.org/viewtopic.php?t=92360https://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
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.
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.
- 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 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 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 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 currently present magic numbers
- Hard type enums, so magic numbers can no longer be introduced. We don't want people to introduce magic numbers.
* * 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.
#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.
* [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>
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.
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.
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.
_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.
* 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.
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
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.
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.
* 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>
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
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
```
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.
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.
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.
* 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
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.
- 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 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 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 currently present magic numbers
- Hard type enums, so magic numbers can no longer be introduced. We don't want people to introduce magic numbers.
* 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>
* [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
* 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()`.
* [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
* 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>
* 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
* 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>
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.
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
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.
* 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>
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
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.
* Fem: Display popup menu when MeshGroup solid selection is ambiguous
* FEM: Update license to new language
---------
Co-authored-by: Chris Hennes <chennes@gmail.com>
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.
* 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>
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.
* 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
* 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
* 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
* 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
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.
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.
* 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
* 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".
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.
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
* 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>
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
`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.
* 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>
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.
* 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>
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.
Updated rectangle, polygon and spline group commands to use group command class.
Added separator comments with tool names for better code organization.
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.
* 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
* 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.
* 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
* 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
* 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>
* 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>
* 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
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.
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.
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.
* 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>
* 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
* 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.
* 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>
* 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>
* 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>
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.
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' "{}" \;
* 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"..
* 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
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.
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.
* 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>
We are able to pass extra modules path with command line arguments.
Handle such modules when copying about information to clipboard.
Change-Id: I158b6ea021cc0a5dfd27693d22f6c56a6bdcd239
* 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
* 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>
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
* [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
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.
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: 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.
Refer to discussion at -
https://github.com/FreeCAD/FreeCAD/pull/18651https://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.
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.
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.
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.
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.
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.
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
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
(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.
(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
* [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>
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.
* 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
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
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
* 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>
Windows requires running from an installed FreeCAD, not simply the build environment. This
commit performs the install and execution from the installation environment.
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"/>`.
* 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
* 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>
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
* [TD]respect locale for date autofill
* [TD]fix merge conflict
* Apply suggestions from code review
---------
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
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
* 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>
* 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>
* [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>
* 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
* 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
* 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>
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"`
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.
* 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>
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.
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
* 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.
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.
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.
* 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>
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.
* 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>
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.
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
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
.
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.
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.
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?
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.
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.
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)
* 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
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).
* 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>
* 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>
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.
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.
* 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
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.
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.
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.
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
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.
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.
* Change button text to confirm copy.
* translation and timer->reset
* timer->single shot + text variable
---------
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
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?
It seems that Base has very handy helpers for converting between various
types. This simplifies code of ViewProviderAssembly::get/setDraggerPlacement a
lot.
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
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
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.
* [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.
* 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.
* 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.
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.
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.
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.
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.
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
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
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.
* 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`.
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.
* 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
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.
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
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.
* 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>
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.
* 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.
- `-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
* 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>
* increase tolerance on helical shapes to avoid crash
fix#17113fix#9377fix#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
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
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
* [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>
* 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>
* Safe mode message added as per #17580
* Fixed extra whitespace after return
Removed extra whitespace after return spotted by @hyarion
* Incorporated comments by @hyarion
* 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>
* 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
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
* 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>
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.
* 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>
* 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>
* 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
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
* [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>
* expose isAttachedToDocument to Python
* change DocumentObjectPy::getName() to return None instead of throwing an exception if object is not part of a document
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.
* 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>
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.
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
* 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>
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.
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.
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.
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
* 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>
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
* 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>
* 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>
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
* 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>
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
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">
* 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
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.
* 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
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.
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].
* 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>
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
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.
* 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>
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.
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
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.
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.
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.
* 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)
* 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.
* 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>
* 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.
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
* [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
* 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>
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.
Correct the installation paths affecting builds on various systems
while still maintaining the old material editor required for
backwards compatibility
* 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>
* 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.
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
* 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
* [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>
* 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>
FreeCAD advertizes itself too noisy way which brings no usefull
infomation. Unify banner for commandline and GUI application and
drop unicode '(C)' character.
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.
* 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>
* 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>
* 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>
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.
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.
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)
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.
* 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
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.
* 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>
* 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.
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.
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
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
description:Please use the About FreeCAD dialog to copy your full version information and paste it here.
description:Please use the About FreeCAD dialog to copy your full version information and paste it here. Try reproducing the issue by restarting FreeCAD in safe mode too.
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?
Hi! This issue hasn’t seen activity in a while. If it’s still relevant, please update to the latest FreeCAD weekly build [download here](https://github.com/FreeCAD/FreeCAD-Bundle/releases/tag/weekly-builds) to see if the problem is resolved.
If the issue persists, let us know by adding a comment with any updates or details. Otherwise, we’ll close this issue automatically in 20 days to keep our backlog tidy. Feel free to comment anytime to keep it open. Closed issues can always be reopened.
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 hasn’t seen activity in a while despite the need for further feedback.
If it’s still relevant, please update to the latest FreeCAD weekly build [download here](https://github.com/FreeCAD/FreeCAD-Bundle/releases/tag/weekly-builds) to see if the problem is resolved.
If the issue persists, let us know by adding a comment with any updates or details. Otherwise, we’ll close this issue automatically in 20 days to keep our backlog tidy. Feel free to comment anytime to keep it open. Closed issues can always be reopened.
Hi! This issue hasn’t seen activity in a while. We automatically check each issue after 190 days without activity to keep the backlog tidy.
If it’s still relevant, please update to the latest FreeCAD weekly build [download here](https://github.com/FreeCAD/FreeCAD-Bundle/releases/tag/weekly-builds) to see if the issue is already resolved.
If the issue is still relevant, let us know by adding a comment.
Otherwise, we’ll close this issue automatically in 60 days.
Feel free to comment anytime to keep it open. Closed issues can always be reopened.
This pull request hasn’t seen activity in a while. We automatically check each PR after 160 days without activity to keep the repository tidy.
If the PR is still relevant, let us know by adding a comment.
Otherwise, we’ll close this PR automatically in 90 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.
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 "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 "[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 "<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 }}
> Bleeding edge FreeCAD development builds for testing bugfixes, regressions, and recently implemented features. Do not use in a production environment.
### How-to use
1. Download the appropriate asset for your OS below
@@ -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,10 @@ 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 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.
13. A “Valid PR” is one which satisfies the above requirements.
@@ -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).*
- 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`;
- 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;
# 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
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.