Commit Graph

611 Commits

Author SHA1 Message Date
tslater2006 6f9c92808e fix Airmap logic bug / suction cup bug
Adjust airmap logic during 2nd pass to account for contours that were determined to be air-connected during first pass.

Always move resolved resin traps to suction traps, and only conditionally report them as issues if configured to do so. Suction traps are used during a cleanup stage for resin traps, so needs to be populated no matter what, there is no additional processing penalty for this.
2021-09-13 20:18:03 -05:00
Tiago Conceição 7e30663a96 Improvements on new algorithm #292
- Refactorings
- Cleanup
- Simplifications
- Improve overall performance
- Calculate the real area and pass them to the issue
2021-09-13 23:08:34 +01:00
Tiago Conceição ab0f5937c7 Merge pull request #292 from tslater2006/master
New Resin Trap/Suction Cup detection algorithm
2021-09-13 19:48:18 +01:00
tslater2006 522d3c6c64 Merge branch 'sn4k3:master' into master 2021-09-13 13:14:32 -05:00
tslater2006 59646b71dd New Resin Trap/Suction Cup detection algorithm
The following is a novel implementation of resin/suction trap detection for MSLA sliced images It largely consists of 2 passes through the layers.

The 1st pass processes the layers from the bottom to the top, keeping track of what areas in the previous layer are air (or connected to air in some way). The initial air map is derived from the starting layer, by inverting the layer and then filling all external contours black (not air) which results in an inital air map of everything that is not solid, or inside a solid, being considered air. While traversing the layers, the air map is updated to include any new air regions, or hollow areas that intersect with the air map (since while they are not air, they are connected to air). Any regions that do not overlap the air map are declared resin traps.

The 2nd pass processes the layers from the top to the bottom, the initial air map differs from the 1st pass. For the 2nd pass, anything that is not solid is considered to be air (a bitwise not of the top layer is used). The airmap is updated per layer just like it was in the 1st pass, however we do not test all contours of the layer, only those that were marked as resin traps by  the 1st pass. This is acceptable because in the event we did test all hollow areas, and one of those was *not* detected on 1st pass, it must be air-accessible from the bottom. In the even that a contour we are testing does overlap the air map during the 2nd pass, it is cleared from the "resin trap" list and instead added to the "suction trap" list. This is to indicate that while there is access to air from the top, there are regions that could be affected by vacuum/suction forces during the print
2021-09-13 12:57:50 -05:00
Tiago Conceição 7705d3d757 Remove unnecessary mat 2021-09-13 18:15:38 +01:00
Tiago Conceição 7b34ec5d73 Perform the maximum of layer pixels instead of sum to improve files with AA and prevent 2021-09-13 17:10:05 +01:00
Tiago Conceição 1e5f94f5a8 LayerIssue to support contours 2021-09-13 03:48:33 +01:00
Tiago Conceição 00e0d4c9ff Prepare UI for suction cup configuration 2021-09-13 02:01:40 +01:00
Tiago Conceição 43a3031af2 Import layers
- (Add) 'MergeMax' to import type (#289)
- (Add) 'AbsDiff' to import type
- (Add) Description of operations on comobo box
2021-09-13 01:38:12 +01:00
Tiago Conceição 553d74d920 More contour utility 2021-09-13 01:37:19 +01:00
Tiago Conceição a1009671b7 Merge pull request #289 from FinnNk/import-max
Add pixelwise max to import layer options
2021-09-13 00:56:28 +01:00
Finn Neuik 6f2598f80e Add pixelwise max to import layer options 2021-09-12 23:21:31 +01:00
Tiago Conceição 0aa5e18f4e Update EmguContours.cs 2021-09-12 20:53:34 +01:00
Tiago Conceição 7d1045ed56 Update EmguContours.cs 2021-09-12 20:51:56 +01:00
Tiago Conceição 0af27b1402 Refactorings 2021-09-12 20:38:07 +01:00
Tiago Conceição 0443a01e29 Update EmguContours.cs 2021-09-12 20:36:16 +01:00
Tiago Conceição 91e9690a34 Update EmguContours.cs 2021-09-12 20:35:00 +01:00
Tiago Conceição a120f83518 Update EmguContours.cs 2021-09-12 20:33:23 +01:00
Tiago Conceição 24a7e9106b Contours helper class 2021-09-12 20:27:10 +01:00
Tiago Conceição 61dbdbb362 Update MainWindow.axaml.cs 2021-09-11 19:07:25 +01:00
Tiago Conceição 31a29d142d pre v2.21.2 round 2 2021-09-11 18:42:40 +01:00
Tiago Conceição 8948724835 pre v2.21.2
- (Add) Allow to choose custom locations for "Send to"
- (Improvement) Better random generation for benchmark
- (Fix) Outline - Hollow areas: Not outlining the second closing contour for contours with child
- (Fix) Pixel editor - Eraser: It was selecting the whole blob even if have inner parents
2021-09-09 15:47:17 +01:00
Tiago Conceição 08a5797f36 v2.21.1
- **(Add) Layer outline:**
   - Blob outline: Outline all separate blobs
   - Centroids: Draw a dot at the gemoetric center of a blob
- (Add) Adjust layer height: Allow to change exposure time on the dialog and inform that different layer thickness require different exposure times
- (Add) Resin trap detection: Allow to choose the starting layer index for resin trap detection which will also be considered a drain layer.
        Use this setting to bypass complicated rafts by selected the model first real layer (#221)
- (Improvement) Disable mirroed preview when loading a file that is not mirroed
2021-09-06 01:34:58 +01:00
Tiago Conceição 6a2a52ebcb v2.21.0
- **UI:**
   - **Menu:**
      - (Add) File - Open recent: Open any recent open file from a list
          Shift + Click: Open file in a new window
          Shift + Ctrl + Click: Remove file from recent list
          Ctrl + Click: Purge non-existing files
      - (Add) File - Send to: Copy the file directly to a removable drive (Windows only)
   - **(Add) Layer navigation buttons:**
      - SB: Navigate to the smallest bottom layer in mass
      - LB: Navigate to the largest bottom layer in mass
      - SN: Navigate to the smallest normal layer in mass
      - LN: Navigate to the largest normal layer in mass
   - (Add) Layer outline - Distance detection: Calculates the distance to the closest zero pixel for each pixel
- **Tools:**
   - **Dynamic Lifts:**
      - (Improvement) Select normal layers by default
      - (Improvement) Hide light-off delay fields when the file format don't support them
      - (Fix) Light-off delay fields was not hidding when set a mode that dont require the extra time fields
   - **Exposure time finder:**
      - (Fix) Fix the 'light-off delay' field not being show on files that support wait time before cure
      - (Change) Field name 'Light-off delay' to 'Wait time before cure'
   - (Add) Fade exposure time: The double exposure method clones the selected layer range and print the same layer twice with different exposure times and strategies
   - (Add) Double exposure: The double exposure method clones the selected layer range and print the same layer twice with different exposure times and strategies
   - (Add) Clone layers: Option to keep the same z position for the cloned layers instead of rebuild model height
   - (Improvement) The layer range selector for normal and bottom layers now selects the correct range based on IsBottom property rather than layer index
   - (Fix) The layer range selector was setting a very high last layer index when bottom layer count is 0
   - (Fix) Pixel arithmetic: Threshold types "Otsu" and "Triangle" are flags to combine with other types, it will auto append the "Binnary" type
- (Add) Support for Encrypted CTB (read-only)
2021-09-03 22:21:41 +01:00
Tiago Conceição 774fe9d5d0 v2.20.5
- (Add) Setting - Max degree of parallelism: Sets the maximum number of concurrent tasks/threads/operations enabled to run by parallel method calls.
   If your computer lags and freeze during operations you can reduce this number to reduce the workload and keep some cores available to other tasks as well.
   <= 0: Will utilize however many threads the underlying scheduler provides, mostly this is the processor count.
   1: Single thread. (#279)
2021-08-31 17:06:46 +01:00
Tiago Conceição 1fd53c9d3c v2.20.4
- (Fix) On some tools, calibration tests and even files when recalculating the Z layer position for the whole set, it will use the bottom setting for all layers
2021-08-29 19:38:56 +01:00
Tiago Conceição 14f0cd4ce5 Create uvtools_acceleration.gcode 2021-08-29 06:54:24 +01:00
Tiago Conceição e91cfc4cc8 Create dynamic_layer_heights.png 2021-08-28 18:40:34 +01:00
Tiago Conceição 7745fbe084 Create accelerations.png 2021-08-28 16:46:56 +01:00
Tiago Conceição e7d474bcca v2.20.3
- **Tool - Dynamic Layer Height:**
   - (Add) Option to strip anti-aliasing: Use this option if you get flashy layers or if you want to enhancement the results
   - (Add) Option to reconstruct anti-aliasing: Use this option with "Strip anti-aliasing" to reconstruct the layer anti-aliasing via an gaussian blur
   - (Add) Maximum wide difference: The maximum number of pixels wide difference to be able to stack layers, where one pixel difference is a whole perimeter of the object to be eroded.
      0 = Stack only equal layers
      n = Stack equal layers or with a n perimeter of difference between the sum of the stack (#274)
   - (Add) Allow to change the base exposure times for the auto generation (#274)
   - (Add) Option to switch between: "Set the same base time for all bottoms" or "Calculate and iterate bottom exposures"
   - (Add) Button to: Copy automatic table data into manual table
   - (Improvement) Auto fill all layer height exposures times on manual entry
   - (Fix) When "Exposure set type = Multiplier" bottom exposure is being used for normal exposure (#274)
   - (Fix) Do not sum equal layers on the stack
- (Fix) Recalculate the material milliliters per layer when replacing a layer collection (#273)
2021-08-28 16:12:25 +01:00
Tiago Conceição ffd359e79e Update osla.md 2021-08-27 15:36:37 +01:00
Tiago Conceição 43ed99cbe7 Update svgx.bt 2021-08-27 14:39:00 +01:00
Tiago Conceição fc0c0e967a Update CHANGELOG.md 2021-08-27 05:15:11 +01:00
Tiago Conceição 1963fb055c Rename 2021-08-27 05:15:02 +01:00
Tiago Conceição a57dd3bcac Wiki TSMC 2021-08-27 05:09:52 +01:00
Tiago Conceição 72d8636d4a v2.20.2
- **(Fix) Layers:**
   - Round properties before comparing to avoid the precision error
   - Prevent 'Wait time' properties from having negative values
   - The `RetractSpeed` or `RetractSpeed2` property wasn't setting the bottom speed for bottom layers, instead the normal retract speed was always used
   - Set the `RetractHeight2` or `RetractSpeed2` property was not notifing the timer to update the print time no
   - Propagate global settings to layers now identfies the bottom layers per height instead of layer index
- (Add) UVJ: Support TSMC for the file format
- (Fix) UVJ: Soft save was not updating the layer settings
- (Fix) CTB: TSMC not working properly due incorrect layer `LiftHeight` value calculation
2021-08-27 02:53:31 +01:00
Tiago Conceição e200dfbcad CTB: TSMC not working properly 2021-08-26 22:32:32 +01:00
Tiago Conceição c73ac2dc36 v2.20.1
- **UI:**
   - (Add) Pixel position on lcd millimeters to the pixel picker information
   - (Add) Pixel size information when availiable below zoom on status bar
   - (Add) Click on Zoom button will zoom to 100% and shift click will set to the user defined value
- **CTB:**
   - (Add) Allow to change wait time for bottoms and normal layers separately
   - (Change) Software version field to 1.9.0
   - (Fix) Bottom layer count field was not being set in one of the tables
- (Fix) CXDLP: Force the 'Wait time before cure' to be 1 as minimum, or else 0 is preventing the print
2021-08-26 03:53:13 +01:00
Tiago Conceição 274474f748 CTB
- (Add) Allow to change wait time for bottoms and normal layers separately
- (Change) Software version field to 1.9.0
- (Fix) Bottom layer count field was not being set in one of the tables
2021-08-25 18:59:47 +01:00
Tiago Conceição 08a3c895da v2.20.0
- **File formats:**
   - (Add) FlashForge SVGX format of FlashDLPrint
   - (Improvement) Change `DisplayMirror` from `bool` to a `FlipDirection` enumeration, to be able to identify the exact mirror direction
- **(Add) PrusaSlicer Printers:**
   - FlashForge Explorer MAX
   - FlashForge Focus 8.9
   - FlashForge Focus 13.3
   - FlashForge Foto 6.0
   - FlashForge Foto 8.9
   - FlashForge Foto 13.3
   - AnyCubic Photon Mono SQ
   - AnyCubic Photon Ultra
- (Add) Pixel arithmetic: Preset "Elephant foot compensation"
2021-08-24 04:36:50 +01:00
Tiago Conceição d250e966c6 v2.19.5
- **(Fix) CTB:**
   - Converting a file to version 4 won't port the TMSC values (#271)
   - Force version 3 when on version 4 and converting to photon or cbddlp
- **(Improvement) Export to SVG image:**
   - Group \<g\> all layer objects
   - Intersect all childs on same \<path\>
- **PrusaSlicer:**
   - (Rename) Printer keywords notes:
      - BottomWaitBeforeCure -> BottomWaitTimeBeforeCure
      - WaitBeforeCure -> WaitTimeBeforeCure
      - BottomWaitAfterCure -> BottomWaitTimeAfterCure
      - WaitAfterCure -> WaitTimeAfterCure
      - BottomWaitAfterLift -> BottomWaitTimeAfterLift
      - WaitAfterLift -> WaitTimeAfterLift
   - (Change) PrusaSlicer gcode printers to reflect the previous changes
   - (Change) PrusaSlicer Creality Hallot printers with better values by default
   - (Fix) PrusaSlicer printers with TMSC values was not being ported to the file format
- (Fix) CXDLP: The light-off delay is not present on the format, instead the wait time before cure is used, this was leading to high wait and print times
- (Fix) Converting from files that aren't both TSMC compatible won't set the bottom and lift height
- (Fix) Error when changing the layer collection with another with higher layer count than the previous
2021-08-22 23:20:23 +01:00
Tiago Conceição 4cd762a53f Merge pull request #272 from tslater2006/master
Prevent initializer exception if file is not present
2021-08-22 15:49:43 +01:00
tslater2006 459a9f6499 Prevent initializer exception if file is not present 2021-08-22 09:36:28 -05:00
Tiago Conceição 388b9211ef v2.19.4
- (Fix) CTBv2: Corrupt and unprintable file when saving
2021-08-22 04:13:29 +01:00
Tiago Conceição 50cd48021d Fix logic 2021-08-22 04:10:30 +01:00
Tiago Conceição 90a9cc3ba3 v2.19.3
- (Fix) CTB: Corrupt and unprintable file when saving (#270)
2021-08-22 04:06:08 +01:00
Tiago Conceição 926410915b Update CTBEncryptedFile.cs 2021-08-22 02:20:41 +01:00
Tiago Conceição bc0c51d1c2 Refactorings 2021-08-22 02:18:35 +01:00
Tiago Conceição 7d1884282f Cleanup 2021-08-22 02:16:57 +01:00