Commit Graph

522 Commits

Author SHA1 Message Date
wmayer
3cb6890bcc suppress warning C4996 2018-05-31 13:42:35 +02:00
wmayer
d4354af79b fix const correctness 2018-05-31 13:15:31 +02:00
wmayer
63cefaf4a6 fix const correctness 2018-05-31 12:49:23 +02:00
Abdullah Tahiri
60a57107cf Sketcher: fix failure to notify solver issues, like redundancies, when using setUpSketch in SketchObject 2018-05-31 11:41:48 +02:00
Abdullah Tahiri
61b1a15524 Fix MatrixIndexType 2018-05-31 11:41:37 +02:00
Abdullah Tahiri
03c3539dbf GCS: Improvement in redundant constraint detection
==================================================

The solver uses some heuristics to determine the "redundant to remove" and notify it to the user.

Basically it would pick the solver redundant constraint that affects most groups of redundants (popularity contest).

In the simple cases, all the redundants are equally popular and the popularity contest is untied by using the tagid (let say for simplicity it is the number at sketcher level Constraint3, the tagid=3).

This means that in simple cases, the solver systematically decides that the redundant constraint to handle from those showing a linear dependency is the one appearing the last.

This commits changes the way to untie the popularity contest, by giving more priority to those sketcher constraints that need a lower number of solver constraints (in other words,
those constraints that remove a lower amount of DoF). In case of tie, the tagid is then used to break the tie.

At least:
fixes #3434
fixes #1557
2018-05-31 11:41:26 +02:00
Abdullah Tahiri
9e901dbc59 GCS: Fix report view formating and duplicated endline 2018-05-31 11:41:16 +02:00
Abdullah Tahiri
9926105643 Solver: solver sketch level support for driven constraints and parameters
- Support for addition of driving information to GCS constraints
- Support for keeping track of value parameters of driven constraints
- Support for getting which QR algoritm is being used at GCS level
2018-05-31 11:40:16 +02:00
Abdullah Tahiri
858f4cb85b GCS: Full detection of dependent parameters with Dense Full Household pivoting QR decomposition
- Improve Debug information.
- Support for addition of constraints with driving information for the solver constraints.
- Removal of the driven constraints from the Jacobian for QR decomposition
- Removal of the value freewheeling parameter from the Jacobian for QR decomposition
- Full detection of dependent parameters where DoF are present for Dense QR.
2018-05-31 11:40:05 +02:00
Abdullah Tahiri
d531e98eac GCS: Support for solver constraints to store driven/driving status 2018-05-31 11:39:53 +02:00
Abdullah Tahiri
6f7e06fa49 GCS: Extension of solver geometric elements to store whether they have dependent parameters 2018-05-31 11:39:28 +02:00
Abdullah Tahiri
ed25902e12 Solver: Solver Sketch level dependent parameters and solver geometric element management 2018-05-31 11:39:15 +02:00
Abdullah Tahiri
2e70d9c75f GCS: Solver dependent parameters retrieval 2018-05-31 11:39:02 +02:00
Abdullah Tahiri
468946bcde Sketcher: Fix crash on applying dimensional constraint to external element 2018-05-27 19:43:05 +02:00
luz.paz
ed1470e3d2 whitespace cleanup 2018-05-19 12:06:34 -04:00
luz.paz
6e64b4f75d Misc. typos 2018-05-19 12:06:34 -04:00
luz.paz
d4fa4ec21e removed newline altogether 2018-05-02 15:48:01 -04:00
luz.paz
6de9a32066 Used QChar::fromLatin1('\n') instead 2018-05-02 14:57:49 -04:00
luz.paz
5cd5c6ad8c Added QString::fromUtf8("\n") 2018-05-02 00:50:06 -04:00
luz.paz
a529ba1787 Crowdin: more fixes 2018-05-02 00:50:06 -04:00
Abdullah Tahiri
0ac32464e4 Sketcher: Bug fix - prevent inter part/body links
=================================================

With the support for external geometry during carbon copy, it was introduced a way for creating inter-part/inter-body links. See:
https://forum.freecadweb.org/viewtopic.php?f=10&t=27700&p=223736#p223736

This commit closes this door, while still allows carbon copy with external geometry support within the same body.
2018-03-30 21:00:24 +02:00
luz.paz
e9c2145ec7 [For v0.18] Sketcher: Doc typo fix 2018-03-25 11:58:40 +02:00
Abdullah Tahiri
49308811f4 fix string to char * conversion 2018-03-17 13:30:34 +01:00
Abdullah Tahiri
b70bec971e Sketcher: Carbon Copy Support for external geometry 2018-03-17 13:30:34 +01:00
Abdullah Tahiri
a3a926723f Sketcher: Move point from python fix
====================================

https://forum.freecadweb.org/viewtopic.php?f=22&t=27282#p218637
2018-03-08 11:30:16 +01:00
Abdullah Tahiri
69efeb7d81 Sketcher: complete type and representation 2018-02-22 19:19:22 +01:00
wmayer
73522c3d10 fix scan coverity issues 2018-02-10 14:29:49 +01:00
Abdullah Tahiri
9ae9150bea Sketcher: Expose Type as readonly python attribute 2018-02-07 15:32:43 +01:00
wmayer
ada88a3dd1 expose more members of Constraint class to Python 2018-01-27 19:35:02 +01:00
wmayer
f8eaa6eff4 fix const correctness, restore sketcher icon 2018-01-26 17:21:02 +01:00
Abdullah Tahiri
31189b6c20 Sketcher: Python Interface for Constraint Virtual Space
=======================================================

set/get/toggle python interface to enable to set the virtual space status of a constraint via SketchObject.
2018-01-26 17:02:46 +01:00
Abdullah Tahiri
1899680ddc Sketcher: Extension of constraints to store virtual space affiliation
=====================================================================

The constraint class has been extended so that every constraint knows and serializes whether it is in virtual space or in normal real space.
2018-01-26 17:01:11 +01:00
luz.paz
23bf7f39a3 Sketcher: comment typos
Found via `codespell`
[skip ci]
2018-01-25 18:47:34 -02:00
wmayer
38da0c7312 improve whitespace, fix const correctness 2018-01-23 00:40:41 +01:00
Abdullah Tahiri
c7b137fe85 Sketcher: Change nomenclature relating to Block constraint 2018-01-22 22:52:56 +01:00
Abdullah Tahiri
34f533b0e1 Sketcher: Block Constraint - Advanced redundant/conflict redundant handling
===========================================================================

Block constraint is naturally redundant/conflicting with almost any other constraint applied to an edge (certainly with constraints operating only on that element).

As such, a block constraint will have very little applicability in absence of a way to handle this redundancy/conflicting. For example, in the case of a BSpline all its
internal geometry (construction circles on poles and its constraints) would have to be removed before locking. This would mean that it is not possible to define the BSpline shape
and then block it, as when removing the internal geometry the shape would be lost. In other cases, like temporally blocking to avoid that a part of the sketch moves while performing some
operation with the idea of afterwards unblocking it, it would mean removing all constraints, to add the block constraint, then perform the action, then remove the block constraint and manually
constraint it again.

Handling this situation in a user expected way means ignoring certain constraints (those causing the redundancy/conflicting), so that the solver is not aware of them and does not complain. However,
generally ignoring those constraints has a negative effect, in that constraints applied by the user on already blocked geometry, or constraints that otherwise lead to a conflicting or redundant
situation as a consequence of actions (further constraining) after the Block constrain is applied are ignored, thereby not properly informing the user of this situation, which is undesirable.

This new mechanism takes account on the position of the constraints relative to the involved blocked constraint(s). As such, redundant/conflicting constraints that were added before the Block
constraint are ignored, whereas those constraints that lead to a redundant/conflicting situation and added AFTER the block constraint was already in place, those are not ignored and are reported
accordingly.
2018-01-22 22:52:56 +01:00
Abdullah Tahiri
7495fe1c31 Sketcher: Blocked Constraint Python 2018-01-22 22:52:56 +01:00
Abdullah Tahiri
48fc503364 Sketcher: Blocked Constraint solver level 2018-01-22 22:52:56 +01:00
Abdullah Tahiri
a0ccdb5218 Sketcher: Correction of B spline normals
========================================

When writting solver implementations it has to be taken into account that the normal is not to be provided in the sense of the curvature, but to
the left when walking a curve from start to end.

https://forum.freecadweb.org/viewtopic.php?f=10&t=26312#p209486

This commit has impact on all the previous files using bspline and endpoint to endpoint tangency.

A work-around is to delete the tangency and do it again.
2018-01-20 17:21:26 +01:00
wmayer
348e666fdc improve whitespaces 2018-01-13 14:07:15 +01:00
Abdullah Tahiri
0dd0eab0d0 Sketcher: Overload delConstraintonPoint Python to allow deletion on GeoId and Pos 2018-01-13 13:55:56 +01:00
wmayer
0b95e866b9 fix const correctness 2018-01-01 22:25:11 +01:00
Abdullah Tahiri
69535ad7cb Sketcher: Support for detecting expressions in constraints 2018-01-01 21:00:06 +01:00
Abdullah Tahiri
ec678e234e Sketcher: Solver angle -pi,pi conversion corrected
fixes #3288
2018-01-01 20:28:53 +01:00
wmayer
96beb5ec7d improve whitespaces 2018-01-01 19:36:57 +01:00
Abdullah Tahiri
9ce5756011 Sketcher: Fix transfer of tangency and perpendicular end-to-endpoint constraints
================================================================================

When transfering constraints to coincident points on deletion of geometry, a tangency/perpendicular constraint
cannot be blindly transfered as the destination edge may not be tangent/perpendicular leading to unexpected behaviour.

However, the user does expect that something that was coincident with such end-to-endpoint constraint (which implicitly includes a coincident constraint)
remains coincident after deletion. Therefore, the change of type to coincident.

This implicitly solves the problem of representation of constraints leading to a crash in coin3d.

fixes #3291
2018-01-01 19:27:41 +01:00
wmayer
88b5af4fe7 simplify debugging of changing datum constraints 2017-12-31 11:48:44 +01:00
luzpaz
048c787e32 Sketcher: comment typos 2017-12-25 10:59:48 +01:00
Abdullah Tahiri
588f1bd795 Sketcher: Merge, copy expressions
===================================

Support for copying expressions instead of hard values.

fixes #2936
2017-12-12 23:08:44 +01:00
Abdullah Tahiri
9b781f9c54 Sketcher Solver: Means to reset the initilization of movement
=============================================================

Just amazed it was working "so well" without never reseting to zero this.

It might bring advantages and close bugs... who knows!
2017-12-12 22:20:27 +01:00