Commit Graph

321 Commits

Author SHA1 Message Date
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
Przemo Firszt
c5903523ea Part: PartDesign: Fine tune chamfer, fillet and draft icons
Signed-off-by: Przemo Firszt <przemo@firszt.eu>
2015-05-24 10:52:26 +01:00
wmayer
00a124cea1 + Pad type UpToFirst and UpToFace doesn't produce expected results. 2015-05-16 14:19:20 +02:00
wmayer
a6436f7d12 + fixes #0001655: Pocket type UpToFirst and UpToFace doesn't produce expected results. 2015-05-16 12:44:07 +02:00
Sebastian Hoogen
db13fbb7b3 add angularDeflection property to ViewProvider
issue #1868
2015-03-21 19:27:43 +01:00
DeepSOIC
08f7afb0e4 PartDesign: fix wrong sketch pad (#1854)
Fixes the issue where, when a sketch is cloned, and selected for
padding, the clone gets padded instead of the sketch.
It also allows padding of a sketch that is already used by anything
else, except for PartDesign features.
+ the same fix for PartDesign Revolution.
2015-03-14 14:18:34 +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
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
010fc6f307 + fixes #0001721: PartDesign Pad 'Up to face' face selection in the 3D view not working 2015-01-06 18:38:33 +01:00
wmayer
fb19ea5089 + fixes #0001870: Revolution and Groove in Part-Design do not hide the sketch and parent-feature for some geometries 2015-01-06 15:00:24 +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
wmayer
7801fbef3a + fixes #0001849: Enable Spin Boxes support for Pad, Fillet and Chamfer 2014-12-11 18:25:30 +01:00
wmayer
2608d0aaf2 + 0001849: Enable Spin Boxes support for Pad, Fillet and Chamfer 2014-12-07 00:38:02 +01:00
Sebastian Hoogen
debca91e98 remove support for automake 2014-11-26 10:26:30 +01:00
wmayer
a622d14c2d + port to CMake 3.0 2014-11-15 18:48:58 +01:00
wmayer
f02da38566 + fix Qt help problems 2014-10-01 17:16:43 +02:00
Sebastian Hoogen
e820a32653 issue #1701 2014-09-27 13:07:30 -03:00
wmayer
032c893183 + fix warnings with clang 2014-09-24 17:46:04 +02:00
wmayer
003c2bf77d + fix warnings with clang 2014-09-24 15:55:36 +02:00
Stefan Tröger
72cab0c002 Adaption of FreeCAD to QuarterWidget
-removes all soqtviewer references
-create a quarter adaptor class which implements missing functionality
-adopts freecad code to make use of SoRenderManager and changed View3DInventorViewer  interface
2014-09-23 10:11:11 +02:00
Sebastian Hoogen
5e51a6cdf7 fixes #0001422: Subclass Exception
inherit Base.FreeCADError form RuntimeError
inherit Part.OCCError from Base.FreeCADError
inherit OCCDomainError from Part.OCCError
inherit OCCRangeError from Part.OCCError
inherit OCCConstructionError from OCCDomainError
inherit OCCDimensionError from OCCDomainError
Added PY_CATCH_OCC macro
replace PyExc_Exception
use FreeCADError in makeWireString
catch exception in BSplineCurve.increasedegree
2014-09-17 11:15:56 +02:00
wmayer
d1fb7fa839 + do not add units to translation 2014-09-10 10:35:49 +02:00
Sebastian Hoogen
a81a307346 issue #1700 replace raise Exception() 2014-09-01 22:47:05 +02:00
wmayer
7c89591ff6 + allow to load PartDesign even if PySide is not found, suppress MinGW warnings 2014-08-30 23:26:29 +02:00
jriegel
c1f0f70b88 Merge remote-tracking branch 'refs/remotes/origin/jriegel/NewWinBuild' into jriegel/review-NewLibPack
Conflicts:
	src/3rdParty/salomesmesh/CMakeLists.txt
2014-08-27 15:39:00 +02:00
wmayer
cc775f9254 + fix -Wnull-conversion, -Woverloaded-virtual, -Wlogical-not-parentheses, -Wsometimes-uninitialized 2014-08-26 19:14:13 +02:00
wmayer
854596aaa0 minor fixes in gear panel 2014-08-08 13:21:06 +02:00
Aglef Kaiser
420e71afbb Involute gear script extended for internal gears 2014-08-08 12:10:38 +02:00
jriegel
ec2198107b move build specifier in own cMake group 2014-08-03 20:53:19 +02:00
Johan K
7fadaa0a55 Added more regular polygons to the sketcher gui 2014-07-27 00:25:40 +02:00
wmayer
dfea0206ca + fix doc string 2014-07-22 14:49:25 +02:00
wmayer
c693916fb1 + support units in hole panel 2014-07-22 14:47:37 +02:00
wmayer
cb5e72974c + support units in hole panel 2014-07-22 14:47:09 +02:00
wmayer
57cdb8aed5 + support units in draft panel 2014-07-22 14:44:20 +02:00
wmayer
3585403ee2 + support units in polar pattern panel 2014-07-22 14:39:23 +02:00
wmayer
67b85ff8c3 + support units in revolve panel 2014-07-22 14:30:30 +02:00
wmayer
4b644b2821 + support units in groove panel 2014-07-22 14:23:10 +02:00
wmayer
ea6c5407d9 + support units in pocket panel 2014-07-22 14:13:45 +02:00
wmayer
a5e27444d0 + minor issue solved with message label of linear pattern panel 2014-07-22 11:08:43 +02:00
wmayer
107a7f50dc + fix bug in chamfer/fillet when aborting command 2014-07-22 11:02:45 +02:00
wmayer
d2cbd6817f + fixes 0001563: Add units to Linear Pattern in PartDesign 2014-07-22 10:39:44 +02:00
wmayer
4ae0d4db53 + do not allow negative numbers in fillet and chamfer panel 2014-07-18 15:23:36 +02:00
wmayer
af4aa69d35 + fix crash when trying to edit broken revolve object 2014-07-13 11:34:36 +02:00
wmayer
d7fafdb2b6 + split create/edit sketch command into two commands 2014-07-13 10:17:50 +02:00
wmayer
f91c64aba9 + fix crash when trying to edit broken revolve object 2014-07-12 16:13:13 +02:00
wmayer
82b8df576d + select value in task pad panel 2014-06-10 12:33:56 +02:00
wmayer
30e8c12f54 + fixes #0001562: Add units to Fillet and Chamfer in PartDesign 2014-06-10 12:33:14 +02:00