I learn a lot by observing the process of how other designers and engineers actually do their work. Here’s a look at mine, this is my catch-all outline of desired features (as of today) for warifuru. I keep this list in OmniGraffle but what I should do is start a bug/features tracking system. Sourceforge has a ticket tracking system worth a try or I can just set up my own tickets/source repository on a personal site.
- warifuru interface - General Goals - UI consistent across platforms - C++/Qt5 - features for novices - perimeter/bounding box dry run - test print on paper - estimate of etch/cut times - reset x,y home to current laser position - features for production - cut as many objects as quickly as possible - load raw g-code - 2d bin fitting - g-code editing - UI for consolidating all etching in to a single pass, then optimize that pass - support Z axis data for intensity in etches - project save-as feature that can save DXF, DWG, SVG - features for hackers - needs to change cut parameters at hardware level - firmware update - dynamic stop location to simulate smaller beds - g-code editing - change sensors / limits - features for artists - experiment with cut parameters - estimate of etch/cut times - z axis to move bed while cutting - allow picking of cut paths to be in/middle/out of source line - common features - cut simulation - relocate and reorient - for 0,0 - for a specific corner or edge - arbitrary point using current location of laser as 0,0 - graphic display of cut progress and gcode being executed at the moment - media database - select media from a pull down, similar to Flow software - use media + thickness to suggest cutting and etching speeds - add/save new media types - job maintenance - save/memorize job settings by file name, offer as starting settings on future job - include generated code - include laser settings and anything that can be configured in the UI - text description/feedback/comments by user - cache gcode for jobs - prototyping - cut entire sheet using speeds from 0 to max and power from 0 to %100 - x axis speed, more room for lots of variations - y axis power, only need to do %5 increments - use as baseline cut/etch settings for each media type - raster/fill - consolidate cuts/etching based on actual kerf. ex: if kerf is 1mm, don’t cut two lines .2mm apart. - image manipulation - scale - flip — respect three axis where height can be intensity - rotate - resize to fit cutting area - replicate / tile image - allow picking cut lines to be in/middle/out of actual cut - real-time tutoring/help - media placement - cut settings - UI wishlist - Error messages explain why something happened, not just that an error happened - loaded file doesn’t fit on cutting area - loaded file has syntax errors - loaded file has commands that can’t be implemented - Modal cut dialog - bring up progress display as popup window, only allow stopping/pausing the cut If we want to create a customized message box—for example, using custom button texts and a custom icon—we can create a QMessageBox instance. We can then use methods such as QMessageBox.addButton() and QMessageBox.setIcon(), and pop up the message box by calling QMessageBox.exec_(). - UI for consolidating all etching at various levels into a single pass, then optimize that pass - binary display of cut progress and gcode being executed at the moment - preferences - pick default cut powers and speeds for each of the 7 colors - set actual bed dimensions by bumping end stops - media database - select media from a pull down, similar to Flow software - use media + thickness to suggest cutting and etching speeds - Backend Wishlist - structure for supporting g-code for a specific engine - lasersaur g-code set - plasma table g-code set - CNC mill g-code set - replicate uses subroutines in g-code? How do you make 100 foos without generating 100x gcode?