Commit Graph

616 Commits

Author SHA1 Message Date
Yorik van Havre
7d0012e160 Added latest translations from crowdin 2016-03-06 14:50:07 -03:00
triplus
93c7a6bcac Add SVG workbench icons 2016-02-26 23:17:43 +01:00
Yorik van Havre
f93b1b26df Added updated translations from crowdin - fixes #2443 2016-02-26 18:32:02 -03:00
Jonathan Wiedemann
c384626e39 Sketcher : Allow µm in sketcher grid size 2016-02-19 16:32:25 +01:00
Yorik van Havre
3106ca7df3 Added slovenian language 2016-02-03 13:36:51 -02:00
Yorik van Havre
758b0778d4 Updated translations with latest from crowdin 2016-02-01 23:32:58 -02:00
wmayer
eacd2dc668 + simplify porting of Sketcher module to Python3 2016-01-18 12:19:54 +01:00
Abdullah Tahiri
4154482dfc Sketcher Bug fix: Solver information update on over-constrained situation
==================================================================================

Why?
if lastDoF<0, then an over-constrained situation has ensued and geometry is not to be updated, as geometry can not follow the constraints.
However, solver information needs to be updated.

Solution:
Just trigger a constraint change so that signaling is sent to ViewProviderSketch via boost and the solver information updated, using
Constraints.touch().
2016-01-09 13:42:12 +01:00
Mateusz Skowroński
6942c23895 Qt4's qglobal.h defined TRUE and FALSE. Qt5 does not do it anymore. Replace it with true and false.
158f39ec78

This change is Qt4/Qt5 neutral.
2016-01-05 16:43:33 +01:00
Mateusz Skowroński
c275b35d48 QString::fromAscii() is obsolete in Qt5. Replace it with fromLatin1().
This change is Qt4/Qt5 neutral.
2016-01-05 16:07:25 +01:00
Mateusz Skowroński
0695552cff QString::toAscii() is obsolete in Qt5. Replace it with toLatin1().
This change is Qt4/Qt5 neutral.
2016-01-05 16:06:48 +01:00
Yorik van Havre
80f27ca316 Updated ts files prior to translation cycle 2016-01-03 19:45:29 -02:00
wmayer
bc4f4de54b + fix compiler warnings 2015-12-30 10:58:14 +01:00
Abdullah Tahiri
5db4a8ded2 Sketcher: Solver: FullPivLU::compute for Eigen-3.3
==================================================

This fix enables usage of the Eigen SparseQR starting in Eigen-3.3. It optimizes the code enabling it
to work with the new assignation interface of Eigen-3.3, which is more strict than that of Eigen-3.2.

It provides the same optimization for DenseQR code, and omits the extraction of the Q matrix in DenseQR
as this is not used anywhere else.

[NOTE: This is only to be merged after Debian has updated the Eigen-3.3-alpha1 package]

See:
http://forum.freecadweb.org/viewtopic.php?f=10&t=12769&start=30#p104740
https://forum.kde.org/viewtopic.php?f=74&t=129115
2015-12-28 11:51:34 -02:00
Abdullah Tahiri
eadf71bf51 Sketcher: Solver: FullPivLU::compute for Eigen-3.3
==================================================

This fix enables usage of the Eigen own compute function starting in Eigen-3.3, as now it is fixed in Eigen.

[NOTE: This is only to be merged after Debian has updated the Eigen-3.3-alpha1 package]

See:
http://forum.freecadweb.org/viewtopic.php?f=3&t=4651&start=40
http://forum.freecadweb.org/viewtopic.php?f=10&t=12769&start=60#p106492
https://forum.kde.org/viewtopic.php?f=74&t=129439
2015-12-28 11:51:34 -02:00
wmayer
60d59b608a + fixes #0001956: FreeCAD 0.14.370x hangs when attempting to edit sketch containing ellipse 2015-12-27 11:44:47 +01:00
wmayer
8db6a78f64 + improve whitespaces 2015-12-25 10:56:03 +01:00
wmayer
abf6fa4e30 + improve whitespaces 2015-12-25 10:37:52 +01:00
wmayer
066749fdc9 + fixes #0002372: Application terminates on attempt to change external geometry from a sketch
+ fixes #0002373: When Measuring in the distance between two external geometry Freecad crashes
2015-12-25 09:47:25 +01:00
Eivind Kvedalen
0d9b36c4eb PropertyConstraintList: Use correct indices when checking the constraint type. 2015-12-21 14:11:14 +01:00
Eivind Kvedalen
8c18dba109 Sketcher: Fixed setPathValue to convert angles to radians before they are stored in the Constraint object. This mimics the setDatum implementation. 2015-12-18 22:05:30 +01:00
Stefan Tröger
2c249e69f2 Expressions: Fix property editor behavior
- change responsibility of python code emition
- Correct python code handling for expressions
- handle constraints expressions handling
2015-12-09 14:08:50 +01:00
Stefan Tröger
96a586d04a Expressions: Integrate into the property editor
- basic infrastructure for handling of expressions
- port the unit properties editor to support expressions
- port placement editor to support expressions
- expressions for double spinbox
- expressions in sketch constraints
2015-12-09 14:08:48 +01:00
Abdullah Tahiri
f037bf9f52 Sketcher: Fix Sketch Mirror functionality
=========================================

The problem:
Mirror stopped working.

How to reproduce:
Select a sketch, and apply "Mirror Sketch" from the menu.

Why?
With the introduction of expressions, mirror sketch stopped working. The reason is that mirror functionality did use the "clone" function to make copies of constraints
and then modify their values. After expessions introduction, which introduces a unique tag per constraint, this copy was regarded as a "rename" of the original constraint
as they shared the unique tag.

Fix?
New function "copy()" for a constraint, that copies all the content but the tag.
2015-12-09 13:32:12 +01:00
wmayer
93a3dc0cdd + fix warnings with Win32 build 2015-12-01 00:51:57 +01:00
Abdullah Tahiri
e28ca0847a Sketch: Solver: Extended Advanced Solver configuration
========================================================

This is an advanced setting just for allowing increased choices to power users that have problems with a given sketch and want to
test different flavours of DogLeg algorithm.

This commit does not change the default behaviour of FreeCAD. It is only intended to give more options to power users.

The advanced solver configuration is extended to support three different Gauss-newton steps for DogLeg:

FullPivLU => h_gn = Jx.fullPivLu().solve(-fx);
LeastNormFullPivLU => h_gn = Jx.adjoint()*(Jx*Jx.adjoint()).fullPivLu().solve(-fx);
LeastNormLdlt => h_gn = Jx.adjoint()*(Jx*Jx.adjoint()).ldlt().solve(-fx);

This setting is applied only to DogLeg. It is applied to DogLeg as normal or redundant solver, if DogLeg is the selected solver.

Selecting a solver different from DogLeg for both normal and redundant disables the setting.

We have been told:
https://forum.kde.org/viewtopic.php?f=74&t=129439#p346104

that our default Gauss-Newton step in DogLeg may not be adequate in general (we generally deal with underconstraint systems
unless we have a fully constraint sketch, and even then it is many times overconstraint at least for redundant solving).

We have been told that maybe these LeastNorm options are more suitable for us (performance set aside). This enables you as power
user to test if it works fine with FreeCAD.
2015-11-28 13:08:31 +01:00
Abdullah Tahiri
e0e8edf769 Sketch: Solver Defaults: Sketch size multiplier OFF
===================================================

This commit sets the sketch size multiplier OFF by default (so the number of iterations DogLeg/BGFS/LM is not sketch size dependent).

In complicated sketches having a high number of parameters, with sketch multiplier on, the number of iterations is extremely high (100 parameters*100 iterations => 10000 iterations).

The idea of disabling this comes from tests performed by DeepSOIC and from my own experience using the Sketcher. In general
sketch multiplier makes FreeCAD unresposive (very high amount of iterations, not a real freeze) in big sketches so that users
end up killing the application. This is preventing the users from taking appropriate action, Developers from getting the information of the failure and
users angry.

The idea is that even for complicated sketchs N iterations (100 by default) should be enough to converge, if it is ever going to converge. Experience will tell us
if we have to increase this number in the range [100-300]. 100 iterations in complicated dossiers is in my experience generally under 30 seconds.

N.B.: This commit does not change the defaults stored in your computer, so if you have the sketcher multiplier on, the advanced solver dialog will still enforce this local setting. You
may disable it or click the "defaults" button to disable the sketcher multiplier.
2015-11-28 13:08:24 +01:00
wmayer
8516092c6e + fix whitespaces 2015-11-25 21:02:00 +01:00
Abdullah Tahiri
40f4940068 Sketcher: Solver Debug functionality: Ability to export a subsystem
===================================================================

It allows to export the c++ code to create a subsystem with the same information as the one solved using LM/DL/BGFS.

In this commit the functionality is disabled (for production).

To enable the functionality uncomment this line in planegcs/Constraints.h:
//#define _GCS_EXTRACT_SOLVER_SUBSYSTEM_

When enabled, upon solving with LM/DL/BGFS, the c++ code to generate the subsystem is added to a subsystem.txt that is created in the FreeCAD
execution directory.

Note that the file is created in append mode, so it will append all normal/redundant solvings until the file is deleted.

The resulting code can be directly pasted into a project similar to:
https://github.com/abdullahtahiriyo/Eigen_LUPiv_Convergence

Such a project only has libeigen as external dependency.
2015-11-25 20:39:04 +01:00
Abdullah Tahiri
72fc07ae83 Sketcher: Advanced solver dialog bug fix LM-tau
================================================

Due to a typo the code was setting LM-tau to 1E-80 by default instead of the intended 1E-3.
2015-11-21 22:48:02 +01:00
Mateusz Skowroński
eee9881c22 Fix file encoding. Go from ISO8859-1 to UTF-8. 2015-11-11 18:54:42 +01:00
wmayer
a403140364 + double check that internal data is valid when leaving edit mode of sketcher view provider 2015-11-02 12:42:18 +01:00
Abdullah Tahiri
52b79c1764 Sketcher: Bug fix: unable to move geometry after addition of a constraint
=========================================================================

This fixes issue:
http://www.freecadweb.org/tracker/view.php?id=2281

Discussed in:
http://forum.freecadweb.org/viewtopic.php?p=101910#p101910

How to reproduce?
With Auto-Update mode unchecked, execute the sequence in the bug tracker. You will reach to a geometry assembly successfully solved that can not be moved.

Why?
The coincident constraint is partially redundant within the meaning of redundancy of the solver.
The solve within "addconstraint" in SketchObjectPy.cpp causes the geometry to move to meet the coincident constraint.
At the end of the solve, the initial solution used in diagnostics is no longer valid (the geometry moved). This causes a subsequente move not to be executed.

The Solution:
Recalculate just the initial solution after the addition.
2015-10-23 00:13:20 +02:00
Abdullah Tahiri
682c79840f Sketcher: Solver information: Bug fix
=====================================

When the solver converged (but did not succeed) or when the solver succeded but the solution is not OCC-valid, no error message was shown in the solver messages dialog.
2015-10-22 23:48:04 +02:00
wmayer
35edaa7e5a + support of Python feature classes without an execute() method
+ if execute() method of Python feature is missing or if it returns false call the execute() method of the C++ feature
+ fix SketchObjectPython
2015-10-21 00:22:40 +02:00
wmayer
787d36e638 + fixes #0002291: Invalid sketch warning should allow to directly open sketch validation tool 2015-10-17 15:34:14 +02:00
wmayer
2a5311c462 + use correct context for translatable strings in ViewProviderSketch 2015-10-17 15:21:37 +02:00
wmayer
f46dc20fca + fix & suppress msvc warnings 2015-10-16 18:26:30 +02:00
Yorik van Havre
4b3442ce5f Merge branch 'master' of github.com:FreeCAD/FreeCAD 2015-10-13 16:44:33 -03:00
Yorik van Havre
49c4cc4379 Sketcher's GCS solver fixed for eigen3.3 2015-10-13 16:38:35 -03:00
Abdullah Tahiri
c3244c915b Sketcher: Bug fix: Constraints dissapear after a sketch loses support
=====================================================================

Issue:
http://freecadweb.org/tracker/view.php?id=2292

Constraints dissapear after a sketch loses support

Steps To Reproduce:
1. Make a sketch on a face.
2. Constrain it
3. Select "reorient sketch"
4. Do you want to lose support? Yes
5. Click cancel on the reorientation dialog.
6. Enter edit mode: No constraints...

Why?
GeoUndef not checked when deleting all external geometry (on dettaching from the support).

Solution:
Check for GeoUndef.
2015-10-13 21:32:55 +02:00
wmayer
f6023d36d2 + rework BoundingBox class and its Python binding 2015-10-11 00:18:53 +02:00
wmayer
de41dc46ec + Prefer prefix ++/-- operators for non-primitive types 2015-10-07 13:38:17 +02:00
Eivind Kvedalen
208ba9eb9d Sketcher: Fixed keeping sign of constraints. 2015-10-06 21:26:22 +02:00
wmayer
51e4eebbc6 + Prefer prefix ++/-- operators for non-primitive types 2015-10-06 21:16:44 +02:00
wmayer
596275c33d + fix warnings: -Wunused-private-field and -Wtautological-compare 2015-10-04 13:27:44 +02:00
wmayer
2acb38daa7 + fix clang warning: -Woverloaded-virtual 2015-10-02 20:42:16 +02:00
Abdullah Tahiri
e4be4f8362 Sketcher Bug fix: External geometry shown after reorient
========================================================================

Reported here:
http://forum.freecadweb.org/viewtopic.php?f=10&t=12517&p=100388#p100429

Solution:
When a sketch loses support, all external geometry is deleted right away.
2015-09-28 11:45:06 +02:00
Abdullah Tahiri
a647bf140a Sketcher: Bug fix: Building Vertex Index on Restore
===================================================

The bug was introduced by myself here:
47c0859c1b

[code]
void SketchObject::onDocumentRestored()
 {
     try {
-        rebuildExternalGeometry();
+        if(Support.getValue()) {
+            validateExternalLinks();
+            rebuildExternalGeometry();
+        }
         Constraints.acceptGeometry(getCompleteGeometry());
     }
[/code]

The issue is that "rebuildExternalGeometry" calls "rebuildVertexIndex". So for any sketch not having external geometry, if you open it, select everything and hit del, you will have a crash because
I effectively removed the creation of the index in this dossier. You won't have one if you do anything rebuilding the index before hitting del, like creating geometry, though.
2015-09-28 11:42:56 +02:00
Abdullah Tahiri
72199f6296 Bug fix: deletion of groups of external geometry
================================================

Issue reported inter alia here:
http://forum.freecadweb.org/viewtopic.php?f=10&t=12380#p99456

How to reproduce:
1. Make an external geometry hexagon (make a hexagon, pad it, make a sketch on a hexagonal face and make all the lines external geometry)
2. Box select the external lines and press "del"

On the first pressing of "del" 3 lines were deleted and 3 remained, select again, on the second press 1 remains, select again, on the last press all are deleted.

Why?
Internal and External geometry were handled together in a single set. Group deletion of geometry is effected starting from the highest index,
so that upon deleting an element, the index of the remaining elements does not change. Handling both groups together caused that the external geometry
was actually deleted on the inversed order (as they are (decreasing) negative values for representation, but increasing positive indexes in the external geometry array).

Solution:
Internal and External geometries are handled separatedly
2015-09-28 11:14:30 +02:00