This change was part of #2720 but has been skipped in order to not complicate a pending PR of an upgrade of the SMESH sources.
However, this other PR #2706 has been closed by its author.
Since this warning is reported on latest Fedora version using gcc 10 it will be fixed now.
avoid to crash the application when trying to create thumbnail from worker thread
avoid that application behaves weirdly when triggering an action update from worker thread
The Path Simulator was designed to handle canned cycle drilling operations, G81, G82, and G83, but it expects the industry standard continuous uninterrupted set of G8x commands until the operation is completed. A recent change to the Path Drilling operation adds commands that cancel each G8x command immediately after that command is used. This confuses the Path Simulation function and leads to visual artifacts when the simulation is performed.
G-code standards say that canned cycle cancellation can be accomplished by a specific G80 command or by any motion command in the set G0, G1, G2, or G3. This PR modifies PathSimulationGui.py to add recognition for canned cycle cancellation and resets the simulator to treat the next G8x command as the first element of a new series of canned cycles operations rather than a continuation of the previous series.
The existing dark themes all have fairly low contrast, which can make
text hard to read. This diff adds a variant of Darker-blue that
increases contrast between text and background.
The use of `App::PropertyLinkSubList` for `'PathSubelements'`
is a mistake because we could use a single `App::PropertyLinkSub`
to handle both `'PathObject'` and `'PathSubelements'` properties.
This commit doesn't change any code, it just adds comments
explaining the situation so that it is not forgotten,
and we remember to address it in the future.
Ideally we should migrate the objects, but we may also decide
to break compatibility with older `PathArrays` if both properties
can't be migrated easily.
- Python3 does not allow to write strings to a file opened as "wb"; it
expects bytes instead. Since ASCII DXF files are written using strings,
the file should be opened as "w". Should be ok for python2 as well.
- See also issue 003862, https://tracker.freecadweb.org/view.php?id=3862
Import the modules inside `DraftGeomUtils.py` in increasing order
of complexity. For example, the basic module is `general`,
and `geometry`, `edges`, `faces`, `arcs`, and `cuboids`
after it.
On the other hand the `circles_apollonius` module requires
various of those dependencies, so we import it at the end.
We don't import any of the `circles_incomplete` functions
because these are incomplete and we need to implement
the dependency functions first.
=====================================================================
fixes#4241
Problem:
PartDesignGui::ViewProvider is responsible for closing the tasks for most of PD features when exiting edit mode
(i.e. unsetEdit()).
For primitives, PartDesignGui::ViewProviderPrimitive is responsible, and neither does it or relies on its parent
VP to do it when calling unsetEdit().
Solution:
Make PartDesignGui::ViewProviderPrimitive::unsetEdit() rely on parent PartDesignGui::ViewProvider to tidy up,
including closing the task dialog.
Reference:
This is the default stack call when closing a document while a PD task using PartDesignGui::Viewprovider is active:
- Bug fix: Fix crasher in discretize() when the edge to discretize is
not a 3d curve, and a nullptr is returned when trying to access the
underlying curve. This change essentially removes an older work-around
for QuasiUniformDeflection, which is no longer needed since we are
using UniformDeflection. This change is tested with the original test
case from https://forum.freecadweb.org/viewtopic.php?f=15&t=42628, as
well as my own crasher test case.
- WireJoiner robustness: Support passing in a tolerance into
WireJoiner::findCloseWires(), and initialize this to
AreaParameter.Tolerance. In testing, this significantly improves the
ability to join projected areas in complex 3d surface path models.
- Area::project() robustness: Pass the work plane down into the
projection area instance, so that it does not need to be derived from
shapes. This avoids crashing out on "shapes are not coplanar" from
getPlane, when lenient processing was requested via the Coplanar
parameter.
Reduce cumulative error by holding onto the original point in a sequence
of linear optimizations. In testing, this fixes artifacts I have seen on
very finely sampled paths with very gradual curvature.
Further improvements are needed for this optimization, but at least this
change avoids a regression over the status quo.