Commit Graph

21819 Commits

Author SHA1 Message Date
Bernd Hahnebach
43cc0084eb FEM: unit tests, make own module for each frame work solver 2020-07-01 17:42:47 +02:00
Abdullah Tahiri
2a39c8e9fd Sketcher: Check invalid constraint indices in unmanaged operations
==================================================================

It is possible to bypass SketchObject in modifying geometry and constraints. Like in here:
https://forum.freecadweb.org/viewtopic.php?f=3&t=41326&start=20#p408409

This leads to unexpected behaviour and even crashes.

With this commit the new mechanism of constraint indices check is leveraged in cases not involving SketchObject operations (aka managed operations).

Direct assignment of properties from Python (sketcher unmanaged operations), undergo this extra indices check.

When indices in constraints are outside the geometry range, the constraints are shown as empty and the error is shown in the report window.
2020-07-01 14:04:25 +02:00
Abdullah Tahiri
638a6b24bc Sketcher: PropertyConstraintList input data validation
======================================================

PropertyConstraintList is provided with the ability to check its constraints indices against
a minimum and a maximum, and set an invalidindex status.

In this status, the getValues returns an emptylist, as in the case with invalid geometry types.
2020-07-01 14:04:25 +02:00
Abdullah Tahiri
30d30a27b8 GCS: Prevent that reference constraints affect the result of a redundant solving
================================================================================

Solves the part of this described bug relating to reference constraints affecting the diagnosis of redundant constraints:
https://forum.freecadweb.org/viewtopic.php?p=410195#p410195
2020-07-01 14:04:25 +02:00
Abdullah Tahiri
56db6f0e80 GCS: Add debug code to identify the popularity contest selected redundant that is removed 2020-07-01 14:04:25 +02:00
Abdullah Tahiri
088abe7353 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
e9b74aa934 PropertyConstraintList: refactor setValue 2020-07-01 14:04:25 +02:00
Abdullah Tahiri
7a3e26dc5a PropertyGeometryList: move setValue and refactor 2020-07-01 14:04:25 +02:00
Abdullah Tahiri
5119513488 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
736aa11f6e 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
3c4c3197c9 FEM: meshtools, better comment 2020-06-30 22:27:24 +02:00
Bernd Hahnebach
82ea30f752 FEM: imports, improvements 2020-06-30 22:27:16 +02:00
Bernd Hahnebach
0065d6b76e 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
41c481cc9b Fem: [skip ci] handle exception in Fem Constraint in case referenced shape element doesn't exist 2020-06-30 11:34:07 +02:00
wmayer
d2fd870e44 Base: fix build failure for Py2 2020-06-30 10:27:53 +02:00
Bernd Hahnebach
3a12236f50 Data: examples FEM, delete files added by accident with commit bb1aed0525de 2020-06-29 22:35:41 +02:00
Bernd Hahnebach
3a97d68e70 FEM: elmer equation flux, better name without word solver 2020-06-29 22:28:26 +02:00
Bernd Hahnebach
6321f1d8f3 FEM: equation head, change back wrong menue text introduced with fa8c4c618ff2 2020-06-29 21:46:43 +02:00
wmayer
aad54a2a78 Gui: [skip ci] improve usability of VectorListEditor 2020-06-29 21:29:12 +02:00
luz.paz
ef37cc3930 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
096ec69fb3 FEM: elmer writer, fix unit test 2020-06-29 20:21:56 +02:00
Bernd Hahnebach
6912557ee4 FEM: elmer writer, better messages and code formating 2020-06-29 20:21:51 +02:00
HoWil
520b69bdb7 FEM: elmer writer, add scaling and revert scaling only for m/kg/s unit schema 2020-06-29 20:21:51 +02:00
HoWil
3b9422d52d FEM: elmer writer, export meter based units for scaled m-based simulation 2020-06-29 20:21:49 +02:00
wmayer
842aa9f69c App: [skip ci] extend doc string of Document.findObjects 2020-06-29 18:51:01 +02:00
wmayer
9eb5a90d94 Base: let PyStreambuf figure out if String or Bytes object must be written to file 2020-06-29 18:04:32 +02:00
Bernd Hahnebach
1432635013 FEM: constant vacuum permittivity, implement in elmer writer 2020-06-29 17:46:43 +02:00
Bernd Hahnebach
84aba55ea8 FEM: constant vacuum permittivity, add object to overwrite constant 2020-06-29 17:46:43 +02:00
Bernd Hahnebach
986aca5b82 App: properties, add vacuum permittivity 2020-06-29 17:46:41 +02:00
sliptonic
1b643536b9 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
2c74dd8e28 Merge pull request #3645 from Russ4262/BaseGeomList_resize
[Path] Resize the Base Geometry list dynamically
2020-06-29 09:53:18 -05:00
sliptonic
73b56a6e25 Merge pull request #3653 from etrombly/opsegfault
[PATH] fix segfault when disabling ops
2020-06-29 09:52:36 -05:00
wmayer
80ad2edfe4 Gui: export scene graph to file or buffer 2020-06-29 15:27:52 +02:00
Bernd Hahnebach
b457adc0ae FEM: examples manager, typo 2020-06-29 08:08:34 +02:00
Bernd Hahnebach
7138420c91 FEM: objects make, add TODO comment 2020-06-29 08:08:25 +02:00
Bernd Hahnebach
5be1bde753 FEM: object add module, small comment fix 2020-06-29 08:08:11 +02:00
Bernd Hahnebach
e602c822ff FEM: elmer equation objects, improve object creation 2020-06-29 08:08:04 +02:00
Eric Trombly
74ef899a75 check if pcLineCoords is empty 2020-06-28 19:52:59 -05:00
Eric Trombly
031a3d0816 fix null reference 2020-06-28 19:52:59 -05:00
wmayer
dc551e1fb0 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
4fc5655657 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
22bc65b54c 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
ebc1a42880 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
wmayer
d21cd009b1 App: extend Document::findObject to allow to search by label 2020-06-27 15:58:23 +02:00
wmayer
8834e91502 [skip ci] do not set attribute WA_DeleteOnClose when loading FreeCAD GUI from Python 2020-06-26 13:52:55 +02:00
Bernd Hahnebach
76c0391bcd FEM: examples manager, delete depreciated code 2020-06-26 11:26:42 +02:00
Sudhanshu Dubey
2dcfdd98d0 FEM: examples manager, add generic method to run examples 2020-06-26 10:57:07 +02:00
Bernd Hahnebach
afdb767302 FEM: constants, typo 2020-06-26 09:11:41 +02:00
Bernd Hahnebach
2ee915a00c FEM: elmer writer, better identifier in a method 2020-06-26 08:51:42 +02:00
Bernd Hahnebach
a68b6d8e58 FEM: flake8 2020-06-26 08:17:30 +02:00