Can we agree that the current rotational capability, apart from 3D Surface, is only an indexing rotation, not a full, simultaneous multi-axis rotational 3D path generation?sliptonic wrote: ↑Mon Nov 09, 2020 4:54 pm ...
The existing operations code is already a tangle and we're seeing very few contributions from new developers.
Adding 4th axis rotations onto existing operations added great functionality but made the whole thing much more difficult to maintain. We probably should have created entirely new 4th axis operations with cleaner code.
...
We need to figure out (or rather I am asking for ideas for) a plan to move forward with code-structure correction while addressing(attempting to maintain) the rotational features developed thus far. One option is to gut the rotational code from current ops in order to restore the original pre-rotational code base, while maintaining other improvements that occurred since. I had started another rotation implementation a long while back, but didn't keep it current. It takes the approach of applying rotation as a pre-process in the `execute()` method of PathOp, to be applied and then pass the re-oriented geometry to the primary operation as is done now.
I don't have hard facts as to what percentage of users are making use of the current rotational features. It is certain that there is a user base interested in the existing rotational features, and more. That said, I understand some will be against gutting the rotational code. I am not suggesting a gut-and-run, rather a gut with improved alternate implementation to follow (or simultaneous replacement).
I'm just looking to get some better perspective and more knowledge than the limited that I have.
Takeaways from this thread (2020-11-25):
- Base ops code should be as simple and maintainable as possible.
- Rotational indexing feature should be available to all base ops. (target goal)
- Solutions presented here will not be committed until next official release after 0.19.
- The rotational indexing code should be self-contained within a single class (target goal)
Pros and Cons of each type of rotational indexing[RI] integration:
Per-Op Integration (current method)
- Pro - RI is automatically included in path generation
- Pro - RI code analyzes Base Geometry (possibly extendable to simultaneous 4 axis simultaneous)
- Pro - Fewer inputs required from user when incorporating RI into the workflow
- Pro - No additional GUI load in Path toolbars
- Con - RI is not currently not editable.
- Con - RI code (or subset thereof for activation) must be added to each op
Independent Op
- Pro - RI is readily available to each operation
- Pro - RI code is independent from all other ops code
- Pro - RI would be manually adjustable, and/or auto set based on independent, selectable Base Geometry.
- Pro - Code can be drastically simplified from current implementation code, removing some of the complex geometrical analysis code
- Con - More inputs required from user when incorporating RI into the workflow
- Con - Additional GUI slot required in Path toolbar
Dressup
- **This option would likely be very similar to the Independent Op
Feature
- Pro - RI is automatically included in path generation
- Pro - RI is readily available to each operation
- Pro - RI code is independent from all other ops code
- Pro - RI code analyzes Base Geometry (possibly extendable to simultaneous 4 axis simultaneous)
- Pro - RI can be manually adjusted.
- Pro - Fewer inputs required from user when incorporating RI into the workflow
- Pro - No additional GUI load in Path toolbars
- Con - RI code (or subset thereof for activation) must be added to each op
Russell