Files
UVtools/UVtools.WPF/Controls/Calibrators/CalibrateToleranceControl.axaml
Tiago Conceição e727a097b3 v3.8.1
- **Tools:**
  - **PCB Exposure:**
    - (Add) Allow to scale the drawing sizes per gerber file
    - (Add) Allow to invert the drawing polarity per gerber file (#592)
    - (Add) Allow to drag and drop files into "Add files" button and grid header
    - (Improvement) Do not add empty layers when usable to draw or when draw a all black image
    - (Improvement) "Merge all gerbers into one layer" will now draw all gerber into one image instead of perform the Max(of all gerbers pixels), allowing to subtract areas as they are on gerbers
  - **Import layers:** Fix error when trying to insert layers
  - **Export layers images:** Better compression of contours for SVG export, resulting in smooth curves, better visuals and lower file size
- (Add) Outline: Triangulate
- (Remove) Avalonia.Diagnostics dependency in release mode
2022-11-02 23:39:21 +00:00

347 lines
15 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="800"
x:Class="UVtools.WPF.Controls.Calibrators.CalibrateToleranceControl">
<Grid ColumnDefinitions="Auto,10,380">
<StackPanel Spacing="10">
<Expander
Header="Step 1 - Common properties"
IsExpanded="True">
<Grid
RowDefinitions="Auto,10,Auto,10,Auto,10,Auto,10,Auto,10,Auto,10,Auto,10,Auto,10,Auto"
ColumnDefinitions="Auto,10,190,20,Auto,10,190">
<TextBlock
Grid.Row="0" Grid.Column="0"
VerticalAlignment="Center"
ToolTip.Tip="The printer display width. Required to calculate the pixels per mm."
Text="Display width:"/>
<NumericUpDown Grid.Row="0" Grid.Column="2"
Classes="ValueLabel ValueLabel_mm"
Increment="0.1"
Minimum="0"
Maximum="10000"
FormatString="F2"
Value="{Binding Operation.DisplayWidth}"/>
<TextBlock Grid.Row="0" Grid.Column="4"
VerticalAlignment="Center"
ToolTip.Tip="The printer display height. Required to calculate the pixels per mm."
Text="Display height:"/>
<NumericUpDown Grid.Row="0" Grid.Column="6"
Classes="ValueLabel ValueLabel_mm"
Increment="0.1"
Minimum="0"
Maximum="10000"
FormatString="F2"
Value="{Binding Operation.DisplayHeight}"/>
<TextBlock Grid.Row="2" Grid.Column="0"
VerticalAlignment="Center"
Text="Layer height:"/>
<NumericUpDown Grid.Row="2" Grid.Column="2"
Classes="ValueLabel ValueLabel_mm"
Increment="0.01"
Minimum="0.01"
Maximum="0.30"
FormatString="F3"
Value="{Binding Operation.LayerHeight}"/>
<TextBlock Grid.Row="2" Grid.Column="4"
VerticalAlignment="Center"
Text="Bottom layers:"/>
<NumericUpDown Grid.Row="2" Grid.Column="6"
Classes="ValueLabel ValueLabel_layers"
Increment="1"
Minimum="1"
Maximum="1000"
Value="{Binding Operation.BottomLayers}"/>
<TextBlock Grid.Row="4" Grid.Column="0"
VerticalAlignment="Center"
Text="Bottom exposure:"/>
<NumericUpDown Grid.Row="4" Grid.Column="2"
Classes="ValueLabel ValueLabel_s"
Increment="0.5"
Minimum="0.1"
Maximum="200"
FormatString="F2"
Value="{Binding Operation.BottomExposure}"/>
<TextBlock Grid.Row="4" Grid.Column="4"
VerticalAlignment="Center"
Text="Normal exposure:"/>
<NumericUpDown Grid.Row="4" Grid.Column="6"
Classes="ValueLabel ValueLabel_s"
Increment="0.5"
Minimum="0.1"
Maximum="200"
FormatString="F2"
Value="{Binding Operation.NormalExposure}"/>
<TextBlock Grid.Row="6" Grid.Column="0"
VerticalAlignment="Center"
Text="Z height:"/>
<NumericUpDown Grid.Row="6" Grid.Column="2"
Classes="ValueLabel ValueLabel_mm"
Increment="1"
Minimum="5"
Maximum="100"
FormatString="F2"
Value="{Binding Operation.ZSize}"/>
<StackPanel Grid.Row="6" Grid.Column="4"
VerticalAlignment="Center"
Spacing="0">
<TextBlock
FontWeight="Bold"
Text="Total layers:"/>
<TextBlock
FontWeight="Bold"
Text="Total height:"/>
</StackPanel>
<StackPanel Grid.Row="6" Grid.Column="6"
VerticalAlignment="Center"
Spacing="0">
<TextBlock
FontWeight="Bold"
Text="{Binding Operation.LayerCount}"/>
<TextBlock
FontWeight="Bold"
Text="{Binding Operation.RealZSize, StringFormat={}{0:F3}mm}"/>
</StackPanel>
<TextBlock Grid.Row="8" Grid.Column="0"
VerticalAlignment="Center"
Text="Top/bottom margin:"/>
<NumericUpDown Grid.Row="8" Grid.Column="2"
Classes="ValueLabel ValueLabel_px"
Increment="1"
Minimum="0"
Maximum="10000"
Value="{Binding Operation.TopBottomMargin}"/>
<TextBlock Grid.Row="8" Grid.Column="4"
VerticalAlignment="Center"
Text="Left/right margin:"/>
<NumericUpDown Grid.Row="8" Grid.Column="6"
Classes="ValueLabel ValueLabel_px"
Increment="1"
Minimum="0"
Maximum="10000"
Value="{Binding Operation.LeftRightMargin}"/>
<TextBlock Grid.Row="10" Grid.Column="0"
VerticalAlignment="Center"
ToolTip.Tip="Chamfer the bottom and top layers"
Text="Chamfer layers:"/>
<NumericUpDown Grid.Row="10" Grid.Column="2"
Classes="ValueLabel ValueLabel_layers"
Increment="1"
Minimum="0"
Maximum="255"
IsEnabled="{Binding Operation.ChamferModel}"
Value="{Binding Operation.ChamferLayers}"/>
<TextBlock Grid.Row="10" Grid.Column="4"
VerticalAlignment="Center"
ToolTip.Tip="Erode bottom iterations to counter the elephant foot"
Text="Erode bottom iter.:"/>
<NumericUpDown Grid.Row="10" Grid.Column="6"
Classes="ValueLabel ValueLabel_px"
Increment="1"
Minimum="0"
Maximum="255"
Value="{Binding Operation.ErodeBottomIterations}"/>
<TextBlock Grid.Row="12" Grid.Column="0"
VerticalAlignment="Center"
Text="Shape:"/>
<ComboBox Grid.Row="12" Grid.Column="2"
HorizontalAlignment="Stretch"
Items="{Binding Operation.ShapesItems}"
SelectedItem="{Binding Operation.Shape}"/>
<TextBlock Grid.Row="12" Grid.Column="4"
VerticalAlignment="Center"
Text="Part margin:"/>
<NumericUpDown Grid.Row="12" Grid.Column="6"
Classes="ValueLabel ValueLabel_px"
Increment="1"
Minimum="0"
Maximum="10000"
Value="{Binding Operation.PartMargin}"/>
<StackPanel Grid.Row="14" Grid.Column="2" Grid.ColumnSpan="5" Orientation="Horizontal" Spacing="20">
<CheckBox VerticalAlignment="Center"
IsChecked="{Binding Operation.OutputSameDiameterPart}"
IsEnabled="{Binding !Operation.FuseParts}"
ToolTip.Tip="Output the same hole diameter part (+0mm)"
Content="Output same hole diameter part"/>
<CheckBox VerticalAlignment="Center"
IsChecked="{Binding Operation.FuseParts}"
ToolTip.Tip="Output the male counter-part in female"
Content="Fuse parts"/>
</StackPanel>
<CheckBox Grid.Row="16" Grid.Column="2" Grid.ColumnSpan="5"
VerticalAlignment="Center"
IsChecked="{Binding Operation.EnableAntiAliasing}"
Content="Enable Anti-Aliasing"/>
<CheckBox Grid.Row="16" Grid.Column="4"
Grid.ColumnSpan="3"
ToolTip.Tip="Most of the printers requires a mirror output to print with the correct orientation"
IsChecked="{Binding Operation.MirrorOutput}"
Content="Mirror output" />
</Grid>
</Expander>
<Expander Header="Step 2 - Female part" IsExpanded="True">
<Grid RowDefinitions="Auto,5,Auto"
ColumnDefinitions="Auto,10,190,5,Auto,20,Auto,10,190,5,Auto">
<TextBlock Grid.Row="0" Grid.Column="0"
Text="Diameter:"
VerticalAlignment="Center"/>
<NumericUpDown Grid.Row="0" Grid.Column="2"
Classes="ValueLabel ValueLabel_mm"
Increment="1.0"
Minimum="2"
Maximum="1000"
FormatString="F2"
Value="{Binding Operation.FemaleDiameter}"/>
<TextBlock Grid.Row="0" Grid.Column="6"
Text="Hole diameter:"
VerticalAlignment="Center"/>
<NumericUpDown Grid.Row="0" Grid.Column="8"
Classes="ValueLabel ValueLabel_mm"
Increment="1.0"
Minimum="2"
Maximum="1000"
FormatString="F2"
Value="{Binding Operation.FemaleHoleDiameter}"/>
<TextBlock Grid.Row="2" Grid.Column="0"
Text="Expected:"
FontWeight="Bold"
VerticalAlignment="Center"/>
<TextBlock Grid.Row="2" Grid.Column="2"
Text="{Binding Operation.FemaleDiameterRealXSize, StringFormat={}{0:F2}mm}"
FontWeight="Bold"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<TextBlock Grid.Row="2" Grid.Column="8"
Text="{Binding Operation.FemaleHoleDiameterRealXSize, StringFormat={}{0:F2}mm}"
FontWeight="Bold"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
</Expander>
<Expander
Header="Step 3 - Male parts"
IsExpanded="True">
<Grid RowDefinitions="Auto,10,Auto"
ColumnDefinitions="Auto,10,150,20,Auto,10,190,20,Auto,10,190">
<TextBlock Grid.Row="0" Grid.Column="0"
Text="Thinner models:"
VerticalAlignment="Center"/>
<NumericUpDown Grid.Row="0" Grid.Column="2"
Increment="1"
Minimum="0"
Maximum="1000"
Value="{Binding Operation.MaleThinnerModels}"/>
<TextBlock Grid.Row="0" Grid.Column="4"
Text="-Offset:"
VerticalAlignment="Center"/>
<NumericUpDown Grid.Row="0" Grid.Column="6"
Classes="ValueLabel ValueLabel_mm"
Increment="0.01"
Minimum="-1000"
Maximum="0"
FormatString="F2"
Value="{Binding Operation.MaleThinnerOffset}"/>
<TextBlock Grid.Row="0" Grid.Column="8"
Text="-Step:"
VerticalAlignment="Center"/>
<NumericUpDown Grid.Row="0" Grid.Column="10"
Classes="ValueLabel ValueLabel_mm"
Increment="0.01"
Minimum="-1000"
Maximum="-0.01"
FormatString="F2"
Value="{Binding Operation.MaleThinnerStep}"/>
<TextBlock Grid.Row="2" Grid.Column="0"
Text="Thicker models:"
IsEnabled="{Binding !Operation.FuseParts}"
VerticalAlignment="Center"/>
<NumericUpDown Grid.Row="2" Grid.Column="2"
Increment="1"
Minimum="0"
Maximum="1000"
IsEnabled="{Binding !Operation.FuseParts}"
Value="{Binding Operation.MaleThickerModels}"/>
<TextBlock Grid.Row="2" Grid.Column="4"
Text="+Offset:"
IsEnabled="{Binding !Operation.FuseParts}"
VerticalAlignment="Center"/>
<NumericUpDown Grid.Row="2" Grid.Column="6"
Classes="ValueLabel ValueLabel_mm"
Increment="0.01"
Minimum="0"
Maximum="1000"
FormatString="F2"
IsEnabled="{Binding !Operation.FuseParts}"
Value="{Binding Operation.MaleThickerOffset}"/>
<TextBlock Grid.Row="2" Grid.Column="8"
Text="+Step:"
IsEnabled="{Binding !Operation.FuseParts}"
VerticalAlignment="Center"/>
<NumericUpDown Grid.Row="2" Grid.Column="10"
Classes="ValueLabel ValueLabel_mm"
Increment="0.01"
Minimum="0.01"
Maximum="1000"
IsEnabled="{Binding !Operation.FuseParts}"
FormatString="F2"
Value="{Binding Operation.MaleThickerStep}"/>
</Grid>
</Expander>
</StackPanel>
<Image Grid.Column="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Stretch="Uniform"
Source="{Binding PreviewImage}"/>
</Grid>
</UserControl>