Commit Graph

16961 Commits

Author SHA1 Message Date
Abdullah Tahiri
ffaa92d29b GCS: Add debug code to identify the popularity contest selected redundant that is removed 2020-07-01 14:04:25 +02:00
Abdullah Tahiri
926625b678 Sketcher: Use move semantics wherever sensible
==============================================

Take advantage of PropertyGeometryList setValues() move overload in order to make code more readable and prevent
memory leaks (mostly by inadvertedly not deleting cloned geometry and constraints).

PropertyGeometryList and PropertyConstraintList are vectors of heap allocated pointers. Copying a vector
makes a shallow copy, not a deep copy (the pointers are the same in the copy).

For property management, setValues() function taking a const reference effectively make a deep copy of all
pointed objects. This means that heap allocated pointers of the client class passed to these functions must be
released by the client. While this sounds sensible, forgetting to is easy. In the cases where the developer
remembered to release these pointers, extra code is needed just for memory management.

This commit does not seek a substantial performance increase that would justify rewritting the code, although code
may be slightly faster sometimes.

Functions where setValues() is conditional are not changed to move semantics, as it makes no sense to make a deep copy to sometimes
perform a second deep copy later on. This code still uses const ref setValues().

CHECKS performed to refactored functions with this commit:

1) That the vector is NOT used after moving its content.

2) That whereever there is a clone(), there must be EITHER
    -a std::move if using rvalue setValues()
    OR
    - a delete to free the heap memory after setValues if using the const ref setValues()

3) That memory is released if an exception occurred.

N.B.: A couple of memory leaks are fixed in this commit too.
2020-07-01 14:04:25 +02:00
Abdullah Tahiri
fe993abc35 PropertyConstraintList: refactor setValue 2020-07-01 14:04:25 +02:00
Abdullah Tahiri
9ca8568f89 PropertyGeometryList: move setValue and refactor 2020-07-01 14:04:25 +02:00
Abdullah Tahiri
ac167aa850 Sketcher: ViewProviderSketch inhibit update if internal transaction is ongoing
==============================================================================

Inhibit ViewProviderSketch updateData with invalid data (internal transaction).

Trigger update internally for internal transactions in SketchObject via touched()
so as to trigger updateData.

This leads to a reduction of updateData calls.
2020-07-01 14:04:25 +02:00
Abdullah Tahiri
3941b69170 Sketcher: Internal Transaction Support and ensure valid constraint geometry indices
===================================================================================

On changing the geometry property (for example from Python), the constraints geometry indices was not rebuild in order to avoid
redundant and unnecessary rebuilds. However, this might cause crashes, as the status of the sketch (or its properties) may be invalid.

It also refactors into OnChanged common functionality.

This commit does NOT solve that the user may be inserting invalid geometry indices to the First/Second/Third of Constraints (invalid input).
Only makes sure that geometry indices (geometry types) of PropertyConstraintList match the geometry.

Solution:

1. Force the rebuild of the constraint geometry indices upon assignment of new Geometry.
2. Force the rebuild of the constraint geometry indices upon assigment of constraints, if they result in invalid geometry indices.
3. Introduce the concept of internal transaction to avoid those rebuilds, checks and updates in case of an ongoing internal transaction,
thereby preventing them as it was done before introducing 1 and 2 (in the case of SketchObject internal transactions).
2020-07-01 14:04:25 +02:00
Bernd Hahnebach
1fe43280ca FEM: meshtools, better comment 2020-06-30 22:27:24 +02:00
Bernd Hahnebach
ec4535aeac FEM: imports, improvements 2020-06-30 22:27:16 +02:00
Bernd Hahnebach
c4b0635361 FEM: mesh tools, compact mesh, use one id for Edges, Faces and Volumes as SMESH does save it 2020-06-30 19:26:04 +02:00
wmayer
68b98f5ffe Fem: [skip ci] handle exception in Fem Constraint in case referenced shape element doesn't exist 2020-06-30 11:34:07 +02:00
Bernd Hahnebach
9bfd947886 FEM: elmer equation flux, better name without word solver 2020-06-29 22:28:26 +02:00
Bernd Hahnebach
0c1f99a30c FEM: equation head, change back wrong menue text introduced with e7b813f178 2020-06-29 21:46:43 +02:00
luz.paz
1da81df756 Fix typos [skip-ci]
Found via codespell v1.18.0.dev0  
```
codespell -q 3 -L aci,ake,aline,alle,alledges,alocation,als,ang,anid,ba,beginn,behaviour,bloaded,byteorder,calculater,cancelled,cancelling,cas,cascade,centimetre,childs,colour,colours,commen,connexion,currenty,dof,doubleclick,dum,eiter,elemente,ende,feld,finde,findf,freez,hist,iff,indicies,initialisation,initialise,initialised,initialises,initialisiert,ist,kilometre,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oder,orgin,orginx,orginy,ot,pard,pres,programm,que,recurrance,rougly,seperator,serie,sinc,strack,substraction,te,thist,thru,tread,uint,unter,vertexes,wallthickness,whitespaces -S ./.git,*.po,*.ts,./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
```
2020-06-29 20:52:23 +02:00
Bernd Hahnebach
fe4107c3af FEM: elmer writer, fix unit test 2020-06-29 20:21:56 +02:00
Bernd Hahnebach
c43b3c2b2a FEM: elmer writer, better messages and code formating 2020-06-29 20:21:51 +02:00
HoWil
95a58b1ee7 FEM: elmer writer, add scaling and revert scaling only for m/kg/s unit schema 2020-06-29 20:21:51 +02:00
HoWil
6a511c142b FEM: elmer writer, export meter based units for scaled m-based simulation 2020-06-29 20:21:49 +02:00
Bernd Hahnebach
d3b43aa5bf FEM: constant vacuum permittivity, implement in elmer writer 2020-06-29 17:46:43 +02:00
Bernd Hahnebach
43ad6aa729 FEM: constant vacuum permittivity, add object to overwrite constant 2020-06-29 17:46:43 +02:00
sliptonic
a0a4fdb330 Merge pull request #3657 from Russ4262/MillFace_fix
[Path] MillFace - Fix calculation of OpFinalDepth default value
2020-06-29 09:54:04 -05:00
sliptonic
8a85d0b2bd Merge pull request #3645 from Russ4262/BaseGeomList_resize
[Path] Resize the Base Geometry list dynamically
2020-06-29 09:53:18 -05:00
sliptonic
aeb989abf7 Merge pull request #3653 from etrombly/opsegfault
[PATH] fix segfault when disabling ops
2020-06-29 09:52:36 -05:00
Bernd Hahnebach
ecc07bc050 FEM: examples manager, typo 2020-06-29 08:08:34 +02:00
Bernd Hahnebach
0ac4897cfa FEM: objects make, add TODO comment 2020-06-29 08:08:25 +02:00
Bernd Hahnebach
3ea4ceb89f FEM: object add module, small comment fix 2020-06-29 08:08:11 +02:00
Bernd Hahnebach
10119ad9a1 FEM: elmer equation objects, improve object creation 2020-06-29 08:08:04 +02:00
Eric Trombly
6fc8a3cae7 check if pcLineCoords is empty 2020-06-28 19:52:59 -05:00
Eric Trombly
2035e0cfbc fix null reference 2020-06-28 19:52:59 -05:00
wmayer
2c56e3c9fa Spreadsheet: [skip ci] avoid to show scroll buttons in PropertiesDialog when a style sheet is used 2020-06-28 18:24:16 +02:00
wmayer
478823b909 Part: [skip ci] fix regression in ruled surface feature by applying placement of source object twice
See: https://forum.freecadweb.org/viewtopic.php?p=411934
2020-06-27 23:17:32 +02:00
Russell Johnson
65f7e24a9e Path: Resize the Base Geometry list dynamically
Make the size of the Base Geometry list dynamically adjust to its contents.
2020-06-27 15:05:00 -05:00
Russell Johnson
9b67e43b12 Path: Fix calculation of OpFinalDepth default value
Remove commented lines.
Modify PathLog.Level assignment for easier readability.
2020-06-27 09:36:14 -05:00
Bernd Hahnebach
ef21d8ec08 FEM: examples manager, delete depreciated code 2020-06-26 11:26:42 +02:00
Sudhanshu Dubey
c57c3cbcf6 FEM: examples manager, add generic method to run examples 2020-06-26 10:57:07 +02:00
Bernd Hahnebach
97ea8f456c FEM: constants, typo 2020-06-26 09:11:41 +02:00
Bernd Hahnebach
45fa9e299c FEM: elmer writer, better identifier in a method 2020-06-26 08:51:42 +02:00
Bernd Hahnebach
fc8da5ca06 FEM: flake8 2020-06-26 08:17:30 +02:00
Bernd Hahnebach
801bfe4ba5 FEM: flake8 2020-06-25 18:08:53 +02:00
Yorik van Havre
742b6d416b Arch: Small code optimizations to the multicore IFC importer 2020-06-25 15:38:31 +02:00
Kisolre
7651e6d974 Fix for changed Github url links being relative instead of absolute. 2020-06-25 15:07:50 +02:00
Yorik van Havre
d43588d240 Arch: New multicore IFC importer 2020-06-25 14:42:38 +02:00
Bernd Hahnebach
59bdba9c49 FEM: code foramatting, line length 2020-06-25 11:58:45 +02:00
Bernd Hahnebach
ccea55a655 FEM: elmer, better print and log 2020-06-24 18:02:47 +02:00
vocx-fc
d36c21fd55 Arch: add missing translate function
The code was moved to a separate module, `ArchWindowPresets.py`,
in be0c8eab25, but the `translate` function was not imported
in this new module.
2020-06-24 11:31:26 +02:00
paul lee
8ff45dfb39 [ArchWall] Revert comments in getExtrusionData() 2020-06-24 11:29:07 +02:00
paul lee
81dd47b039 [ArchWall] ArchWall Offset should now works with Base as Sketch 2020-06-24 11:29:07 +02:00
Bernd Hahnebach
f5dea7edc7 FEM: ccx constraint section print, add unit test 2020-06-24 09:22:09 +02:00
Bernd Hahnebach
5f928b7325 FEM: examples, section print, fix to setup on cmd mode 2020-06-24 09:22:01 +02:00
UR-0
3dfc9471ab FEM: ccx constraint section print, add task panel 2020-06-24 07:52:16 +02:00
UR-0
7d17d6f6b6 FEM: ccx constraint section print, add Gui command and icon 2020-06-24 07:52:16 +02:00