Commit Graph

623 Commits

Author SHA1 Message Date
wmayer
7d98705396 + harmonize XercesC cmake variables with official check 2015-07-28 14:17:49 +02:00
wmayer
d95003e92c + replace deprecated PYTHON_INCLUDE_PATH 2015-07-25 18:29:42 +02:00
wmayer
834c0a642d + include missing header files 2015-07-01 13:02:29 +02:00
Abdullah Tahiri
cac47d2548 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
214169616d 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
165261e358 + fix memory leak 2015-06-24 20:07:36 +02:00
wmayer
c3c27817b6 + whitespace fixes 2015-06-24 19:59:53 +02:00
Abdullah Tahiri
2a54fba098 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
ffaa0c8249 Sketcher: SparseQR conditional compilation
==========================================

For Eigen>=3.2.2 SparseQR is compiled in

For older versions SparseQR is not compiled in and if the option is selected FC gives a warning in the console and falls back to DenseQR.

This ensures that a user can get a sketch solved and work normally even if SparseQR is selected and the Eigen version is too old to support SparseQR.
2015-06-24 17:57:05 +02:00
Abdullah Tahiri
1fc88ebe24 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
82e24d830e 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
8f68b14627 Sketcher: DL Solver Debug Improvement
=====================================

- In "Iteration Level" debug mode, DL now shows the stop condition code.
- More debug code
2015-06-24 17:57:04 +02:00
Abdullah Tahiri
efb08cd11c Sketcher: Disable Eigen multithread
===================================

Eigen currently only provides multithread for matrix products. It has been reported that it is even slightly slower than single-thread.
Therefore, temporarely the code is commented out. If Eigen ever implements multithread for QR decomposition, then it will make a lot of
sense to enable this.
2015-06-24 17:57:03 +02:00
Abdullah Tahiri
7f442c5a3f 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
22bcb40484 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
Abdullah Tahiri
cb2d70b4f0 Sketcher: Bug fix: Solver Advanced Control in BFGS
==================================================

- ternary operator usage was making BFGS not to iterate
- Amount of debug information for BFGS increased
2015-06-24 17:57:01 +02:00
Abdullah Tahiri
86f0df4f3c Sketcher: Improvement Continuous Creation Mode: Leave Sketch
============================================================

This enables to exit the sketch by clicking the corresponding toolbar icon, even when in creation mode, i.e.
with a drawHandler active.

Requested here:
http://forum.freecadweb.org/viewtopic.php?f=10&t=11051&start=30#p92181
2015-06-24 17:57:01 +02:00
Abdullah Tahiri
f3592c1216 Sketcher: Improvements: Solver Advanced control
===============================================

- Increased solver debug
- Changing default values from float to string, as float has "only" a precision of 12 decimals.
- Default values as macros
2015-06-24 17:57:00 +02:00
Abdullah Tahiri
516b0d3c56 Sketcher: Workaround for Eigen bug: SparseQR crash on matrices with rows>cols
=============================================================================

There is an issue with an assertion in Eigen, as reported here:
https://forum.kde.org/viewtopic.php?f=74&t=117474
http://forum.freecadweb.org/viewtopic.php?f=10&t=11341&p=92153#p92146

The work-around is to disable debug assertions for Eigen until the problem
gets solved.
2015-06-24 17:57:00 +02:00
Abdullah Tahiri
6030da1182 Sketcher: Solver improvements and bug fixes
===========================================

- Improvement Debug added to redundant solving in Iteration Mode, to show when just one iteration solved the system
- Fix wrong QR information on empty sketch
2015-06-24 17:56:59 +02:00
Abdullah Tahiri
bae32f74bb Sketcher: New setting: Show advanced solver taskbox
===================================================

I makes the advanced solver taskbox by default disabled (not shown) and provides
a setting in Preferences->Display->Sketcher to enable it.
2015-06-24 17:56:59 +02:00
Abdullah Tahiri
796c9d79d4 Sketcher: New Features: SparseQR decomposition and Solver advanced control TaskBox
==================================================================================

The solver has been adapted to use Eigen's SparseQR QR decomposition algorithm. The original
Dense QR implementation is maintained and can be selected using the Advanced Control TaskBox (see below).

The use of SparseQR provides over an order of magnitude improvement in solving time in complex sketches due to
the Sparse nature of the Jacobian matrix of the system of equations.

The solver advanced control is a new TaskBox in the Sketcher that allows to select which algorithms are to be used for
the different solving operations and tweak its parameters. It is not intended to be a user control, but means to debug
solving problems and improve the algorithms and their configuration.

This commit also introduces multithread support for Eigen. Currently it is only limited to products and does not provide
a substantial speed improvement. It is expected to have more multithreaded operations in Eigen in the future.

As a bonus, the TaskBoxes in the Taskbar of the Sketcher remember the last state (collapsed or deployed).
2015-06-24 17:56:58 +02:00
Abdullah Tahiri
480d23f8e1 Sketcher: Bug fix: Unexpected crashes during certain operations
===============================================================

The sketcher crashed for example during effecting a fillet operation.

Cause:
The ElementsWidget/ConstraintWidget was being updated as a consequence of adding/removing geometry/constraints, and it was effecting
a selection after the update, in cases where the geometry in the screen was not being redraw (because the sketchobject was still unsolved), therefore
trying to select an element that according to ViewProvider did not exist (as it is created during redraw).

Solution:
Widgets update when their properties changes, provided that a redraw is effected (which actually also saves some (negligible) time, as they are only updated when they should).
2015-06-24 17:56:57 +02:00
Abdullah Tahiri
93c836fdcf Sketcher: Bug fix Trim
======================

In no update mode, the last constraint was not enforced. The DoF was not properly shown.

The trim operation it is always solved at the end now if in no recompute mode.
2015-06-24 17:56:56 +02:00
Abdullah Tahiri
65310f00ab Sketcher bug fixes: Crash on deleting a line from the sketch
============================================================

- Crashing on deleting line on fully constraint box

As a bonus:
- Fully constrained sketch not shown in green on opening the sketch
2015-06-24 17:56:56 +02:00
Abdullah Tahiri
074d5d7f11 Sketcher: Bug fix External geometry not appearing upon insertion
================================================================

A last moment change to regulate redrawing introduced this issue (reducing the redrawing to the cases where the solver geometry and the sketchObject geometry are equal).
This change also solved other issues.

The case of adding external geometry is special because the DoF is the same after insertion, yet there is an insertion (as opposed to the toggle case, where there is a change but no insertion).

SketchObject has been adapted to require a solver update before moving (which also caused a non-yet-reported crash, a separate bug), and CommandCreateGeo has been adapted to trigger a solve with
auto update mode disabled. This solve is a very low cost one as the geometry is already in place.
2015-06-17 14:53:34 +02:00
wmayer
238becaebb + further optimization in sketcher 2015-06-16 10:18:11 +02:00
wmayer
788fadf4a8 + fix const correctness 2015-06-15 23:42:37 +02:00
Abdullah Tahiri
ec5f3b2b98 Sketcher: new Feature: Group creation of Sketcher geometry and other improvements and bug fixes
===============================================================================================

Group creation:
- complex geometries (consisting of several geometry elements and constraints) have been rewritten to use python list (one command call for all geometries and constraints)
- Ellipse ExposeInternalGeo as group creation of geometries and constraints

To construction mode creation:
- addGeometry python and SketchObject functions modified to take an additional optional parameter "construction" to create the geometry/geometries directly as construction.
  In addition to the shorter form, this helps generate less amount of onChange propagation and Redraws.
- all the geometry creation commands in CommandCreateGeo.cpp have been rewritten to use the new construction argument. This includes modifying the regular polygon script to
take a new optional parameter to create geometry as construction in addGeometry.
- special care is taken in group creation not make construction points
- Show/hide internal geometry implemented with this option.

To solving:
- the solve previously included after every geometry addition (when in no Update, e.i. no Recompute mode) has been removed and each Gui::Command calls either an UpdateActive
for recompute or a Solve in no Update mode. This is behaviour is less intrusive and uniform with group creation.

Bug fixes and redrawing reduction:
- Fixes the CheckId exception problem. The solution also helps further remove redraws during creation of complex geometry (e.g. Slot)
- Fixes touching the sketch by only opening it.
- Code clean up.
2015-06-15 22:56:36 +02:00
Abdullah Tahiri
61bd2d41ac Sketcher: Requested Feature: Remove help button
===============================================

The help button next to the close button in the Task dialog is now removed.

It was requested that this button is removed as it is inconsistent with other help sources and it is not implemented.
2015-06-15 22:56:20 +02:00
Abdullah Tahiri
d1acd124cc Sketcher: Bug fix: Undo/Redo implementation
================================================

Fixes a bug in master that the dependent 3D geometry would not update on Undo (in Auto update mode enabled).

Undo and redo signals are handled by ViewProvider in order to introduce an recompute or solve() of the sketchObject
as determined by the Auto Update Mode in order to update DoF and dependent geometry if necessary.
2015-06-15 22:56:04 +02:00
Abdullah Tahiri
eb7a3c763c Bug fix: General reduction solution / new sketch solving model
=================================================================

The new solving architecture focus all the solving on the SketchObject.

Actions that change the DoF can call execute() (i.e. recompute) or Solve() depending on whether a full recompute of dependent features is required or not.
In both calls the geometry of the solver is updated with the geometry of the SketchObject.

The only additional call that calls the solver is MovePoint. This function may or may not update the geometry of the SketchObject
(as now it is intended for UI related solving, like dragging, rubberbands, ...).

In operations that do not involve a change of DoF and therefore do not require a sketch solving, it may happen that as a side effect of moving a point, the
geometry changes to old behaviour. In order to avoid that, those SketchObject operations, as for example setConstruction or ToggleConstruction,
must set a flag "bool solverNeedsUpdate" to true. In case a movePoint is executed before any other solver execution, the geometry is first updated and then
the moving is performed.

So to keep in mind when programming sketcher operations:
-> Need recompute (UpdateActive)
-> Need solving because DoF changed (solve())
-> The operation does not change DoF (set solverNeedsUpdate to true)
2015-06-15 22:55:28 +02:00
Abdullah Tahiri
4b0bd78814 Sketcher: Bug fixes to Auto-Update Mode
=======================================

- Fixing toggle AutoUpdate Mode
- Fix Auto-Update Sketcher tools
- Fix missing createGeo recomputes
- Missing constraints recomputes fixed

Various fixes for non-Update mode:
- Fixes lack of update upon entering a conflicting datum constraint.
- Fixes lack of update upon setting the reference/driving status of a constraint

- Added tooltips to buttons
2015-06-15 22:55:04 +02:00
Abdullah Tahiri
339717c96f Sketcher: Bug fix of New Solver Model: DoF and solver update on deletion of constraints
=========================================================

Upon deletion of a constraint, the constraint was still enforced for UI operations (dragging of a point) and DoF was not updated.
2015-06-15 22:54:49 +02:00
Abdullah Tahiri
a21265f9b6 Sketcher: New Feature: Avoiding to continuously recompute all the sketch (and dependent objects)
======================================================================================

There is a checkbox, default disabled, that makes the commands NOT to generate a recompute after each.
This means that if you are editing a sketch that is used to generate a pad or pocket, if the checkbox is
disabled, the dependent objects do not get recomputed.

There is a button next to it to force a manual recompute, in case it is needed.

If the user wants the previous behavior, he only needs to activate the checkbox. The previous status of the box
is restored upon entering a sketch in edit mode.

It is remarkable the case of the Fillet and Trim

On changing ActSketch (solvedSketch) to SketchObject and making movePoint not systematically update the geometry, the solving in MovePoint was confronted with solving for "the last solved geometry",
which is the default behaviour, in some situations (Fillet and Trim) where geometry had changed at SketchObject level, and was the subject of the moving actions.

MovePoint has been updated to take an extra optional parameter, to force the change in solved geometry in those situations.

Some other minor bug also fixed in Fillet creation in CommandCreateGeo.cpp

This commit also introduces conditional recompute on some operations of:
- constraints
- geometry creation (reubication of update active to comprise the autoconstraints within a single UpdateActive)
2015-06-15 22:54:32 +02:00
Abdullah Tahiri
0e92e6356f Sketcher: Major re-structuration: New Solving Model: General Sketch Solve call reduction
=======================================================================================

ActSketch in ViewProvider dissapears. The temporal sketch (sketch.cpp) for solving is now a data member of SketchObject.cpp (hereinafter solvedSketch). All the solving is concentrated in SketchObject.cpp.

SketchObject provides an interface to expose its solver, as it is still currently needed for some UI operations from ViewProviderSketch, like dragging points (solving rubber bands).

ViewProviderSketch still can select whether to draw the solvedSketch geometry (previously ActSketch) geometry (UI staff) or the SketchObject geometry. Performancewise, it makes sense to separate this two
geometries, as the SketchObject one involves modifying the Geometry and Constraint Properties (including all the undo related functionality), which would mess the undo functinality and incur in a big
peformance penalisation while dragging. One characteristic of solvedSketch is that its geometry is solved, whereas the geometry of SketchObject may not have been solved yet.

These geometries may differ at for the following reasons:
1. The geometry corresponds to an ongoing dragging operation, so solvedSketch has the last calculated dragging geometry, while SketchObject has the one corresponding to initial position.
2. Geometry/constraints were added to the sketch, but no solve/execute was triggered yet (envisioned situation is the future group creation functionality not in this commit).

What do I gain?

- Inserting a (simple) geometry element now costs 1 solver execution.
- Inserting a constraint now costs 1 solver executions.

For reference, in previous versions inserting a constraint involved 5 solver executions.

The following information provide a historical review of the coding of this commit (formed of 10 squashed commits):

This is a general sketch solve call reduction, not only during geometry creation (this commit does not include until here any specific measure to reduce calls on geometry creation, that is another branch)

After a lot of profiling, it seems that the "cause"(tm) that creates so many solver calls is that every update generates a solving in ViewProviderSketch, regardless of the need for that update,
many times with the only aim of providing the DoF for the message dialog and keeping ActSketch in sync with SketchObject in case it is needed (currently UI moving points, constraints,...).

Sketch solver is now a data member of SketchObject instead of a temporal object that gets initilized and destroyed.

This allows:
1. Potentially more synergy reducing calls to setUpSketch (still to be seen, still to be optimized)
2. Allowing SketchObject to access the latest geometry that has been solved => In future, allow objects that use SketchObject to obtain the latest
solved geometry instead the geometry of SketchObject that may still be unsolved. This is relevant for drawing the geometry

No more solving in ViewProviderSketch. Solving a Sketch is now an exclusive competence of SketchObject.

There is however a lot of cleaning to do in ViewProviderSketch

(I mean, not that these commits are making a mess in VPSketch,
but that as a consequence of the changes, it should be possible to
optimize VPSketch, specially moving and drawing methods)

Very useful comment for future developers that may wonder why a solve per constraint just upon addition is necessary.

Added a new function to get the size of the geometry of the instance of the solver object (Sketch.cpp).
The previous way was to extract the geometry, which is costly and error prone, as you have to delete it afterwards.

Inserted comment about the necessity of triggering a Part2D update during edit mode
2015-06-15 22:53:59 +02:00
Ian Rees
418cefd7ee Cleaning up compile warnings, mainly in Sketcher
fabs() instead of std::abs(), add cmath include
2015-06-04 18:12:39 +02:00
wmayer
c3808cd991 + Use update mechanism for CmdSketcherToggleConstruction 2015-06-03 19:12:48 +02:00
wmayer
cf1a77a44d + Use update mechanism for CmdSketcherToggleDrivingConstraint 2015-06-03 18:31:30 +02:00
wmayer
a12f700aa2 + fix some warnings 2015-05-30 20:59:25 +02:00
wmayer
351e7aae6f + fix wrong default of ContinueMode in settings panel 2015-05-30 20:42:33 +02:00
wmayer
eef340f19c + fix whitespaces 2015-05-30 20:30:12 +02:00
Abdullah Tahiri
3b1873f1dc Sketcher Improvement: Always enable geometry creation
==============================================================================

Now you can switch from one tool to the next just by clicking on the next tool
2015-05-30 16:39:34 +02:00
Abdullah Tahiri
ca356c308e Sketcher Driving/Reference and Construction/Normal single buttons icons
=======================================================================
2015-05-30 16:39:33 +02:00
Abdullah Tahiri
0bd3801314 Sketcher: UI Improvement Smart button for constraints and geometry toogle/creation
==================================================================================

Geometry button:
- if no object selected, the legacy toggle icon has a new functionality, switch to/from creating in construction mode
- if object selected, it has the legacy functionality
- the button can be clicked during "continuos creation mode" to switch from creating to/from creating in construction mode

Constraint button:
- The button is not selectable if nothing is selected (it would be impossible to determine the effect)
- When constraints are selected, the button toggles the constraints to/from Driving.
- When geometry is selected, the button switches from/to reference mode, the change is apparent from the color of the constraint icons.

Continuous creation mode:
- Default changed so that it is active unless you change it in settings

Updated terminology
2015-05-30 16:39:32 +02:00
Abdullah Tahiri
a1c3b942aa Sketcher: Driving/reference creation improvements and some other fixes
======================================================================

- Changing from Driving to reference does not include unnecessary solvings.
- Added some checks to avoid making Driving constraints when calling directly from python and involving only external geometry (would give redundant constraints).
- New python command toggleDriving to just change the status from reference to Driving
- New UI toolbar Command to toggle constraints
- Fix to allow switching from/to construction mode during continuous mode creation.
- Enable/Disable for constraints in constraints widget has changed to operate on multiselection and now effects "toggle" instead of enable/disable.
- Disable the option to directly create a SnellsLaw non-driving constraint (this constraint does not support direct creation, it can be toggled to non-driving after creation though).
2015-05-30 16:39:32 +02:00
Abdullah Tahiri
4dfc96e102 Bug fix: Point was created as construction on construction mode
==============================================================

Points should not be construction points.
2015-05-30 16:39:31 +02:00
Abdullah Tahiri
8685e94b76 Bug fix: Sketcher fillet on construction lines
==============================================

The fillet applied to construction lines generates normal (not construction) geometry.

How to replicate?
1.Make a square and make all lines construction lines.
2.Apply fillet tool, there result will be a white line fillet connecting two blue constructions lines.
2015-05-30 16:39:31 +02:00
Abdullah Tahiri
75fa12964e Sketcher Driving/reference mode icons 2015-05-30 16:39:30 +02:00
Abdullah Tahiri
765b720c48 Sketcher New Feature: Toggle Mode for Reference/Driving constraints
===================================================================

It allows to create constraints directly into Reference or Driving mode.

It does not include icons
2015-05-30 16:39:30 +02:00
Abdullah Tahiri
d5ec887526 Sketcher: Construction Mode Icons 2015-05-30 16:39:28 +02:00
Abdullah Tahiri
1c803df7d4 Sketcher new Feature: Creation Mode of geometry
===============================================

It allows to select whether the geometry will be created as construction geometry or normal geometry.

This commit includes an important bug fix to reduce the number of times the sketcher solver is called when toggling
geometry. It makes an important difference in the creation during construction mode and InternalAligment geometry like the ellipse.

This commit does not include icons.

You have a button next to toggle that after having been clicked, switches from Normal to Construction geometry and vice versa
2015-05-30 16:39:28 +02:00
Abdullah Tahiri
3231a0c92a Sketcher: New Feature: External Geometry Linking improvement
============================================================

It lifts the need of clicking on the external geometry icon upon importing each external geometry element.

All the elements on which the user clicks are imported until the user right clicks with the mouse or presses ESC, like the Trim or Fillet tools.
2015-05-30 16:39:27 +02:00
Abdullah Tahiri
ba5a8fe87c Sketcher: New Feature: Continuous creation mode
===============================================

When creating a type of geometric element, the user can create as many elements of that type he wishes without having to click the button before each insertion.

The insertion of that type of elements ends by pressing ESC or clicking the right button of the mouse.

This mode is by default disabled and can be enabled in Preferences->Display->Sketch->Geometry Creation "Continue Mode".
2015-05-30 16:39:26 +02:00
Abdullah Tahiri
f7c9566f1e Sketcher bug fixes: Non-driving constraints editable on double click and color settings not working
===================================================================================================

This fixes a bug in the original implementation, that a non-driving constraint value could be
edited by double clicking on it in the 3D view.

It also includes minimal documentation on some functions.

It also includes:
- Color setting for non-driving constraints was not working.
- Settle UI terminology dispute:
  * Driving Constraint (normal red constraint)
  * Reference Constraint (non-driving constraint)
2015-05-30 16:39:26 +02:00
Abdullah Tahiri
ad180fb2c3 Sketcher New Feature: Non-driving constraints Icons by bejant
=============================================================

Nice icons to differentiate driving from non-driving constraints by bejant
2015-05-30 16:39:25 +02:00
Abdullah Tahiri
bc85670ce9 Sketcher new Feature: Non-driving constraints (aka Driven constraints or dimensions)
====================================================================================

It allows to enable and disable a constraint in the constraint list.

When disabled, the constraints current value is shown, but its value is not enforced (it is driven by the other constraints and user interaction).

A disabled constraint can be enabled (as far as it is enforceable, see non-driving constraints to external geometry below).

The sketcher functionality has been extended to support non-driving constraints to external geometry elements. This were previously excluded from
the possibility of creating a constraint on them (as their values depend on other sketches and would be redundant with the unchanged value or conflicting when value is changed).
Now these constraints are created as non-driving, but as they are not enforceable, the UI does not allow you to make them driving.

The constraint filter has been extended to include a Non-Driving constraints category.

Thanks again to Werner for his continuous support, and specially in this case to DeepSOIC, as he pointed towards a much better implementation solution than my original idea.
2015-05-30 16:39:25 +02:00
Abdullah Tahiri
5676c632f6 Bug fix: Sketcher Polygon autoconstraints
=========================================

The autoconstraints on creation of an hexagon were not working.

How to reproduce?
1. In a sketch make a couple of lines
2. Create an hexagon (or other polygon of your choice) with center in one end of a line and with side coincident with the end point of the other line

Result:
Neither the center nor the side autoconstraints are properly created.

Fix:
Straightforward. Just correct the indexes. Last is always the circle. Last but one is always a side.
2015-05-27 16:22:31 +02:00
Abdullah Tahiri
81bd2cf34a Bug fix: Sketcher: "Ask for value after creating distance constraint" setting not working
========================================================================================

How to replicate:
1. Go to Preferences->Display->Sketch and disable that checkbox.
2. Create a distance constraint (radius, distance, ...)

It will ask for the value regardless of whether the checkbox is clicked or not.

Why?
In SketcherSettings.ui the prefpath is "Mod/Sketcher"
The code refered to ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher/General");
2015-05-26 13:45:24 +02:00
wmayer
a2bdc366f0 + make sure that Sketch.clear() doesn't allow any arguments 2015-05-26 13:11:48 +02:00
Abdullah Tahiri
b5ff8cdc82 Sketcher Bug fix: Python function clear() contains wrong code
=============================================================

This function is like this from 2011 according to git blame.

The original code makes no sense. I assume that what is intended in this
function (in accordance with SketchPy.xml) is call the method clear in
Sketch.cpp.
2015-05-26 13:08:22 +02:00
wmayer
27863408c9 + remove references to SoFCSelection where not needed 2015-05-20 19:24:12 +02:00
wmayer
b35d28a941 + whitespace fixes, add curly braces to outer loop 2015-05-01 18:49:20 +02:00
DeepSOIC
24797fb65e Sketcher: allow mass selection for Point-on-object constraint 2015-05-01 18:31:18 +02:00
wmayer
dd2b39ddd6 + fixes #0002075: Analysis of FreeCAD by PVS-Studio static analyzer 2015-05-01 16:56:31 +02:00
wmayer
017e0f38d1 + fixes #0001998: For 32 px and 48 px the icons with a submenu in toolbars are not display at the good size 2015-04-17 23:16:28 +02:00
wmayer
bf7bc3532e Merge branch 'master' of ssh://git.code.sf.net/p/free-cad/code 2015-03-28 17:40:36 +01:00
DeepSOIC
89d0a7a176 Sketcher: bugfix: disallow opening when geometry types changed 2015-03-28 17:35:10 +01:00
DeepSOIC
3e6eb430fa Sketcher: small asserts cleanup 2015-03-28 17:35:10 +01:00
DeepSOIC
94c26629c0 Sketcher: add checks for null pointers
Made throws on null pointers.
2015-03-28 17:35:10 +01:00
DeepSOIC
5d9b7a4e03 Sketcher: fix repr string for symmetric constr. 2015-03-28 17:19:37 +01:00
Yorik van Havre
0009e58291 Merged crowdin translations 2015-03-07 15:17:58 -03:00
Yorik van Havre
8d8eba6dac Updated ts files from source 2015-02-27 18:56:51 -03:00
Yorik van Havre
8d98921dd7 Updated translations from crowdin 2015-02-27 18:46:03 -03:00
Sebastian Hoogen
ed80eb6c35 enter rubberband after moved by dragIgnoredDistance
issue #1149
2015-02-24 23:51:11 +01:00
wmayer
22b63a7653 + fix ambiguous shortcuts 2015-02-18 13:07:42 +01:00
DeepSOIC
aeabffeed8 Sketcher: bugfix in updating constraints after external geometry delete 2015-02-17 12:27:32 +01:00
DeepSOIC
13406a4daf Sketch:Validation: swap endpoints for reversed + constraint orientation locking controls
Added buttons to port sketches to CCW-emulation Sketcher.

Bonus =) : Added constraint orientation lock/unlock buttons (affects
point-wise modes of tangent and perpendicular constraints so far)
2015-02-17 12:27:32 +01:00
DeepSOIC
0767cd35f8 Sketcher: fix reversed geometry and rotated arcs
Fixes a bug where an arc, ellipse, or arc-of-ellipse, being reversed in
XY plane, behaved badly in sketcher (see forum thread "Sketch: how to
handle reversed external arcs?"
http://forum.freecadweb.org/viewtopic.php?f=10&t=9130 ).
Also fixes a problem with rotated arcs (see forum thread "Rotating Arc
in Sketcher"
http://forum.freecadweb.org/viewtopic.php?f=22&t=9145#p74262 ).

This is done by adding an emulation flag to a few methods in
Part::GeomXXX, which makes the shape to pretend being non-reversed
(CCW). This causes endpoints of reversed arcs of circles lineked as
external geometry to swap, causing broken sketches sometimes.
2015-02-17 12:27:31 +01:00
Abdullah Tahiri
0b081876e5 Ellipse: External geometry rotated fix
This commit solves the problem that a ellipse appears rotated when added as external geometry, if the face having the
elliptical shape has a direction vector in the -z axis.

This solves the problem. However, the issue with CW and CCW shapes in the sketcher shall be further investigated in order
to arrive to a general acceptable solution.
2015-02-17 12:27:31 +01:00
Yorik van Havre
0bb651da4d Updated translation files 2015-02-14 12:16:39 -02:00
Yorik van Havre
f99b6cf534 Fixed typo 2015-02-12 13:46:13 +01:00
Yorik van Havre
d8146a0cf8 Updated ts files 2015-01-26 16:23:48 -02:00
wmayer
17099d0545 + fixes #0001916: Cannot cancel angle constraint dialogue in sketcher 2015-01-15 00:36:44 +01:00
Yorik van Havre
ae3fafea6c Updated base translation files for crowdin 2015-01-13 20:00:09 -02:00
wmayer
477099bbfe + remove useless stuff from Init files 2015-01-13 16:19:19 +01:00
wmayer
eb9b6acdd6 + re-enable reading/writing grid size 2015-01-12 16:29:31 +01:00
wmayer
e16305cb83 + fixes #0001791: Counterbores do not follow when hole is moved 2015-01-12 00:55:56 +01:00
wmayer
6a3437e28e + fixes #0000692: Sketcher: Add angle constraint for arcs 2015-01-10 15:15:18 +01:00
wmayer
d3bc389765 + exception handling if moving sketch fails 2015-01-04 13:02:11 +01:00
wmayer
08828e5dc0 + fixes #0001225: Allow User to Rotate Arc Radius Constraint Text and Leader 2015-01-02 21:26:03 +01:00
DeepSOIC
c4fb8fc8ae Sketcher: AngleViaPoint: revert from OCC angle precalculation
Returning back to the slow temporary-sketch-based
calculateAngleViaPoint, because OCC-based version was incompatible with
always-CCW sketcher geometry. More info in "Sketch: how to handle
reversed external arcs?" forum thread
http://forum.freecadweb.org/viewtopic.php?f=10&t=9130&sid=1b994fa1236db5ac2371eeb9a53de23f
2015-01-02 11:48:34 +01:00
DeepSOIC
93d00b2dab Sketcher: validateConstraint update
Refactor validateConstraint and add angle-via-point and snell's law
support there.
2015-01-02 11:48:33 +01:00
DeepSOIC
684036fae8 Sketcher Ellipse: code cleanup
deleting redundant overloaded functions involving arc-of-ellipse, a few
todo comments, not implemented methods, System(constraintlist)
constructor.
2015-01-02 11:48:33 +01:00
DeepSOIC
ab7d980de0 Sketcher: solver rebranding - renamed directory
Sketcher: solver rebranding - updated references

cleanup

Sketcher: GCS: remove unused NAN and INF
2015-01-02 11:48:32 +01:00
DeepSOIC
9cc2ff7944 Sketcher Constraints: small code refactor
Unifying first checks in grad().
2015-01-02 11:48:32 +01:00
DeepSOIC
8660d9a914 Sketcher Ellipse: porting to DeriVector2
Sketcher Ellipse: porting tangent-line to DeriVector2

Replacing a ton of unreadable, sage generated math code with
easy-to-manage C++ code.

Sketcher Ellipse: porting internal align-t to DeriVector2

Sketcher Ellipse: small math refactor; const members

Moving the repeating code computing deriv+value of major radius to a
method of GCS::Ellipse.
Marking several methods of DeriVector2 as const member functions.

Sketcher Ellipse: porting arc angle rules to DeriVector2

Just porting.
Probably a complete remake of the concept is worth... Angles can be
calculated explicitly, there's no need to load the solver. I see no
benefits whatsoever on using the solver to keep track of angle values.

Sketcher Ellipse: porting equality to DeriVector2
2015-01-02 11:48:31 +01:00
DeepSOIC
43e8b30846 OpticConstraints: Adding Snell's law
Fix AngleViaPoint to support new derivative calculation technique.

OpticConstraints: Adding Snell's law. Fix AngleViaPoint to support new derivative calculation technique.

Snell's law constraint added to GCS, but not yet exposed and cannot be
tested.
Since the way CalculateNormal() returns derivatives had changed,
AngleViaPoint constraint needed modifications. Nothing serious.

OpticConstraints: SnellsLaw progress

Addable through python. Fix math. Some quick-and-dirty visual stuff to
get rid of hangs and to see the constraint in action.

OpticConstraints: SnellsLaw: flipping logic fix

OpticConstraints: SnellsLaw progress

Added toolbar button. Allowed editing a datum by doubleclick. New error
message approach during constraint creation.

OpticConstraints: SnellsLaw

OpticConstraints: SnellsLaw: list label improvement

OpticConstraints: SnellsLaw: fix after rebase

OpticConstraints: SnellsLaw: expose helper constraints

Snell's law internally is made of three constraints: point-on-object,
coincident and the Snell's sin/sin. They were all buried under one UI
constraint. Exposing them allows to construct reflection and
birefringence on the point (attempting to do so used to result in
redundant constraints and was often not functional at all).
This commit breaks compatibility with older files.

OpticConstraints: SnellsLaw: small refactor of math

Placing the duplicated code of error and gradient calculation into a
private method.

OpticConstraints: SnellsLaw: fix datum edit unit

OpticConstraints: SnellsLaw: fix datum edit bug

After previous fix, the dimensionless value was not accepted (the
constraint's value did not change, the changes were ignored).
2015-01-02 11:48:31 +01:00
DeepSOIC
68ec9e44f8 OpticConstraints: SnellsLaw: icon 2015-01-02 11:48:30 +01:00
DeepSOIC
397e37ad1c GCS: fundamental changes to simplify derivatives
GCS::Vector2D was morphed into a DeriVector2, a derivative-aware vector.
A bunch of vector math methods were added that implicitly calculate
respective derivatives. Now, there is no need to calculate the partials
- most is done implicitly.
2015-01-02 11:48:30 +01:00
DeepSOIC
3838bddcdb AngleViaPoint Constraint
AngleViaPoint: fixes in UI routines + new messages

Goofed undo message in tangency via point is fixed.
Forgotten updateActive, clearSelection have been added.
New more informative error messages for tangent constraint.

AngleViaPoint: using it instead of via line tangency

* replaced the helper construction line for ellipse-to-ellipse and
similar tangency with a point. Using tangent-via-point there
* deleted tangency via line for point-to-point on
(cherry picked from commit 9e3fa8c8de0f49c0ef3c978e015eb905358dbdd9)

AngleViaPoint: internal/external tangency locking

*Added automatic tangency type lockdown for all new constraints (only
for point-wise tangency).
Tangency type is stored in the constraint datum field, as an angle value
shifted by Pi/2 (to be able to treat 0.0 as undefined type).
Added ability to switch the tangency by setting datum value from python
(can be abused by passing arbitrary angle).
Further simplified the tangency related code in Sketch.cpp.

AngleViaPoint: added license to Geo.cpp

AngleViaPoint: renames in Constraints.cpp/.h

Changed some names to increase self-explanatoryness:
bool "remapped" renamed to "pvecChangedFlag"
"ReconstructEverything()" renamed to "ReconstructGeomPointers()"

AngleViaPoint: renames in Constraints.cpp/.h

Changed some names to increase self-explanatoryness:
bool "remapped" renamed to "pvecChangedFlag"
"ReconstructEverything()" renamed to "ReconstructGeomPointers()"

AngleViaPoint: using for endpoint perpendicularity

+ direction lockdown, just as with tangency.
+ quite a lot of old code is gone because of that

AngleViaPoint: perp-ty UI routine made similar to tangent

(Git has made a very messy diff.)
The changes are:
* Perpendicularity-via-point (3-element selection) support added.
* Endpoint-to-curve and endpoint-to-endpoint supports all shape
combinations.
* a bit of code cleanup and clarifications.

AngleViaPoint: placement of perpendicular icon in 3d view

AngleViaPoint: fix: allow setDatum of perpendicular constraint

AngleViaPoint: fix: centers of ellipses are not endpoints

isSimpleVertex used to return false for centers of ellipses and arcs of
ellipses, which made them being accepted for point-to-point tangency.
Should be fixed forever, mo more changes are expected to be necessary
for new types of geometry.

AngleViaPoint: precalc with OCC (work in progress)

Work in progress (not yet working).
Using OCC's tangent to replace implementation of
SketchObject::calculateAngleViaPoint.

AngleViaPoint: fix math: normal now points inwards, where it was intended initially and goofed up.

AngleViaPoint: adding comments to the code

AngleViaPoint: using GeomCurve::closestParameterToBasicCurve for angle precalculation

AngleViaPoint: Py method: changeConstraintsLocking

changeConstraintsLocking(True) - locks/re-locks all lockable
tangency/perpendicularity constraints of the sketch (applicable to
existing sketches).
changeConstraintsLocking(False) - removes locking information from
lockable constraints

AngleViaPoint: final SketchObject::calculateAngleViaPoint

Now, finally, using OCC functionality (thanks Abdullah!), without
composing temporary Sketch object.
2015-01-02 11:48:29 +01:00
DeepSOIC
9f821e06b5 Sketcher: Responsivity tweaks and AngleViaPoint Constraint
Solver iteration limit independent of system size (reduces hangs when
solver fails to converge).
Repaint() instead of update() to force render for every movePoint.

Sketcher: New Constraint AngleViaPoint

* Adding generic CalculateNormal() method
* Reconfiguration of GCS geometry classes: adding a base class "Curve",
that has a pure virtual function CalculateNormal().
* Initial inplementation of the new function.
* adding Vector2D class (I wanted to reuse the existing, but got wierd
compile errors, so implemented a new one... TODO.)
* Adding redirection support into GCS shapes. Adding a Copy method to
GCS::Curve.
* Automatic point-on-object
* Angle precalculation: when AngleViaPoint is added, angle is properly calculated based on
existing geometry.
* Added tangency-via-point using one.
* Implemented placement of tangency-via-point icon in 3d view. Also
affected is the placement of point-on-object icon (since it is very
similar code, it is now shared with tangency-via-point)
* Placement and moving of angle datum
Functions: calculateAngleViaPoint, isPointOnCurve,
calculateConstraintError exposed to python
* Endpoint tangency: All endpoint-to-endpoint and endpoint-to-curve tangency now works
through AngleViaPoint constraint and obsolete code clean up (most procedures
addConstraintTangentXXX2YYY)
2015-01-02 11:48:28 +01:00
Abdullah Tahiri
ec03fb541f Part: Extension of Geometry::Curve
Part: Extension of Geometry::Curve to wrap more functions of OCC

Apart from:
    bool tangent(double u, gp_Dir&) const;
that was already implemented, now it also implements:
    Base::Vector3d pointAtParameter(double u) const;
    Base::Vector3d firstDerivativeAtParameter(double u) const;
    Base::Vector3d secondDerivativeAtParameter(double u) const;
    bool normal(double u, gp_Dir& dir) const;
    bool closestParameter(Base::Vector3d point, double &u);

i.e. apart from giving the tangent vector for a given curve at parameter value u,
it also gives:
   - The point cartesian coordinates of the curve point at parameter value u
   - The vector of the first derivative at parameter value u
   - The vector of the second derivative at parameter value u
   - The normal vector to the curve at parameter value u
   - The parameter value of a curve closest ot a given point

Code cleanup: Changing Trim functionality of Ellipse to use OCC calculations

Part Curve functions extension: closestParameterToBasicCurve

It provides the parameter of the curve closest to a given point. If the curve is a Trimmed curve, the parameter of the basic underlaying curve closest to the point is provided.
2015-01-02 11:48:28 +01:00
wmayer
ff09f0524d + fixes #0001656: Vertical/horizontal distance constraint confuses for a line or two points 2014-12-30 15:20:29 +01:00
wmayer
f51daa88e0 + fixes #0001819: Getter Methods for Data inside a sketch 2014-12-29 22:28:12 +01:00
wmayer
d83c02387c + fix constraint evaluation function 2014-12-29 15:17:04 +01:00
wmayer
6a1cb47e30 + fixes #0001616: crash when selecting 'Edit Sketch' 2014-12-29 01:13:03 +01:00
wmayer
7d8b1f30c3 + fixes #0001720: Freecad crash when handling invalid sketches 2014-12-28 17:10:54 +01:00
wmayer
6a211b9dbe + fixes #0001060: Editing sketch crashes FreeCAD 2014-12-27 22:47:21 +01:00
wmayer
7149cce90f + fixes #0000957: Sketch view problem when go to edit 2014-12-27 17:50:37 +01:00
wmayer
d060cdf400 + revert changes for issue 1873 2014-12-26 00:08:26 +01:00
wmayer
272cb566e9 + fix minor issue in toggle construction command 2014-12-25 23:13:01 +01:00
wmayer
29d50dbc01 + improve whitespace 2014-12-25 23:10:42 +01:00
wmayer
e8802adcbe + fixes #0001838: When In Sketcher Make It Difficult To Mistakenly Delete A Feature 2014-12-25 22:43:09 +01:00
wmayer
a6b8bd6815 + improve whitespace, fix warnings 2014-12-25 09:48:23 +01:00
wmayer
33bc596fd8 + fixes #0001873: Error working with getSelectionEx()[0].SubObjects 2014-12-23 22:04:34 +01:00
wmayer
3fa8a1ed2b + fixes #0001874: Scripted constraints not evaluated correctly 2014-12-23 15:32:03 +01:00
wmayer
6af1186d27 + remove Makefile.am, remove some leftovers, avoid including unneeded headers in GCS.cpp 2014-12-20 14:06:54 +01:00
wmayer
d486f3351d + fix pow() ambiguity 2014-12-20 14:01:23 +01:00
Abdullah Tahiri
501c40f0e6 Sketcher: Ellipse implementation enhancements
- ArcOfEllipse enhancement: Tangency ArcOfEllipse to ArcOfEllipse or ArcOfCircle by selecting end/starting points...
- Minor bug corrections (Thanks DeepSOIC)
- ExposeInternalGeometry python command
- DeleteUnusedInternalGeometry python command
- On deletion of an Ellipse/ArcOfEllipse all further unconstrained internal geometry is also deleted.
- This cleans up the code by eliminating code repetition in the creation methods.
- Major bug fix for autoconstraints for ellipse and arc of ellipse creation (for both creation methods)
- Major bug fix Start and Endpoint constraints of an arc of ellipse where not taking into account that Sketcher arcs are always CCW, so they have to be exchanged if we convert a CW arc into a CCW arc.

Sketcher: General bug fix: Tangency wrongly suggested

What?
=====
- On creation of a shape autoconstraints are suggested.
- Tangent autoconstraint was suggested even with lines perpendicular to the tangency direction

Reproduce
=========
- Make a circle on the origin and move the mouse along the X axis, it will suggest a tangency that is impossible
- Click on the axis and no circle will be created

Solution
========
- The SeekConstraint now can use the parameter dir to give a direction that is substantially perpendicular to the expected tangency, so that
if an object having a direction (a line) is hit, a tangency will not be suggested if within around 6 degrees of being parallel.
- Additionally, if such a line is an X,Y axis of the sketch, tangency will only be suggested if the direction is within 6 degrees of being perpendicular (i.e. it is almost tangent already while sketching).
- This difference is due to the fact that an X or Y axis can not "move" to meet the object under creation, whereas a line can.
2014-12-20 12:33:37 +01:00
Mark A. Taff
80120a6bac Ellipse implementation: Several bug fixes
I. Fix minor bug where wrong b was used to create ellipse internal geometry.

Tweak the internal geometry code a bit and reformat it so it isn't so wide.
Also begin debugging constraint conflicts on small circular ellipses.

There seem to be two issues currently in major/minor internal geometry lines:
  1) Sometimes minorLength > majorLength due to round-tripping doubles, and
  2) Constraint conflicts when majorLength > minorLength by an epsilon on the order of 1e-6

(cherry picked from commit 5c3e20af1a95c860112289dcdda54ea99778bc3a)

II. When testing for a valid ellipse, also ensure that the mangled major axis length > the mangled axis length.

This additional condition ensures that major and minor axis constraints don't conflict in the case of small
(nearly) circular ellipses.

The is still a potential bug in the solver when the major length is just slightly larger than the minor, but this fix
makes it nigh impossible to reproduce.
(cherry picked from commit 7e274bc32d9aa1a12ab52bfa33ed80353540b062)

III. Code clean up

Remove redundant 3d vectors.

(cherry picked from commit c656d5165c8bae8f101a2b46af6b12348d06cefe)
2014-12-20 12:33:37 +01:00
Abdullah Tahiri
c8d7f70dba Sketcher: Ellipse implementation: Art by Jim 2014-12-20 12:33:36 +01:00
DeepSOIC
fc7f1791d2 Fix intern. geom. placement for ellipse arc a<b
(cherry picked from commit 896372cbae2d5667f72f6ee9e628eea482846156)
2014-12-20 12:33:36 +01:00
Abdullah Tahiri
83edcf4c86 Sketcher: Ellipse : Integration of all conics under a single toolbar space 2014-12-20 12:33:35 +01:00
Abdullah Tahiri
ba2c2d36e0 Sketcher: Ellipse implementation Art by Jim
- Art for setting all conics under a single icon
- Art for ellipse for 3 points creation method
2014-12-20 12:33:35 +01:00
Mark A. Taff
bccb9466cc Implement two construction methods for ellipses:
--Center, major radius, minor radius
  --Periapsis, apoapsis, minor radius

Artist: We need an icon for periapsis, apoapsis, minor radius method.
(cherry picked from commit f0a4339621b0bf901754af14c3cd36c95ca55966)
2014-12-20 12:33:35 +01:00
Abdullah Tahiri
901bbbed57 Sketcher: Various Ellipse enhancements
- Autoconstraints for Ellipse
- Conversion of a Part.Arc of an Ellipse to Sketcher.
2014-12-20 12:33:34 +01:00
Abdullah Tahiri
f5df65c4c4 Sketcher: Ellipse enhancement: All internal geometry is shown on creation
Elements that have internal geometry are created with the internal geometry on creation.

It has been under discussion for a long time. Ulrich was in favour (asked for it several times).
DeepSOIC implemented the focus because he hated the poor dragging of the ellipse when empty.
2014-12-20 12:33:33 +01:00
DeepSOIC
9d135bdc4e Sketcher: Ellipse enhancement: Negative focus on creation to improve dragging
Focus2 is thrown in automatically for ellipse arcs

(cherry picked from commit 1ab814e6b07fd946dbb2910cc1bfb8588c61afb8)
2014-12-20 12:33:33 +01:00
Abdullah Tahiri
d0362fa4a2 Sketcher Ellipse and ArcOfEllipse: Extra features and bug fixes
- Visual representation of equality constraint: Separate circle and arcofcircle implementation from ellipse and arcofellipse implementation
- Fix for Alignment constraint: Now it allows to assign a second element, one by one
- Box selection for ArcOfEllipses
  Fixes the bug that vertex far away got selected due to lack of sync between the selection and draw loops.
2014-12-20 12:33:32 +01:00
DeepSOIC
f24b589d67 Sketcher Ellipse bug fix:
- Fix placement of equality symbols at ellipses and arcs of ellipses
2014-12-20 12:33:32 +01:00
Abdullah Tahiri
a067a7c25a Sketcher Ellipse and ArcOfEllipse: Extra features and bug fixes
- Minor changes to alignment constraint selection to avoid to create objects just for simple calculations
- Equality constraint of Ellipse, ArcOfEllipse and combinations of those elements
- Bugfix for internalalignment creation of major and minor of ellipse and extension to arcofellipse
- Trim support for ellipses
- Solver threshold for rank calculation set at 1e-13.
- Trim support for arc of ellipse
- Ellipses and ArcOfEllipses as external geometry
- Validate Sketch now supports arcs of ellipse
- Tangents of Ellipse or ArcOfEllipse to any of ArcOfcircle, circle and Ellipse (using construction elements)
- Perpendicularity constraint
- Bug fix: Show/hide internal geometry not working for external geometry
- Visualization of Internal alignment constraints when selecting in the constraint widget
- Equality for ellipses and arc of ellipses
2014-12-20 12:33:31 +01:00
DeepSOIC
21354e9a8b Sketcher Ellipse bug fixes:
- Fix of internal geometry creation
- Fix swapped negative and positive ends of major radius line on creation
- Removing the fudge factor (no longer needed)
- Fix to restore internal alignment - autodecide on constraint creation which point of the line is closer to the position
2014-12-20 12:33:30 +01:00
Abdullah Tahiri
fb0d830560 Sketcher Ellipse and ArcOfEllipse: Major bug fixes
- Change mode so that focus1 is not a point, but two doubles so that visual model and solver model match in number of points.
- Solver fix to deal with reduced constraint partials accuracy (threshold for matrix rank calculation tweak)
- Changes suggested by logari81
2014-12-20 12:33:30 +01:00
DeepSOIC
e423c308af Sketcher Ellipse bug fix: Jump back on mouseup when shrinked 2014-12-20 12:33:29 +01:00
Abdullah Tahiri
a458c3e6d2 Sketcher New Feature: Ellipse support
- Ellipse introduction button via (center,majaxis extreme, a point in edge), ellipse is always CCW so that Z axis goes in the positive direction of the sketch
- Backwards compatibility with files of previous versions of ellipse not defining a phi angle
- Art by Jim (all the icons you see and the XPMs shown on creation of an ellipse)
- Element Widget support for ellipses
- Box selection for ellipses
- Point on Ellipse constraint based on the gardener's method based on Ulrich's function proposal (radcan simplified, i.e. with simplify_radical sage function)
- Tangent: Ellipse to Line based on DeepSOIC's geometric formulation (radcan simplified)

Sketcher New Feature: Internal Alignment Constraint
- The element to which internal alignment is applied has to be selected last.
- All other elements are added in the order of priority, taking into account existing elements
- Art by Jim (beautiful icons).

Sketcher New Feature: Tool to show/hide/restore the internal geometry of an element
- New functionality for show/hide internal geometry:
  toggles between hiding all unused internal geometry elements and showing all internal geometry.
  The restore function is implicit to the showing all internal geometry

Sketcher New Feature: Arc of Ellipse support
- Part::Geometry + Python implementation
- ArcOfEllipse creation method
- Art by Jim (all the icons you see and the XPMs shown on creation of arc of ellipse elements)
- Sketcher Element widget for ArcOfEllipse.

Bug fix: Select elements associated to constraints works now for foci internal alignment constraints
2014-12-20 12:33:29 +01:00
Abdullah Tahiri
6eec2e9851 Ellipse implementation: Art by Jim
- it also includes a shell script equivalent to the UpdateResources.bat for those who use linux
2014-12-20 12:31:27 +01:00
wmayer
78f07f8731 + fixes #0001790: Crash on undo/redo with a selection 2014-12-14 00:06:08 +01:00
wmayer
ff7e33b95d + reimplement copyObject based on merge document 2014-12-13 21:43:20 +01:00
wmayer
7801fbef3a + fixes #0001849: Enable Spin Boxes support for Pad, Fillet and Chamfer 2014-12-11 18:25:30 +01:00
jriegel
38fc7ba604 Merge branch 'refs/heads/master' into review-CL-Bundler 2014-11-29 15:43:19 +01:00
wmayer
c04c513b41 + fix typo, consistent icon name 2014-11-26 14:36:11 +01:00
Abdullah Tahiri
fe3beb89fd Sketcher Enhancement: Merge sketches : Art by Jim 2014-11-26 14:23:46 +01:00
Abdullah Tahiri
0f72bc68ba Sketcher Enhancement: Merge sketches
- It copies the geometry and associated constraints of a plurality of sketches into a new sketch
- The functionality is accessible from outside sketch edit mode, directly from the menu Sketch
2014-11-26 14:23:14 +01:00
Sebastian Hoogen
debca91e98 remove support for automake 2014-11-26 10:26:30 +01:00
jriegel
1bc6df8eac Merge branch 'refs/heads/master' into review-CL-Bundler
Conflicts:
	src/3rdParty/salomesmesh/CMakeLists.txt
2014-11-22 13:51:04 +01:00
DeepSOIC
86a1757c20 Sketcher: Slot: proper tangent constraints
Endpoint-to-endpoint tangency is applied now instead of
tangency+coincident.
Fixes issue #0001828 ( http://freecadweb.org/tracker/view.php?id=0001828
)
2014-11-16 23:14:41 +01:00
wmayer
62de0655d7 + fix inconsistency problem after undo/redo 2014-11-16 19:13:06 +01:00
wmayer
2ead6f9bcf + whitespace improvement 2014-11-16 19:12:34 +01:00
wmayer
7a307cdab3 + fix crash when dragging a point adter undoing the deletion of a line 2014-11-16 19:11:31 +01:00