mirror of
https://github.com/riegera2412/UVtools.git
synced 2026-07-11 19:12:31 +02:00
069c521d72
- **File formats:**
- (Add) Transition layer count to the supported files and auto compute transition time on corresponding layers in software mode
- (Add) `HaveTransitionLayers`, `TransitionLayersType`, `BottomLayers`, `NormalLayers`, `TransitionLayers`, `TsmcLayers` properties
- (Add) Layer: `IsTransitionLayer` property
- (Add) SL1: Keyword `TransitionLayerCount_xxx` - Sets the number of transition layers
- (Improvement) CTB, PHZ, FDG: Implement the `ModifiedTimestampMinutes` field, it was the MysteriousId before as an unknown field
- (Fix) CWS: Open in partial mode will cause an exception and prevent file from load
- **CCode:**
- (Add) Allow inverse lifts to work as an retract
- (Fix) Parsing of WaitTimeAfterLift was incorrect when lacking a lift sequence
- (Fix) Layers lacking an exposure time was defaulting to global time, now defaults to 0
- (Fix) Layers without a LED ON (M106) was setting `LightPWM` to the max value (255), now defaults to 0
- **Tools:**
- **Timelapse:**
- (Add) Information: Raise Layer count equivalence
- (Add) Information: Additional lifts to be generated
- (Add) Option: Ensure the last layer - If enabled, it will generate an obligatory layer to cover the last layer
- (Improvement) Optimize lift for virtual layer mode, allowing set a slow and fast lift / retract by using another virtual layyer to emulate a lift
- (Improvement) Allow to define slow and fast speed for virtual layer mode even if TSMC isn't supported
- (Add) Fade exposure time: Setting 'Disable firmware transition layers' - Attempt to disable firmware strict transition layers in favor of this tool
- (Add) Calibration tests: Attempt to auto disable the firmware transifiton layers
- (Change) Edit print parameters: Allow set `BottomLiftHeight` and `LiftHeight` to 0mm
- **UI:**
- (Improvement) Disallow drop files into UI when is processing data / disabled and prevent crashing from that action
- (Improvement) Information tab visibility and MinHeight for data grids
- (Improvement) Hide/show GCode tab when necessary (dependent on file format)
- (Improvement) The 'save as' will show the new file into 'Open recent' files
- **PrusaSlicer printers:**
- (Add) Elegoo Jupiter
- (Add) EPAX X1 4KS
- (Add) EPAX DX1 Pro
- (Add) EPAX DX10 Pro 5K
- (Add) EPAX DX10 Pro 8K
- (Add) EPAX E10 8K
- (Add) EPAX X133 6K
357 lines
16 KiB
XML
357 lines
16 KiB
XML
<UserControl xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
|
x:Class="UVtools.WPF.Controls.Tools.ToolTimelapseControl">
|
|
<StackPanel Spacing="10" Orientation="Vertical">
|
|
<Grid RowDefinitions="Auto,10,Auto,10,Auto,10,Auto,10,Auto,10,Auto"
|
|
ColumnDefinitions="Auto,10,Auto">
|
|
|
|
<TextBlock Grid.Row="0" Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
Text="Raise method:"/>
|
|
|
|
<ComboBox Grid.Row="0" Grid.Column="2"
|
|
Width="500"
|
|
HorizontalContentAlignment="Stretch"
|
|
Items="{Binding Operation.RaiseMode, Converter={StaticResource EnumToCollectionConverter}, Mode=OneTime}"
|
|
SelectedItem="{Binding Operation.RaiseMode, Converter={StaticResource FromValueDescriptionToEnumConverter}}"/>
|
|
|
|
<TextBlock Grid.Row="2" Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
ToolTip.Tip="The Z position to raise the build plate to.
|
|

If the set position is lower than the model total height, the time-lapse function won't have effect further the set height."
|
|
Text="Raise plate to:"/>
|
|
|
|
<StackPanel Grid.Row="2" Grid.Column="2"
|
|
Orientation="Horizontal" Spacing="5">
|
|
<NumericUpDown Classes="ValueLabel ValueLabel_mm"
|
|
Minimum="10"
|
|
Maximum="10000"
|
|
Increment="1"
|
|
Width="100"
|
|
Value="{Binding Operation.RaisePositionZ}"/>
|
|
|
|
<Button Content="Auto" Command="{Binding Operation.OptimizeRaisePositionZ}"/>
|
|
<Button Content="Max" Command="{Binding Operation.MaxRaisePositionZ}"/>
|
|
|
|
<TextBlock VerticalAlignment="Center"
|
|
FontWeight="Bold"
|
|
Text="{Binding SlicerFile.PrintHeight, StringFormat=Print height: {0}mm}"/>
|
|
</StackPanel>
|
|
|
|
<TextBlock Grid.Row="4" Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
ToolTip.Tip="The alternating height in millimeters to raise when, it will raise only at each defined millimeters and skip the same next millimeters.
|
|

Use 0mm to raise at each layer."
|
|
Text="Raise each:"/>
|
|
|
|
<StackPanel Grid.Row="4" Grid.Column="2"
|
|
Orientation="Horizontal" Spacing="5">
|
|
<NumericUpDown Classes="ValueLabel ValueLabel_mm"
|
|
HorizontalAlignment="Left"
|
|
Minimum="0"
|
|
Maximum="10000"
|
|
Increment="0.5"
|
|
Width="100"
|
|
Value="{Binding Operation.RaiseEachNthHeight}"/>
|
|
|
|
<TextBlock VerticalAlignment="Center"
|
|
Text="{Binding Operation.RaiseEachNthLayers, StringFormat={}{0} layer(s) |}"/>
|
|
|
|
<TextBlock VerticalAlignment="Center"
|
|
Margin="5,0,0,0"
|
|
FontWeight="Bold"
|
|
Text="{Binding Operation.NumberOfLifts, StringFormat=Lifts: {0}}"/>
|
|
|
|
</StackPanel>
|
|
|
|
<!-- LiftHeight: Wait time after lift -->
|
|
<TextBlock Grid.Row="6" Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
ToolTip.Tip="The time to wait on the set position.
|
|

Use the lowest as possible but enough to take the photo while standing still."
|
|
IsVisible="{Binding Operation.IsLiftHeightMode}"
|
|
Text="Wait time:"/>
|
|
|
|
<NumericUpDown Grid.Row="6" Grid.Column="2"
|
|
Classes="ValueLabel ValueLabel_s"
|
|
HorizontalAlignment="Left"
|
|
Minimum="0"
|
|
Maximum="100"
|
|
Increment="0.5"
|
|
Width="100"
|
|
Value="{Binding Operation.WaitTimeAfterLift}">
|
|
<NumericUpDown.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.And}">
|
|
<Binding Path="Operation.IsLiftHeightMode"/>
|
|
<Binding Path="SlicerFile.CanUseLayerWaitTimeAfterLift"/>
|
|
</MultiBinding>
|
|
</NumericUpDown.IsVisible>
|
|
</NumericUpDown>
|
|
|
|
<TextBlock Grid.Row="6" Grid.Column="2"
|
|
VerticalAlignment="Center"
|
|
ToolTip.Tip="You won't be able to choose a time to wait while standing still.
|
|

Advice: Take the photo when printer is de-accelerating near the target height."
|
|
Text="(Not supported by your printer / file format)">
|
|
<TextBlock.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.And}">
|
|
<Binding Path="Operation.IsLiftHeightMode"/>
|
|
<Binding Path="!SlicerFile.CanUseLayerWaitTimeAfterLift"/>
|
|
</MultiBinding>
|
|
</TextBlock.IsVisible>
|
|
</TextBlock>
|
|
|
|
<!-- VirtualLayer: Exposure time -->
|
|
<TextBlock Grid.Row="6" Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
ToolTip.Tip="The exposure time of the virtual layer.
|
|

This can be used to trigger an external light sensor.
|
|

Use the lowest as possible but enough to sensor to trigger.
|
|

If you want to disable this set to 0.05s as most file formats are not compatible with 0s."
|
|
IsVisible="{Binding Operation.IsVirtualLayerMode}"
|
|
Text="Exposure time:"/>
|
|
|
|
<StackPanel Grid.Row="6" Grid.Column="2"
|
|
Orientation="Horizontal" Spacing="10">
|
|
|
|
<NumericUpDown
|
|
Classes="ValueLabel ValueLabel_s"
|
|
HorizontalAlignment="Left"
|
|
Minimum="0"
|
|
Maximum="100"
|
|
Increment="0.5"
|
|
Width="100"
|
|
Value="{Binding Operation.ExposureTime}">
|
|
<NumericUpDown.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.And}">
|
|
<Binding Path="Operation.IsVirtualLayerMode"/>
|
|
<Binding Path="SlicerFile.CanUseLayerExposureTime"/>
|
|
</MultiBinding>
|
|
</NumericUpDown.IsVisible>
|
|
</NumericUpDown>
|
|
|
|
|
|
<CheckBox VerticalAlignment="Center"
|
|
ToolTip.Tip="If enabled, output a dummy pixel inside the layer bound to prevent a empty image and to ensure the correct handle by the firmware. This will also prevent layer being removed by auto-fix issues (Empty Layers)."
|
|
Content="Output a dummy pixel"
|
|
IsVisible="{Binding Operation.IsVirtualLayerMode}"
|
|
IsChecked="{Binding Operation.OutputDummyPixel}"/>
|
|
</StackPanel>
|
|
|
|
<TextBlock Grid.Row="6" Grid.Column="2"
|
|
VerticalAlignment="Center"
|
|
ToolTip.Tip="You won't be able to choose a exposure time for the virtual layer.
|
|

Global exposure time will be used instead.
|
|

Advice: Take the photo when printer is de-accelerating near the target height."
|
|
Text="(Not supported by your printer / file format)">
|
|
<TextBlock.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.And}">
|
|
<Binding Path="Operation.IsVirtualLayerMode"/>
|
|
<Binding Path="!SlicerFile.CanUseLayerExposureTime"/>
|
|
</MultiBinding>
|
|
</TextBlock.IsVisible>
|
|
</TextBlock>
|
|
|
|
<CheckBox Grid.Row="8" Grid.Column="2"
|
|
VerticalAlignment="Center"
|
|
Content="Ensure the last layer"
|
|
ToolTip.Tip="If enabled, it will generate an obligatory layer to cover the last layer.
|
|

Use this option to make sure you have the whole and complete model on your last photo."
|
|
IsVisible="{Binding Operation.IsVirtualLayerMode}"
|
|
IsChecked="{Binding Operation.EnsureLastLayer}"/>
|
|
|
|
<CheckBox Grid.Row="10" Grid.Column="2"
|
|
VerticalAlignment="Center"
|
|
Content="Set custom lift parameters"
|
|
IsVisible="{Binding SlicerFile.CanUseLayerLiftHeight}"
|
|
IsChecked="{Binding Operation.UseCustomLift}"/>
|
|
</Grid>
|
|
|
|
<!-- Custom lift -->
|
|
<Grid RowDefinitions="Auto,10,Auto,10,Auto,10,Auto,10,Auto"
|
|
ColumnDefinitions="Auto,10,210,5,Auto,5,210">
|
|
<Grid.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.And}">
|
|
<Binding Path="Operation.UseCustomLift"/>
|
|
<Binding Path="SlicerFile.CanUseLayerLiftHeight"/>
|
|
</MultiBinding>
|
|
</Grid.IsVisible>
|
|
|
|
<!-- Slow lift height-->
|
|
<TextBlock Grid.Row="0" Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
ToolTip.Tip="The slow first lift sequence (TSMC).
|
|

Use a low value or 0 to disable."
|
|
Text="Slow lift height:"/>
|
|
|
|
<NumericUpDown Grid.Row="0" Grid.Column="2"
|
|
Classes="ValueLabel ValueLabel_mm"
|
|
Minimum="0"
|
|
Maximum="20"
|
|
Increment="1"
|
|
Value="{Binding Operation.SlowLiftHeight}">
|
|
<NumericUpDown.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.Or}">
|
|
<Binding Path="SlicerFile.CanUseLayerLiftHeight2"/>
|
|
<Binding Path="Operation.IsVirtualLayerMode"/>
|
|
</MultiBinding>
|
|
</NumericUpDown.IsVisible>
|
|
</NumericUpDown>
|
|
|
|
<TextBlock Grid.Row="0" Grid.Column="2"
|
|
VerticalAlignment="Center"
|
|
ToolTip.Tip="(Not supported by your printer / file format)"
|
|
Text="(Not supported)">
|
|
<TextBlock.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.And}">
|
|
<Binding Path="!SlicerFile.CanUseLayerLiftHeight2"/>
|
|
<Binding Path="!Operation.IsVirtualLayerMode"/>
|
|
</MultiBinding>
|
|
</TextBlock.IsVisible>
|
|
</TextBlock>
|
|
|
|
<!-- Lift Speed -->
|
|
<TextBlock Grid.Row="2" Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
Text="Lift speed:"/>
|
|
|
|
<NumericUpDown Grid.Row="2" Grid.Column="2"
|
|
Classes="ValueLabel ValueLabel_mmmin"
|
|
Minimum="0"
|
|
Maximum="10000"
|
|
Increment="10"
|
|
IsVisible="{Binding SlicerFile.CanUseLayerLiftSpeed}"
|
|
Value="{Binding Operation.LiftSpeed}">
|
|
</NumericUpDown>
|
|
|
|
<TextBlock Grid.Row="2" Grid.Column="2"
|
|
VerticalAlignment="Center"
|
|
ToolTip.Tip="(Not supported by your printer / file format)"
|
|
Text="(Not supported)">
|
|
<TextBlock.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.And}">
|
|
<Binding Path="!SlicerFile.CanUseLayerLiftSpeed"/>
|
|
<Binding Path="!Operation.IsVirtualLayerMode"/>
|
|
</MultiBinding>
|
|
</TextBlock.IsVisible>
|
|
</TextBlock>
|
|
|
|
<TextBlock Grid.Row="2" Grid.Column="4"
|
|
VerticalAlignment="Center"
|
|
Text="-">
|
|
<TextBlock.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.Or}">
|
|
<Binding Path="SlicerFile.CanUseLayerLiftSpeed2"/>
|
|
<Binding Path="Operation.IsVirtualLayerMode"/>
|
|
</MultiBinding>
|
|
</TextBlock.IsVisible>
|
|
</TextBlock>
|
|
|
|
<NumericUpDown Grid.Row="2" Grid.Column="6"
|
|
Classes="ValueLabel ValueLabel_mmmin"
|
|
Minimum="0"
|
|
Maximum="10000"
|
|
Increment="10"
|
|
Value="{Binding Operation.LiftSpeed2}">
|
|
<NumericUpDown.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.Or}">
|
|
<Binding Path="SlicerFile.CanUseLayerLiftSpeed2"/>
|
|
<Binding Path="Operation.IsVirtualLayerMode"/>
|
|
</MultiBinding>
|
|
</NumericUpDown.IsVisible>
|
|
</NumericUpDown>
|
|
|
|
<!-- Slow retract -->
|
|
<TextBlock Grid.Row="4" Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
ToolTip.Tip="The slow last retract sequence (TSMC).
|
|

Use a low value or 0 to disable."
|
|
Text="Slow retract height:"/>
|
|
|
|
<NumericUpDown Grid.Row="4" Grid.Column="2"
|
|
Classes="ValueLabel ValueLabel_mm"
|
|
Minimum="0"
|
|
Maximum="20"
|
|
Increment="1"
|
|
Value="{Binding Operation.SlowRetractHeight}">
|
|
<NumericUpDown.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.Or}">
|
|
<Binding Path="SlicerFile.CanUseLayerRetractHeight2"/>
|
|
<Binding Path="Operation.IsVirtualLayerMode"/>
|
|
</MultiBinding>
|
|
</NumericUpDown.IsVisible>
|
|
</NumericUpDown>
|
|
|
|
<TextBlock Grid.Row="4" Grid.Column="2"
|
|
VerticalAlignment="Center"
|
|
ToolTip.Tip="(Not supported by your printer / file format)"
|
|
Text="(Not supported)">
|
|
<TextBlock.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.And}">
|
|
<Binding Path="!SlicerFile.CanUseLayerRetractHeight2"/>
|
|
<Binding Path="!Operation.IsVirtualLayerMode"/>
|
|
</MultiBinding>
|
|
</TextBlock.IsVisible>
|
|
</TextBlock>
|
|
|
|
|
|
<!-- Retract speed -->
|
|
<TextBlock Grid.Row="6" Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
Text="Retract speed:"/>
|
|
|
|
<NumericUpDown Grid.Row="6" Grid.Column="2"
|
|
Classes="ValueLabel ValueLabel_mmmin"
|
|
Minimum="0"
|
|
Maximum="10000"
|
|
Increment="10"
|
|
IsVisible="{Binding SlicerFile.CanUseLayerRetractSpeed}"
|
|
Value="{Binding Operation.RetractSpeed}">
|
|
</NumericUpDown>
|
|
|
|
<TextBlock Grid.Row="6" Grid.Column="2"
|
|
VerticalAlignment="Center"
|
|
ToolTip.Tip="(Not supported by your printer / file format)"
|
|
Text="(Not supported)">
|
|
<TextBlock.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.And}">
|
|
<Binding Path="!SlicerFile.CanUseLayerRetractSpeed"/>
|
|
<Binding Path="!Operation.IsVirtualLayerMode"/>
|
|
</MultiBinding>
|
|
</TextBlock.IsVisible>
|
|
</TextBlock>
|
|
|
|
<TextBlock Grid.Row="6" Grid.Column="4"
|
|
VerticalAlignment="Center"
|
|
Text="-">
|
|
<TextBlock.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.Or}">
|
|
<Binding Path="SlicerFile.CanUseLayerRetractSpeed2"/>
|
|
<Binding Path="Operation.IsVirtualLayerMode"/>
|
|
</MultiBinding>
|
|
</TextBlock.IsVisible>
|
|
</TextBlock>
|
|
|
|
|
|
<NumericUpDown Grid.Row="6" Grid.Column="6"
|
|
Classes="ValueLabel ValueLabel_mmmin"
|
|
Minimum="0"
|
|
Maximum="10000"
|
|
Increment="10"
|
|
Value="{Binding Operation.RetractSpeed2}">
|
|
<NumericUpDown.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.Or}">
|
|
<Binding Path="SlicerFile.CanUseLayerRetractSpeed2"/>
|
|
<Binding Path="Operation.IsVirtualLayerMode"/>
|
|
</MultiBinding>
|
|
</NumericUpDown.IsVisible>
|
|
</NumericUpDown>
|
|
|
|
</Grid>
|
|
|
|
</StackPanel>
|
|
</UserControl>
|