Commit Graph

431 Commits

Author SHA1 Message Date
Eivind Kvedalen
208ba9eb9d Sketcher: Fixed keeping sign of constraints. 2015-10-06 21:26:22 +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
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
wmayer
92b330bbcb + support of unicode names for sketch constraints 2015-09-24 03:17:47 +02:00
Mateusz Skowroński
05f95c0506 Fix files encoding. Go from ISO8859-1 to UTF-8. 2015-09-21 19:50:49 -03:00
Eivind Kvedalen
cacf7bdaf1 Sketcher: Added support for expressions. 2015-09-21 14:51:10 +02:00
wmayer
ed2eeffd67 + fixes #0002268: Segmentation Fault when using sketcher 2015-09-17 13:31:10 +02:00
wmayer
dffaebd346 + check returned mdi view to be of the requested type 2015-09-16 16:15:19 +02:00
wmayer
4accb68bb1 + fix method ViewProviderDocumentObject::getActiveView()
+ fix SoAutoZoomTranslation and SoZoomTranslation to get correct scaling factor
(do not rely on active view because this can be the wrong one and thus delivers wrong results)
2015-09-16 11:32:35 +02:00
wmayer
a2d8a5b0aa + add convenience method to get editing view of a view provider 2015-09-15 22:09:28 +02:00
wmayer
d9aa9e4bf1 + fixes #0000870: Center sketch to a constraint that has been double clicked in the constraint list. 2015-09-15 17:24:23 +02:00
wmayer
69e0b6a94f + fixes #0002117: problems with rendering an arc - NAN 2015-09-15 12:53:22 +02:00
wmayer
7d141c419a + fixes #0002118: Units conversion when using Imperial decimal (in/lb) 2015-09-15 11:30:11 +02:00
Yorik van Havre
f79d0d8ed2 Updated ts files 2015-09-14 14:31:47 -03:00
wmayer
f0c9368f71 + minor changes 2015-09-13 23:24:12 +02:00
wmayer
c86b051323 + improve code style 2015-09-11 22:00:25 +02:00
Abdullah Tahiri
3e5b0bd2f7 Sketcher: Bug fixes: inability to create links to external geometry
=================================================================

First bug: Inability to create links to external geometry as described here:
http://forum.freecadweb.org/download/file.php?id=16668

Second bug: FC crashes on changing the support after having imported external geometry as described here:
http://forum.freecadweb.org/viewtopic.php?f=10&t=12380

and solving this ticket:
http://www.freecadweb.org/tracker/view.php?id=2225

Solution to first bug:

If for some reason a sketch ends up having a list of external geometries (property) that can not be recreated (rebuilt),
they remain latent, do not show the external elements in the elements widget or in the screen and prevent adding the
elements again.

In cases where the saved file contains invalid external geometry links (which will give raise to a handled exception that would prevent external geometry creation),
this condition gets detected during restore and the invalid links are deleted before external geometry creation, so as to allow the rest of external links to be recreated.

Solution to second bug:

It is also related to invalid external links (the link was existing, but upon change on the support, it is possible that an external edge is no longer valid, reduction of edges in support).
This situation is detected upon entering into edit mode, and the invalid ones are deleted.

Note that there is still the possibility for the user to remap an invalid sketch BEFORE editing, if the remapping is successful, it may not be necessary to delete links (all depends on the
specific case).
2015-09-11 21:25:58 +02:00
wmayer
9d561008c4 Mod/Sketcher: Removed -Wreorder warnings. 2015-09-11 15:34:34 +02:00
Abdullah Tahiri
28c406c80e Sketcher: Renaming old get Coincident functions and introducing a extended one
==============================================================================

What is this?

method

getCoincidentPoints

actually only included (as indicated in the documentation comment) those points coincident by a single constraint.

That is not "all the coincident points".

However some methods currently using it are expecting exactly that (coincident points linked by a single constraint).

A new method is introduced:
const std::map<int, Sketcher::PointPos> getAllCoincidentPoints(int GeoId, PointPos PosId);

that provides all the points coincident with the given one, directly (via a single constraint) or indirectly (via multiple coincident constraints).

The old method is renamed to:
getDirectlyCoincidentPoints

So as to have a more meaningful name to differentiate between both methods.
2015-09-09 22:57:49 +02:00
Abdullah Tahiri
4b9a379b90 Sketcher bug/feature request: arePointsCoincident/coincidence creation
======================================================================

1. SketchObject::arePointsCoincident upgraded to check for indirect coincidence.
2. Coincidence constraint creation now checks for indirect coincidences and avoids
creating redundant coincidence constraints (for example during box selection).
2015-09-09 22:56:14 +02:00
Abdullah Tahiri
6035dc3336 Sketcher: Improvement: Horizontal/Vertical Autoconstraint creation with External Geometry
=====================================================================================

This fixes a bug related to:
http://www.freecadweb.org/tracker/view.php?id=2093

that during creation of a geometric element if a vertical/horiz autoconstraint is to be enforced, it is not enforced if the endpoints of the geometric element under creation are
coincident with external geometry.

According to the discussion here:
http://forum.freecadweb.org/viewtopic.php?f=10&t=12254&sid=eacf5bdee068cb71cc54dc5a62a6849d&start=20#p99359

this fixes the bug.

It does not fulfil the request on the ticket as it was decided to still allow an explicit addition of a vertical/horizontal constraint, as
it may be needed in some cases and the user expects to be able to add them, even if it will lead to an overconstrained sketch.

How to reproduce?
1. Create a rectange
2. Pad it
3. Create a new sketch on a face
4. link two corners as "external geometry" (but not the ones of a diagonal)
5. Create a line coincident with the first and second corners, so that the line is horizontal or vertical

In master it will force horiz or vert leading to a overconstrained sketch.
With this patch, the horiz/vert will not be enforced in this case.
2015-09-09 22:50:36 +02:00
wmayer
7a6d4eac8f + fix build failure in debug build type 2015-09-01 19:39:34 +02:00
wmayer
756a9c8130 + fix various warnings with gcc 2015-09-01 19:29:39 +02:00
Abdullah Tahiri
f2e22f0e63 Sketcher: Rename of the "Defaults" button of the advanced solver dialog
=======================================================================

Just renaming the button and adding a tooltip as discussed here:
http://forum.freecadweb.org/viewtopic.php?f=8&t=12180&start=30#p98221
2015-08-31 13:58:12 +02:00
wmayer
1a66bc4c45 + improve whitespaces 2015-08-31 13:53:48 +02:00
Abdullah Tahiri
a026a19088 Sketcher: SelectElementsAssociatedWithConstraints added to tools toolbar
========================================================================

By express request:
http://forum.freecadweb.org/viewtopic.php?f=10&t=11840&start=40#p97202
2015-08-30 12:08:46 +02:00
Abdullah Tahiri
6e9f023f8f Sketcher: Clone Copy and Sketcher Mirror icons by Jim 2015-08-30 12:08:45 +02:00
Abdullah Tahiri
df832ed746 Sketcher: New Functionality: Mirror full sketch
===============================================

Support for mirroring a full sketch.

A dialog appears allowing to select X, Y axis mirroring or mirroring about the origin of the sketch.
2015-08-30 12:08:44 +02:00
Abdullah Tahiri
2cb29df152 Sketcher: UI Copy/Clone as a single dropdown toolbar icon
=========================================================

This commit provides with a single toolbar button to select between a copy and clone.

Copy just copies the constraints.
Clone modifies the dimensional constraints to geometric constraints, so that the constrained geometry follows the changes in the original object.
2015-08-30 12:08:44 +02:00
Abdullah Tahiri
3ec90116f1 Sketcher: Extension of Copy/Array functionality to clone
=============================================================

This commit allows the user to select in advance whether he wants a simple copy or a clone.

This involves substitution of dimensional constraints in the copies by equality and parallel constraints.

Terminology change for Arrays, now it is Rectangular array
2015-08-30 12:08:43 +02:00
Abdullah Tahiri
c270b39d5c Sketcher: Symmetry/Copy/2DLinearArray art by Jim
SVG and XPM icons for copy and array creation by Jim
2015-08-30 12:08:42 +02:00
Abdullah Tahiri
7b053b5602 Sketcher: UI Copy Support & 2D Array python command rework
==========================================================

- Support for copying geometric elements in the sketcher with Ctrl+C (or using the still missing icon). It will show you the vector of displacement from the
"reference point". The reference point can be chosen by the user (although it is not necessary to do it so) by making the point the user wish to be the reference point
the last selected element. It conveniently incorporates "autoconstraints", so that you can make this point (the one of the copy) directly coincident with any other point in the sketch.

- Python 2D array command modified to lock elements position using construction lines and constraints.
- Support for different spacing between u and v directions (the direction of the cols and the direction of the rows).

- Support to avoid copying DistanceX and DistanceY constraints when used for locking a point. This means that if the geometry that you copy(array) is
fully constraint, the resulting 2D array is also fully constraint.

- UI support for creating 2D linear arrays in the sketcher.
- Bug fix in python addArray, wrong line copy startingpoint calculation fixed.

How to create a 2D array in the sketcher:
1. Select your geometric elements.
2. Click the button
3. Fill in the rows/cols and preferences on spacing and constraining each element of the array
4. Click Ok
5. Define the direction of the cols of the array and click
2015-08-30 12:08:42 +02:00
Abdullah Tahiri
cc801790d7 Sketcher: AddSymmetric End-to-End point tangency bug fix
========================================================

For a while End-to-endpoint tangency is implemented via AngleViaPoint constraint. The code was not recalculating the "value" of the constraint in this case.

This also forces to set the geometry first and constraints afterwards, as the AutoLockTangencyAndPerpty function requires a valid GeoId to operate (not a big deal anyway).

Correction of the condition to allow the symmetry when a single line is mirrored about a point pertaining to a geometric element.
2015-08-30 12:08:41 +02:00
Abdullah Tahiri
38256931af Sketcher: New Feature: Symmetric tool
=====================================

Creates geometry symmetric to the selected one with respect to the last selected point or line.

It does not support the following constraints:

- Angle
- Horiz/vertical distance
- SnellLaw

Horizontal and Vertical (directional) dimensions removed from the the copying process when created
on a single edge (by picking one edge instead of two points), i.e. Constraint involving only one GeoId at "First".
2015-08-30 12:08:40 +02:00
Abdullah Tahiri
5958749b7a Sketcher: Bug fix: Wrong solver information upon failed solve
=============================================================

http://forum.freecadweb.org/viewtopic.php?f=10&t=11341&start=80#p92820

...I already have a minor bug, if you insert a conflicting dimensional constraint,
the solver information is not updated, the work-around is to hit "Manual Update".
2015-08-30 12:08:39 +02:00
Alexander Golubev
62d130bea0 Mod/Sketcher: suppress warning
Warning was:
src/Mod/Sketcher/Gui/CommandConstraints.cpp|1031 col 28| warning: '&&' within '||' [-Wlogical-op-parentheses]
2015-08-29 18:35:58 +02:00
Alexander Golubev
dc94ec65b8 Mod/Sketcher: add missing brackets in conditions
Warning was:
src/Mod/Sketcher/Gui/CommandConstraints.cpp|131 col 99| warning: '&&' within '||' [-Wlogical-op-parentheses]
2015-08-29 18:35:58 +02:00
wmayer
72aaaa669a + harmonize Coin3D cmake variables with official check 2015-07-28 14:55:15 +02:00
wmayer
c2c83a353b + harmonize XercesC cmake variables with official check 2015-07-28 14:17:49 +02:00
wmayer
d2b7b730d3 + replace deprecated PYTHON_INCLUDE_PATH 2015-07-25 18:29:42 +02:00
wmayer
6b3340e7b5 + include missing header files 2015-07-01 13:02:29 +02:00
Abdullah Tahiri
112fbb52df Sketch: Bug Fix: Maintain the Elements and Constraint Widget synchronized
=========================================================================

What?
Sometimes this widgets where out of sync

Why?
Under the update only when it is redrawn policy, sometimes only one of them, i.e. the one associated with the property
triggering the updateData was updated.

Solution:
Both are updated after every redraw.

It also complements the previous bug fix related to crash on deleting, by updating the widgets to account for the deleted geometry.
2015-06-25 14:33:27 +02:00
Abdullah Tahiri
4294e54fa3 Sketch: Bug fix: On delete crash with unsuccesful solving
==========================================================

Fixes the one reported by JMG here (Thanks!!):
http://forum.freecadweb.org/viewtopic.php?f=3&t=11508#p92693

Why?
- The newly introduced redrawing policy requires that the solver geometry matches in number the sketchobject geometry.
- Most (all) problems with updateColor or getGeometry returning a null pointer are related to an out of sync between UI geometry and SketchObject geometry.

General solution:
- In other bugs, a missing "solve()" is the problem, once the solver and sketchobject geometries have the same number, an SketchObject::OnChanged triggers
a VPSketch::draw (via VPSketch::updateData) which updates the UI geometry to match SketchObject geometry and then the problem does not arise.

Particular solution:
- In this bug, the problem is not a missing solve, but the fact that the solving was not succesful and did not synchronize the geometries, however triggering a
draw() on unsuccessful solving, syncronizes the UI geometry with the SketchObject geometry and the crash is gone.
2015-06-25 14:33:22 +02:00
wmayer
823c640846 + fix memory leak 2015-06-24 20:07:36 +02:00
wmayer
eb12779755 + whitespace fixes 2015-06-24 19:59:53 +02:00
Abdullah Tahiri
4b03c3d41b Sketcher: SparseQR as default QR method
=======================================

The SparseQR is set as default method. However, in accordance with the previous commit, only if a new enough Eigen library is present will SparseQR be executed.

If the library is old and SparseQR can not be reliably used, FC will automatically fall back to use DenseQR.

This ensures that users that have a new enough library > 3.2.2 will benefit from the performance increase, while the users that use older library will still have
the same performance as in legacy FC.
2015-06-24 17:57:06 +02:00
Abdullah Tahiri
e51628042a Sketcher: Auto Update Mode bug fix
==================================

Bug:
http://forum.freecadweb.org/viewtopic.php?f=10&t=11341&start=60#p92422

Why?
- When coding Auto Update Mode I forgot to solve the sketch when the constraint is cancelled to restore the solver level constraints.
2015-06-24 17:57:05 +02:00
Abdullah Tahiri
d5062dbacd Sketcher: Solver Advanced Control: New Param: QR Pivot Threshold
================================================================

A new parameter added to the form in order to control how low a value should be
to be considered zero (how high a value shall be to be accounted for in rank calculation)

Debug for QR pivot threshold is also added.
2015-06-24 17:57:04 +02:00
Abdullah Tahiri
230d505554 Sketcher: Improvement: Continuous Mode - View sketch Perpendicular
==================================================================

It allows the view sketch perpendicular button to be active during continuous mode creation (and if activated does not exit the continuous mode).

Feature requested:
http://forum.freecadweb.org/viewtopic.php?f=10&t=11051&start=30#p92256
2015-06-24 17:57:02 +02:00
Abdullah Tahiri
d666c4ae7f Sketcher: Bug fix: Dense QR is set by default
=============================================

EigenQR branch 3.2 with debug code fails an assertion. The result is generally ok if we disable the assertions, however it
eventually leads to memory leakage.

This commit reenables Eigen's assertions when in debug mode, and sets dense QR as default QR algoritm until Eigen's issue is solved.
2015-06-24 17:57:02 +02:00