Giter VIP home page Giter VIP logo

sn4k3 / uvtools Goto Github PK

View Code? Open in Web Editor NEW
1.1K 31.0 103.0 730.58 MB

MSLA/DLP, file analysis, calibration, repair, conversion and manipulation

License: GNU Affero General Public License v3.0

C# 95.68% Batchfile 0.03% PowerShell 0.73% Rich Text Format 2.23% Shell 0.69% G-code 0.04% Python 0.05% C++ 0.54%
prusaslicer resin-3d-printers 3d-printing resin-printer convertion prusa-sl1 cbddlp photon phz cws

uvtools's Introduction

UVtools

License GitHub repo size Code size Total code Nuget GitHub release (latest by date including pre-releases) Downloads Chocolatey GitHub Sponsors

Download the latest version at:

To auto install on Windows (package manager):

  • Winget: winget install -e --id PTRTECH.UVtools
  • Chocolatey: choco install -y uvtools

Note: Winget is included on Windows 10 with recent updates and Windows 11 by default.

To auto install on Linux:

[ "$(command -v apt)" -a -z "$(command -v curl)" ] && sudo apt-get install -y curl 
[ "$(command -v dnf)" -a -z "$(command -v curl)" ] && sudo dnf install -y curl
[ "$(command -v pacman)" -a -z "$(command -v curl)" ] && sudo pacman -S curl
[ "$(command -v zypper)" -a -z "$(command -v curl)" ] && sudo zypper install -y curl
bash -c "$(curl -fsSL https://raw.githubusercontent.com/sn4k3/UVtools/master/Scripts/install-uvtools.sh)"

To auto install on MacOS:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/sn4k3/UVtools/master/Scripts/install-uvtools.sh)"

To downgrade to a previous version:

# Replace x.x.x by the version you want to install
bash -c "$(curl -fsSL https://raw.githubusercontent.com/sn4k3/UVtools/master/Scripts/install-uvtools.sh)" -- x.x.x

MSLA/DLP, file analysis, calibration, repair, conversion and manipulation

This simple tool can give you insight of supports and find key failures.
Did you forget what resin or other settings you used on a project? This can also save you, check every setting that were used with or simply change them!

GUI Screenshot GUI Screenshot Islands

Why this project?

I don't own a Prusa SL1 or any other resin printer, for now Iā€™m only a FDM user with Prusa MK3 and a Ender3. PrusaSlicer is my only choose, why? Because I think it's the best and feature more, at least for me, simple but powerful.

So why this project? Well in fact Iā€™m looking for a resin printer and i like to study and learn first before buy, get good and don't regret, and while inspecting i found that resin printers firmwares are not as universal as FDM, too many file formats and there before each printer can use their own property file, this of course limit the software selection, for example, only PrusaSlicer can slice SL1 files. So with that in mind I'm preparing when I get a resin printer in future I can use PrusaSlicer instead of others. I've explored the other slicers and again, no one give me joy, and i feel them unstable, many users slice model on PrusaSlicer just to get those supports and export STL to load in another, that means again PrusaSlicer is on the win side, the problem is they can't slice directly on PrusaSlicer, so, in the end, my project aims to do almost that, configure a printer on PrusaSlicer, eg: EPAX X1, slice, export file, convert SL1 to native printer file and print.

Please note I don't own any resin printer! All my work is virtual and calculated, so, use experimental functions with care! Once things got confirmed a list will show. But also, I need victims for test subject. Proceed at your own risk!

Features

  • View, modify and extract layer by layer
  • View, modify and extract thumbnails
  • Export file to a folder
  • View and edit all used properties/settings
  • Many tools to mutate and filter layers
  • Check for issues and repair/remove them as possible:
    • Islands
    • Overhangs
    • Resin traps
    • Suction cups
    • Touching bounds
    • Print height
    • Empty layers
  • Suggestions and auto corrections:
    • Layer height
    • Bottom layer count
    • Wait time before cure
    • Wait time after cure
    • Transition layer count
    • Model position
  • Convert format to another format
  • Calibration tests
  • Portable (No installation needed)

Known File Formats

  • SL1, SL1S (PrusaSlicer)
  • Photon, Photons, CBDDLP, CTB, PHZ, FDG, ZIP (Chitubox)
  • PWS, PW0, PWX, DLP, DL2P, PWMO, PWMA, PWMS, PWMX, PMX2, PWMB, PWSQ, PX6S, PM3, PM3N, PM3M, PM3R, PM5, PM5S, PWC (Photon Workshop)
  • JXS (GKone Slicer)
  • ZCode (UnizMaker)
  • ZCodex (Z-Suite)
  • CWS (NovaMaker), RGB.CWS (Nova Bene4 Mono / Elfin2 Mono SE)
  • XML.CWS (Wanhao Workshop)
  • MDLP (Makerbase MKS-DLP v1)
  • GR1 (GR1 Workshop)
  • CXDLP, CXDLPV4 (Creality Box)
  • GOO (Elegoo)
  • LGS (Longer Orange 10), LGS30 (Longer Orange 30), LGS120 (Longer Orange 120), LGS4K (Longer Orange 4K & mono)
  • Flashforge SVGX
  • Anet N4, Anet N7
  • QDT (Emake3D Galaxy 1)
  • OSLA (Open SLA universal binary file)
  • OSF (Vlare Open File Format)
  • NanoDLP (Zip)
  • UVJ (Vendor-neutral format for manual manipulation)
  • VDT (Voxeldance Tango), VDA.ZIP (Voxeldance Additive)
  • ZIP (Generic / Phrozen Zip)
  • Image files (png, jpg, jpeg, jp2, tif, bmp, pbm, pgm, ras, sr)

PrusaSlicer

  • Installation: https://github.com/sn4k3/UVtools/wiki/Setup-PrusaSlicer
  • Available printers: https://github.com/sn4k3/UVtools/tree/master/PrusaSlicer/printer
  • Available profiles:
    • From 0.01mm to 0.20mm
    • Light, Medium and Heavy Supports
  • Custom "Material Notes" and "Printer Notes" keywords:
    • TransitionLayerCount_xxx: Sets the number of transition layers
    • BottomLightOffDelay_xxx: Sets the bottom light off delay time in seconds
    • LightOffDelay_xxx: Sets the light off delay time in seconds
    • BottomWaitTimeBeforeCure_xxx: Sets the bottom wait time before cure in seconds
    • WaitTimeBeforeCure_xxx: Sets the wait time before cure in seconds
    • BottomWaitTimeAfterCure_xxx: Sets the bottom wait time after cure in seconds
    • WaitTimeAfterCure_xxx: Sets the wait time after cure in seconds
    • BottomLiftHeight_xxx: Sets the bottom lift height in millimeters
    • BottomLiftSpeed_xxx: Sets the bottom lift speed in millimeters/minute
    • BottomLiftHeight2_xxx: Sets the second bottom lift height in millimeters
    • BottomLiftSpeed2_xxx: Sets the second bottom lift speed in millimeters/minute
    • LiftHeight_xxx: Sets the lift height in millimeters
    • LiftSpeed_xxx: Sets the lift speed in millimeters/minute
    • LiftHeight2_xxx: Sets the second lift height in millimeters
    • LiftSpeed2_xxx: Sets the second lift speed in millimeters/minute
    • BottomWaitTimeAfterLift_xxx: Sets the bottom wait time after lift in seconds
    • WaitTimeAfterLift_xxx: Sets the wait time after lift in seconds
    • BottomRetractSpeed_xxx: Sets the bottom retract speed in millimeters/minute
    • BottomRetractHeight2_xxx: Sets the second bottom retract height in millimeters
    • BottomRetractSpeed2_xxx: Sets the second bottom retract speed in millimeters/minute
    • RetractSpeed_xxx: Sets the retract speed in millimeters/minute
    • RetractHeight2_xxx: Sets the second retract height in millimeters
    • RetractSpeed2_xxx: Sets the second retract speed in millimeters/minute
    • BottomLightPWM_xxx: Sets the bottom LED light power (0-255)
    • LightPWM_xxx: Sets the LED light power (0-255)
    • FILEVERSION_n: Sets the output file format version/revision
    • FILEFORMAT_xxx: Sets the output file format extension to be auto converted once open on UVtools
    • LAYERIMAGEFORMAT_xxx: Sets the layer image format required for the converted file if the format have multiple options (For Archives with PNG's)

Note that some variables will only work if the target format supports them, otherwise they will be ignored.
Replace the "xxx" by your desired value in the correct units

Command-line

UVtoolsCmd (Console) executable

Usage:
  UVtoolsCmd [command] [options]

Options:
  -q, --quiet     Make output silent but exceptions error will still show
  --no-progress   Show no progress
  --dummy         Do not save alterations to file
  --core-version  Show core version information
  --version       Show version information
  -?, -h, --help  Show help and usage information

Commands:
  set-properties <input-file> <property=value>                                            Set properties in a file or to it layers with new values
  run <input-file> <classes/files>                                                        Run operations, suggestions and/or scripts
  convert <input-file> <target-type/ext> <output-file>                                    Convert input file into a output file format by a known type or extension []
  extract <input-file> <output-folder>                                                    Extract file contents to a folder []
  copy-parameters <input-file> <target-files>                                             Copy print parameters from one file to another
  set-preview, set-thumbnail <input-file> <file path|layer index|:random-layer|:heatmap>  Sets and replace thumbnail(s) in the file [default: :heatmap]
  compare <input-file-a> <input-file-b>                                                   Compare two files and output the differences
  print-issues <input-file>                                                               Detect and print issues
  print-properties <input-file>                                                           Prints available properties
  print-gcode <input-file>                                                                Prints the gcode of the file if available
  print-machines                                                                          Prints machine settings
  print-formats                                                                           Prints the available formats

Note: On each command you can use -? to see specific command help and extra options

UVtools (UI) executable

  • Open file(s):
    • Syntax: UVtools <file1> [file2] [file3] ...
    • Example 1: UVtools C:\model.osla
    • Example 2: UVtools C:\model.zip D:\other_model.osla
    • Note: When a invalid file is pass, the program will open as default.
  • Redirect a command to UVtoolsCmd:
    • Syntax: UVtools --cmd <commands ...>
    • Example 1: UVtools --cmd convert C:\model.osla zip
    • Note: This can be used when UVtoolsCmd is not directly exposed, for example if you are running via a .AppImage.
      All commands will be redirected to UVtoolsCmd and the UI will not run. It still shows the terminal window.

Legacy

The following commands are the old way and commands under the UI executable, they will be removed in near future, try to not use them, please prefer UVtoolsCmd.

  • Convert a file into another type(s)
    • Syntax: UVtools -c/--convert <input_file> <output_file1_or_ext> [output_file2_or_ext] ...
    • Example 1: UVtools -c model.zip osla
    • Example 2: UVtools -c model.zip model_converted.osla
    • Example 3: UVtools --convert model.zip model_converted.osla model_converted.zcode
    • Note: Nothing happen when providing wrong files, will quit.
  • Extract a file to a folder
    • Syntax: UVtools -e/--extract <input_file> [output_folder]
    • Example 1: UVtools -e model.zip
    • Example 2: UVtools -e model.zip mymodel
    • Example 3: UVtools --extract model.zip .
    • Note: Nothing happen when providing wrong files/folder, will quit.
  • Export a file to a 3D mesh
    • Syntax: UVtools --export-mesh <input_file> [output_mesh_file]
    • Example 1: UVtools --export-mesh model.zip
    • Example 2: UVtools --export-mesh model.zip model_exported.stl
    • Note: Nothing happen when providing wrong files, will quit.
  • Run a operation and save the file
    • Syntax: UVtools --run-operation <input_file> <operation_file.uvtop>
    • Example 1: UVtools --run-operation model.zip MyMorph.uvtop
    • Note: Nothing happen when providing wrong files, will quit.
  • Run a script and save the file
    • Syntax: UVtools --run-script <input_file> <script_file.cs>
    • Example 1: UVtools --run-script model.zip myScript.cs
    • Note: Nothing happen when providing wrong files, will quit.
  • Copy print parameters from one file to another
    • Syntax: UVtools --copy-parameters <from_file> <to_file>
    • Example 1: UVtools --copy-parameters model.zip otherfile.zip
    • Note: Nothing happen when providing wrong files, will quit.

Requirements

Windows

  1. Windows 7 SP1 or greater
    1. If on Windows 10/11 N or NK:
      • Media Feature Pack must be installed
      • Press Windows + R
      • Type: appwiz.cpl (and press Enter key)
      • Click on: Turn Windows features on or off
      • Check the "Media Extensions" and click Ok
  1. 8GB RAM or higher + 512MB per CPU core
  2. 64 bit System
  3. 1920 x 1080 @ 100% scale as minimum resolution

Linux

  1. 8GB RAM or higher + 512MB per CPU core
  2. 64 bit System
  3. 1920 x 1080 @ 100% scale as minimum resolution

Installing the dependencies

Copy the following script, paste and run on a terminal:
(Required if you didn't use the auto installer or if it failed to detect and install dependencies)

[ "$(command -v apt-get)" -a -z "$(command -v curl)" ] && sudo apt-get install -y curl 
[ "$(command -v pacman)" -a -z "$(command -v curl)" ] && sudo pacman -S curl
[ "$(command -v dnf)" -a -z "$(command -v curl)" ] && sudo dnf install -y curl
[ "$(command -v zypper)" -a -z "$(command -v curl)" ] && sudo zypper install -y curl
sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/sn4k3/UVtools/master/Scripts/install-dependencies.sh)"

To run UVtools open it folder on a terminal and call one of:

  • Double-click UVtools file
  • ./UVtools
  • bash UVtools.sh
  • dotnet UVtools.dll [For universal package only, requires dotnet-runtime]
  • As a practical alternative you can create a shortcut on Desktop

If you downloaded the .AppImage package variant you must set run permissions to it before attempt to run it:
AppImage permissions

Mac

  1. macOS 10.15 Catalina or higher
  2. 8GB RAM or higher + 512MB per CPU core
  3. For Mac M1/M2 (ARM):
    1. Install via the auto installer

To run UVtools open it folder on a terminal and call one of:

  • Double-click UVtools file
  • ./UVtools.app/Contents/MacOS/UVtools
  • bash UVtools.app/Contents/MacOS/UVtools.sh
  • As a practical alternative you can create a shortcut on Desktop

How to use

There are multiple ways to open your file in UVtools:

  1. Open UVtools and load your file (CTRL + O) (File -> Open)
  2. Open UVtools and drag and drop your file inside window
  3. Drag and drop file into UVtools.exe
  4. Set UVtools the default program to open your files

Library -> Developers

Are you a developer? This project include a .NET 6.0 library (UVtools.Core) that can be referenced in your application to make use of my work. Easy to use calls that allow you work with the formats. For more information navigate main code to see some calls.

Nuget package: https://www.nuget.org/packages/UVtools.Core

Nuget

dotnet add package UVtools.Core

Scripting:

Develop and build from Source

Build directions
The fastest way to compile the project is by run the build/compile.bat, however if you wish to develop with visual studio follow the following steps:

  1. Install Visual Studio and include .NET development support
  2. Install the .NET 6.0 SDK if not included on previous installation
  3. Install the Avalonia for Visual Studio:
  4. Install the Wix Toolset: (Required only for MSI build, optional)
  5. Open UVtools.sln
  6. Build

TODO

  • More file formats
  • Clean up & performance (always)
  • See features request under GitHub

Support my work / Donate

All my work here is given for free (OpenSource), it took some hours to build, test and polish the program. If you're happy to contribute for a better program and for my work i will appreciate the tip.
Use one of the following methods:

GitHub Sponsors Donate PayPal

Contributors

GitHub contributors
Contributors

uvtools's People

Contributors

aspadm avatar bgyarfas avatar byancey avatar dgm3333 avatar finnnk avatar muesli avatar nicarran avatar qbort avatar sn4k3 avatar theassassin avatar tslater2006 avatar vedantmgoyal9 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

uvtools's Issues

Save As option should always be available

Is your feature request related to a problem? Please describe.

The Save As option is grayed out unless the file has been modified. This makes sense for "Save", but in the case of "Save As", the option should always be available, allowing you to save the current unmodified file under a different name.

[BUG] New W/S hotkeys eat keystrokes inside text input field

Describe the bug
The 'text' pixel editor can no longer receive the W or S keystrokes when typing in the text field.

To Reproduce
Steps to reproduce the behavior:

  1. Pixel editor -> Text -> Text:
  2. Type 'qwer asdf'
  3. See that you've only typed 'qer adf'

Home/end work as expected for text field, but also jump to top/bottom layer at same time.

Expected behavior
All (?) hotkeys disabled while typing in text field

Desktop (please complete the following information):

  • OS: Win 10 Pro x64 1803
  • UVTools 0.8.2.2

Keep up the great work! I was thrilled by the region-of-interest addition.

[BUG] File with "Printer absolute correction" other than zero won't open

Describe the bug
When attempting to load a file from PrusaSlicer where the "Printer absolute correction" setting is not zero, it never loads. The "Loading..." dialog just keeps waiting.

To Reproduce
Steps to reproduce the behavior:

  1. On the "Printer Settings" tab of PrusaSlicer, set "Printer absolute correction:" to -0.05.
  2. Slice and export.
  3. Open the exported file with UVtools
  4. It never opens.

Expected behavior
I expect the file to open and for the correction to be applied.

Desktop (please complete the following information):

  • OS: Windows 10 Pro v1803

I want to decrease the size of walls, similar to "Erode" in UVtools, but I would like to do so by a small amount to calibrate the parts from the printer. For example, I printed a 10mm x 10 mm open-ended box with 1 mm walls. The walls measure around 1.1 mm thick, and the box width measures around 10.1 mm.

Looking at the .png files in the .sl1 output file, it appears that "Printer absolute correction" is working as expected.

In "SL1File.cs", variable "AbsoluteCorrection" is typed as a byte, but it should probably be a float. I confirmed that setting "Printer absolute correction" to 1 in PrusaSlicer allows the file to open, and the layer images are inflated by 1 mm.

Chitubox Format Not Working

Hello,

I have generated a .SL1 file and I am trying to convert it to .CTB for my Elegoo Mars Pro. When I import the .SL1 file, everything looks ok. But after converting to .CTB, the .CTB file looks completely corrupted when I reopen it in UVtools for viewing and in the sliced model preview in Chitubox. I think something is wrong with the way UVTools is converting SL1 -> CTB. The problem also occurs with .CBBDLP.

How to replicate the issue:
Download and import my SL1 file into UVTools and export as .CTB, then import the .CTB file to view the results.
Microfluidic50umTopSUPPORT_Tough0.025mm_SL1_5h51m.sl1.zip

Also try slicing your own .SL1 file and converting it to .CTB.

[BUG] Circle overlay in pixel editor is weird

Describe the bug
The overlay on mouseover is weird if the thickness of the circle is not -1 and the circle has a large diameter

To Reproduce
Steps to reproduce the behavior:

  1. Enable pixel editor, Go to pixel editor tab

  2. Set:
    image

  3. Mouse over in the layer holding shift

  4. The mouse over is not a circle, but a square with a circle combined

The pixels are modified correctly, it is just the overlay on mouse over

[BUG] The documentation is incomplete for Linux and Mac

Describe the bug
The documentation for non-Windows operating systems is incomplete. This program looks awesome and I'd love to use it, but unfortunately I can't figure out how to get it running on Mac/Linux. I ran UVTools.sh but I get this error:

Could not execute because the specified command or file was not found.
Possible reasons for this include:
  * You misspelled a built-in dotnet command.
  * You intended to execute a .NET Core program, but dotnet-UVtools.dll does not exist.
  * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.

Maybe there are missing steps in the documentation that would allow me to run the application? Thank you!

[FEATURE REQUEST] Remember last selected file type

Is your feature request related to a problem? Please describe.
Every time I use the program it's for phz files, and every time I open a file I have to select phz from the dropdown menu. Most people will only be working with one type of file and will have the same issue.

Describe the solution you'd like
Program should remember last selected filetype and automatically select that one.

Additional context
Not a huge issue, but would be nice.

[BUG] CWS Export

I just discovered this after reverse engineering the CWS format used by the Nova3D ELFIN, I'd love to use it since prusa slicer seems real good at auto supports (I'm lazy) but the G-Code you generate seems to be off.
The delays should be expressed in ms not seconds (at least in the 'original' NovaMaker files).

An example slice (0.035 mm profile):
;<Slice> 23 M106 S255 ;<Delay> 6 M106 S0 ;<Slice> Blank G1 Z4 F120 G1 Z-3.97 F120 -> other slices have 3.96 looks like a rounding problem to me ;<Delay> 6

The 0.035 mm settings leads to some slices of 0.04 and others of 0.03 but never 0.035 this also seems like a bug.

I'd fix it and send a pull request if I was familiar with a C# workflow but all I can offer is my small documentation on the format and some example files working on my printer I build with a python script.

The aforementioned documentation off the original G-Code https://github.com/AlexChanson/ELFIN_Z-Suite_Comaptibility/blob/master/format.md and a calibration cube I printed https://drive.google.com/file/d/1ZeBp4iQf6iu2IWkuXzVdufT12FI26LOC/view?usp=sharing seems to be 5% too big along the Y axis but otherwise printed fine.

[FEATURE REQUEST] Erode bottom layers only

Is your feature request related to a problem? Please describe.
When printing on SLA printers the bottom layers must be over exposed to adhere to the build plate. This causes these layers to expand.

Describe the solution you'd like
To prevent this expansion from making the bottom layers larger than the normal layers, I would like to be able to erode just the bottom layers.

Additional context
Adding a checkbox to the erode menu to have it operate on just the bottom layers to be perfect.

[DOCUMENTATION] Text fixes

Very minor.

Describe the bug
Readme currently says:
"Under Menu click -> About -> Install profiles into PrusaSlicer"
"This project include a .NET Core library (PrusaSL1Reader)"

and in the program, the tooltip for Pixel Edit
"Righ click"

Expected behavior
"Help -> Install profiles into PrusaSlicer"
"This project includes a .NET Core library (UVtools)"
"Right click"

[BUG] Nova3D Elfin Machine settings and cws file

  1. Elfin Machine profile settings are not correct:
    Display Width : 131mm / Height : 73mm
    Screen X: 2531 / Y: 1410

  2. The exported cws file reports corrupted by the printer, i think it is because of the file naming inside the zip.

AFAIK, exported files inside the zip (cws) must all be named 'slice':
slice.conf
slice.gcode
slice00000.png
slice00001.png
etc..
(note: slice(5 digits).png)

Regards,
Rui

[FEATURE REQUEST] 3D View from slice

Is your feature request related to a problem? Please describe.
When fixing problems with a file, sometimes it's handy to be able to visualise the layers in 3 dimensions.

Describe the solution you'd like
Ability to view the file in 3D as rendered voxels up to a certain layer.

Describe alternatives you've considered
The Photon File Validator tool has functionality to do this, but is pretty clunky in execution. Slicers often allow this visualisation too (although they use the original STL not the sliced version for visualisation - which wouldn't be much use when trying to see the effects of pixel edits).

[BUG] Crash on launch

The application does not launch, generates a crash dump. OS is updated windows 10. I also tried with 8.0 since I saw the error was referencing a path that wasn't on my computer so I thought the path was hardcoded by dev mistake, but since both latest versions had the same error, I'm not so sure anymore.
I have tried to update NET framework, but I already had a more recent version.

Crash dump:

[UVtools]
Date=12/09/2020 05:58:08
Application=UVtools 0.8.1.0
ExecutablePath=D:\Program Files (x86)\UVTools\UVtools.exe
Company=PTRTECH

########################
##        Error       ##
########################
[Exception1]
Message=The type initializer for 'Emgu.CV.MatInvoke' threw an exception.
StackTrace=   at Emgu.CV.MatInvoke.cveMatCreate()
   at UVtools.GUI.FrmMain..ctor() in D:\Tiago\Dropbox\Programming\C#\UVtools\UVtools.GUI\FrmMain.cs:line 97
   at UVtools.GUI.Program.Main(String[] args) in D:\Tiago\Dropbox\Programming\C#\UVtools\UVtools.GUI\Program.cs:line 90
TargetSite=IntPtr cveMatCreate()
Source=Emgu.CV.Platform.NetStandard
HelpLink=

[Exception2]
Message=The type initializer for 'Emgu.CV.CvInvoke' threw an exception.
StackTrace=   at Emgu.CV.CvInvoke.CheckLibraryLoaded()
   at Emgu.CV.MatInvoke..cctor()
TargetSite=Boolean CheckLibraryLoaded()
Source=Emgu.CV.Platform.NetStandard
HelpLink=

[Exception3]
Message=Unable to load DLL 'cvextern': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
StackTrace=   at Emgu.CV.CvInvoke.RedirectError(CvErrorCallback errorHandler, IntPtr userdata, IntPtr prevUserdata)
   at Emgu.CV.CvInvoke..cctor()
TargetSite=IntPtr RedirectError(CvErrorCallback, IntPtr, IntPtr)
Source=Emgu.CV.Platform.NetStandard
HelpLink=



########################
## System Information ##
########################
[System]
OperativeSystem=Windows 8 x64
ProcessorCount=12


########################
##     Open Forms     ##
########################
[Forms]


########################
## Loaded Assemblies  ##
########################
[mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]
   Location=C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll

[UVtools, Version=0.8.1.0, Culture=neutral, PublicKeyToken=null]
   Location=D:\Program Files (x86)\UVTools\UVtools.exe

[System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]
   Location=C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll

[System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]
   Location=C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll

[System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]
   Location=C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll

[ApplicationManagement, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]
   Location=D:\Program Files (x86)\UVTools\ApplicationManagement.dll

[UVtools.Core, Version=0.8.1.0, Culture=neutral, PublicKeyToken=null]
   Location=D:\Program Files (x86)\UVTools\UVtools.Core.dll

[netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51]
   Location=C:\Windows\Microsoft.Net\assembly\GAC_MSIL\netstandard\v4.0_2.0.0.0__cc7b13ffcd2ddd51\netstandard.dll

[Emgu.CV.Platform.NetStandard, Version=4.4.0.4061, Culture=neutral, PublicKeyToken=7281126722ab4438]
   Location=D:\Program Files (x86)\UVTools\Emgu.CV.Platform.NetStandard.dll

[Cyotek.Windows.Forms.ImageBox, Version=1.2.0.0, Culture=neutral, PublicKeyToken=58daa28b0b2de221]
   Location=D:\Program Files (x86)\UVTools\Cyotek.Windows.Forms.ImageBox.dll

[ObjectListView, Version=2.9.1.25410, Culture=neutral, PublicKeyToken=b1c5bf581481bcd4]
   Location=D:\Program Files (x86)\UVTools\ObjectListView.dll

[System.Runtime.InteropServices.RuntimeInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]
   Location=C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.InteropServices.RuntimeInformation\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Runtime.InteropServices.RuntimeInformation.dll

[System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]
   Location=C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll

[System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]
   Location=C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll

[System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]
   Location=C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll

Cancel Operations should leave layers unmodified

Is your feature request related to a problem? Please describe.

When a long operation that iterates over and modifies a range of layers is cancelled, it typically leaves the layers that were modified before the cancellation in their modified state. It would be nice if cancel left all layers in the state they were in before the operation was cancelled.

Describe the solution you'd like
Easiest approach is probably to keep a copy of the original layers as they are modified, and in the event of a cancel, restore those layers to their original state.

Additional context

This mechanism could also be extended to add an "Undo Last [operation]" feature, allowing you to revert the last operation even after it has completed.

[BUG] Elegoo Mars profile does not work

The Elegoo Mars profile does not appear to output correct parameters for the sliced file.

The exported .sl1 file from PrusaSlicer looks fine when imported into UVtools, and the file looks fine when converted to .cbddlp and imported to UVtools, but when that file is imported into ChiTuBox the displayed geometry does not look correct. The file prints fine, but the geometry appears stretched.

To Reproduce

  1. Slice a model in PrusaSlicer using the UVtools Elegoo Mars profile
  2. Export .sl1 file from PrusaSlicer
  3. Import .sl1 file into UVtools
  4. In UVtools convert the .sl1 file to .cbddlp
  5. Import the .cbddlp file into ChiTuBox

Expected behavior

I expect the geometry on the imported file to be consistent with the sliced information.

Screenshots

image

This is the model in PrusaSlicer.

image

And this is the model when imported into ChiTuBox. As you can see the model has been stretched.

Files

I have used the Ameralabs Town calibration part.

Desktop (please complete the following information):

Windows 10 build 19041

[BUG] Resin trap reported on exterior of model

Describe the bug
Resin trap reported that's actually completely open to the exterior of the model.

To Reproduce
Steps to reproduce the behavior:

  1. Issues tab
  2. Resin trap 4, which seems to be only the left (y=1300) basin, judging from what the repair tool changes
  3. Observe that the 'trapped' area is actually open to the sky, ie all layers above that area to the top are completely empty in that region

Expected behavior
Resin trap is only reported for 1-3, which are real.
Left basin (y=1300) acts like right basin (y=1264).

Files
DOG_STL_2.zip

Desktop (please complete the following information):

  • OS: Win 10 Pro x64 1803
  • UVtools 0.6.3.3

[BUG] Longer Orange 30 and Lychee Slicer

Describe the bug
When I open a file silced in Lychee Slicer it looks incorrect.

To Reproduce
Steps to reproduce the behavior:

  1. Install Lychee Slicer (free version; v3.0.11 at this time).
  2. Add Longer Orange 30 printer.
  3. Slice proposed model with default settings.
  4. Open it in UV Tools.

(my file in the bottom)

Screenshots
image

Files
Here is my *.lgs30 file sliced with Lychee Slicer (if needed).

[BUG] New unsupported islands after repair

Describe the bug
After using the repair tool I have quite a lot issues that within a support there are layers without pixels.

To Reproduce
I use Chitubox 1.7.0 as slicer for my Elegoo Saturn. The file is saved as .ctb file.

Expected behavior
There shouldn't be empty layers within a support after using the repair function

Screenshots

Files
I do not know how to upload files to Github but I can provide a file where I have the issue

Desktop (please complete the following information):

  • OS: Win 10 64 bit

Cancelling a File Save/Save As operation leaves an invalid file behind

Describe the bug
When saving a file via Save or Save As, if the operation is cancelled, the partially written file is left behind. In the case of Save, this leaves the original file in a corrupted state. For Save As, it just leaves an extra corrupted file.

To Reproduce
Steps to reproduce the behavior:

  1. Load a file
  2. Modify file
  3. Click on Save or Save As
  4. Click cancel before save operation is completed.

The partially written file is present in the files system, but is not a valid file.

Expected behavior

A cancel operation for "Save" should leave the original file unmodified.

A cancel operation for "Save As" should not leave the partially written file on the filesystem.

In both of the above cases, if the file is written to a temporary file, and then copied to the final file location only after the write is complete, the temporary file can simply be deleted if the operation is canceled. In the case of Save, the original file is never modified and in the case of Save As, the new file is never actually created.

[FEATURE REQUEST] Possible overhang detection

Awesome little tool! I was using PhotonFileValidator but this is miles ahead of that one. I just got a new cheap creality ld002-r and the lack of tools is troublesome, it is like china is overtaking the market from the start with some working/cheap but also buggy solutions so it is inspiring to see some tools like this popping

Describe the solution you'd like
The island and resintraps are cool, but "possible overhangs" would be the most useful type of detection. Basically any "next/previous" big groups of pixels could be a possible weakpoint.

Screenshots
image

BTW the creality printer, for the price is surprising, I mean the firmware and chitubox has some bugs but nothing compared to my first fdm, that was a 2k USD makerbot!

[FEATURE REQUEST] Recursive island repair

Since an island could be part of an overhanged feature, would not be logic to have a checkbox below "Repair islands" / "Recursive repair" that just repeats the repair process until no more issues are removed? (just a very simple loop)

[BUG] No shortcuts on programs/desktop when using UVtools_X.X.X.X.msi

Describe the bug
There is no icon created anywhere to access UVtools.

To Reproduce
Steps to reproduce the behavior:

  1. Install UVtools_v0.8.2.4.msi
  2. You need to execute "C:\Program Files (x86)\UVtools\UVtools.exe" directly

Expected behavior
Icon should be create on desktop and/or start menu

[BUG] Issues with custom values in printer notes

In the LookupCustomValues method in SL1File.cs, it searches for the custom values by string with an underscore added (i.e., "LiftHeight_"). This fails, as it finds "BottomLiftHeight_" and uses that value. The same occurs for "LiftSpeed_".

Also, I haven't found the code yet, but when importing the printer notes, it appears to truncate decimals. For example, I have "BottomLiftHeight_8.5" in the printer notes, but in the PrinterNotes string, the ".5" is not present.

Use 4-connected-neighbor approach when evaluating islands

Is your feature request related to a problem? Please describe.

In comparing result of islands identified by UVTools against islands identified by Photon Validator, I noticed that UVTools was missing islands that Photon Validator was finding. On closer inspection, this appears to be related to components that are connected only by a diagonal pixel, as below:

0000000000
0111100000
0111100000
0000011110
0000011110
0000000000

Photon Validator treats the above as two components, and evaluates each component's island status independently. UVTools, on the other hand, treats this as one component, and evaluates it's island status based on that single component, such that if one side is well supported, the other side could be completely unsupported with effectively no bond to the supported portion of the component.

The solution for this is to use the 4-connected neighbors approach when detecting individual components rather than using the 8-connected neighbors approach. That will ensure that components connected only by a diagonal will always be detected and treated as 2 (or more) separate components.

UVTools is currently using a combination of OpenCV's findContours and drawContours functions to identify individual components in a layer, and unfortunately, these functions will always uses 8-connected neighbors. There is currently no way to configure them to use 4-connected neighbors. However, OpenCV does have an alternative function called connectedContours which can take a parameter to specify 4 vs. 8 neighbor evaluation. While the output of this function differs from findContour/drawContour, it can be used in a similar fashion to detect individual components within the layer.

Describe the solution you'd like
I have already implemented a solution for this issue for your consideration to include in the master branch. I will submit a push request for it once I have submitted this feature request.

My solution replaces calls to findContour and drawContour with a single call to connectedComponents, and also makes the necessary changes to the supporting logic to work with connectedComponents. The general approach for island detection is largely unchanged from the current code. I have also not modified any code not related to island detection specifically, so detection of resin traps, for example, still relies on findContour and drawContour.

I have added a configuration item to the islandDetectionConfig which will allow the setting for 4-neighbor vs. 8-neighbor to be toggled. This setting is not currently plumbed into the GUI, but changing the value in the code will allow island detection to be switched between the legacy 8-neighbor and new 4-neighbor modes (default is 4-neighbor).

I have tested has these changes in my local environment, and I have verified that when set to 8-neighbor mode, the island detection results are identical to the current baseline behavior for UVTools. This validates that these changes don't functionally impact the results of UVTools island detection. In this mode, components connected by a single diagonal are treated as a single component, resulting in fewer islands being detected as compared to 4-neighbor mode.

I have also verified that when set to 4-neighbor mode (default in my commit), the island detection results are functionally identical to Photon Validator. UVTools actually reports more issues by count in this mode as compared to Photon Validator, but this is due to the fact that Photon Validator collapses all islands on the same layer into a single issue, whereas, UVTools adds a separate issue for each island, even when they share a layer. I have walked through every island on a rather large model with a good number of islands and verified that UVTools and Photon Validator identify exactly the same islands within the model when this mode is enabled.

I propose that this change be incorporated in to UV Tools, either as the default, or as a configurable option in the GUI.

Describe alternatives you've considered

Screenshots

Additional context

[BUG] .cbddlp opened in chitubox swap x/y axes

Describe the bug
Opening uvtool's cbddlp in chitubox displays with the x and y axes swapped.
However, the files print correctly.
This bug has existed for a couple months at least, but 100% of my prints during that time work as expected, even though they display incorrectly in chitubox.

To Reproduce
Steps to reproduce the behavior:

  1. Use Elegoo Mars printer in Prusaslicer
  2. Export file as sl1
  3. Use UVTools to convert sl1 to cbddlp
  4. Open cbddlp in chitubox

Expected behavior
3d reconstruction in chitubox looks accurate, instead of swapping x/y axes.

Screenshots



Files
test-swap-axes.zip

Desktop (please complete the following information):
OS: Win 10 Pro x64 1803
UVTools 0.8.3.0 and earlier versions, through at least 0.4.2.1
Chitubox 1.7.0 and earlier versions, through at least 1.6.3

Additional context
I first noticed this right after chitubox had updated so I thought it was chitubox's fault, but today I confirmed that the problem existed even on uvtools 0.4.2.1 and chitubox 1.6.3 -- the first versions of uvtools and chitubox I used together. To do that, I uninstalled the elegoo mars printer, installed the printers from 0.4.2.1, redid the steps in 'to reproduce', and opened in chitubox 1.6.3 -- still had same behavior.

[BUG] Blurry UI

Describe the bug
UI is blurry on high dpi configurations

To Reproduce
Open the app on any machine with a dpi setting different than 100%, i.e. any new 4k laptop (150% or 200% is the usual default)

Screenshots
Up one is with high-dpi forced, low one is the blurry current one.
image

Additional context
The solution is not as simple as adding:

<System.Windows.Forms.ApplicationConfigurationSection>
      <add key="DpiAwareness" value="PerMonitorV2" />
      <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
  </System.Windows.Forms.ApplicationConfigurationSection>

to app.config, there are hardcoded sizes for the controls that dont scale properly :/

[FEATURE REQUEST] Layer Import

Is your feature request related to a problem? Please describe.
As far as I know, the only way to author a photon file from scratch is to use the Photon File Editor tool which is pretty clunky.

Describe the solution you'd like
Being able to import new layers (from appropriately sized PNG images) into existing files, or create a new file from a series of images would be super handy to manually create pixel perfect slices.

[FEATURE REQUEST] Apply mutations to a region of interest selection

I would find it extremely useful if I could apply different mutators to different areas of my sliced images. For example, I would like to test different erode parameters or pixel dimming settings at the same time during a single print. Here is how I envision an ideal workflow:

  1. Load up my build plate with a dozen identical test models, slice it, and then load it into UVtools.

  2. Use a marquee selection tool within UVtools to select an area of the build plate.

  3. Use the mutator tools as normal, but only apply the changes to the selected area.

  4. Repeat items 2 and 3 for each area of the build plate pertaining to each test model.

  5. Print all test models at once, making it fast and easy to evaluate the results.

A simple rectangular selection would probably be sufficient for most use cases, but the ability to create elliptical or arbitrary selections would be even more powerful.

Can't convert a file

Back with another bug that probably only affects me...

Whenever I try to convert a SL1 file to another format (mainly .photon but I've also tried .pws), I get this error;
image

I assume photon conversion is implemented so that probably isnt the issue... What I don't get is the second part of the error message. I can't even begin to understand what that means.

I've tried running as admin, didn't change anything.
What I'm doing in the meantime is saving as SL1 and then converting the the SL1 to Photon converter, but that's not optimal when UVtools could just do it for me.
Thank you for your help.

[BUG] Elfin (Number of Slices = x)" to ";Number of Slices = x"

I own an elfin printer and I use uvtools to convert sl1 to cws format. To make it work, I need to change in the gcode in the cws ";(Number of Slices = 2405)" to ";Number of Slices = 2405" ( remove () )

without it, the printed said "No 'Number of Slices' line in gcode file"

Thanks by the way for this super tool :)

Note: now I presently printing ... will give feedback if something else wrong

[FEATURE REQUEST] Erase drawing edits

Is your feature request related to a problem? Please describe.
I click to draw with e.g. an 8 pixel brush and misjudge exactly where I need to click.
If I notice immediately I can fix it by removing edits from the top of the list until it's fixed -- however, this wasn't intuitive.
But if I notice after doing several more edits it's very difficult to determine which ones would fix it.

Describe the solution you'd like
Erase edit mode - draw with cursor to return green or red pixels to the original unedited state

Describe alternatives you've considered
Cursor that shows bounds of area you're going to draw in would also help:
cursor

Additional context
The text for brush size should probably be "diameter ... px" instead of "area ... px2", since setting it to 5 gives you a 5x5 cursor of 25 px2 area.

Cancel with Save As makes partially written file the Active File

Describe the bug
When performing a Save As operation, if the operation is cancelled before the save completes, the paritially saved (and corrupted) file becomes the new active file in UV Tools (Listed in the title bar, and target of future Save operations).

To Reproduce
Steps to reproduce the behavior:

  1. Modify File via pixel add operation, for example.
  2. Click on Save As...it will auto generate name with "_copy" appended.
  3. Cancel Save operation
  4. Note the active filename listed in the title bar will now show the "_copy", though the file on the file system is only partial.

Expected behavior

If a Save As operation is canceled before it completes, the original file should probably remain the active file. Only make the new file active if the operation is allowed to run to completion.

[FEATURE REQUEST] - Add warning - File already exists do you want to overwrite

As it is right now when you open a file and modify it,

If you click save the software instantly overwrites the file with the same name.

Best practice is the software asks if the use wants to overwrite if you want to keep this method for the wild users you can add a config setting to suppress overwrite files check. but that should be something the user opts in

[BUG] Elegoo Mars Pro profile not working

Describe the bug
I don't know if it's a bug or a my misunderstanding but I have an Elegoo Mars Pro so I imported the Elegoo Mars 2 Pro profile into PrusaSlicer. When I try to print a model with this profile, my printer tell me the screen dimensions are mismatching. I tried with the Elegoo Mars profile and it works since those two printers have the same screen dimensions.

Expected behavior
Is this Elegoo Mars 2 Pro profile intended to cover the Elegoo Mars Pro or a new Elegoo Mars printer I'm still unaware of ?
To avoid misunderstanding, I suggest to add a new profile import choice named Elegoo Mars Pro with its real caracteristics.
image

Desktop (please complete the following information):

  • OS: Windows 10 x64 v2004

Prusa Profile Mars 2 Pro

Hi, i just received my Mars 2 Pro and maybe i found an error in the Profile for Prusa Slicer. It seems that the value's for the X and Y Axis are twisted. When comparing the Values with the Values from Chitubox they are switched. Is this intended, can it be ignored or should it be changed to match the Settings from Chitubox?

Failed to run with Mono on Mac [BUG]

Describe the bug
./mono /Users/amotsjonov/Downloads/UVtools_v0.6.7.1/UVtools.exe gives

WARNING: The Carbon driver has not been ported to 64bits, and very few parts of Windows.Forms will work properly, or at all
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'Emgu.CV.MatInvoke' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Emgu.CV.CvInvoke' threw an exception. ---> System.DllNotFoundException: cvextern assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) Emgu.CV.CvInvoke.RedirectError(Emgu.CV.CvInvoke/CvErrorCallback,intptr,intptr)
  at Emgu.CV.CvInvoke..cctor () [0x002fa] in <8bbe0921ca3f4d278fd57151609f0bb0>:0
   --- End of inner exception stack trace ---
  at Emgu.CV.MatInvoke..cctor () [0x00000] in <8bbe0921ca3f4d278fd57151609f0bb0>:0
   --- End of inner exception stack trace ---
  at Emgu.CV.Mat..ctor () [0x00000] in <8bbe0921ca3f4d278fd57151609f0bb0>:0
  at UVtools.GUI.FrmMain..ctor () [0x00000] in <acbc83e91056482ca0e570f4727ecef3>:0
  at (wrapper remoting-invoke-with-check) UVtools.GUI.FrmMain..ctor()
  at UVtools.GUI.Program.Main (System.String[] args) [0x00040] in <acbc83e91056482ca0e570f4727ecef3>:0

Running ./mono --arch=32 /Users/amotsjonov/Downloads/UVtools_v0.6.7.1/UVtools.exe gives Error: --arch=32 Failed to switch to './mono32'.

Running ./mono32 /Users/amotsjonov/Downloads/UVtools_v0.6.7.1/UVtools.exe gives zsh: bad CPU type in executable: ./mono32

Desktop (please complete the following information):

  • OS: MacOS 10.15.6

Additional context
I haven't restarted after installing Mono yet (can't do it right now. Will check after restart.

[FEATURE REQUEST] Fill Cavities

Is your feature request related to a problem? Please describe.
When hollowing a model in the slicer, sometimes there are small cavities that can't use drain holes.

Describe the solution you'd like
The program should be able to go through layer by layer and find cavities that don't have holes, and fill these cavities with white pixels.

Describe alternatives you've considered
No easy alternatives to this except leave the cavities filled with liquid resin

Additional context
I realize this isn't a simple feature request. My initial thoughts on how to do this would be:
1: Flag all black pixels on the border of the 3d space
2: For each black pixel that is not flagged:
3: > If it is adjacent to a flagged pixel, flag it
4: If a pixel was flagged in the last step, go to 2
5: All black pixels that are not flagged are set to white

Noise Removal introduces Islands

I'm not sure if this is a bug, or just my lack of understanding of the settings, so submitting this first as a question rather than a bug.

I'm not certain exactly what the purpose of noise removal iterations is, but I'm finding that if I set this value to anything other than 0 (default is 1), it has a tendency to completely remove the tops of some of my light supports, resulting in the introduction of islands that otherwise were not islands. I can step layer-by-layer before and after performing a repair and observe this happening. My guess is that due to my light supports being very small, they are treated as noise for some reason once the tips get below a certain size, and are removed as a result, even though the tips are supported from below. No idea if this is the intended function of this setting, or just a bug.

For now, I've just changed the default value for noise iterations to 0 so that I don't have to remember to set it to 0 manually each time I run repair. What exactly is the purpose of the noise remove iterations, and should I be leaving this enabled and tweaking some other setting to address my issue of fine supports being clipped off?

Thanks!!

[BUG] Model is stretched after exporting to .ctb file

Describe the bug
Model's preview is stretched after exporting it to .ctb.
It may still works since the layer preview seems to be correct. I'll try to print it anyway.

To Reproduce
Steps to reproduce the behavior:

  1. Import sl1 file to UVtools
  2. Search for issues
  3. Repair ResinTrap issues
  4. Export to .ctb file
  5. Monitor the export on Chitubox

Expected behavior
Model's preview dimensions should remain the same after exports.

Screenshots
2020-08-11_12-15-12

Files
files.zip

Desktop (please complete the following information):

  • OS: Windows 10 x64 v2004

[BUG] Conversion of .sl1 to .cbddlp results in garbled, 'diagonal scanline' output

Description

The .cbddlp conversion results in a garbled file. Seems like the output you'd get if you serialized the layer's pixels in row order, but then reassembled them in column order (where row and column have different dimensions). The pixels from the rightmost shape end up on top, and leftmost on bottom.

To Reproduce

Steps to reproduce the behavior:

  1. Open 1_sliced-by-prusaslicer.sl1 testcase.zip in PrusaSL1Viewer
  2. Click on File -> Convert To -> Chitubox (.cbddlp ....) and save.
    My output for this step is the file 2_coverted-by-PrusaSL1Viewer.cbddlp.
  3. Open the saved file and view unexpected result

Expected Behavior

Pixels in the Chitubox output file are placed identically as in the SL1 input file.

Screenshots

sl1
cbddlp

Additional Information

This is not a display bug rendering Chitubox files; the converted file is similarly garbled in other chitubox viewers (Chitubox, Photon File Validator)

System Information

  • OS: Windows 10
  • PrusaSL1Viewer: 0.4.2.1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.