Commit Graph

1696 Commits

Author SHA1 Message Date
Abdullah Tahiri
c604d1741d Console/ILogger: Refactor and extension
=======================================

Refactor:
 - Substitute the use of variadic templates with parameter packs.
 - Use recently incorporated external library "fmt" to handle printf like formating.
 - Extensive cleaning of pragmas and unnecessary forward declarations.
 - Parameter packs and libfmt provide a much stronger type checking now, so
   conversions that are by standard implicit as bool to int need an explicit static_cast
   to avoid compilation warnings.

Extension:
 - Include a notifier field, so that the originator of the message can be provided. E.g. Document#DocumentObject
 - Include a new type of message called CriticalMessage, this message is intended to have
   special behaviour in the future. Namely, it will be used to notify forward compatilibity issues.
   It will be used to substitute the current signal/slot mechanism.
 - Include two new types of messages for user notifications (Notification and TranslatedNotification). This messages
   will be use to convey UI notifications intended for the user (such as non-intrusive message about the usage of a tool). There
   are two versions to mark whether the string provided as a message is already translated or not. When using the console system for
   notifications, these notifications may originate from the App or the Gui. In the former, it is generally the case that the strings
   of messages are not (yet) translated (but they can be marked with QT_TRANSLATE_NOOP). In the latter, often the messages to be provided
   are already translated.

Python support for CriticalMessage, Notification and TranslatedNofification, including shortcuts:

    Crt = FreeCAD.Console.PrintCritical
    Ntf = FreeCAD.Console.PrintNotification
    Tnf = FreeCAD.Console.PrintTranslatedNotification
2023-03-07 16:13:23 +01:00
luzpaz
617611e1f8 Fix typos [skip ci] 2023-03-03 09:09:26 -06:00
wmayer
ebe791649a Part: Compute center of gravity for compounds
* If the compound contains solids then other shape types like faces or edges are ignored
* If the compound contains no solids but faces then edges are ignored
* If the compound contains no faces but edges then vertexes are ignored
2023-03-02 19:34:18 +01:00
wmayer
d196f8c496 Mod: catch exception raised by Rotation::setValue 2023-03-01 18:43:15 +01:00
wandererfan
8cbd69b749 [Part]use sharedptr for Restore 2023-03-01 14:24:40 +01:00
wandererfan
586d482645 [Part]PropertyTopoShapeList changes from review 2023-03-01 14:24:40 +01:00
wandererfan
7c7fcbb33d [Part]add PropertyTopoShapeList 2023-03-01 14:24:40 +01:00
wmayer
3f72e247ff Part: creating a NURBS of a circle or ellipse doesn't respect any transformation
Example:

mat = App.Matrix()
mat.rotateX(1)
mat.rotateY(1)
mat.rotateZ(1)

circle = Part.Circle()
circle.Radius = 5
circle.transform(mat)

circle.transform(mat)
Part.show(circle.toShape())

nurbs = circle.toNurbs()
Part.show(nurbs.toShape())

arc = circle.trim(0, 2)
nurbs = arc.toNurbs()
Part.show(nurbs.toShape())

spline = circle.toBSpline()
Part.show(spline.toShape())

#-------------------------

ellipse = Part.Ellipse()
ellipse.MajorRadius = 5
ellipse.MinorRadius = 3
ellipse.transform(mat)

ellipse.transform(mat)
Part.show(ellipse.toShape())

nurbs = ellipse.toNurbs()
Part.show(nurbs.toShape())

arc = ellipse.trim(0, 2)
nurbs = arc.toNurbs()
Part.show(nurbs.toShape())

spline = ellipse.toBSpline()
Part.show(spline.toShape())
2023-02-14 22:56:42 +01:00
wmayer
91048d7900 Part: fixes to create a NURBS for the arc of a conic
See forum: https://forum.freecad.org/viewtopic.php?t=75846
2023-02-12 19:45:00 +01:00
Pascal de Bruijn
181c7991e2 Increase mesh generation output quality 2023-02-03 12:08:10 -06:00
Pascal de Bruijn
20933f9c07 Tools: tweak mesh generation
Mesh generation parameters are taken from PrusaSlicer's STEP importer,
which does a just-in-time STEP->STL conversion in memory.

Resulting meshes have better geometry, but are a little larger as a result.
2023-02-03 12:08:10 -06:00
wmayer
049056a99a Part: put instantiation of BRepAdaptor_Surface into try/catch block as for some broken faces it may fail 2023-01-31 11:04:38 -06:00
wandererfan
c318bc08cb [Part][Draft]fix #8271 temporary files on windows 2023-01-28 07:13:05 -08:00
Ajinkya Dahale
acb42e4109 [Part] Limit periodic B-spline degree to number of poles
This leads to issues down the line in Sketcher. If there is a reason this should
be permitted within Part, then Sketcher needs to be adjusted.
2023-01-16 16:45:17 +01:00
Abdullah Tahiri
7fcee31c07 Part/Sketcher: Geometry/Geometry facade pass by const-reference instead of by value 2023-01-09 17:13:26 +01:00
Abdullah Tahiri
c6a1644c1c Part: Geometry
==============

End parameter must be strictly higher to require a wrap.

Settling discussion:
https://github.com/FreeCAD/FreeCAD/pull/6971#discussion_r917295684
2022-12-21 16:01:23 +01:00
Ajinkya Dahale
b937ca35d4 [Part] Fix periodic b-spline trim
When `v == u` we want to "break" the b-spline at `u` (also OCC will raise an
exception if same parameter is provided).

The range of parameter can in general be different than 1.0, so use a general term.
2022-12-21 16:01:23 +01:00
wmayer
2fa8fb45d8 Base: refactor InventorBuilder 2022-12-13 17:48:51 +01:00
wmayer
cfc97b80b1 Mod: use new API of InventorBuilder 2022-12-12 20:50:32 +01:00
Uwe
97ee8b847f [Surface] enable precompiled headers
- also remove double code
2022-12-08 03:26:59 +01:00
Uwe
ffe5c754af [Sketch] App: improve PreCompiled.h handling 2022-12-08 01:33:24 +01:00
Uwe
3b1580136b [Surface] App:: remove unused includes
- also some sorting
2022-12-08 00:34:08 +01:00
Uwe
6e5be52325 [Part] improve PreCompiled.h handling 2022-12-07 23:20:46 +01:00
Uwe
e6b3d5aded [PD] improve PreCompiled.h handling 2022-12-07 21:31:16 +01:00
wmayer
19411d6a9b Part: add method TopoShape::isPlanar() 2022-12-07 15:18:04 +01:00
Ajinkya Dahale
4d2837a6c2 [Part] Add/change some methods in GeomBSplineCurve
Add `setPeriodic` to turn a b-spline periodic.
Allow `join` to join any bounded curve not just b-spline.
2022-12-04 08:17:20 +01:00
luz paz
fa98553775 Fix various typos and grammatical issues 2022-11-30 12:45:29 +01:00
luz paz
5b63289c5b Part: Fix header uniformity + superfluous whitespace 2022-11-30 12:44:31 +01:00
wmayer
e18cb45673 Base: refactoring of InventorBuilder 2022-11-30 12:29:09 +01:00
wmayer
b325ab93dc Base: refactoring of InventorBuilder 2022-11-29 13:28:00 +01:00
wmayer
c988f1d472 Base: start of refactoring of InventorBuilder 2022-11-27 16:45:16 +01:00
Uwe
43463077f1 [skip ci] [Part] TopoShapePyImp.cpp: clang formatting fixes 2022-11-22 03:09:43 +01:00
wmayer
09dccb70c7 Part: [skip ci] fix some warnings reported by GH actions 2022-11-19 15:57:54 +01:00
marioalexis
f0deeaed00 Part: Fix endless-loop in TopoShapePy::proximity function 2022-11-19 15:31:13 +01:00
luz paz
6e542b6fad Part: remove trailing whitespace 2022-11-15 14:19:30 -06:00
wmayer
af0a014cf2 Qt6 port:
* QApplication::setFallbackSessionManagementEnabled has been removed
* QString::medRef() has been removed. Use QString::mid() again.
* QTextStream::setCodec has been removed
* Use operator QVariant of the QFont class to make code Qt5 and Qt6 compatible
* Signature of QTreeWidget::mimeData() has changed in Qt6. Remove TreeWidget::mimeData() because it doesn't change the implementation
* QLayout::setMargin() is deprecated in Qt5 and has been removed in Qt6. Use QLayout::setContentsMargins()
* QDateTime::toTime_t() is deprecated in Qt5 and has been removed in Qt6. Use QDateTime::toSecsSinceEpoch()
* QDesktopWidget is deprecated in Qt5 and has been removed in Qt6. Use QScreen
2022-11-01 16:55:40 +01:00
Kuzemko Alexsandr
63174d487f [App] Fix of untranslated first document's name (#7156)
* Change no need function newDocument("Unnamed") call to variant without parameter. "Unnamed" set in App newDocument function instead.
* Refactor New Document command to run without parameter.
* Translate new document's userName. Internal name = "Unnamed".
* Crowdin Add to updatets.py App.ts. Create new file App.ts
* Fix error where document name is set with one function parameter. In this situation set internal and user name to string variable. For default function call (without parameter) set internal name to Unnamed, userName = translate ("Unnamed")
2022-10-20 21:35:09 -05:00
luz paz
57090a43f7 [Sketcher] [Part] Fix typos and whitespace 2022-10-19 11:36:56 +02:00
jim
f79055c1e5 fix whitespace and add comments 2022-10-17 11:15:09 -04:00
jim
d4e368a1d1 increase the height FreeType uses to draw glyphs in order to preserve precision of very fine features when converted to FC wires. scale the result back down appropriately. 2022-10-17 11:15:09 -04:00
Uwe
f50d1c39da [Part] remove now obsolete code for Visual Studio compiler
- see the discussion in https://github.com/FreeCAD/FreeCAD/pull/7241
2022-10-16 11:17:01 +02:00
Uwe
03a3ae8cd8 [TD] DrawD* - DrawT*: remove unused includes - part 2/2
- also sort includes
- also additions to precompiled header
2022-10-08 17:21:26 +02:00
wmayer
88702425aa Part: [skip ci] fix build failure 2022-10-06 16:50:46 +02:00
Uwe
7a7cb8184e [Part] Step import: remove unused includes
- also sort includes
2022-10-06 02:58:23 +02:00
Uwe
a6c6344c6b [TD] P* - T*: remove unused includes
- also sort includes
- also additions to precompiled header
2022-10-06 02:36:48 +02:00
Uwe
5e546ee582 [TD] next attempt to fix CI compiler error
- reported here: https://gitlab.com/freecad/FreeCAD-CI/-/jobs/3127909597
2022-10-05 04:19:50 +02:00
Uwe
6cfe77719e [TD] E* - L*: remove unused includes
- also sort includes
- also additions to precompiled header
2022-10-05 03:43:42 +02:00
wmayer
5ee0f0a8cf Part: add dialog for STEP export 2022-10-04 20:30:03 +02:00
wmayer
359ec600eb Part: [skip ci] fix compiler warnings 2022-10-04 16:12:39 +02:00
wmayer
2575f082d9 Part: [skip ci] list all used parameters for reading/writing shapes 2022-10-04 13:29:26 +02:00