Commit Graph

499 Commits

Author SHA1 Message Date
wmayer
1c03bc4eaa Sketch: Refactor SketchAnalysis
Refactor makeMissingEquality()
2024-05-28 14:19:58 +02:00
wmayer
d5c92fee98 Sketch: Refactor SketchAnalysis
Refactor makeMissingVerticalHorizontal
2024-05-28 14:08:44 +02:00
wmayer
5461d0d27f Sketch: Refactor SketchAnalysis
Refactor makeMissingPointOnPoint
2024-05-28 13:40:38 +02:00
wmayer
e67502025d Sketch: Add test case for validating constraints 2024-05-27 19:15:18 +02:00
wmayer
5696ee821c Sketcher: Fixes #14240 2024-05-27 12:09:35 +02:00
bgbsww
ad7ceb8ba6 Toponaming: Fix point crash bug 2024-05-16 09:05:27 -05:00
bgbsww
869cb1f83b Toponaming: bring in missing code fragments in Sketcher 2024-05-13 15:47:44 -05:00
bgbsww
bad3a83827 Fix #13858
Mistaken enabling of known bad code
2024-05-07 10:17:48 -05:00
bgbsww
d7ade12dc3 Ensure we set up a valid sketch even with invalid external references 2024-05-06 17:42:38 +02:00
bgbsww
a88e7baff5 TopoShape/Part: Bug fixes; pass Hasher parms, OCCT 7.8 compatibility, ElementMaps correct item count 2024-04-14 13:56:07 -04:00
bgbsww
c9d8bdf13d Toponaming/Part: Add deprecation comments, clean up code 2024-04-09 21:17:08 -04:00
wmayer
ba27d6d92d Part: Add overloaded methods of GeomBSplineCurve::approximate 2024-04-03 18:06:00 +02:00
PaddleStroke
c26f52c4e4 Sketcher: Symmetry fix #13164 2024-04-01 11:20:40 -05:00
PaddleStroke
5668b6952b Sketcher: Chamfer Fix #13049 2024-04-01 11:04:02 -05:00
bgbsww
4df1088896 Toponaming/Part: Bug fix for #13169 while we sort this out 2024-03-27 21:33:57 -05:00
bgbsww
55acedb83d Clean, enable disabled element map code in sketcher, add tests 2024-03-25 21:51:41 -04:00
Zheng, Lei
f19df465ea Toponaming/Part: Move sketcher override of getElementName over 2024-03-25 21:51:41 -04:00
PaddleStroke
e4213fc10f Sketcher: Symmetry tool rework. 2024-03-25 17:48:01 +01:00
PaddleStroke
b3fe5bba28 Sketcher: Chamfer tool (and fillet refactor) 2024-03-18 13:23:54 -04:00
wmayer
8743f5e82a Sketch: fix compiler warning
Fix warning: add explicit braces to avoid dangling else [-Wdangling-else]
2024-03-04 23:15:42 -06:00
Josh Coalson
a8ae56e06a Part: Rename AttachExtension::Support property to AttachmentSupport, to avoid name conflict with base features. Fixes #7052 2024-03-04 18:22:43 +01:00
Ajinkya Dahale
da7d5391af [Sketcher] Join curves with C1 continuity
If endpoint-to-endpoint tangent constraint exists between the connecting points
of the curves to be joined, also apply C1 continuity (i.e. a knot multiplicity
of degree-1).
2024-02-27 09:57:52 -06:00
Ajinkya Dahale
f8f159c4d3 [Sketcher] Include endpoint-to-endpoint tangency as coincidence
Coincidence is implied as part of this particular variety of tangent constraint.
2024-02-27 09:57:52 -06:00
wmayer
a2315503fa Sketcher: expose the LabelDistance and LabelPosition members of Constraint to Python 2024-02-25 00:10:56 +01:00
Ajinkya Dahale
65b4dd10ae [Sketcher] Expose general tangency with B-splines to Sketcher
The following commits were squashed into this

[Sketcher] Handle some corner cases in AngleViaPoint

[Sketcher] Avoid redundant constraints with B-splines...

When involving tangent, perpendicular and angle constraints.

[Sketcher] Add pre-commit changes

[Sketcher] Do not allow 2-selection tangent with B-spline

Also...

[Sketcher] Report error when using direct tangency with B-splines

[Sketcher] Fix malformed constraint when B-spline is selected second

To clarify, this means the second curve selected. The position of the point in
selection order does not matter in angle-via-point.

[Sketcher] Fix wrong number for B-Spline tangent on redundancy

[Sketcher] Remove existing point-on-object in some redundant cases

Particularly when point constrained on a B-spline is being used for
tangent, perpendicular or angle via point with the same B-spline.

[Sketcher] Fix direction issue with B-spline tangents.

Without these changes the solver might try to "twist" the B-spline to make the
angle between curves be 0 instead of PI (which may be closer to the initial shape).
2024-02-08 20:04:28 +05:30
Florian Foinant-Willig
d2a579bdc6 Sketcher: Extend distance constraint to arcs 2023-12-17 16:01:29 +01:00
Paddle
05c382f6d9 When moving an angle, we did not take into account the case where they are reversed. This fixes that. 2023-11-24 15:07:30 +01:00
Florian Foinant-Willig
a32851073d Sketcher: modernize type checking 2023-10-23 18:09:23 +02:00
Abdullah Tahiri
e9187412d9 Sketcher: Example new type checking template function usage
===========================================================

Just two small refactor examples of how to use the type checking template functions.
2023-10-07 23:12:46 +02:00
howie-j
acbf135b78 [Sketcher] Fix angle constraint expression regression (#10743)
* fix 10742

* moved expression string modifier to helper function

* Tests: Add example tests for SketchObject

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* made expr modifier func static, pass by value and added unit tests

---------

Co-authored-by: Chris Hennes <chennes@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2023-09-25 10:44:31 -05:00
wmayer
ab4abab53d Sketch: fix a few minor issues:
* fix compiler warning about unused variable
* fix const correctness
* fix access type of setExpression()
* removed duplicated method
2023-09-19 22:01:19 +02:00
Paddle
a8f11f12fb Implement a function in sketchObject that swap an angle constraint to its supplementary. 2023-09-19 07:22:50 +02:00
Paddle
e58b52ea12 Add setter/getter for constraint expression. 2023-09-19 07:22:50 +02:00
luzpaz
760fac5d82 Fix typos 2023-09-14 20:53:04 -05:00
wmayer
d150fa7164 modernize C++: avoid bind
In many cases std::bind() is kept because the code is much simpler
2023-08-08 21:10:16 +02:00
wmayer
68d22d864b modernize C++: move from boost::bind to std::bind 2023-08-08 17:36:13 +02:00
Ajinkya Dahale
b2840e7a5e [Sketcher] Create SketchObject::buildShape()
Needs changes in TopoShape and creation of ExternalGeometryFacade.

Also contains the squashed ticket:

[Sketcher] Hide unimplemented code

These will eventually be implemented in phase 3 of toponaming.

[Sketcher] Implement trivial `checkSubName` to appease Windows

[Sketcher] Modify `GeoEnum` usage
2023-07-21 22:43:45 -05:00
Abdullah Tahiri
987b4bda2a Sketcher: App - Clang-format 2023-05-20 07:55:05 +02:00
luzpaz
129d5882a7 Migrate domain name from freecadweb to freecad (#9352)
* Migrate domain name from freecadweb to freecad
* Migrate src/Mod/Material files
* Migrate Stylesheet related files
* Migrate *.svg files
* Migrate miscellaneous files
* Migrate some build files
* Migrate recently added TD AR_IRAM template files

Closes #6415
2023-04-24 15:19:20 -05:00
Ajinkya Dahale
3e5f3a9a57 [Sketcher] Constrain first pole weight in exposeInternalGeometry
This commit is part of a project funded by the Open Toolchain Foundation under the title "Open Toolchain Foundation - Curve drawing tool in Sketcher Workbench"
2023-03-24 16:30:48 +01:00
Abdullah Tahiri
340ccb8ed6 Sketcher: SketchObject using the new notification system
========================================================

- CriticalMessage old signal is reconverted to new notification system. This enables to remove the obsolete old system.

- An example of how common errors can be provided with translation support is added, so that App notifications appear
translated in the NotificationArea.
2023-03-12 06:06:29 +01:00
luzpaz
2c3e6bd70a Sketcher: convert indentations to spaces 2023-01-23 15:46:49 +01:00
Ajinkya Dahale
40627b3ab2 [Sketcher] Do not filter out point-on-B-spline when trimming
Fixes #7770.

Until Point-on-B-spline is actually merged this will result in a malformed
constraint. It will however still allow a trim of the B-spline to result in a
coincident constraint.
2023-01-21 21:42:57 +01:00
Abdullah Tahiri
b7945b6a15 Sketcher: Do not mark as fully constrained sketches that do not converge
=======================================================================

In uncommon situations, the analysis of QR decomposition leads to full rank, but the result does not converge.

We avoid marking a sketch as fully constrained when no convergence is achieved.
2023-01-09 17:11:14 +01:00
Abdullah Tahiri
8d33584eee Sketcher: Avoid trying to lock tangency for tangency at knot point constraint 2022-12-24 18:22:16 -06:00
Ajinkya Dahale
a609bce527 [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
Abdullah Tahiri
a01d336ac3 Sketcher: Split - remove unnecessary return after exception 2022-12-21 16:01:23 +01:00
Ajinkya Dahale
82633fb5df [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
7d8e31041c 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
863d53ab88 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