Commit Graph

1948 Commits

Author SHA1 Message Date
Abdullah Tahiri
a855033f21 Sketcher: Adapt fillet to moving addConstraint 2021-04-07 08:05:04 +02:00
Chris Hennes
6227a711c3 [Sketcher] Remove deprecated Qt < 5.9 code 2021-04-01 19:38:23 +02:00
Abdullah Tahiri
ebfaa6ac95 Sketcher: No vertex color update (selection/preselection) after box selection
=============================================================================

The issue:
https://forum.freecadweb.org/viewtopic.php?f=10&t=56550#p486554

The fix:
Setting the render type to Image causes the issue, but neither do I know why it is
necessary to set it to Image, nor do I understand why this is causing the issue. I
only know it solves the issue.
2021-03-29 16:23:18 +02:00
Abdullah Tahiri
5c4f9df447 Sketcher: add subnodes to the right separator 2021-03-29 16:23:18 +02:00
donovaly
26750530f0 [Sketch] fix a typo in preferences dialog
- all other option text use consequently lowercase letters
- also set dialog to a more sensible sensible size
- the other changes were automagically done by QT Creator
2021-03-28 11:32:22 +02:00
luz paz
15c16610c8 fix source comment 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,centimetre,childs,colour,colours,commen,connexion,currenty,dof,doubleclick,dum,eiter,elemente,ende,feld,finde,findf,freez,hist,iff,indicies,initialisation,initialise,initialised,initialises,initialisiert,ist,kilometre,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oder,orgin,orginx,orginy,ot,pard,parms,pres,programm,que,recurrance,rougly,seperator,serie,sinc,strack,substraction,te,thist,thru,tread,uint,unter,vertexes,wallthickness,whitespaces -S ./.git,*.po,*.ts,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml,./build/doc/SourceDocu
```
2021-03-28 10:57:24 +02:00
Syres916
a25061870c [Sketcher] Settings checkBox for..
...setting Diameter as default constraint for Arcs and Circles
See discussion : https://forum.freecadweb.org/viewtopic.php?f=3&t=57054
2021-03-27 06:13:09 +01:00
Syres916
7a8792f64b [Sketcher] Constraints Allow User to...
...set Diameter as default constraint for Arcs and Circles
See discussion : https://forum.freecadweb.org/viewtopic.php?f=3&t=57054
2021-03-27 06:13:09 +01:00
bitacovir
a026c9d3d4 [UI] Replace SVG icons for Sketcher commands 2021-03-25 18:00:55 +01:00
Abdullah Tahiri
28e40ffbee Sketcher:: Trim creator UI
==========================

* Enable to select any GeomTrimmedCurve (any arc supported by the Sketcher), as well as B-Splines.
* Use Edit Markers to provide visualisation of the cutting position and cut segment end point before trimming.
* Reject trimming Internal aligned geometry (internals of complex geometries such as ellipses or hyperbolas)
2021-03-21 06:56:23 +01:00
Abdullah Tahiri
2d817128d0 Sketcher: SketchObject - Trim refactor
======================================

* Refactor the code for all GeomTrimmedCurve and non-periodic BSplines in a single block, adding
support for arcs of hyperbola, parabola and B-Splines.

* Refactor the code for periodic curves (circle, ellipse) in a single block, adding support for
periodic B-Splines.

* Add support for trimming limited by external geometry

* Trim deletes a geometry if intersections are detected and nothing would be left after trimming

* Trim deletes a geometry if no intersection are detected

Bonus:
* Function addConstraint moving the constraint instead of cloning it again
* SketchObject::seekTrimPoints as a wrapper of Part2DObject::seekTrimPoints providing
a correct handling of GeoId indices.
* Helper functions addConstraint/createconstraint to create new constraints and move them
into the Constraint property
* New getGeometry with templated return type defaulting to Part::Geometry.
2021-03-21 06:56:23 +01:00
Abdullah Tahiri
8be50486af Sketcher: reset Marker Edit layer when exiting DrawSketchHandler 2021-03-21 06:56:23 +01:00
Abdullah Tahiri
010a2cbd41 Sketcher: ViewProvider - add marker information layer
=====================================================

New Coin Marker layer intended to temporarely highlight sections of the 3D View for information purposes.
Independent from the actual redrawing of the geometry and constraints.
2021-03-21 06:56:23 +01:00
Abdullah Tahiri
3a656d8597 Sketcher: UI Constraint Creation - PointOnObject + Tangency on edge constraint substitution
============================================================================================

On creation of a constraint from the UI (toolbar/menu):

1. if a PointOnObject constraint preexisted the addition of an
edge-to-edge tangency, substitute it with a point-to-edge tangency.

2. if an edge-to-edge tangency preexisted, addition of a PointOnObject
results in a substitution of the edge-to-edge tangency with an edge-to-curve
tangency.

Bonus:
- Refactor of this with preexisting coincident+tangent substitution.
- Activate both substitutions in continuous constraint addition mode.
2021-03-20 18:12:54 +01:00
Abdullah Tahiri
c08a19626f Sketcher: Use old NotifyConstraintSubstitution parameter in DlgCheackableMessageBox 2021-03-20 15:59:15 +01:00
David Osterberg
d759a8e43d Sketcher: Change constraint-conversion MessageBox to DlgCheckableMessageBox 2021-03-20 15:59:15 +01:00
grggnzlz
89b8e81d5c Sketcher: Constraint svg caching
================================

Calls to:
Gui::BitmapFactory().pixmapFromSvg(type.toLatin1().data(),QSizeF(edit->constraintIconSize,edit->constraintIconSize));

are expensive and the scaled pixmap is heavily reused.

Solution is to cache the icon.
2021-03-13 06:43:10 +01:00
Abdullah Tahiri
a8cb3d5dfb Sketcher: allow icon/color update in STATUS_SKETCH_UseHandler mode
==================================================================

Updating color and constraint icons does not seem necessary in other modes:
https://forum.freecadweb.org/viewtopic.php?f=3&t=56064&start=10#p486578
2021-03-13 06:43:10 +01:00
grggnzlz
011e19060a Sketcher: fix performance issue with drawing svg icons 2021-03-13 06:43:10 +01:00
guskog
94b1fbb58b Gui: Sketcher Color Preferences UI rearrangement. 2021-03-08 15:11:42 +01:00
Gustav Skog
0e9b8ef4d4 Reworked Prefereces Sketcher Colors User interface, adding groupings. 2021-03-08 15:06:51 +01:00
Benjamin Nauck
f6c9cc90ee [Base] Remove includes to StdStlTools.h as that's not needed anymore
std::make_unique was introduced in c++14, so no need to use the back
ported version
2021-03-06 21:20:32 +01:00
Benjamin Nauck
505ba29c6b [Sketcher] Use std::shared_ptr instead of boost::shared_ptr
There's no need to use boost version when stl has support for shared_ptr
2021-03-06 19:32:03 +01:00
00001000bit
39d82a8d5d Update icon for Sketcher Constraint Block
The existing icon for the sketcher constraint for "constraint block" is easily confused with the icon for the diameter constraint. A small modification to add a 2nd cross bar will visually distinguish it.
2021-03-04 10:23:10 +01:00
David Osterberg
43bc30da84 Beautify xml step 1: These changes do not affect the uic output 2021-03-02 16:29:11 +01:00
wmayer
223d7971ae Sketcher: fixes #0004303: Three choices in a Sketcher menu each with the same Ctrl+Shift+E 'address' 2021-02-28 13:14:48 +01:00
Yorik van Havre
958009c2ca Merged crowdin translations 2021-02-25 13:27:48 +01:00
Yorik van Havre
5ba28fa7ff Merged crowdin translations 2021-02-24 18:07:59 +01:00
Abdullah Tahiri
7659bb0dae Sketcher: Work-around for expression engine failure to calculate dependencies
=============================================================================

THIS IS A WORK-AROUND NOT TO DELAY 0.19 RELEASE

depsAreTouched is not returning true in this case:
 https://forum.freecadweb.org/viewtopic.php?f=3&t=55633&p=481061#p478477

It appears related to a drastic change in how dependencies are calculated, see:
 https://forum.freecadweb.org/viewtopic.php?f=3&t=55633&p=481061#p481061

This is NOT the solution, as there is no point in systematically executing the ExpressionEngine
on every dimensional constraint change. Just a quick fix to avoid clearly unwanted behaviour in
absence of time to actually fix the root cause.
2021-02-23 07:40:56 +01:00
wmayer
8c26baebab Sketcher: [skip ci] Fix coverity warning
Coverity warnings fixed:

CID 129530 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)
2. uninit_member: Non-static class member pixelScalingFactor is not initialized in this constructor nor in any functions that it calls.
2021-02-21 16:59:57 +01:00
wmayer
385efeeb58 Sketcher: [skip ci] fix bad static_cast 2021-02-20 22:46:51 +01:00
Abdullah Tahiri
f93b376cd5 Sketcher: Improved ViewProvider visualisation for non-rational Bsplines with non-unitary weight constraints
===========================================================================================================

OCCT forces weights of non-rationa Bsplines to be 1.0

In the presence of non-unitary weight constraints, the weight representation (constraint) has a different radius
than the circle.

This commit fixes this behaviour, by forcing the circle to match the weight constraint.

The information layer still reports OCCT weights being 1.0, but the visual artifact is fixed.
2021-02-18 17:28:38 +01:00
Abdullah Tahiri
95fcaccfd8 Sketcher: Fix external geometry ellipse projection in parallel plane
====================================================================

When the ellipse to be projected and the sketch plane are parallel, the original code
by shermelin provided for a translation of the original ellipse, which would be the best solution
if it weren't because the Sketcher, internally, works under the assumption of a normal vector to the
sketcher plane being (0,0,1). If the original ellipse is parallel to the sketch plane, but the sketch
plane is not the XY plane, the copy and translation would result in a ellipse not in the XY plane of the
Sketcher. Then the sketcher internals will not properly consider its dimensions.

The solution applied here is to default to the general method for non-parallel planes.

It solves:
https://forum.freecadweb.org/viewtopic.php?f=3&t=55284#p477522
2021-02-13 15:18:34 +01:00
Abdullah Tahiri
5086c5f38d Sketcher: Coverity fix in Sketch::analyseBlockedGeometry
========================================================

Users chennes and hyarion made me aware of this covereity issue:

Fixes Coverity: geoit can be end() when dereferenced
https://github.com/FreeCAD/FreeCAD/pull/4429/files#

When analysing the block where the dereferrencing appears, it
appears that it is a left-over that no longer makes sense:
- The algorithm classifies block constraints into those that are
not affected by any other driving constraint and those that are
affected by other driving constraints.
- The offending block deals with internal aligned geometry, thus
per definition has a driving internal alignment constraint, for which
the previous block already set the need of post-analysis.
- No matter what, the geometries, the complex one and the internal one
will have at least the driving internal alignment constraint, so they
cannot become "not affected by any other driving constraint".
- If the geometry had a block constraint on it, it was already added for
post-analysis in the previous block. If it did not have one block constraint,
the fact that it is internal aligned geometry is an irrelevant consideration.

Probably there was a point during development when this made sense, but with
the current post-analysis, it does not appear to make sense anymore. So the
block was removed.

This commit adds a unit test for blocked geometry (new block constraint).
2021-02-13 11:44:06 +01:00
Yorik van Havre
84b8282f48 Updated ts files 2021-02-12 14:47:37 +01:00
Benjamin Nauck
10b08671ef Sketcher: Fix uninitialized scalar field in ctor
Fixes Coverity issue:
CID 316539 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)
uninit_member: Non-static class member lastHasPartialRedundancies is not initialized in this constructor nor in any functions that it calls.
2021-02-11 11:48:19 +01:00
Abdullah Tahiri
0641e243e0 Sketcher: Bug fix / improve B-Spline knot support
=================================================

Knot position is not calculated by the solver, but by OCCT when updating the
b-spline to conform to given pole positions, as mandated by the solver. Before
this commit, all constraints driving and non-driving operating on the knots required
and extra solve (from advanced solver dialog, or from the Python console), or a recompute
to be recomputed.

This commit introduces transparently re-solving at Sketch.cpp level if B-Splines are present,
so that when the Sketcher mandated solve returns, the geometry is fully solved.
2021-02-10 18:53:52 +01:00
Abdullah Tahiri
c59b9bd013 Sketcher: fix malformed constraint on nurbs conversion
======================================================

Coincident on midpoint cannot be supported by a bspline.

Fixes:
https://forum.freecadweb.org/viewtopic.php?p=476410#p476410
2021-02-10 06:41:16 +01:00
Abdullah Tahiri
1e2f8e366f Sketcher: Fix geometry state synchronisation routine 2021-02-09 20:22:30 +01:00
luz paz
b76fe29412 Sketcher: Add 'Sketcher B-spline tools' to translation [skip ci]
Forum thread: https://forum.freecadweb.org/viewtopic.php?f=34&t=55381  
and several whitespace fixes
2021-02-09 20:18:16 +01:00
Yorik van Havre
bcb5c8786f merged crowdin translations 2021-02-09 16:12:18 +01:00
Abdullah Tahiri
36fdbc460a Sketcher: Geometry state synchronisation
========================================

The geometry state stored in the geometryFacade is modified following a mutable model
(without setting the Geometry property on Constraint change), in order to avoid coupling
the addition/removal of a constraint with a change of the Geometry Property.

This design decision however interferes with the ability of the Geometry property to restore
the correct geometry state upon redo/undo.

While such a situation is rare in the case of Internal Alignment geometry, because constraint
addition/removal is performed with the corresponding geometry addition/removal (within the same
transaction. That is not the case with the Block constraint (or another future general case where
the geometry state may be applied).

This commit leverages the synchronisation mechanism already in use for non-properties (e.g. external geometry or
vertex indices) to check and synchronise geometry state upon undo/redo and restore.

Bonus:
- addGeometryState is refactored to separate the checking logic from the setting logic.
2021-02-09 08:14:36 +01:00
Yorik van Havre
298004a39c Updated master TS files 2021-02-08 16:35:41 +01:00
Abdullah Tahiri
727dc9fa9e Sketcher: Fix wrong diameter reference constraint value when blocked
====================================================================

Fixes:
https://forum.freecadweb.org/viewtopic.php?p=474276#p474276
2021-02-06 06:22:30 +01:00
donovaly
65656f6d22 [Sketcher] make more pointers to the UI std::unique_ptr
addendum to PR #4362

(Same as PR #4293, just for Sketcher

as noted in https://github.com/FreeCAD/FreeCAD/pull/4271#discussion_r554673632
the pointer to the UI should be a unique pointer.

This PR does this for all Sketcher dialogs that don't already use a unique_ptr.)
2021-02-05 17:14:24 +01:00
wmayer
656c4919bc Qt4: [skip ci] fix build failure 2021-02-04 15:31:06 +01:00
Greg V
ce7b57a08f Sketcher: [skip ci] fix computing of hotspot of sketcher icons on Wayland
Restrict the hotspot multiplication on unix platforms to X11 (xcb platform)
2021-02-04 10:45:33 +01:00
donovaly
28c66fc501 [Sketcher] make pointers to the UI std::unique_ptr
Same as PR #4293, just for Sketcher

as noted in https://github.com/FreeCAD/FreeCAD/pull/4271#discussion_r554673632
the pointer to the UI should be a unique pointer.

This PR does this for all Sketcher dialogs that don't already use a unique_ptr.
2021-02-04 10:37:44 +01:00
j
6db7737547 Sketcher: Group tests in different directories 2021-02-04 08:10:28 +01:00
j
7b9d9fdcdb Sketcher: new fillet UI command 2021-02-04 08:10:28 +01:00