Skip to content

Commit

Permalink
v3.13.2
Browse files Browse the repository at this point in the history
- **UVJ:**
  - (Add) Properties: BottomWaitTimeBeforeCure, WaitTimeBeforeCure, BottomWaitTimeAfterCure, WaitTimeAfterCure, BottomWaitTimeAfterLift, WaitTimeAfterLift
  - (Add) Vendor key to the configuration to be able to save custom key-values from other softwares (#687)
- (Add) Layers properties: `CompletionTime`, `CompletionTimeStr`, `StartTime`, `StartTimeStr`, `EndTime`, `EndTimeStr` (#698)
- (Add) PrusaSlicer printer: Creality Halot Mage and Mage Pro
- (Add) Tool - Blur: Stack blur
- (Change) Tool - Timelapse: Increase wait time from 100s to 1000s maximum
- (Change) Settings: Allow to combine start maximized with restore windows position and size (#695)
- (Fix) File formats: Parse transition layer count from layers now only take into account decreasing times related to the previous layer
  • Loading branch information
sn4k3 committed May 6, 2023
1 parent 2c7ad09 commit aaa9c68
Show file tree
Hide file tree
Showing 22 changed files with 451 additions and 216 deletions.
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# Changelog

## 06/05/2023 - v3.13.2

- **UVJ:**
- (Add) Properties: BottomWaitTimeBeforeCure, WaitTimeBeforeCure, BottomWaitTimeAfterCure, WaitTimeAfterCure, BottomWaitTimeAfterLift, WaitTimeAfterLift
- (Add) Vendor key to the configuration to be able to save custom key-values from other softwares (#687)
- (Add) Layers properties: `CompletionTime`, `CompletionTimeStr`, `StartTime`, `StartTimeStr`, `EndTime`, `EndTimeStr` (#698)
- (Add) PrusaSlicer printer: Creality Halot Mage and Mage Pro
- (Add) Tool - Blur: Stack blur
- (Change) Tool - Timelapse: Increase wait time from 100s to 1000s maximum
- (Change) Settings: Allow to combine start maximized with restore windows position and size (#695)
- (Fix) File formats: Parse transition layer count from layers now only take into account decreasing times related to the previous layer

## 27/04/2023 - v3.13.1

- (Change) `Layer.IsBottomLayer` no longer calculate the value using the position of the layer, a new property `IsBottomLayerByHeight` is now used to get that result
Expand Down
3 changes: 2 additions & 1 deletion CREDITS.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,4 +75,5 @@
- James F Hammond
- Steven Woodward
- Piotr Czerkasow
- Kevin Bullmann
- Kevin Bullmann
- Robert Redden
42 changes: 42 additions & 0 deletions PrusaSlicer/printer/Creality Halot Mage CL-103L.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# generated by PrusaSlicer 2.5.2+win64 on 2023-05-05 at 21:41:15 UTC
absolute_correction = 0
area_fill = 50
bed_custom_model =
bed_custom_texture =
bed_shape = 0x0,228.1x0,228.1x128.3,0x128.3
default_sla_material_profile = Prusa Orange Tough 0.05
default_sla_print_profile = 0.05 Normal
display_height = 128.304
display_mirror_x = 0
display_mirror_y = 0
display_orientation = landscape
display_pixels_x = 7680
display_pixels_y = 4320
display_width = 228.096
elefant_foot_compensation = 0.2
elefant_foot_min_width = 0.2
fast_tilt_time = 5
gamma_correction = 1
high_viscosity_tilt_time = 10
host_type = octoprint
inherits = Original Prusa SL1
max_exposure_time = 120
max_initial_exposure_time = 300
max_print_height = 230
min_exposure_time = 1
min_initial_exposure_time = 1
print_host =
printer_model = SL1
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_HALOT-MAGE\nFILEFORMAT_ENCRYPTED.CTB\n\nSTART_CUSTOM_VALUES\nWaitTimeBeforeCure_2\nBottomLiftHeight_7\nLiftHeight_6\nBottomLiftSpeed_80\nLiftSpeed_80\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nEND_CUSTOM_VALUES
printer_settings_id =
printer_technology = SLA
printer_variant = default
printer_vendor =
printhost_apikey =
printhost_cafile =
relative_correction = 1,1
relative_correction_x = 1
relative_correction_y = 1
relative_correction_z = 1
slow_tilt_time = 8
thumbnails = 116x116,90x290,90x290
42 changes: 42 additions & 0 deletions PrusaSlicer/printer/Creality Halot Mage Pro CL-103.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# generated by PrusaSlicer 2.5.2+win64 on 2023-05-05 at 21:41:31 UTC
absolute_correction = 0
area_fill = 50
bed_custom_model =
bed_custom_texture =
bed_shape = 0x0,228.1x0,228.1x128.3,0x128.3
default_sla_material_profile = Prusa Orange Tough 0.05
default_sla_print_profile = 0.05 Normal
display_height = 128.304
display_mirror_x = 0
display_mirror_y = 0
display_orientation = landscape
display_pixels_x = 7680
display_pixels_y = 4320
display_width = 228.096
elefant_foot_compensation = 0.2
elefant_foot_min_width = 0.2
fast_tilt_time = 5
gamma_correction = 1
high_viscosity_tilt_time = 10
host_type = octoprint
inherits = Original Prusa SL1
max_exposure_time = 120
max_initial_exposure_time = 300
max_print_height = 230
min_exposure_time = 1
min_initial_exposure_time = 1
print_host =
printer_model = SL1
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_HALOT-MAGE-PRO\nFILEFORMAT_ENCRYPTED.CTB\n\nSTART_CUSTOM_VALUES\nWaitTimeBeforeCure_2\nBottomLiftHeight_7\nLiftHeight_6\nBottomLiftSpeed_80\nLiftSpeed_80\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nEND_CUSTOM_VALUES
printer_settings_id =
printer_technology = SLA
printer_variant = default
printer_vendor =
printhost_apikey =
printhost_cafile =
relative_correction = 1,1
relative_correction_x = 1
relative_correction_y = 1
relative_correction_z = 1
slow_tilt_time = 8
thumbnails = 116x116,90x290,90x290
15 changes: 9 additions & 6 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
- (Change) `Layer.IsBottomLayer` no longer calculate the value using the position of the layer, a new property `IsBottomLayerByHeight` is now used to get that result
- (Improvement) Tool - Double exposure: Increase the bottom layer count per cloned bottom layer
- (Improvement) Calibration - Exposure time finder: Set the absolute bottom layer count accordingly when also testing for bottom time
- (Improvement) Goo: Enforce Wait times or Light-off-delay flag based on property set
- (Fix) AnyCubic and Goo: `PerLayerSetting` flag was set inverted causing printer not to follow layer settings when it should and also the otherwise (#689)
- (Fix) Tool - Scripting: Prevent from reload UI multiple times when using profiles (#694)
- **UVJ:**
- (Add) Properties: BottomWaitTimeBeforeCure, WaitTimeBeforeCure, BottomWaitTimeAfterCure, WaitTimeAfterCure, BottomWaitTimeAfterLift, WaitTimeAfterLift
- (Add) Vendor key to the configuration to be able to save custom key-values from other softwares (#687)
- (Add) Layers properties: `CompletionTime`, `CompletionTimeStr`, `StartTime`, `StartTimeStr`, `EndTime`, `EndTimeStr` (#698)
- (Add) PrusaSlicer printer: Creality Halot Mage and Mage Pro
- (Add) Tool - Blur: Stack blur
- (Change) Tool - Timelapse: Increase wait time from 100s to 1000s maximum
- (Change) Settings: Allow to combine start maximized with restore windows position and size (#695)
- (Fix) File formats: Parse transition layer count from layers now only take into account decreasing times related to the previous layer

104 changes: 3 additions & 101 deletions Scripts/ImportPrusaSlicerData.ps1
Original file line number Diff line number Diff line change
@@ -1,109 +1,11 @@
Set-Location $PSScriptRoot\..
Write-Output 'PrusaSlicer Printers Instalation'
Write-Output 'This will replace printers, all changes will be discarded'

$input_dir = "$Env:AppData\PrusaSlicer"
$output_dir = 'PrusaSlicer'
$output_dir = Resolve-Path "$PSScriptRoot\..\PrusaSlicer" | select -ExpandProperty Path
$print_dir = 'sla_print'
$printer_dir = 'printer'

#$printers =
# 'UVtools Prusa SL1.ini',
# 'UVtools Prusa SL1S Speed.ini',
# 'EPAX E6 Mono.ini',
# 'EPAX E10 Mono.ini',
# 'EPAX E10 5K.ini',
# 'EPAX E10 8K.ini',
# 'EPAX X10 8K.ini',
# 'EPAX X1.ini',
# 'EPAX X1 4KS.ini',
# 'EPAX X1K 2K Mono.ini',
# 'EPAX X10.ini',
# 'EPAX X10 4K Mono.ini',
# 'EPAX X10 5K.ini',
# 'EPAX X133 4K Mono.ini',
# 'EPAX X133 6K.ini',
# 'EPAX X156 4K Color.ini',
# 'EPAX DX1 Pro.ini',
# 'EPAX DX10 Pro 5K.ini',
# 'EPAX DX10 Pro 8K.ini',
# 'Zortrax Inkspire.ini',
# 'Nova3D Elfin.ini',
# 'Nova3D Elfin2.ini',
# 'Nova3D Elfin2 Mono SE.ini',
# 'Nova3D Elfin3 Mini.ini',
# 'Nova3D Bene4.ini',
# 'Nova3D Bene4 Mono.ini',
# 'Nova3D Bene5.ini',
# 'Nova3D Whale.ini',
# 'Nova3D Whale2.ini',
# 'AnyCubic Photon.ini',
# 'AnyCubic Photon S.ini',
# 'AnyCubic Photon Zero.ini',
# 'AnyCubic Photon X.ini',
# 'AnyCubic Photon Ultra.ini',
# 'AnyCubic Photon Mono.ini',
# 'AnyCubic Photon Mono 4K.ini',
# 'AnyCubic Photon Mono SE.ini',
# 'AnyCubic Photon Mono X.ini',
# 'AnyCubic Photon Mono X 6K.ini',
# 'AnyCubic Photon Mono SQ.ini',
# 'Elegoo Mars.ini',
# 'Elegoo Mars 2 Pro.ini',
# 'Elegoo Mars 3.ini',
# 'Elegoo Mars C.ini',
# 'Elegoo Saturn.ini',
# 'Elegoo Jupiter.ini',
# 'Peopoly Phenom.ini',
# 'Peopoly Phenom L.ini',
# 'Peopoly Phenom Noir.ini',
# 'Peopoly Phenom XXL.ini',
# 'QIDI Shadow5.5.ini',
# 'QIDI Shadow6.0 Pro.ini',
# 'QIDI S-Box.ini',
# 'QIDI I-Box Mono.ini',
# 'Phrozen Shuffle.ini',
# 'Phrozen Shuffle Lite.ini',
# 'Phrozen Shuffle XL.ini',
# 'Phrozen Shuffle XL Lite.ini',
# 'Phrozen Shuffle 16.ini',
# 'Phrozen Shuffle 4K.ini',
# 'Phrozen Sonic.ini',
# 'Phrozen Sonic 4K.ini',
# 'Phrozen Sonic Mighty 4K.ini',
# 'Phrozen Sonic Mini.ini',
# 'Phrozen Sonic Mini 4K.ini',
# 'Phrozen Sonic Mini 8K.ini',
# 'Phrozen Transform.ini',
# 'Phrozen Sonic Mega 8K.ini',
# 'Kelant S400.ini',
# 'Wanhao D7.ini',
# 'Wanhao D8.ini',
# 'Wanhao CGR Mini Mono.ini',
# 'Wanhao CGR Mono.ini',
# 'Creality LD-002R.ini',
# 'Creality LD-002H.ini',
# 'Creality LD-006.ini',
# 'Creality HALOT-ONE CL-60.ini',
# 'Creality HALOT-SKY CL-89.ini',
# 'Creality HALOT-MAX CL-133.ini',
# 'Voxelab Polaris 5.5.ini',
# 'Voxelab Proxima 6.ini',
# 'Voxelab Ceres 8.9.ini',
# 'Longer Orange 10.ini',
# 'Longer Orange 30.ini',
# 'Longer Orange 120.ini',
# 'Longer Orange 4K.ini',
# 'Uniz IBEE.ini',
# 'FlashForge Explorer MAX.ini',
# 'FlashForge Focus 8.9.ini',
# 'FlashForge Focus 13.3.ini',
# 'FlashForge Foto 6.0.ini',
# 'FlashForge Foto 8.9.ini',
# 'FlashForge Foto 13.3.ini',
# 'FlashForge Hunter.ini'
#;

Write-Output 'PrusaSlicer Printers Instalation'
Write-Output 'This will replace printers, all changes will be discarded'
Write-Output $input_dir
Write-Output $output_dir

Expand Down
26 changes: 24 additions & 2 deletions UVtools.Core/Extensions/EmguExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ public static unsafe Span2D<T> GetDataSpan2D<T>(this Mat mat)
{
var step = mat.GetRealStep();
if (!mat.IsSubmatrix) return new(mat.DataPointer.ToPointer(), mat.Height, step, 0);
return new(mat.DataPointer.ToPointer(), mat.Height, step, mat.Step / mat.ElementSize - step);
return new(mat.DataPointer.ToPointer(), mat.Height, step, mat.Step / mat.DepthToByteCount() - step);
}

/// <summary>
Expand Down Expand Up @@ -238,7 +238,7 @@ public static unsafe Span<T> GetDataSpan<T>(this Mat mat, int length = 0, int of
{
if (mat.IsSubmatrix)
{
length = mat.Step * (mat.Height - 1) + mat.GetRealStep();
length = mat.Step / mat.DepthToByteCount() * (mat.Height - 1) + mat.GetRealStep();
}
else
{
Expand Down Expand Up @@ -364,6 +364,28 @@ public static void FillSpan(this Mat mat, Point position, int length, byte color

#region Get/Set methods

/// <summary>
/// Gets the number of bytes this <see cref="Mat"/> uses per data type (Depth)
/// </summary>
/// <param name="mat"></param>
/// <returns></returns>
/// <exception cref="ArgumentOutOfRangeException"></exception>
public static byte DepthToByteCount(this Mat mat)
{
return mat.Depth switch
{
DepthType.Default => 1,
DepthType.Cv8U => 1,
DepthType.Cv8S => 1,
DepthType.Cv16U => 2,
DepthType.Cv16S => 2,
DepthType.Cv32S => 4,
DepthType.Cv32F => 4,
DepthType.Cv64F => 8,
_ => throw new ArgumentOutOfRangeException()
};
}

/// <summary>
/// Step return the original Mat step, if ROI step still from original matrix which lead to errors.
/// Use this to get the real step size
Expand Down
20 changes: 2 additions & 18 deletions UVtools.Core/FileFormats/FileFormat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2843,24 +2843,7 @@ public float PrintTimeComputed
break;
}

var motorTime = layer.CalculateMotorMovementTime();
time += layer.WaitTimeBeforeCure + layer.ExposureTime + layer.WaitTimeAfterCure + layer.WaitTimeAfterLift;
if (SupportsGCode)
{
time += motorTime;
if (layer.WaitTimeBeforeCure <= 0)
{
time += layer.LightOffDelay;
}
}
else
{
time += motorTime > layer.LightOffDelay ? motorTime : layer.LightOffDelay;
}
/*if (lightOffDelay >= layer.LightOffDelay)
time += lightOffDelay;
else
time += layer.LightOffDelay;*/
time += layer.CalculateCompletionTime();
}
}

Expand Down Expand Up @@ -4053,6 +4036,7 @@ public ushort ParseTransitionLayerCountFromLayers()
ushort count = 0;
for (uint layerIndex = BottomLayerCount; layerIndex < LastLayerIndex; layerIndex++)
{
if (this[layerIndex].ExposureTime < this[layerIndex + 1].ExposureTime) break; // Increasing time related to previous layer, we want decreasing time only
if (Math.Abs(this[layerIndex].ExposureTime - this[layerIndex + 1].ExposureTime) < 0.009f) break; // First equal layer, transition ended
count++;
}
Expand Down
Loading

0 comments on commit aaa9c68

Please sign in to comment.