Commit Graph

911 Commits

Author SHA1 Message Date
Zheng, Lei
8bec44934b Fix mixed line endings 2022-04-26 12:52:55 -05:00
Chris Hennes
589369a2cc Sketcher: PR6497 move return statement to new line 2022-03-29 13:25:06 -05:00
wmayer
72cf783493 Sketcher: include header with export macros 2022-03-24 21:09:14 +01:00
wmayer
d21a60b294 All: modernize C++11
* replace deprecated headers
2022-03-23 22:44:18 +01:00
wmayer
51186c018e Sketcher: modernize C++11
* use nullptr
2022-03-23 19:26:15 +01:00
Uwe
38d7b77237 [Sketch] remove Python.h and Xerces
seems not to be necessary anymore
2022-03-21 02:51:57 +01:00
wmayer
585bcb8708 lgtm: [skip ci] FIXME comment
Change FIXME or remove it
2022-03-20 16:51:23 +01:00
wmayer
0f9768fb33 Fix coverity issue:
* CID 332682: Resource leak
* CID 350607: Resource leak
* CID 332677: Resource leak
2022-03-14 11:35:04 +01:00
Abdullah Tahiri
bba7c89c2a Sketcher: Coverity 332695 - unlikely array indexing with negative value 2022-03-12 21:14:19 +01:00
Abdullah Tahiri
bcfa246943 Sketcher: Coverity 332679 - logically dead code removed 2022-03-12 21:14:19 +01:00
wmayer
1cbecdf122 App: use forward declaration to reduce compile time 2022-03-04 17:27:53 +01:00
Abdullah Tahiri
8de93cfaf7 Sketcher: GeoElementId VAxis fix - windows 2022-03-02 15:00:40 +01:00
Abdullah Tahiri
5d0e40a2ca Sketcher: Fix GeoElementId VAxis 2022-03-02 07:54:24 +01:00
Abdullah Tahiri
261efeb5e8 Sketcher: GeoElementId - isCurve and PosIdAsInt members 2022-03-02 07:53:07 +01:00
mosfet80
0b3bb1d365 Update SketchObject.cpp
Initialize variable
2022-03-01 17:42:23 +01:00
0penBrain
430166b7fc Sketch: Fix algorithm seeking for missing coincidences in Validate 2022-02-28 14:52:55 +01:00
wmayer
39261d2c6b Sketcher: for Linux systems put definition of GeoElementId members back to header file to fix possible linker errors 2022-02-15 22:01:51 +01:00
Ajinkya Dahale
3d452d9396 [Sketcher] Add comment suggesting future segfault fixes
Apparently B-Spline knot insertion is challenging the sketcher update process
and spurious GUI updates sometimes occur in the intermediate step after the
knot is inserted but before the internal geometries are re-defined. This set of
comments points to a previous fix and related discussion as a suggestion.
2022-02-15 13:44:02 +01:00
wmayer
7acad0a043 Sketcher: fix linking errors with Conda builds 2022-02-14 12:41:07 +01:00
Abdullah Tahiri
d885bb7ef7 Sketcher: Remove unnecesary geometry touch 2022-01-09 11:40:49 +01:00
Ajinkya Dahale
07cad4ab64 [Sketcher] Add insertBSplineKnot to SketcherObject
[Sketcher] Workaround for segfault on knot insertion
2022-01-09 11:33:53 +01:00
wmayer
dfa202c234 Sketcher: fix build failures with MinGW 2021-12-30 15:12:56 +01:00
wmayer
e01ab89317 Sketcher: fix build failures with MSVC 2021-12-30 14:54:37 +01:00
Abdullah Tahiri
22c31aeac6 Sketcher: Adapt Typed Facade to new behaviour of automatic taking ownership of emplaced pointer 2021-12-27 21:03:51 +01:00
Abdullah Tahiri
69c31dce82 Sketcher: GeoList improvements
==============================

- Constructor from const vector reference is not allowed to take ownership (as it should not delete the const pointer). The ownership parameter is removed.

- Factory method for const objects cannot either. So the ownership parameter is also removed.
2021-12-27 21:03:51 +01:00
Abdullah Tahiri
bbf9c34c2f Sketcher: GeometryFacade improvements
=====================================

- GeometryFacade will throw when instantiated with a const Part::Geometry * that does not have a SketchGeometryExtension. It
cannot create it because it is not supposed to modify a pointer to a const object.

- Static functions will check the passed Part::Geometry * parameters and will throw if nullptr.

- GeometryTypedFacade constructor and factory methods to take owner parameter (defaulted to false) for consistency with GeometryFacade.

- The emplace style factory method will make the GeometryFacade take ownership of the emplaced Part::Geometry *. This should avoid memory leaks. The
user shall setOwner(false) if it needs to release() the underlying Part::Geometry * (to transfer ownership).

- Code comments made into doxygen documentation.
2021-12-27 21:03:51 +01:00
Abdullah Tahiri
84898bd9a8 Part: Geometry and Sketcher: GeometryFacade and ExternalGeometryFacade
======================================================================

Change pass-by-value to const reference.

Thanks Kunda!

https://lgtm.com/projects/g/FreeCAD/FreeCAD/alerts/?mode=tree&ruleFocus=2163210742
https://forum.freecadweb.org/viewtopic.php?p=555658#p555658
2021-12-27 21:03:51 +01:00
Abdullah Tahiri
053cc36541 EditCoinManager: Additional refactoring 2021-12-27 21:03:51 +01:00
Abdullah Tahiri
e91dcf39c1 Sketcher: Sketch - extraction of geometry as GeoList with owned memory allocation
=================================================================================

Apart from simplifying code, the allocated memory is not managed by the lifetime of the unique pointer owned by the GeometryFacade, preventing memory leaks.
2021-12-27 21:03:51 +01:00
Abdullah Tahiri
bc6e4c1355 Sketcher: GeometryFacade - Add ownership parameter to factory method 2021-12-27 21:03:51 +01:00
Abdullah Tahiri
501ebfe921 Sketcher: GeoList - Fix bug in index conversion 2021-12-27 21:03:51 +01:00
Abdullah Tahiri
2f77d3bc95 Sketcher: GeoEnum and GeoListId constant reference outside the translation unit
================================================================================

GeoEnum static members are used in constexpr in GeoListId.

Previous code worked because the static members where inside the same translation unit.

This code:
1. Declares the static members to use them as constant expressions with the value
2. Definition of the static members (odr-used) shall not contain an initializer.
2021-12-27 21:03:51 +01:00
Ajinkya Dahale
f801acfe8c [Sketcher] Constrain new B-spline pole weight only if equal to first
When new control points are created in a b-spline in a sketch, do not constrain
their weights to be equal to the first, unless they are already equal. This way
if we have unequal weights to begin with and OCC has computed the appropriate
weights so that the new spline is closer to the original, the weights are not
disturbed.
2021-12-25 08:42:18 +01:00
0penBrain
5f4de4e209 [Sketcher] Ensure reference angle constraint is always positive, fixes #4621 2021-12-25 08:21:34 +01:00
luz paz
b918517d22 Sketcher: Fix various typos 2021-12-16 03:31:23 +01:00
Abdullah Tahiri
5170ac4195 Sketcher: GeoList remove _PreComp 2021-12-11 21:48:21 +01:00
Abdullah Tahiri
24cd3cb7b7 Sketcher: GeoList Improvements
==============================

- Improve GeoList to support GeoElementId input
- Support VertexId to GeoElementId conversion
- GeoListModel gets separate getGeometry and getGeometryFacade naked pointers
- Sketcher: GeoList - make index mappings mutable
- Improve documentation
2021-12-11 17:02:00 +01:00
Abdullah Tahiri
535054e244 Sketcher: Improve documentation of GeoEnum, PointPos and GeoElementId 2021-12-11 17:01:39 +01:00
Abdullah Tahiri
44567167ff Sketcher: Convert PointPos into an enum CLASS 2021-12-11 16:17:21 +01:00
Abdullah Tahiri
182596ba08 Sketcher: GeoId, GeoElementId and GeoUndef refactor
===================================================

This commit is an independent refactor of the identifications used at Sketcher level.

It introduces a new type "GeoElementId" as a combination of GeoId and PointPos.

It moves the Undefined GeoId, previous Constraint::GeoUndef to GeoEnum, together with all
other fixed values of GeoIds.
2021-12-11 16:17:21 +01:00
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
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
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
0d52ef4c13 [Sketcher] Floating point computation immunity for carbon copy parallel/aligned checks 2021-11-27 08:58:25 +01:00