To harmonize the various CAM operations, the helical drill shall also be
configured using the cut mode (Climb/Conventional) just like Pocket or
FaceMill.
This means, the path direction (CW/CCW) is now a hidden read-only output
property, calculated from the side (Inside/OutSide) and the here newly
introduced cut mode.
The spindle direction is not yet taken into account and is always assumed
to be "Forward".
The GUI strings are kept compatible with what RP#14364 introduced becasue
of the v1.0 release string freeze. They need revision once back on the
main branch.
This reverts commit 7e62d07538 and adapts
to the in between commits where necessary.
- CAM: apply precommit 7274dac185
- CAM: rename "Tests" to "CAMTests" 2ff4914fd8
Motivations for the revert:
- Instead of actually implementing #14364 only a search and replace in
the enums values has been performed. But this does not mean the
feature is there, becasue "climb"/"conventional" milling depends not
only on the path's direction, but also on the spindle direction and
whether the milled feature is "inside" or "outside".
- In half of the cases of every changed operation or dressup, depending
on whether we mill "inside" or "outside", we now get the wrong results.
- In the (rarer) case of a reversed spindle direction, the "other half"
is wrong.
- Files created with previous versions of FreeCAD cannot be recomputed
any longer because there were no precautions on document restore.
- In files created with previous versions of FreeCAD one cannot change
the broken operation as the choices are now invalid.
- The original search/replace was incomplete.
- Only property values have been changed, the property names are still
inconsistent ("Direction" vs "Cutting Mode").
- The original search/replace also changed internal APIs where the
"climb"/"conventional" wording is not applicable as there is no
notation of "inside"/"outside" or "forward"/"reverse". If only the
path's direction is concerned, "CW"/"CCW" fits better.
The refactored postprocessor system uses
a factory to load scripts. The preference
system has logic to load the scripts to get the tooltips
That logic was overlooked during the refactor.
Added it here.
The migration of CAM to use the new material system left behind some
logic that created an old dedicated stock material property.
This commit removes that property
* Machining model and materials
Adds a few machinability material model
and a couple materials. There's a button in the job dialog
to assign a material.
The sanity report is updated to display the surface speed for assigned materials
* improving the machinability model
* Introduce MaterialConstant for the machinability model
This constant is required to calculate the actual specific cutting force
from the normalized value. It determines how the actaual value varies
when the actual chip thickness gets further away from the normalization
point.
* Rename some machinability properties
- SpecificCuttingForce becomes UnitCuttingForce to clearer differentiate
between normalized and actual specific cutting force. The term unit
cutting force is used less often in literature, but
NormalizedSpecificCuttingForce as property name is too long for my taste.
- MaterialConstant becomes ChipThicknessExponent, as "material constant"
is just too generic for our context. In literature, this constant is most
often just used as the symbol m_c.
---------
Co-authored-by: Jonas Bähr <jonas.baehr@web.de>
* Initial opengl test window
* added core files
* some fixes for code comparability with other platforms
* more compatibility cleanup
* add missing opengl libraries
* Basic simulation window works!
* try using different define
* fix wrapper for better compatibility
* Gui is now operational
* Finally SIM works on actual freecad models
* support drill commands
* cleanup python script and add tool profile generation
* Now using actual tools specified in the operation.
* support mouse wheel and freecad-style 3d navigation
* Support accuracy gauge
* remove endsimulation reference
* show simulation speed indicator
* apply clang-format
* apply changes suggested by code review
* gui items are loaded via QT resource system instead of hard coded
* use vector instead of pointer to pass tool profile points
* Fix some more formatting errors.