Commit Graph

2479 Commits

Author SHA1 Message Date
Abdullah Tahiri
9811d6cbb9 GCS: Improvements to popularity contest and conflicting identification
======================================================================

1. Instead of excluding internal alignment constraints from popularity candidate selection, exclude them from the group altogether. This
ensures no group is non-empty with uneligible candidates, which prevents an infinite loop in uncommon circumnstances (when DoFs collapse).

2. Ensure no internal alignment constraint is identified when conflict ensues.
2023-01-06 13:49:56 -06:00
Ajinkya Dahale
9aba979b27 [Sketcher] Delete check for OCC >= 6.9.0
The oldest version we plan to support is 7.0.0. See
https://forum.freecadweb.org/viewtopic.php?f=10&p=650487#p650487.
2023-01-05 00:27:01 +01:00
wmayer
91613cc24c Mod: fix some compiler warnings:
* QString::indexOf() is now marked as [[nodiscard]]
* QApplication::fontMetrics() is deprecated, use the constructor of QFontMetricsF
* fix -Wunused-result
* fix -Wunused-but-set-variable
2022-12-31 21:54:45 +01:00
Ajinkya Dahale
0c017a39f6 [Sketcher] Disallow tangent-at-knot for non-line in solver
This is already stopped in the GUI, but this is still possible by passing the
curve IDs through the console.
2022-12-24 18:22:16 -06:00
Ajinkya Dahale
bb8a3c8885 [Sketcher] Disallow tangent at knot with non-line in GUI 2022-12-24 18:22:16 -06:00
Abdullah Tahiri
8a3b3537b3 Sketcher: Avoid trying to lock tangency for tangency at knot point constraint 2022-12-24 18:22:16 -06:00
Abdullah Tahiri
062e9f75ca Sketcher: Add convenience method to check for internal alignment type 2022-12-24 18:22:16 -06:00
Ajinkya Dahale
0ab7d50639 [Sketcher] Do not use TangentViaPoint for tangent-at-knot 2022-12-24 18:22:16 -06:00
Abdullah Tahiri
b015ae3f0d [Sketcher] Separate line-tangent-at-knot from angle-at-point
The latter is intended for a specific solver constraint.

[Sketcher] Make further changes for tangent-at-knot separation

1. Remove code for tangent-at-knot from `addAngleAtPointConstraint`.
2. Use correct order of input.
3. Separate internal C0 knot vs end knots. The latter can still be constrained
but the user must use endpoints of the spline instead of knots.
2022-12-24 18:22:16 -06:00
Abdullah Tahiri
e3fe3902df Sketcher: Solver - add map for Internal Alignment geometry 2022-12-24 18:22:16 -06:00
Ajinkya Dahale
598e86a644 [Sketcher][planegcs] Make changes as per review on #7484
Similar to 2715a66ff02a46f94ae3fc6527fd446e666b8e58.

Added some comments and removed some TODO's.

Return grad values directly rather than doing summation.
2022-12-24 18:22:16 -06:00
Ajinkya Dahale
322306ccf9 [Sketcher][planegcs] Use only line direction in tangent-at-knot
This discourages reducing the size of the line when it is more normal than
tangent.
2022-12-24 18:22:16 -06:00
Ajinkya Dahale
3f91c52b3f [Sketcher][planegcs] Fix tangent at knot for C1 knots 2022-12-24 18:22:16 -06:00
Ajinkya Dahale
af5bc953c9 [Sketcher][planegcs] Handle type issues with int and size_t
... and `unsigned int`

Suggestions thanks to @abdullahtahiriyo
2022-12-24 18:22:16 -06:00
Ajinkya Dahale
75f2a1d69a [Sketcher] Use tangent at B-spline knot constraint
Also squashes:

[Sketcher] Make tangent-at-knot with just knot and line

[Sketcher] Disallow tangent at C0 knot

If passed on to planegcs can cause segmentation fault.

[Sketcher] (Re-)Support tangent at B-spline end-knots

New code had introduced problems for non-periodic spline end-points, and
periodic spline "end-points" were not supported anyway.

(here end-points mean star/end points)
2022-12-24 18:22:16 -06:00
Ajinkya Dahale
4c71957a97 [Sketcher] [planegcs] Add "tangent at b-spline knot" constraint
Also squashes:

[Sketcher] [planegcs] Support tangent at NURBS knot

...which means support rational B-splines
2022-12-24 18:22:16 -06:00
Ajinkya Dahale
d0a30e3b11 [Sketcher] [planegcs] Calculate value at general b-spline 2022-12-24 18:22:16 -06:00
Ajinkya Dahale
57fa3e44f4 [Sketcher] [planegcs] Evaluate lower degree B-spline factors 2022-12-24 18:22:16 -06:00
Ajinkya Dahale
3b8b9c3c49 [Sketcher] Fix typo 2022-12-24 16:02:52 +01:00
Yorik van Havre
89147ef8de Regenerated ts files using lupdate6.6 2022-12-22 15:39:42 +01:00
Yorik van Havre
59b6970728 Fixed ts files 2022-12-22 13:34:31 +01:00
Abdullah Tahiri
477bf46f25 Solver: Pass map by const reference to avoid performance penalty
================================================================

Credit goes for forum user acolomitchi:

https://forum.freecadweb.org/viewtopic.php?p=648807#p648807
2022-12-22 06:26:17 +01:00
Abdullah Tahiri
fdb2e1ad01 Sketcher: Split - remove unnecessary return after exception 2022-12-21 16:01:23 +01:00
Ajinkya Dahale
38212da989 [Sketcher] Handle exception in Python while splitting
`SketchObject::split` only appears to throw `ValueError`.
2022-12-21 16:01:23 +01:00
Ajinkya Dahale
ce08cebc1f [Sketcher] Handle split curve corner case
It is possible to ask for splitting at an end point of the curve. This leads to
a `CADKernelError` and leaves us with a "hanging" clone. This check prevents that.
2022-12-21 16:01:23 +01:00
Abdullah Tahiri
7d9b24f2b7 Sketcher: Split functionality fixes
===================================

Changes from naked pointers to smart pointers are motivated to the use of functions that can reasonably throw under certain circumnstances (such as trim).

When introducing smart pointers, it is not necessary to explicitly delete the new geometry array at the end of the function.

When using the new facility to add a smart pointer geometry (previous commit), the copies generated in the split algorithm can be reused, which renders
keeping track of the new geometry for memory management unnecessary.

As geometry is added to the property which each call to addGeometry, the stored newIds can be reused if access is necessary to geometry pointers afterwards
(e.g. for constraint management).
2022-12-21 16:01:23 +01:00
Abdullah Tahiri
e5e508c326 Sketcher: SketchObject new addGeometry method for smart pointers
================================================================

This new facility avoids to have to create a new copy() when a user copy is already created.

As the user copy is reused via move semantics, memory management is simplified.

CAVEAT: When this facility is used, the client code has to ensure whether a copy() or a clone() of the Part::Geometry
should be undertaken. The different between both is that the former creates a new uuid (tag), whereas the latter does not.
2022-12-21 16:01:23 +01:00
Ajinkya Dahale
a47702bd5b [Sketcher] Support splitting B-splines at knots 2022-12-21 16:01:23 +01:00
Ajinkya Dahale
3c11d09c15 [Sketcher] Refactor SketchObject::split() for code reuse
This provides some manageability with increasing supported curves.
2022-12-21 16:01:23 +01:00
Ajinkya Dahale
d82fe9e34c [Sketcher] Support splitting ellipses 2022-12-21 16:01:23 +01:00
Ajinkya Dahale
19f9c94389 [Sketcher] Support splitting arcs of conics
This commit also squashes:

[Sketcher] Remove redundant geometry type check

(Arc of) a circle is (an arc of) a conic.
2022-12-21 16:01:23 +01:00
Ajinkya Dahale
947d34f01d [Sketcher] Support splitting arcs of ellipses 2022-12-21 16:01:23 +01:00
Ajinkya Dahale
3716a15dd7 [Sketcher] Support splitting b-splines 2022-12-21 16:01:23 +01:00
Abdullah Tahiri
dda2d4761e Sketcher: Use new critical message mechanism to notify parabola migration
=========================================================================

A migrated parabola cannot be openned with a previous version of FreeCAD. The user is notified upfront.
2022-12-21 16:01:23 +01:00
Abdullah Tahiri
727140ab04 Sketcher: Automatic migration of parabola axis to internal geometry 2022-12-21 16:01:23 +01:00
Abdullah Tahiri
93c26a6c63 Sketcher: Make parabola axis to be internal alignment 2022-12-21 16:01:23 +01:00
Yorik van Havre
3376e387da Merged crowdin translations 2022-12-20 10:01:00 +01:00
Yorik van Havre
d206d5cd1f Updated ts files 2022-12-20 09:31:25 +01:00
Uwe
4e55c4b46d [Sketch] Gui:Task*: remove unused headers
- also some sorting
2022-12-14 03:48:40 +01:00
Uwe
2b9a28e0ec remove some unnecessary Boolean checks
- checks for true/false and nullptr
2022-12-12 21:17:49 -06:00
Uwe
800005a7bd [Sketch] Gui: U - End: remove unused headers
- also some sorting
2022-12-13 04:02:20 +01:00
Uwe
b555dc0e89 [Sketch] Gui: Sketch - So: remove unused headers
- also some sorting
2022-12-13 02:45:17 +01:00
luz paz
f17b73a7bf Cleanup: move return statement to new line + trailing
Follow-up to #6497
2022-12-12 11:38:06 +01:00
Uwe
74b8b09caf [Sketch] Gui: E - Short*: remove unused headers
- also some sorting
2022-12-12 02:52:33 +01:00
Uwe
5e2fb4fb62 [Sketch] Gui: improve precompiled headers 2022-12-11 23:59:28 +01:00
Uwe
e24daabf1f [Sketch] Gui: A - D: remove unused headers
- also some sorting
2022-12-11 23:47:03 +01:00
Uwe
365d968ae8 [Sketch] App P - End: remove unused headers
- also some sorting
2022-12-11 22:36:00 +01:00
Uwe
1a365e881f [Sketch] App A - G: remove unused headers
- also some sorting
2022-12-11 18:53:45 +01:00
Uwe
b4bb7c42b3 [Sketch] App: improve PreCompiled.h handling 2022-12-08 01:33:24 +01:00
Ajinkya Dahale
54db25968d [Sketcher] Convert curves to splines before joining 2022-12-04 08:17:20 +01:00