Commit Graph

21503 Commits

Author SHA1 Message Date
Gabriel Wicke
0c69eebda4 Path: Use _optimizeLinearSegments utility in _planarSinglePassProcess
Slightly clean up the code by separating linear segment optimization
from gcode generation. While the current optimization is not very
effective once there is any kind of meshing noise, having a single
method performing the optimization will make it easier to tweak
tolerances or strategies.
2020-06-05 18:21:24 -07:00
Gabriel Wicke
84113fbd17 Path: More ambitious step-over and break optimizations
Extend the work from #3496 to allow the safe optimization of more
complex step transitions.

- Use the actual safePDC path for short step transitions and breaks,
  currently up to 2 cutter diameters. This value is chosen to cover
  basically all typical end step-overs, including those with heavy skew.
  Extending this much further (up to the break even point for a retract &
  rapid) will need some careful thinking for multi pass paths.
- Coordinate offset tolerances with per-operation tessellation
  tolerances, to avoid tessellation artifacts messing up paths by
  causing false retracts.  Such retracts can cause entire steps near
  vertical areas to be falsely skipped, which would cause a major
  deviation from the target model.  By considering per-job tolerances, we
  allow users to safely save computational resources by computing roughing
  operations with lower precision, or selectively increase precision for
  finish passes.
- Refine the default tessellation tolerance to GeometryTolerance / 4.
  This makes sure that the job GeometryTolerance is respected by
  operation defaults.
2020-06-05 18:21:24 -07:00
wmayer
457dba4fee App: [skip ci] avoid that Origin makes persistent any properties of its extension 2020-06-05 18:27:56 +02:00
wmayer
1521b256bc App: [skip ci] implement the private class OriginExtension to simulate a geometric group behaviour 2020-06-05 18:24:17 +02:00
wmayer
229e8dd375 App: implement the private class OriginExtension to simulate a geometric group behaviour 2020-06-05 18:17:40 +02:00
sliptonic
db74aa8cef Merge pull request #3561 from Russ4262/Profile_fixes
[Path] Profile: Fix `_makeIntersectionTags()` for very short edges
2020-06-05 09:09:48 -05:00
sliptonic
63c224a3c4 Merge pull request #3565 from Russ4262/3D_Surface_vertical_face_fix
[Path] 3D Surface: various fixes
2020-06-05 09:08:37 -05:00
Yorik van Havre
1aa5b755a9 Arch: Fixed non-GUI mode of exporters 2020-06-05 14:58:20 +02:00
vocx-fc
c700dc5d05 Draft: improve handling of Part::Vertex when used with PointArray
The `Part::Vertex` object has both `Placement`, and `X`, `Y`, `Z`
properties. The net displacement is the sum of both of these two
properties.

Previously, the `PointArray` would only use the `Placement`
which would produce a seemingly erroneous result
because `X`, `Y`, and `Z` would be ignored.
2020-06-05 13:21:02 +02:00
vocx-fc
565f2b35b4 Draft: move make_text function to its own module
Also perform several improvements such as PEP8 cleanup,
write complete docstring, type checking of the input arguments,
accepting a full placement to modify the position,
and deprecating the older call.

Update the Gui Command as well.
2020-06-05 13:20:35 +02:00
Yorik van Havre
d652b5eaf3 Fixed ImportNURBS icon 2020-06-05 13:19:42 +02:00
Keith Sloan
ea9c61869e fix resize 2020-06-05 13:17:34 +02:00
Keith Sloan
a549960193 Add workbench icon 2020-06-05 13:17:34 +02:00
Keith Sloan
f333d9ca0f resize 2020-06-05 13:17:34 +02:00
vocx-fc
7597dd0564 Draft: move more functions to draftgeoutils.general 2020-06-05 13:15:31 +02:00
vocx-fc
3bdd1310b3 Draft: move functions to draftgeoutils.circles_incomplete 2020-06-05 13:15:31 +02:00
vocx-fc
3476c73b3b Draft: move functions to draftgeoutils.circle_inversion 2020-06-05 13:15:31 +02:00
vocx-fc
0ba43a993e Draft: move functions to draftgeoutils.circles_apollonius 2020-06-05 13:15:31 +02:00
vocx-fc
627e665c5d Draft: move more functions to draftgeoutils.circles, part 2 2020-06-05 13:15:31 +02:00
vocx-fc
6ec6fb2ca1 Draft: move functions to draftgeoutils.circles, part 1 2020-06-05 13:15:31 +02:00
vocx-fc
7eee6ae4f6 Draft: move more functions to draftgeoutils.arcs 2020-06-05 13:15:31 +02:00
vocx-fc
7caa8d4dcf Draft: migrate older properties of PathArray 2020-06-05 13:14:46 +02:00
vocx-fc
f2f22e155b Draft: rename PathArray properties
`PathObj` becomes `PathObject`, `Xlate` becomes `ExtraTranslation`,
and `PathSubs` becomes `PathSubelements`.

Update `make_path_array` function and the Gui Command.
2020-06-05 13:14:46 +02:00
vocx-fc
f1bcffbc16 Draft: hide properties not used in the PathArray
Certain properties do not need to be shown in the property editor
when a particular `AlignMode` is chosen. This keeps the number
of properties displayed organized and easy to manage.
2020-06-05 13:14:46 +02:00
vocx-fc
572788edd7 Draft: set the properties of PathArray through functions 2020-06-05 13:14:46 +02:00
vocx-fc
9dd1c2efa5 Draft: cleanup logic of PathArray proxy object code
Return early from the `execute` method if no base or path exist.

Add method `get_wires` which internally uses `get_wire_from_subelements`
(renamed method), to get the edges from the path object,
and its subelements, if any. If no wires are found
return early from `execute`.

The final rotation applied to the copies will be the base rotation
of the base object's shape. The only exception is when the
`AlignMode` is `'Tangent'`; in this case, it performs
a pre-rotation with the `TangentVector`.
2020-06-05 13:14:46 +02:00
vocx-fc
835f4b424f Draft: clean up code, PEP8, and docstrings in PathArray
Test the inputs to the `make_path_array` function
and return `None` if there is a problem.

Now the make function accepts as input a `"String"` which must be
the `Label` of an object in the document, so it is easier to create
arrays quickly from the Python console.

Add the new parameters to the make function, `align_mode`,
`tan_vector`, `force_vertical`, and `vertical_vector`.
These properties were added to the proxy object in ff323ebdb5.

Add  message deprecating the older call `makePathArray`.

Adjust the GuiCommand accordingly. Now it uses the commit
mechanism of the parent `Modifier` class so that the executed
functions are recorded in the Python console.

Clean up the `PathArray` class as well.
2020-06-05 13:14:46 +02:00
bartoszek
b2882c699b Fix qt5:5.15.0 build. 2020-06-05 10:02:56 +02:00
Russell Johnson
16a65cc720 Path: Add opUpdateDepths() method to fix FinalDepth guess 2020-06-05 00:11:43 -05:00
Russell Johnson
e78c1e6646 Path: Improve FindUnifiedRegion class
Improvements now identify cases where selected faces create a closed loop that creates an internal closed wire to not be processed.
Remove unnecessary comments.
Add debug statements.
2020-06-05 00:11:43 -05:00
Russell Johnson
a167f2229b Path: Fix vertical face handling; Correct if ... is not False usage 2020-06-04 20:40:26 -05:00
sliptonic
aac84ddf0f Merge pull request #3560 from Russ4262/Import_Base_Geometry_fix
Path: PathOpGui - Fix Base Geometry import feature
2020-06-04 13:17:28 -05:00
sliptonic
be7e780c86 Merge pull request #3556 from Russ4262/3D_Surface_Waterline_Fixes
Path: 3D Surface and Waterline fixes per forum identification
2020-06-04 13:17:08 -05:00
Russell Johnson
fabe64cbcd Path: Fix _makeIntersectionTags() for very short edges
The 0.25 constant used might need to be modified later.  Or, the entire `_makeIntersectionTags()` method might need to be improved if other micro-edge use cases cause failure.
2020-06-04 13:15:10 -05:00
wmayer
7ce076b347 Mesh: [skip ci] fix regression in PlaneSurfaceFit::Initialize 2020-06-04 19:29:00 +02:00
WandererFan
9fd502eea7 Merge pull request #3559 from WandererFan/SectionFaceError6
[TD]Improve section face display
2020-06-04 13:25:27 -04:00
Russell Johnson
08e3f0b0d7 Path: PathOpGui - Fix Base Geometry import feature
for pre-existing operations
2020-06-04 10:54:43 -05:00
wmayer
3df91974b8 Gui: [skip ci] fix unicode handling when showing units in status bar 2020-06-04 16:27:58 +02:00
WandererFan
6974598dc1 [TD]Improve section face display 2020-06-04 09:00:22 -04:00
wmayer
3aba2721d1 gcc: [skip ci] fix -Waddress 2020-06-04 14:56:20 +02:00
Yorik van Havre
8f35f7aa14 Arch: Added Profile command 2020-06-04 12:52:22 +02:00
Zheng, Lei
3f2f8ce039 Gui: fix crash on selecting removing object
The crash happens if some code calls Gui::Selection().addSelect() of a
removing object in response to App::Document::signalDeletedObject.
2020-06-04 09:34:27 +02:00
Bernd Hahnebach
86759ddfbf FEM: constraint electrostatic potential, better addition of attributs 2020-06-04 08:55:09 +02:00
Russell Johnson
c82dc128c3 Path: Fix for single selected non-planar face 2020-06-04 00:03:31 -05:00
Russell Johnson
0f4bb388bb Path: Fix error with multi-language usage of QComboBox inputs
The methods here might need to be applied throughout PathWB to allow language translations of GUI combobox inputs.
2020-06-03 21:24:18 -05:00
Russell Johnson
155f83baa7 Path: Fix duplication of gcode for Single-pass layer mode.. 2020-06-03 20:13:39 -05:00
Russell Johnson
9ca855476b Path: Clean up messaging and add translation() usage 2020-06-03 19:00:59 -05:00
Russell Johnson
4e139d5a1e Path: Fix failure to create model STL when selecting faces 2020-06-03 19:00:36 -05:00
Russell Johnson
1d35573917 Path: Fix paths through model
All cut patterns except Offset were cutting through model.
2020-06-03 18:59:46 -05:00
Russell Johnson
bebdf2d006 Path: Simplify creation of debug objects
Path: Improve debug messages
2020-06-03 18:59:46 -05:00