Commit Graph

23804 Commits

Author SHA1 Message Date
Abdullah Tahiri
ffe2ecaa4a Sketcher: Sketch solver interface using geometry state extension for BSpline knot checks
========================================================================================

Until this commit, B-Spline knots were stored, and checked at solver level as sketch points GeomPoints having the
construction status set to true.

This behaviour is removed to eventually enable normal non-construction points to define the shape out of edit mode.

This commit leverages the new mechanism for the solver interface.
2020-12-10 18:34:06 +01:00
Abdullah Tahiri
02737a3b5b Sketcher: After restore migration mechanism
===========================================================

The introduction of the ability of the geometry extensions to store information leads opens new
possibilities to the sketcher, which may require migration of previous versions of the sketcher.

A striking example is the migration of the GeomPoint+Construction to mark a B-Spline knot to a proper
geometry state based on the sketch geometr extension.

It also enables to make aware the geometry of the Blocked status, by restoring the geometr blocked
status.

This commit defines an scheleton for this mechanism.
2020-12-10 18:34:06 +01:00
Abdullah Tahiri
eb929ad217 Sketcher: Extend GeometryFacade and ExternaGeometryFacade to GeometryMode 2020-12-10 18:34:06 +01:00
Abdullah Tahiri
092a1ee39d Sketcher: SketchGeometryExtensionPy - add testGeometryMode/setGeometryMode interface 2020-12-10 18:34:06 +01:00
Abdullah Tahiri
cd77e7ad2c Sketcher: SketchGeometryExtensionPy getBlocked Python interface 2020-12-10 18:34:06 +01:00
Abdullah Tahiri
9abbbd2b55 Sketcher: SketchGeometryExtension refactor GeometryMode type from string
========================================================================

getGeometryModeFromName
2020-12-10 18:34:06 +01:00
Abdullah Tahiri
e230e60d5f Sketcher: SketchGeometryExtension - New GeometryMode flags
==========================================================

Geometry mode flags are intended to store geometry state, such as Blocked status.
2020-12-10 18:34:06 +01:00
Abdullah Tahiri
91ac9d2951 Sketcher: SketchGeometryExtension refactor InternalGeometry string conversion
=============================================================================

Minor refactoring to centralise string to enum conversion in a single place
2020-12-10 18:34:06 +01:00
Abdullah Tahiri
72fa70add8 Sketcher: Adapt GeometryFacade and ExternalGeometryFacade to new SketchGeometryExtension 2020-12-10 18:34:06 +01:00
Abdullah Tahiri
858d29f163 Sketcher: Geometry Extension for Internal Alignment Geometry
============================================================

This commit extends SketchGeometryExtension to store within a Geometry if it is an internal aligment geometry
and which type.
2020-12-10 18:34:06 +01:00
Abdullah Tahiri
2b35a7eec4 Sketcher: GeometryFacade and ExternalGeometryFacade nullptr creation
====================================================================

If the Part::Geometry * is nullptr, then it is convenient to have a
std::unique<GeometryFacade> that contains a nullptr too, because many
functions check for a Part::Geometry being a nullptr.
2020-12-10 18:34:06 +01:00
Abdullah Tahiri
858abd99ca Sketcher: GeometryTypedFacade and GeometryFacade convenience functions
======================================================================

GeometryFacade is added the ability to get the construction status via static function, for
convenience in situations where only the construction status is necessary and a geometry facade
would not be otherwise necessary.

A new type GeometryTypedFacade is added, for situations in which the specific Part::Geometry derived
type is known (or is to be created). This Typed version enables to directly access the Geometry derived
class without the need for casting, as well as the SketchGeometryExtension information.

For example, this is possible:

auto HLineF = GeometryTypedFacade<Part::GeomLineSegment>::getTypedFacade(HLine);
HLine->getTypedGeometry()->setPoints(Base::Vector3d(0,0,0),Base::Vector3d(1,0,0));

If a facade is requested without passing an Part::Geometry derived object, the constructor
of the indicated geometry type is called with any parameter passed as argument (emplace style):

auto HLine = GeometryTypedFacade<Part::GeomLineSegment>::getTypedFacade();
HLine->getTypedGeometry()->setPoints(Base::Vector3d(0,0,0),Base::Vector3d(1,0,0));
HLine->setConstruction(true);
ExternalGeo.push_back(HLine->getGeometry());

Using either GeometryFacade or GeometryTypedFacade is probably a matter of style and of the specific situation.
2020-12-10 18:34:06 +01:00
Abdullah Tahiri
6b05767a0c Sketcher: ExternalGeometryExtension - refactor flag string to type in static function 2020-12-10 18:34:06 +01:00
Abdullah Tahiri
ec5976ec28 Part: GeometryMigrationExtension classes
========================================

This is a light-weight c++ only geometry extension to enable migration of information that was stored within
the Part WB and should be migrated to another WB (for example Sketcher WB)

It is designed so that a single extension can migrate different types of data (current and future).

When new data needs to be migrated, first a new enum bit is to be added to the class enum and new data members are to
be added to store the information within GeometryMigrationExtension class.

In the Restore() function restoring the data to be migrated, a GeometryMigrationExtension extension is added to the
geometry to be migrated with the data information and the corresponding enum bit set.

In the object to receive the migration data, onDocumentRestored() it is checked whether an extension of type
GeometryMigrationExtension is present, if yes, it is checked whether a bit used for migration is set and, if yes,
the data is retrieved and the GeometryMigrationExtension extension (preferably) removed from the Geometry object.
2020-12-10 18:34:06 +01:00
Abdullah Tahiri
6a02496860 Part: Geometry - Add non-const getters for extensions 2020-12-10 18:34:06 +01:00
Abdullah Tahiri
90dea635ac Part: Geometry refactor member copy
===================================

Encapsulate Part::Geometry data member copy process in a single function (copyNonTag).

Part::Geometry derived classes need not know the specifics of the data member of Part::Geometry.

Change the delegation of the copy of extensions from clone() to copyNonTag. Because clone() relies on
copy() and now copy() of Part::Geometry data member relies on copyNonTag(), there is no actual change
to the clone() functionality, but the copy() funcionality gains the copy of the extensions via copyNonTag().
2020-12-10 18:34:06 +01:00
luz paz
6ffe65c915 AddonManager: Sort .qrc file
[skip ci]
2020-12-10 11:57:25 +01:00
luz paz
7c43b059df Part: fix header uniformity + trailing whitespace
[skip ci]
2020-12-10 11:56:55 +01:00
Ryan White
6bb0ab9e55 Merge branch 'master' into master 2020-12-10 00:54:32 -08:00
Ryan White
91a2b0495f Update README.md
Updated per comments on first PR
2020-12-10 00:52:46 -08:00
marioalexis
c9d1d0c462 Draft: Improve makeWires in upgrade function 2020-12-09 15:21:33 -03:00
wmayer
ed063646ed PD: [skip ci] fix invalid strings 2020-12-09 16:59:34 +01:00
wmayer
a99a601948 Gui: [skip ci] Fix Qt warning 'Unable to set geometry ...' 2020-12-09 16:22:14 +01:00
wmayer
56b4837a83 Main: [skip ci] handle C++ exception in main() function 2020-12-09 15:38:06 +01:00
Chris Hennes
9427518983 Merge branch 'master' into fixAirfoilImportNumberRegex 2020-12-09 08:35:24 -06:00
Chris Hennes
4f96e3c568 Add support for integer values. 2020-12-09 08:32:43 -06:00
wmayer
8ca1d2b3d4 Fix compiler warnings about redefinition of GL_GLEXT_LEGACY 2020-12-09 14:45:52 +01:00
Yorik van Havre
84f56393d3 Draft: Better layout of the Draft SetStyle task panel 2020-12-09 14:42:50 +01:00
Yorik van Havre
d03262cc41 Arch: Fixed typo (Awming->Awning) 2020-12-09 11:54:35 +01:00
Andreas Brinner
a6e29e32ae Check return value of getMDIViewPage() a second time
When exporting a hidden TechDraw::Page with exportPageAs[Pdf|SVG] a
Segmentation Fault occured.

The return value of getMDIViewPage() was only checked for the first call, but
not for the second call. showMDIViewPage() silently returns, when the
TechDraw::Page is hidden and does not load the page.
2020-12-09 11:21:59 +01:00
wmayer
065f3fafa9 [skip ci] avoid to let Coin redefine several HAVE_ macros 2020-12-08 19:06:09 +01:00
wmayer
daea30341e App: [skip ci] by default disable transactions on recompute 2020-12-08 13:17:16 +01:00
Aapo
3d85114f09 [TD] Add a comment about QGIViewBalloon.cpp draw() function needing refactoring. 2020-12-07 23:48:28 +02:00
Aapo
c39ede3b5f [TD] Add Balloon property LineVisible for making the Balloon line visible or hidden. 2020-12-07 23:40:12 +02:00
Aapo
438169b335 [TD] Add Balloon property EndTypeScale for scaling line end decorations (arrows etc). 2020-12-07 23:40:12 +02:00
travisapple
65595c1b26 Update importWebGL.py 2020-12-07 12:57:53 -08:00
Ryan White
eb4e641e7f Update README.md
Added details on reporting issues to the README.md file
2020-12-07 11:38:23 -08:00
Chris Hennes
5e692d1914 Merge branch 'master' into fixAirfoilImportNumberRegex 2020-12-07 13:27:03 -06:00
Chris Hennes
ccc4e5cd21 [Draft] Fix airfoil data detection regex
The regular expression that Draft's airfoil data importer uses did not allow for lowercase "e" when using scientific notation. This corrects that, and silences Python Developer Mode warnings about deprecated escape sequences by converting most of the regex to use raw strings.
2020-12-07 13:13:34 -06:00
JAndersM
8620d77bc0 Update task_scale.py
The changes solves the Ticket #3691 - Bug in draft scale. Only integers work
2020-12-07 19:51:29 +01:00
wmayer
78c6cc1362 Import: [skip ci] fixes #0004477: Can't import .STEP files with cyrillic symbols 2020-12-07 17:54:17 +01:00
Yorik van Havre
b082c813f8 Merge pull request #4068 from aapo-aapo/TD-Spreadsheet-fix
[TD] TechDraw DrawViewSpreadsheet fix
2020-12-07 14:15:01 +01:00
Yorik van Havre
959c214513 Merge pull request #4113 from bitacovir/Std_File_Menu_Icons
Add SVG icons for ten Std File Menu Commands
2020-12-07 13:29:00 +01:00
bitacovir
1d3113ebda Add SVG icons for ten Std File Menu Commands
This commit adds SVG files with icons for these commands. Also, it makes the necessary changes on CommandDoc.cpp, CommandWindow.cpp, CommandStd.cpp and resource.qrc files.
2020-12-06 18:25:20 -03:00
sliptonic
983e513704 Merge pull request #4089 from mlampert/feature/thread-milling
Path: Feature/thread milling
2020-12-05 13:16:53 -06:00
donovaly
38734f4f86 [TD] treat dimensions the same way, no matter if with unit or not
fixes the issue reported here: https://forum.freecadweb.org/viewtopic.php?f=35&t=52545&start=40#p454483
2020-12-05 03:58:39 +01:00
Aapo
72d003f102 [TD] Make DrawViewSpreadSheet respect DrawPage::redrawCommand() update mechanism. 2020-12-05 00:50:20 +02:00
Aapo
6803af4dc4 [TD] Fix column index range checking bug in std::string DrawViewSpreadsheet::getSheetImage(void) 2020-12-05 00:50:19 +02:00
luz paz
71726a11d0 FEM: Added instructions to fem.dox file 2020-12-04 17:50:05 +01:00
luz paz
f4a65dcbb6 FEM: doxygen 2020-12-04 17:50:00 +01:00