Commit Graph

1824 Commits

Author SHA1 Message Date
donovaly
ef8831ff25 [Sketch] improve wording for a color
as discussed here: the wording "datum color" does not make clear what it is about. It is in fact the color for dimensional constraints, thus name it as such

- also fix the dialog height (found and automatically corrected by Qt Designer)
2020-12-25 11:49:03 +01:00
Yorik van Havre
145fa6bfa1 Merge pull request #4186 from luzpaz/typos
Fix typos [skip ci]
2020-12-24 12:07:15 +01:00
Abdullah Tahiri
af605e4066 GCS: Improve documentation about debug
======================================

Explicitly indicate that if parameter diagnosis must be silent=false in order to debug,
then the lauch policy during the debug must be set to deferred in order to avoid concurrent
access to Base::Console which is not thread-safe.
2020-12-24 11:59:51 +01:00
Abdullah Tahiri
197a234357 Sketcher: Fix block constraint with several dependency groups
=============================================================

Fixes:
https://forum.freecadweb.org/viewtopic.php?f=8&t=53466&p=460513#p460270

When a parameter belonging to a blocked geometry is present in several
dependency groups and there are other fixed parameters one or more of
the dependency groups, it is not enough to remove that parameter, from
the one or more dependency groups. The removal of a parameter may only
satisfy one dependency group. Removing a single parameter creates a
new different dependency group.

Solution:
If the first blocked parameter in a group is already set for removal,
continue searching for other blocked parameters, until one not searched
for removal is found.
2020-12-24 11:59:51 +01:00
Abdullah Tahiri
dfda68be11 Sketcher: enable Block constraint with empty additional constraints
===================================================================

Fixes:
https://forum.freecadweb.org/viewtopic.php?f=13&t=53515&p=460523#p460406
2020-12-24 11:59:51 +01:00
Abdullah Tahiri
5cfef45561 Sketcher: Additional debug code for new block constraint 2020-12-24 11:59:51 +01:00
luz paz
ff96cb301e Fix typos [skip ci]
Found via `codespell v2.1.dev0`
2020-12-23 14:32:38 -05:00
Yorik van Havre
5a322d75cb Merged crowdin translations 2020-12-23 15:13:05 +01:00
Yorik van Havre
5a974f824c Updated ts files 2020-12-23 14:51:04 +01:00
David Osterberg
cbbbe942ea Apply style suggestions from @abdullahtahiriyo 2020-12-23 06:23:17 +01:00
David Osterberg
73fa304685 Sketcher: Fix issue #4513 - SketchObject::addSymmetric
This fixes issue
https://tracker.freecadweb.org/view.php?id=4513

addSymmetric will now only transfer Vertical and Horizontal constraints if the reference axis is either
 - the HAxis
 - the VAxis
 - a Vertical line
 - a Horizontal line
2020-12-23 06:23:17 +01:00
Abdullah Tahiri
04337034ce Sketcher: ViewProvider representation of (not)-fully constraint defining points 2020-12-22 07:10:48 +01:00
Abdullah Tahiri
f1a00f7a08 Sketcher: Allow UI to toggle construction status of Vertices 2020-12-22 07:10:48 +01:00
Abdullah Tahiri
e875704c2c Sketcher: Support for defining point 2020-12-22 07:10:48 +01:00
wmayer
6c956bb80f Sketcher: support vertexes in sketch used e.g. for hole features 2020-12-22 07:10:48 +01:00
Abdullah Tahiri
c79ac8d1fc Sketcher: Implement Python function getConstruction(geoId) to retrieve geometry construction status 2020-12-22 07:10:48 +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
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
Chris Hennes
adc6db8f32 Eliminate Windows debug-mode warning 2020-12-20 15:46:28 +01: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
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