Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

major speedup, refactor, and new features #15

Merged
merged 3 commits into from
Jun 11, 2016

Conversation

iceboundflame
Copy link
Contributor

@iceboundflame iceboundflame commented Jun 9, 2016

Thanks so much for this tool! It's a really great idea and CNC routed projects really aren't practical without it. I made some enhancements so that it would work for more complex models with many dogbones (my model has 208).

screen shot 2016-06-09 at 1 42 37 am

I know this is quite a large PR but I was having a hard time developing without first doing some refactoring first to cut down on repetition. Here's a list of changes...

Significantly optimized as follows:

  • Instead of generating one plane, sketch, and sweep cut for each dogbone, it groups the dogbones by their vertical extents and produces the minimum number of features in the history tree as possible.
  • Introduced "Output Unconstrained Geometry" option to directly compute the locations of dogbone circle in the sketch, producing the minimum amount of sketch geometry possible. This led to a >5x speedup of generating each dogbone.

The net result is that, for my use case, I can generate 208 fillets in 28 objects in 73 sec. Since they are all lying in the same plane, it only generates three history operations (plane, sketch, extrusion). Previously this would take forever, freeze the UI, and generate 600+ operations in the history.

Note: The bulk of the time is because every call to the Fusion API (adding geometry, extrusions, etc.) is extremely slow.

Additionally, other enhancements were added:

  • Progress bar shows current status.
  • The operation can be canceled midway (use Undo to delete the partial geometry created).
  • Saves the last parameters used (cleared on relaunch of Fusion)
  • Skips non-vertical edges selected.
  • Benchmarking
  • Code is refactored into object-oriented fashion to be more manageable, and utility functions split out.
  • Robustness: Exception handling is consolidated, tracebacks always shown, launching the plugin automatically cleans up old crashed instances of the plugin.

@iceboundflame
Copy link
Contributor Author

By the way, I see in the history that you used to use extrude cut as well, but switched to loft cut. I moved to extrude again in my version because I found it simpler, but I'm curious if you saw a benefit from the lofts?

@iceboundflame iceboundflame mentioned this pull request Jun 9, 2016
Shaves off another 30% of the time, now 50 sec to make 208 dogbones.

Also disable timeline grouping since it seems to output an unselectable/blank group (bug?)
@caseycrogers caseycrogers merged commit 70bb3b5 into DVE2000:master Jun 11, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants