Commit Graph

2103 Commits

Author SHA1 Message Date
luz paz
430aadb791 Fix various typos and grammatical refinements 2021-12-09 08:57:52 -06:00
Abdullah Tahiri
f7deb780a5 Sketcher: Addition of layerId field to SketcherGeometryExtension, GeometryFacade and ExternalGeometryFacade, and their Python wrappers 2021-12-07 16:30:55 +01:00
Abdullah Tahiri
01d37cdaad Sketcher: move GUI common utility functions to a new file Utils.h
=================================================================

Common utility functions used by almost all Command classes were previous in Constraint.h.

Aside from providing a very bad intent, it created unnecessary header dependencies.

This commit separates these common functions into a new header, utils.h, which is then
used in all command classes where it is necessary.
2021-12-07 16:30:55 +01:00
Abdullah Tahiri
ffa6f0c50f Sketcher: CommandSketcherTools add missing include that was indirectly satisfied 2021-12-07 16:30:53 +01:00
Abdullah Tahiri
0e286af509 Sketcher: ConstraintType enum indicate underlying type
======================================================

This enables forward declaration
2021-12-07 16:30:53 +01:00
Abdullah Tahiri
0331b8a0ab Sketcher: SketchObject - method to getCompleteGeometry as GeometryFacade
========================================================================

As GeometryFacade is provided with more sketcher specific functionality, the demand
for to get GeometryFacades instead of Part::Geometry object increases too. This
addition reflects this increase of demand.
2021-12-07 16:30:53 +01:00
Abdullah Tahiri
9a6e12b73d Sketcher: Move GeoEnum struct to separate file
==============================================

Separate struct into own file to avoid having to include all the dependencies of SketchObject in other code that relies on GeoEnum.
2021-12-07 16:30:53 +01:00
Abdullah Tahiri
feba33a9b8 Sketcher: Create GeoList class
==============================

Class for managing internal and external geometry as a single object. This is a light-weight alternative to
passing the whole SketchObject.

It reflects the format used in getCompleteGeometry of SketchObject and Sketch solver facade class, while providing
several convenient conversion functions to map indices.

Internal and external geometries are present in a single geometry vector one after the other.

The index of the geomlist (all layers) and the GeoId can be converted from each other at needed
using the member fuctions (and sometimes the static member functions).

Internal implementation is as a template GeoListModel<T>.

The following types are instantiated. Specialisation is provided where necessary.

GeoList = GeoListModel<Part::Geometry *>;
GeoListFacade = GeoListModel<std::unique_ptr<const Sketcher::GeometryFacade>>;

This enables to use the lighter GeoList were sufficient, while enabling off-the-shelf replacement
when switching to a GeoListFacade is necessary.
2021-12-07 16:30:53 +01:00
Abdullah Tahiri
cc94820a06 Sketcher: GeometryFacade Improvements
===============================================

1. Correct GeometryFacade getGeometry for const objects.
2. Modifications to avoid exceptions on the constructors.
3. Add default move constructor and move assignment operator.
4. Delete default copy constructor and copy assigment operator.
2021-12-07 16:30:53 +01:00
Abdullah Tahiri
70757f8ae3 Sketcher: Constraint.h - add underlying type to PointPos enum
==============================================================

This enables forward declarations.
2021-12-07 16:30:53 +01:00
wmayer
a6838cf58f Gui: rename methods of SelectionObserver to clarify intention in client code 2021-12-07 14:17:07 +01:00
luz paz
d877ee4d47 Make source code comments use gender neutral pronouns
The changes also include some grammatical fixes as well.
2021-12-02 16:18:04 -05:00
0penBrain
f568cc6d96 [Sketcher][Bugfix] Slot: fix segfault accessing empty vector 2021-12-01 18:48:05 +01:00
0penBrain
1188f7d7a1 [Sketcher] Allow to autoconstraint slot horizontal/vertical 2021-11-29 14:38:53 +01:00
0penBrain
9b59233e53 [Sketcher] Introduce hack to be able to vertically/horizontally auto-constrain primitives
Adds a new type "VERTEX_FOR_PRIMITIVE" that will analyze the direction for vertical/horizontal but not for tangent

 If defined, makes use of GeoId item of AutoConstraint struct (instead of last geometry) to apply the horizontal/vertical
 constraint. This allow this constraint to be applied on an arbitrary geometry.
2021-11-29 14:38:53 +01:00
0penBrain
a00f2877f3 [Sketcher] Ability to snap slot horizontal/vertical
Triggered by pressing Ctrl key when creating the slot
 Extra constraint is added in case snapping is enabled
2021-11-29 14:38:53 +01:00
0penBrain
0d52ef4c13 [Sketcher] Floating point computation immunity for carbon copy parallel/aligned checks 2021-11-27 08:58:25 +01:00
0penBrain
784109b160 [Sketcher] Improve a bit XZ plane mapping by using quaternions directly 2021-11-27 08:58:25 +01:00
0penBrain
ef98e36d67 [Sketcher] Change diameter symbol used in presentation string, fixes #4779
Standard symbol \u2300 currently used generates text misalignment/cutout on some environments
 Replaced with \uD8 (capital O with stroke) that solves the issue -- and looks better
2021-11-24 14:29:20 +01:00
0penBrain
f5b880563e [Sketcher][Bugfix] Fix crash when applying 'Constrain internal alignment' on contraints, fixes #4790 2021-11-22 20:08:07 +01:00
Yorik van Havre
c4d4575eb3 Merged crowdin translations 2021-11-16 17:30:39 +01:00
Uwe
8d868c4df6 Update src/Mod/Sketcher/Gui/TaskSketcherValidation.ui
Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
2021-11-12 00:45:46 +01:00
luz paz
71504f2e1e Sketcher: fix typo in Gui/TaskSketcherValidation.ui 2021-11-12 00:45:46 +01:00
wmayer
799a1c3d56 Sketcher: fix some memory leaks 2021-11-06 17:48:35 +01:00
0penBrain
8751ced2d1 [Sketcher] Removed lines that was introduced to workaround grid visibility management issues 2021-11-05 03:18:08 +01:00
0penBrain
1c7ece5e14 [Sketcher] Add tooltips in Validate Sketch task UI 2021-11-04 18:40:26 +01:00
0penBrain
c18c330d38 [Sketcher] Refactor Validate Sketch task UI to decrease confusion 2021-11-04 18:40:26 +01:00
wmayer
b3bdf5967b Sketcher: [skip ci] handle coincident points when trying to create arc/circle 2021-10-28 17:03:11 +02:00
luz paz
56aeb07202 Sketcher: fix typos in Constraint Widget
- Follow-up to 5b745514e0f

- Sketcher: fix relevant typos

- Re-Add mistakenly deleted files

- fix build
2021-10-23 18:37:33 +02:00
wmayer
d0a75e0a84 Sketcher: fix segmentation fault when using sketch validation dialog after document has been closed
Therefore replace the raw pointer of SketchObject with the template class WeakPtrT. This class will be notified as soon as its handled object will be deleted.
2021-10-21 16:22:11 +02:00
luz paz
397729e33e Fix various typos
Found via `codespell -q 3 -L aci,ake,aline,alle,alledges,alocation,als,ang,anid,apoints,ba,beginn,behaviour,bloaded,bottome,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,inout,ist,kilometre,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oder,ontop,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-10-20 18:18:33 -04:00
Chris Hennes
0086896279 Merge pull request #5115 from Syres916/patch-33
[Sketcher] Angle Constraint Name displayed...
2021-10-20 08:39:46 -05:00
Chris Hennes
4031e85120 [Sketcher] Workaround for Elements theme issue
After merging the change to the Constraint status label in 1acb74072,
the TaskSketcherElements would sometimes be reduced in size to just a
line or two, if multiple task views were expanded and a stylesheet was
enabled. This commit introduces a minimum size to the TSE to prevent
that from occurring.
2021-10-20 08:06:05 -05:00
Syres916
cf31a3afdb [Sketcher] Minor bugfix to display angle...
...constraint names as per recommendation, see discussion https://forum.freecadweb.org/viewtopic.php?f=3&t=62953
2021-10-16 12:20:55 +01:00
Abdullah Tahiri
9f15372d86 Sketcher: Default Shortcuts
===========================

Following:
https://forum.freecadweb.org/viewtopic.php?p=539914#p539914

Following requests from OpenBrain and ChrisB:
https://forum.freecadweb.org/viewtopic.php?p=540015#p540015

Following request from M4X:

Recomendation to use "L" and "I" for vertical and horizontal distance constraints and "R" for radius.

https://forum.freecadweb.org/viewtopic.php?p=540049#p540049

https://forum.freecadweb.org/viewtopic.php?p=540011#p540011
2021-10-16 09:23:22 +02:00
Abdullah Tahiri
925e115c93 Sketcher: Code improvements for Constraint Widget
=================================================

This PR does not have added functionality. It contains only code improvements requiring at least c++17.

- It uses for the filters scoped enums (enum classes) instead of unscoped enums to avoid implicit conversion (c++11).
- It includes tools to deal with the necessary explicit conversions including type_t traits (c++14).
- It uses a couple of generic lambdas (c++17)
- It uses folding expressions to expand parameter packs (c++17)
- Refactoring of code
2021-10-13 15:28:30 +02:00
abdullahtahiriyo
08531bfec5 Merge branch 'master' into sketcherMoveColorsToPrefs 2021-10-13 10:01:30 +02:00
Abdullah Tahiri
8242c68509 Sketcher: Copy and Array tool Snap at 5 degrees using CTRL 2021-10-12 09:41:58 +02:00
Chris Hennes
3e8d84ce9b Merge branch 'master' into sketcherMoveColorsToPrefs 2021-10-11 12:31:08 -05:00
Abdullah Tahiri
156bd82f08 Sketcher: Constraint widget associated constraints filter
=========================================================

A new special filter, that filters the constraint list so as to show the constraints associated with the
currently selected geometries.
2021-10-11 16:40:48 +02:00
Abdullah Tahiri
f85a04a84f Sketcher: Redesign of Constraint settings
=========================================

=> The old controltab is substituted by: direct controls (buttons on the constraint widget) and a settings dialog that is independently fired via a button with a settings icon

This makes more space for the list of constraints and generates a lower amount of confussion regarding the old tab names and functions.

Direct control ensures that the most used operations are at hand, while other less changed settings are moved to the settings dialog.

=> Direct controls

One time visibility to match the list selection can be triggered from a new button "Visibility"

This button has drop selections for visibility selections, which are checkable items (currently only one option, but more are envisaged).
The one option currently is the "visibility tracking" functionality. This is a "shortcut" to the option in the settings panel to save unnecessary clicks
in typical operations.

=> Settings dialog

This dialog is live, in that changes to settings are immediatedly propagated to the list control and visibility.
2021-10-11 16:40:48 +02:00
Abdullah Tahiri
d428cd7938 Sketcher: Add preferences icon resource 2021-10-11 16:40:48 +02:00
luz paz
c83dea164b Added requested revisions 2021-10-10 14:57:39 -04:00
luz paz
a03e92da03 Fix various typos
Found via `codespell -q 3 -L aci,ake,aline,alle,alledges,alocation,als,ang,anid,apoints,ba,beginn,behaviour,bloaded,bottome,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,inout,ist,kilometre,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oder,ontop,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-10-10 14:55:48 -04:00
wmayer
94516cb0a6 Sketcher: [skip ci] fix -Wunused-lambda-capture 2021-10-06 19:46:57 +02:00
Abdullah Tahiri
ca65026246 Sketcher: New constraint special filter, filter selection
=========================================================

It filters the constraint list to the selected constraints.

It observes selection changes and reacts to new selections.

Forum:
https://forum.freecadweb.org/viewtopic.php?p=537028#p537028
2021-10-06 13:44:06 +02:00
Abdullah Tahiri
eff309b591 Sketcher: use addSelections for group selecions in TaskSketcherElements 2021-10-06 13:44:06 +02:00
Abdullah Tahiri
e953c8e0e6 Sketcher: user addSelections for group selection in SketcherTools 2021-10-06 13:44:06 +02:00
Chris Hennes
ec6d4623d1 [Sketcher] Make status message styleable
Reduce the size and verbosity of the solver and constraint status
messages, and make them styleable both via stylesheets and user
preferences.
2021-10-05 23:24:09 -05:00
Abdullah Tahiri
a4192448a9 Sketcher: redefine filters and groups of filters
================================================

Filters redefined to match:
https://forum.freecadweb.org/viewtopic.php?p=537777#p537777

Group "Datum" stops comprising group "Reference"

Datums+References are now selectable as a multi-filter.

Fixes the akward behaviour of multiselection:
https://forum.freecadweb.org/viewtopic.php?p=537722#p537722

Now when a selection of a filter causes a group of filters comprising the selection to be fulfiled, this is also checked.
2021-10-04 16:30:40 +02:00