* (Add) FDG file format for Voxelab Printers (ezrec/uv3dp#129)
* (Add) PrusaSlicer printer: Voxelab Ceres 8.9
* (Change) Print time display to hours and minutes: 00h00m
This commit is contained in:
Tiago Conceição
2021-01-10 03:37:15 +00:00
parent 2f98eb600e
commit 17bdece1b5
15 changed files with 150 additions and 32 deletions
+4 -2
View File
@@ -1,8 +1,10 @@
# Changelog
## 07/01/2021 - v2.2.0
## 10/01/2021 - v2.2.0
* (Add) FDG file format for Voxelab Printers
* (Add) FDG file format for Voxelab Printers (ezrec/uv3dp#129)
* (Add) PrusaSlicer printer: Voxelab Ceres 8.9
* (Change) Print time display to hours and minutes: 00h00m
## 07/01/2021 - v2.1.3
+6 -5
View File
@@ -56,11 +56,12 @@ SET files[46]=Wanhao CGR Mono.ini
SET files[47]=Creality LD-002R.ini
SET files[48]=Creality LD-002H.ini
SET files[49]=Creality LD-006.ini
SET files[50]=Voxelab Polaris.ini
SET files[51]=Voxelab Proxima.ini
SET files[52]=Longer Orange 10.ini
SET files[53]=Longer Orange 30.ini
SET files[54]=Longer Orange4K.ini
SET files[50]=Voxelab Polaris 5.5.ini
SET files[51]=Voxelab Proxima 6.ini
SET files[52]=Voxelab Ceres 8.9.ini
SET files[53]=Longer Orange 10.ini
SET files[54]=Longer Orange 30.ini
SET files[55]=Longer Orange4K.ini
echo PrusaSlicer Printers Instalation
echo This will replace printers, all changes will be discarded
+37
View File
@@ -0,0 +1,37 @@
# generated by PrusaSlicer 2.2.0+win64 on 2021-01-09 at 22:10:08 UTC
absolute_correction = 0
area_fill = 50
bed_custom_model =
bed_custom_texture =
bed_shape = 0x0,192x0,192x120,0x120
default_sla_material_profile = Prusa Orange Tough 0.05
default_sla_print_profile = 0.05 Normal
display_height = 120
display_mirror_x = 1
display_mirror_y = 0
display_orientation = landscape
display_pixels_x = 3840
display_pixels_y = 2400
display_width = 192
elefant_foot_compensation = 0.2
elefant_foot_min_width = 0.2
fast_tilt_time = 5
gamma_correction = 1
inherits = Original Prusa SL1
max_exposure_time = 120
max_initial_exposure_time = 300
max_print_height = 200
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_VOXELAB\nPRINTER_MODEL_CERES_8.9\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_8\nLiftHeight_8\nBottomLiftSpeed_60\nLiftSpeed_60\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nFORMAT_FDG\nEND_CUSTOM_VALUES
printer_settings_id =
printer_technology = SLA
printer_variant = default
printer_vendor =
printhost_apikey =
printhost_cafile =
relative_correction = 1,1
slow_tilt_time = 8
thumbnails = 400x400,800x480
@@ -1,4 +1,4 @@
# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 01:27:58 UTC
# generated by PrusaSlicer 2.2.0+win64 on 2021-01-09 at 22:08:12 UTC
absolute_correction = 0
area_fill = 50
bed_custom_model =
@@ -25,7 +25,7 @@ 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_VOXELAB\nPRINTER_MODEL_POLARIS\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_65\nLiftSpeed_65\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
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_VOXELAB\nPRINTER_MODEL_POLARIS_5.5\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_65\nLiftSpeed_65\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nFORMAT_FDG\nEND_CUSTOM_VALUES
printer_settings_id =
printer_technology = SLA
printer_variant = default
@@ -1,4 +1,4 @@
# generated by PrusaSlicer 2.2.0+win64 on 2020-10-01 at 03:18:23 UTC
# generated by PrusaSlicer 2.2.0+win64 on 2021-01-09 at 22:08:28 UTC
absolute_correction = 0
area_fill = 50
bed_custom_model =
@@ -25,7 +25,7 @@ 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_VOXELAB\nPRINTER_MODEL_PROXIMA\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_60\nLiftSpeed_60\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nEND_CUSTOM_VALUES
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_VOXELAB\nPRINTER_MODEL_PROXIMA_6\n\nSTART_CUSTOM_VALUES\nLayerOffTime_0\nBottomLightOffDelay_0\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_60\nLiftSpeed_60\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nAntiAliasing_4 ; Use 0 or 1 for disable AntiAliasing with "printer gamma correction" set to 0, otherwise use multiples of 2 and "gamma correction" set to 1 for enable\nFORMAT_FDG\nEND_CUSTOM_VALUES
printer_settings_id =
printer_technology = SLA
printer_variant = default
+8 -6
View File
@@ -59,12 +59,13 @@ But also, i need victims for test subject. Proceed at your own risk!
* CBDDLP (Chitubox)
* CBT (Chitubox)
* PHZ (Chitubox)
* FDG (Voxelab)
* PWS (Photon Workshop)
* PW0 (Photon Workshop)
* PWX (Photon Workshop) [Not confirmed]
* PWMO (Photon Workshop) [Not confirmed]
* PWMS (Photon Workshop) [Not confirmed]
* PWMX (Photon Workshop) [Not confirmed]
* PWX (Photon Workshop)
* PWMO (Photon Workshop)
* PWMS (Photon Workshop)
* PWMX (Photon Workshop)
* ZCodex (Z-Suite)
* CWS (NovaMaker)
* LGS (Longer Orange 10)
@@ -120,8 +121,9 @@ But also, i need victims for test subject. Proceed at your own risk!
* Creality LD-002R
* Creality LD-002H
* Creality LD-006
* Voxelab Polaris
* Voxelab Proxima
* Voxelab Polaris 5.5
* Voxelab Proxima 6
* Voxelab Ceres 8.9
* Longer Orange 10
* Longer Orange 30
* Longer Orange4K
+2 -4
View File
@@ -661,7 +661,7 @@ namespace UVtools.Core.FileFormats
public override FileFormatType FileType => FileFormatType.Binary;
public override FileExtension[] FileExtensions { get; } = {
new("fdg", "Chitubox FDG"),
new("fdg", "Voxelab FDG"),
};
public override Type[] ConvertToFormats { get; } =
@@ -985,9 +985,7 @@ namespace UVtools.Core.FileFormats
{
HeaderSettings.PreviewLargeOffsetAddress = currentOffset;
}
Preview preview = new Preview
{
ResolutionX = (uint) image.Width,
+3
View File
@@ -489,6 +489,7 @@ namespace UVtools.Core.FileFormats
RaisePropertyChanged(nameof(PrintTimeOrComputed));
RaisePropertyChanged(nameof(PrintTimeComputed));
RaisePropertyChanged(nameof(PrintTimeHours));
RaisePropertyChanged(nameof(PrintTimeString));
}
}
@@ -536,6 +537,8 @@ namespace UVtools.Core.FileFormats
public float PrintTimeHours => (float) Math.Round(PrintTimeOrComputed / 3600, 2);
public string PrintTimeString => TimeSpan.FromSeconds(PrintTimeOrComputed).ToString("hh\\hmm\\m");
public virtual float UsedMaterial { get; set; }
public virtual float MaterialCost { get; set; }
+5
View File
@@ -253,6 +253,11 @@ namespace UVtools.Core.FileFormats
/// </summary>
float PrintTimeHours { get; }
/// <summary>
/// Gets the estimate print time in hours and minutes formatted
/// </summary>
string PrintTimeString { get; }
/// <summary>
/// Gets the estimate used material in ml
/// </summary>
+44 -4
View File
@@ -24,7 +24,7 @@ namespace UVtools.Core.FileFormats
{
public class PhotonSFile : FileFormat
{
public const byte RLEEncodingLimit = 128; // 128;
public const byte RLEEncodingLimit = 0x7f - 2; // 128;
#region Sub Classes
@@ -101,13 +101,52 @@ namespace UVtools.Core.FileFormats
public unsafe byte[] Encode(Mat mat)
{
List<byte> rawData = new List<byte>();
List<byte> chunk = new List<byte>();
var spanMat = mat.GetBytePointer();
var imageLength = mat.GetLength();
int rep = 0;
byte color = 0;
void AddRep()
{
if (rep <= 0) return;
rep--;
byte rle =
(byte) (((rep & 1) > 0 ? 128 : 0) |
((rep & 2) > 0 ? 64 : 0) |
((rep & 4) > 0 ? 32 : 0) |
((rep & 8) > 0 ? 16 : 0) |
((rep & 16) > 0 ? 8 : 0) |
((rep & 32) > 0 ? 4 : 0) |
((rep & 64) > 0 ? 2 : 0) | color);
rawData.Add(rle);
}
for (int i = 0; i < imageLength; i++)
{
color = color <= 127 ? 0 : 255; // Sanitize no AA
if (spanMat[i] != color)
{
AddRep();
color = spanMat[i];
rep = 1;
}
else
{
rep++;
if (rep == RLEEncodingLimit)
{
AddRep();
rep = 0;
}
}
}
AddRep();
EncodedRle = rawData.ToArray();
DataSize = (uint)(EncodedRle.Length * 8 + 32);
DataSize = (uint)(EncodedRle.Length * 8 + 4);
return EncodedRle;
}
@@ -400,6 +439,7 @@ namespace UVtools.Core.FileFormats
{
outputFile.WriteSerialize(HeaderSettings);
outputFile.WriteBytes(PreviewEncode(Thumbnails[0]));
LayerSettings.LayerCount = LayerCount;
outputFile.WriteSerialize(LayerSettings);
LayerData[] layerData = new LayerData[LayerCount];
+27
View File
@@ -298,6 +298,7 @@ namespace UVtools.Core.FileFormats
typeof(ChituboxZipFile),
typeof(PHZFile),
typeof(FDGFile),
typeof(PhotonSFile),
typeof(PhotonWorkshopFile),
typeof(ZCodexFile),
typeof(CWSFile),
@@ -1013,6 +1014,32 @@ namespace UVtools.Core.FileFormats
return true;
}
if (to == typeof(PhotonSFile))
{
PhotonSFile defaultFormat = (PhotonSFile)FindByType(typeof(PhotonSFile));
PhotonSFile file = new PhotonSFile
{
LayerManager = LayerManager,
HeaderSettings =
{
BottomExposureSeconds = MaterialSettings.InitialExposureTime,
BottomLayerCount = PrintSettings.FadedLayers,
ExposureSeconds = MaterialSettings.ExposureTime,
LayerHeight = PrintSettings.LayerHeight,
LayerOffSeconds = LookupCustomValue<double>(Keyword_LayerOffTime, DefaultLightOffDelay),
LiftHeight = LookupCustomValue<double>(Keyword_LiftHeight, DefaultLiftHeight),
LiftSpeed = LookupCustomValue<double>(Keyword_LiftSpeed, DefaultLiftSpeed),
RetractSpeed = LookupCustomValue<float>(Keyword_RetractSpeed, DefaultRetractSpeed),
Volume = OutputConfigSettings.UsedMaterial,
}
};
file.SetThumbnails(Thumbnails);
file.Encode(fileFullPath, progress);
return true;
}
if (to == typeof(ZCodexFile))
{
ZCodexFile defaultFormat = (ZCodexFile)FindByType(typeof(ZCodexFile));
+1 -1
View File
@@ -10,7 +10,7 @@
<RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl>
<PackageProjectUrl>https://github.com/sn4k3/UVtools</PackageProjectUrl>
<Description>MSLA/DLP, file analysis, calibration, repair, conversion and manipulation</Description>
<Version>2.1.3</Version>
<Version>2.2.0</Version>
<Copyright>Copyright © 2020 PTRTECH</Copyright>
<PackageIcon>UVtools.png</PackageIcon>
<Platforms>AnyCPU;x64</Platforms>
+7 -4
View File
@@ -975,11 +975,14 @@
<Component Id="owc696F0AF8084A6AA7624CA0947E245A47" Guid="6aa7d092-d68b-a44d-f2c7-0a590404b19f">
<File Id="owf696F0AF8084A6AA7624CA0947E245A47" Source="$(var.SourceDir)\Assets\PrusaSlicer\printer\QIDI Shadow6.0 Pro.ini" KeyPath="yes" />
</Component>
<Component Id="owcF90F5AD6941B0C5CF8C0CB134ED5C5D5" Guid="186b397e-cd3b-855a-524e-cd48a48d5758">
<File Id="owfF90F5AD6941B0C5CF8C0CB134ED5C5D5" Source="$(var.SourceDir)\Assets\PrusaSlicer\printer\Voxelab Polaris.ini" KeyPath="yes" />
<Component Id="owc2D767EDC65A9490BE5587F5807220F67" Guid="1b34ea21-cadd-c887-3f4e-8655903ef11a">
<File Id="owf2D767EDC65A9490BE5587F5807220F67" Source="$(var.SourceDir)\Assets\PrusaSlicer\printer\Voxelab Ceres 8.9.ini" KeyPath="yes" />
</Component>
<Component Id="owc7F9A29B71850B673CBE3B2BE64A68AAA" Guid="08fa14b5-632c-7453-8805-078ce4e7ef9d">
<File Id="owf7F9A29B71850B673CBE3B2BE64A68AAA" Source="$(var.SourceDir)\Assets\PrusaSlicer\printer\Voxelab Proxima.ini" KeyPath="yes" />
<Component Id="owc90539A9197EF7BEC5C7BE8507C05CAB3" Guid="9dc6bfc4-de9d-312e-d562-bf3574c4f527">
<File Id="owf90539A9197EF7BEC5C7BE8507C05CAB3" Source="$(var.SourceDir)\Assets\PrusaSlicer\printer\Voxelab Polaris 5.5.ini" KeyPath="yes" />
</Component>
<Component Id="owc1F3FB53972C06D8DF37D9F829AC83D16" Guid="d245e99b-d664-d9f6-351f-d8cf26532427">
<File Id="owf1F3FB53972C06D8DF37D9F829AC83D16" Source="$(var.SourceDir)\Assets\PrusaSlicer\printer\Voxelab Proxima 6.ini" KeyPath="yes" />
</Component>
<Component Id="owc7C7E45D1C452D2676768409E4CA9CC60" Guid="860c70fe-c0a8-cd0a-e957-f1a6a9430509">
<File Id="owf7C7E45D1C452D2676768409E4CA9CC60" Source="$(var.SourceDir)\Assets\PrusaSlicer\printer\Wanhao CGR Mini Mono.ini" KeyPath="yes" />
+1 -1
View File
@@ -279,7 +279,7 @@
<TextBlock IsVisible="{Binding SlicerFile.PrintTimeHours}" Text=" | "/>
<TextBlock IsVisible="{Binding SlicerFile.PrintTimeHours}"
Text="{Binding SlicerFile.PrintTimeHours, StringFormat=Print time: \{0\}h}"/>
Text="{Binding SlicerFile.PrintTimeString, StringFormat=Print time: \{0\}}"/>
<TextBlock IsVisible="{Binding SlicerFile.UsedMaterial}" Text=" | "/>
+1 -1
View File
@@ -12,7 +12,7 @@
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl>
<RepositoryType>Git</RepositoryType>
<Version>2.1.3</Version>
<Version>2.2.0</Version>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">