Commit Graph

23485 Commits

Author SHA1 Message Date
uLeonis
7bae88bf07 Merge branch 'master' into master 2020-12-21 22:35:53 +01:00
David Osterberg
dec01d1df0 Sketcher: Fix several issues in SketchObject::trim
Issues addressed:
- exception when trimming a loose end of a Arc of circle
- conflicting constraints when trimming
- loss of tangency when trimming arcs tangent to lines or other curves
- incorrect trimming when the intersecing geometry has a PointOnObject constraint to the arc, but also another intersection og geometry.

Fixes:
https://tracker.freecadweb.org/view.php?id=4066
https://tracker.freecadweb.org/view.php?id=3910

Also see forum discussion
https://forum.freecadweb.org/viewtopic.php?f=10&t=53299
2020-12-21 20:03:02 +01:00
Marcel Althaus
3abc60f1a2 Code cleanup. 2020-12-21 19:40:38 +01:00
uLeonis
96f2ba2cb5 MeasureDistance
- Abort mode via ESCAPE added

BoxZoom, BoxSelection and BoxElementSelection
- Change the cursor to give the user feedback about active mode.
- Abort mode via ESCAPE
2020-12-21 17:32:33 +01:00
luz paz
3b449e1ce9 Fix typo found via Crowdin [skip ci]
https://crowdin.com/translate/freecad/548/en-eu?filter=basic&value=3#6585264
2020-12-21 13:18:13 +01:00
David Osterberg
a8443b6b7f Improve comment and remove uncessary return statement 2020-12-21 08:37:37 +01:00
David Österberg
bfc036daa4 Update src/Mod/Sketcher/App/SketchObject.cpp
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2020-12-21 08:37:37 +01:00
David Osterberg
edb87a0663 Delete Equal constraints on LineSegments in SketchObject::trim
This closes:
https://tracker.freecadweb.org/view.php?id=4510
2020-12-21 08:37:37 +01:00
Abdullah Tahiri
07725ede25 Sketcher: New Blocked constraint solver implementation
======================================================

With the new solver ability to identify groups of dependent parameters, even with SparseQR, it is now possible to properly implement Blocked constraint (blocked geometry state/mode).

This comes at the cost of two consecutive diagnosis (4 QR decompositions, running in parallel by pairs, so the double of time than when not using any blocked constraint).

A first diagnosis identifies the groups of dependent solver parameters.

If any of these groups comprises a parameter affected by a blocked constraint, the parameter is fixed. As only one parameter from each group is fixed, there are no (partly) redundant parameters involved.

Then the new adapted system is solved.
2020-12-21 05:57:42 +01:00
Abdullah Tahiri
ea006076e4 Sketcher: GeometryFacade - convenience method to check if a geometry is blocked 2020-12-21 05:57:42 +01:00
Abdullah Tahiri
e3873a73e9 GCS: enable to invalidate diagnosis result 2020-12-21 05:57:42 +01:00
Abdullah Tahiri
c3acfcc0a0 Sketcher: Fix Array/copy/move
==============================

Do not copy/array internal alignment geometry if the geometry it defines is not part of the operation. Silently ignore it.

If the reference for the operation is one such geometry (or it is the only one), then abort the operation.
2020-12-20 19:27:29 +01:00
Abdullah Tahiri
6aca180d7e Sketch: fix correct index in parameter dependency map for poles and knots 2020-12-20 19:27:29 +01:00
Abdullah Tahiri
ade218f58c Sketcher: fix knots PointPos coded as mid instead of start 2020-12-20 19:27:29 +01:00
Abdullah Tahiri
2ebed71e7a Sketcher: fix crash on mirroring geometry defined by internal alignment geometry
================================================================================

Internal Alignment constraint mirroring was never implemented. With the enhancements
brought with implementation of geometry extensions in the sketcher, this lack of
implementation became a crash, as geometry was marked as being internal alignment, while
no associated internal alignment constraint was created.

Restrictions:
- Internal alignment geometry is only to be mirrored if the geometry it defines is also
being mirrored. Internal alignment geometry is otherwise skipped. This is because it
does not make sense to have a pole without a b-spline, or a major axis of a ellipse without
an ellipse.

fixes #4514
2020-12-20 19:27:29 +01:00
sliptonic
efa6346e5f Merge pull request #4150 from sliptonic/posttodxf
[PATH] Post-process a job to a dxf file with layers
2020-12-20 09:27:45 -06:00
Chris Hennes
adc6db8f32 Eliminate Windows debug-mode warning 2020-12-20 15:46:28 +01:00
sliptonic
fbe0b1974c Merge pull request #4163 from Russ4262/patch-1
Path: Fix reference to cutting edge angle in OCL_Tool() class
2020-12-19 16:38:07 -06:00
sliptonic
fb64d208bd Merge branch 'master' into posttodxf 2020-12-19 15:40:16 -06:00
sliptonic
aa9e16cbed Merge pull request #4144 from mlampert/feature/suppress-warnings-preferences
Path: Feature/suppress warnings preferences
2020-12-19 15:39:30 -06:00
luz paz
ea0ce293f7 Fix typos [skip ci]
Found via `codespell v2.1.dev0`  
```
codespell -q 3 -L aci,ake,aline,alle,alledges,alocation,als,ang,anid,apoints,ba,beginn,behaviour,bloaded,byteorder,calculater,cancelled,cancelling,cas,cascade,click,dum,eiter,elemente,ende,feld,finde,findf,freez,hist,iff,indicies,initialisation,initialise,initialised,initialises,initialisiert,ist,kilometre,lod,mantatory,methode,metres,millim,ot,pard,pres,programm,que,recurrance,rougly,seperator,serie,sinc,strack,substraction,te,thist,thru,tread,uint,unter,vertexes,wallthickness,whitespaces -S ./.git,*.po,*.ts,./ChangeLogpios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml
```
2020-12-19 16:35:16 +01:00
wmayer
c276139f19 Part: [skip ci] add TopoShape::isInfinite 2020-12-19 16:07:00 +01:00
Abdullah Tahiri
ba5bc449cd Sketcher: Remove unnecesary header 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
82a4f676fa GCS: clean up old interface 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
3d361b1caa Sketcher: Sketch.cpp clean up old interface 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
d5e7f0ad81 Sketcher: Bring new colors to preferences 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
b1db237270 Sketcher: ViewProviderSketch - Show constrained elements in new color
=====================================================================

Provide different colors for full constrained edge, construction edge, internal alignment element and construction vertex.

This should enable users to select what they want in their specific situation.
2020-12-19 11:58:54 +01:00
Abdullah Tahiri
994101e086 Sketcher: ViewProviderSketch - fix BSpline pole dragging based on SolverGeometryExtension 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
fdc4df0202 Sketcher: rewrite Cmd to select DoFs using SolverGeometryExtensions framework 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
cb68fa4fb8 Sketcher: rewrite SketchObject getGeometryWithDependentParameters to use SolverGeometryExtension 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
87699ea18d Sketcher: Sketch.cpp - use SolverGeometryExtension as mechanism to convey dependent parameter information
=========================================================================================================

Former mechanism with hasDependentParameters is not flexible enough for the new kind of information.

This commit further enhances the calculation of dependent parameters and dependent parameter groups by
caching the parameter-geoelement (GeoId, PointPos) relationship during geometry creation.

This commit provides traditional information whether a parameter is dependent via SolverGeometryExtension. New
enhanced information about groups of dependent parameters are available via the Sketch API.
2020-12-19 11:58:54 +01:00
Abdullah Tahiri
603a232349 Sketcher: new SolverGeometryExtension to store solver information within the geometry 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
1cc9533392 Sketcher: Add ability to update a GeometryExtension of the solver 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
621a9a0e98 GCS: Set SparseQR conditional compilation guards 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
e0a814bfc7 GCS: Change asynchronous launch policy to default to avoid having to take care of exceptions on oversubscription
================================================================================================================

std:async can take two policies one that forces the task to be run in parallel another (deferred) that runs the task
when wait is called on the future (kind of lazy evaluation).

Default policy is let the system decide (an or of both policies). Nobody is a better position than the system to know
its load and whether it is possible to run the task in parallel or not.

If the system cannot allocate a thread and parallel processing is enforced (as before this commit), then it will throw an
exception. In the present case we would catch it and run the task sequencially. Thus, it makes sense to let the system
decide from the beginning and save the exception and the handling.

In tests I have only managed to see it run in parallel with the default policy.
2020-12-19 11:58:54 +01:00
Abdullah Tahiri
28415f53d4 GCS: renaming parameters to make them more descriptive 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
7f006e2c75 GCS: Augment information provided by GCS with groups of dependent parameters 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
270b0cbc33 GCS: Interface to query whether the used diagnose matrix is empty
=================================================================

Diagnose constraints do not include among others driven constraints. This
function allows to know whether the solver is considering an empty matrix.
2020-12-19 11:58:54 +01:00
Abdullah Tahiri
996f006de3 GCS: Deactivate Debug code and fix warnings in non-Debug mode 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
b2fd91c333 GCS: Asynchronous full geometry parameter identification for Dense QR 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
5e2a2cbbbb GCS: Make QR decompositions for constraints and parameters run asynchronously 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
9f2d34ac4b GCS: QR profiling debug code 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
ac7f6b8ceb GCS: Rewrite diagnose() so that it has a single return point 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
474d5550cf GCS: Diagnose() - Separate DenseQR and SparseQR 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
c635b4b954 GCS: Refactor new SparseQR Dependent Parameter detection code and const correctness 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
2d37d7194a GCS: Detect dependent parameters (geometry) during diagnosis using two SparseQR factorisations 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
982591b0d4 GCS: makeSparseQRDecomposition generalise for transposed and non-transposed matrices 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
820b02b295 GCS: SparseQR compilation guards 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
0f9af72f25 GCS: reduce input parameters in makeDenseQRDecomposition 2020-12-19 11:58:54 +01:00
Abdullah Tahiri
dd4b29333a GCS: Refactor Non-Zero elimination over pivot 2020-12-19 11:58:54 +01:00