2026-03-30 17:09:29 +09:00

279 lines
21 KiB
XML

<UserControl x:Class="WeldingCommon.Views.UCConvEdgeObject"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WeldingCommon.Views"
d:DataContext="{d:DesignInstance Type=local:UCConvEdgeObjectViewModel}"
xmlns:usercontrols="clr-namespace:AuroraUIComponent.UserControls;assembly=AuroraUIComponent"
xmlns:auroracontrols="clr-namespace:Aurora.Api.Control;assembly=Aurora"
mc:Ignorable="d"
d:DesignHeight="800" d:DesignWidth="1700">
<UserControl.Resources>
<ResourceDictionary>
<Style x:Key="styleRbJogUnit" TargetType="RadioButton">
<Setter Property="MinWidth" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=ActualHeight}"/>
<!--<Setter Property="FontWeight" Value="Bold"/>-->
<Setter Property="FontSize" Value="14"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Height" Value="40"/>
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Margin" Value="2 0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RadioButton}">
<Border Name="border" BorderThickness="1" Background="#1A2242" BorderBrush="#1A2242">
<ContentPresenter Margin="0,0,0,4" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="0.8" />
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="border" Property="Background" Value="#A50034" />
<Setter TargetName="border" Property="BorderThickness" Value="1" />
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="3*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="10*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal">
<TextBlock Margin="10 0 10 0" FontSize="20" FontWeight="Bold" Text="Load Image"></TextBlock>
<Button Margin="10" Width="100" FontSize="15" Command="{Binding CMD_LoadImg}">Load</Button>
</StackPanel>
<StackPanel Grid.Row="1" Orientation="Horizontal">
<Border Margin="10" Width="400" BorderBrush="Gray" BorderThickness="1" HorizontalAlignment="Left">
<Image Source="{Binding OriginImage}"></Image>
</Border>
<!-- Masked Image 미사용-->
<!--<Border Margin="10" Width="400" BorderBrush="Gray" BorderThickness="1" HorizontalAlignment="Left">
<Image Source="{Binding MaskedImage}"></Image>
</Border>-->
</StackPanel>
<StackPanel Grid.Row="2" Orientation="Horizontal">
<TextBlock Margin="10 0 10 0" FontSize="20" FontWeight="Bold" Text="Result Image"></TextBlock>
<Button Margin="3" Width="100" FontSize="15" Command="{Binding CMD_SaveImg}">Save Img</Button>
<Button Margin="3" Width="100" FontSize="15" Command="{Binding CMD_SaveCSV}">Save CSV</Button>
</StackPanel>
<Border Grid.Row="3" Margin="10" BorderBrush="Gray" BorderThickness="1" ClipToBounds="True">
<Image x:Name="ImageControl" Source="{Binding ResultImage}" RenderTransformOrigin="0.5,0.5" Stretch="Uniform">
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform x:Name="ImageScaleTransform" />
<TranslateTransform x:Name="ImageTranslateTransform" />
</TransformGroup>
</Image.RenderTransform>
</Image>
</Border>
</Grid>
<Grid Grid.Column="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.2*"/>
<ColumnDefinition Width="1.2*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Vertical">
<!--<GroupBox Header="Vision Type" Margin="3">
<StackPanel Orientation="Vertical">
<RadioButton Command="{Binding CMD_VisionTypeChanged}" CommandParameter="OpenCV"
Style="{StaticResource styleRbJogUnit}" Content="OpenCV" Margin="3" IsChecked="True"/>
<RadioButton Command="{Binding CMD_VisionTypeChanged}" CommandParameter="MIL"
Style="{StaticResource styleRbJogUnit}" Content="MIL" Margin="3"/>
</StackPanel>
</GroupBox>-->
<GroupBox Header="Machine Type" Margin="3">
<StackPanel>
<ComboBox ItemsSource="{Binding Options}"
SelectedItem="{Binding SelectedOption}"
Height="30" Margin="10" />
<GroupBox Header="RCC Manual Operation" Margin="3">
<StackPanel Orientation="Vertical">
<ItemsControl ItemsSource="{Binding CurrentButtons}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Name}"
Command="{Binding Command}"
Margin="3" FontSize="15" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</GroupBox>
</StackPanel>
</GroupBox>
<GroupBox Header="EdgeDetect Offset Type" Margin="3">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<RadioButton Grid.Column="0" Command="{Binding CMD_OffsetTypeChanged}" CommandParameter="Manual"
Style="{StaticResource styleRbJogUnit}" Content="Manual" Margin="3" IsChecked="True"/>
<RadioButton Grid.Column="1" Command="{Binding CMD_OffsetTypeChanged}" CommandParameter="CSV"
Style="{StaticResource styleRbJogUnit}" Content="Table" Margin="3"/>
</Grid>
</GroupBox>
<GroupBox Header="EdgeDetect Param" Margin="3">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Vertical">
<usercontrols:UCKeyValue KeyText="Threshold : " Value="{Binding CVThreshold}" DecimalPlaces="0" ShowKeypad="False" />
<GroupBox Header="4 Shrink Distance" Margin="1">
<!--<WrapPanel Height="80">
<usercontrols:UCKeyValue KeyText="2 :" Value="{Binding CVShrinkPixel2}" Unit="pixel" DecimalPlaces="0" ShowKeypad="False" Width="110" Height="35" KeyHorizontalAlignment="Center"/>
<usercontrols:UCKeyValue KeyText="1 :" Value="{Binding CVShrinkPixel}" Unit="pixel" DecimalPlaces="0" ShowKeypad="False" Width="110" Height="35" KeyHorizontalAlignment="Center"/>
<usercontrols:UCKeyValue KeyText="3 :" Value="{Binding CVShrinkPixel3}" Unit="pixel" DecimalPlaces="0" ShowKeypad="False" Width="110" Height="35" KeyHorizontalAlignment="Center"/>
<usercontrols:UCKeyValue KeyText="4 :" Value="{Binding CVShrinkPixel4}" Unit="pixel" DecimalPlaces="0" ShowKeypad="False" Width="110" Height="35" KeyHorizontalAlignment="Center"/>
</WrapPanel>-->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<usercontrols:UCKeyValue Grid.Column="0" Grid.Row="0" KeyText="Quad2 :" Value="{Binding CVShrinkPixel2}" Unit="px" DecimalPlaces="0" ShowKeypad="False" KeyHorizontalAlignment="Center"/>
<usercontrols:UCKeyValue Grid.Column="1" Grid.Row="0" KeyText="Quad1 :" Value="{Binding CVShrinkPixel}" Unit="px" DecimalPlaces="0" ShowKeypad="False" KeyHorizontalAlignment="Center"/>
<usercontrols:UCKeyValue Grid.Column="0" Grid.Row="1" KeyText="Quad3 :" Value="{Binding CVShrinkPixel3}" Unit="px" DecimalPlaces="0" ShowKeypad="False" KeyHorizontalAlignment="Center"/>
<usercontrols:UCKeyValue Grid.Column="1" Grid.Row="1" KeyText="Quad4 :" Value="{Binding CVShrinkPixel4}" Unit="px" DecimalPlaces="0" ShowKeypad="False" KeyHorizontalAlignment="Center"/>
</Grid>
</GroupBox>
<!--<usercontrols:UCKeyValue KeyText="MorpIterations : " Value="{Binding CVMorpIterations}" DecimalPlaces="0" ShowKeypad="False" />
<usercontrols:UCKeyValue KeyText="MorpMaskSize : " Value="{Binding CVMorpMaskSize}" DecimalPlaces="0" ShowKeypad="False" />-->
<usercontrols:UCKeyValue KeyText="Radius : " Value="{Binding Radius}" Unit="mm" DecimalPlaces="2" ShowKeypad="False" />
<usercontrols:UCKeyValue KeyText="Margin : " Value="{Binding Margin}" Unit="pixel" DecimalPlaces="0" ShowKeypad="False" />
<usercontrols:UCKeyValue KeyText="DividePointNum : " Value="{Binding PointNum}" Unit="count" DecimalPlaces="0" ShowKeypad="False" />
<usercontrols:UCKeyValue KeyText="DetectPoint : " Value="{Binding DetectPointPercent}" Unit="%" DecimalPlaces="2" ShowKeypad="False" />
</StackPanel>
<!--MiL은 현재 미사용으로 주석-->
<!--<GroupBox Header="MIL Param" Margin="3">
<StackPanel Orientation="Vertical">
<usercontrols:UCKeyValue KeyText="Threshold : " Value="{Binding MILThreshold}" DecimalPlaces="0" ShowKeypad="False" />
<usercontrols:UCKeyValue KeyText="FillGapDist : " Value="{Binding MILFillGapDist}" DecimalPlaces="0" ShowKeypad="False" />
<usercontrols:UCKeyValue KeyText="ShrinkDist : " Value="{Binding MILShrinkDist}" DecimalPlaces="0" Unit="res" ShowKeypad="False" />
</StackPanel>
</GroupBox>-->
</StackPanel>
</GroupBox>
<GroupBox Header="EdgeDetect Result Data" Margin="3">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<usercontrols:UCKeyValue Grid.Column="0" Grid.Row="0" KeyText="Ref X : " Value="{Binding ReferenceX}" Unit="mm" DecimalPlaces="1" ShowKeypad="False" IsReadOnly="True"/>
<usercontrols:UCKeyValue Grid.Column="0" Grid.Row="1" KeyText="Ref Y : " Value="{Binding ReferenceY}" Unit="mm" DecimalPlaces="1" ShowKeypad="False" IsReadOnly="True"/>
<usercontrols:UCKeyValue Grid.Column="0" Grid.Row="2" KeyText="Refe Th : " Value="{Binding ReferenceTh}" Unit="deg" DecimalPlaces="1" ShowKeypad="False" IsReadOnly="True"/>
<usercontrols:UCKeyValue Grid.Column="1" Grid.Row="0" KeyText="Offset X : " Value="{Binding OffsetX}" Unit="mm" DecimalPlaces="1" ShowKeypad="False" IsReadOnly="True"/>
<usercontrols:UCKeyValue Grid.Column="1" Grid.Row="1" KeyText="Offset Y : " Value="{Binding OffsetY}" Unit="mm" DecimalPlaces="1" ShowKeypad="False" IsReadOnly="True"/>
<usercontrols:UCKeyValue Grid.Column="1" Grid.Row="2" KeyText="Offset Th : " Value="{Binding OffsetTh}" Unit="deg" DecimalPlaces="1" ShowKeypad="False" IsReadOnly="True"/>
</Grid>
</GroupBox>
<!-- 이미지 Masking 미사용으로 주석처리 -->
<!--<GroupBox Header="Masking Param" Margin="3">
<StackPanel Orientation="Vertical">
<usercontrols:UCKeyValue KeyText="Inner Circle Size : " Value="{Binding CVInnerCircleSize}" Unit="mm" DecimalPlaces="0" ShowKeypad="False" />
<usercontrols:UCKeyValue KeyText="Outer Circle Size : " Value="{Binding CVOuterCircleSize}" Unit="mm" DecimalPlaces="0" ShowKeypad="False" />
</StackPanel>
</GroupBox>-->
</StackPanel>
<StackPanel Grid.Column="1">
<GroupBox Header="Object Gen Type" Margin="3">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<RadioButton Grid.Column="0" Command="{Binding CMD_ObjectGenTypeChanged}" CommandParameter="ArcByAngle"
Style="{StaticResource styleRbJogUnit}" Content="ArcByAngle" Margin="3" IsChecked="True"/>
<RadioButton Grid.Column="1" Command="{Binding CMD_ObjectGenTypeChanged}" CommandParameter="FitArcsAndLines"
Style="{StaticResource styleRbJogUnit}" Content="FitArcsAndLines" Margin="3"/>
</Grid>
</GroupBox>
<GroupBox Header="GenObject Param" Margin="3">
<StackPanel Orientation="Vertical">
<GroupBox Header="ArcByAngle" Margin="3">
<usercontrols:UCKeyValue KeyText="ObjectNumber : " Value="{Binding ObjectNumber}" DecimalPlaces="0" ShowKeypad="False" />
</GroupBox>
<GroupBox Header="FitArcsAndLines" Margin="3">
<StackPanel>
<usercontrols:UCKeyValue KeyText="MergeDist : " Value="{Binding dMergeDist}" Unit="pixel" DecimalPlaces="1" ShowKeypad="False" />
<usercontrols:UCKeyValue KeyText="MaxArcRadius : " Value="{Binding nMaxArcRadius}" DecimalPlaces="0" ShowKeypad="False" />
<usercontrols:UCKeyValue KeyText="LineTolerance : " Value="{Binding nLineTolerance}" DecimalPlaces="0" ShowKeypad="False" />
<usercontrols:UCKeyValue KeyText="ArcTolerance : " Value="{Binding nArcTolerance}" DecimalPlaces="0" ShowKeypad="False" />
<usercontrols:UCKeyValue KeyText="LineDefualtWidth : " Value="{Binding fLineDefualtWidth}" DecimalPlaces="2" ShowKeypad="False" />
</StackPanel>
</GroupBox>
</StackPanel>
</GroupBox>
<GroupBox Header="DrawObject Interlock Param" Margin="3">
<StackPanel Orientation="Vertical">
<usercontrols:UCKeyValue KeyText="Points Distance Range : " Value="{Binding DrawObjectDistanceRange}" Unit="mm" DecimalPlaces="2" ShowKeypad="False" />
<usercontrols:UCKeyValue KeyText="Path Length Diff Range : " Value="{Binding DrawObjectLengthSumDiffRange}" Unit="mm" DecimalPlaces="2" ShowKeypad="False" />
<usercontrols:UCKeyValue KeyText="Arc Length Max : " Value="{Binding DrawObjectArcLengthMax}" Unit="mm" DecimalPlaces="0" ShowKeypad="False" />
<usercontrols:UCKeyValue KeyText="CenterXY Diff Range : " Value="{Binding DrawObjectCenterXYDiffRange}" Unit="mm" DecimalPlaces="2" ShowKeypad="False" />
</StackPanel>
</GroupBox>
<!--<GroupBox Header="Object Detection" Margin="3">
<StackPanel Orientation="Vertical">
<Button Margin="3" FontSize="15" Command="{Binding CMD_FindReference}">Find Reference</Button>
<Button Margin="3" FontSize="15" Command="{Binding CMD_FindObject}">Find</Button>
<Button Margin="3" FontSize="15" Command="{Binding CMD_RecipeUpdateObject}">Recipe Update</Button>
</StackPanel>
</GroupBox>-->
</StackPanel>
<Grid Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="2*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0">
<GroupBox Header="RCC Sequence" Margin="3">
<StackPanel Orientation="Vertical">
<Button Margin="5" FontSize="15" Command="{Binding CMD_FlyingSeqStart}">Start</Button>
<!--<Button Margin="5" Height="50" FontSize="30" Command="{Binding CMD_FlyingSeqRun}">Run</Button>-->
<Button Margin="5" FontSize="15" Command="{Binding CMD_FlyingSeqStop}">Stop</Button>
</StackPanel>
</GroupBox>
<GroupBox Header="Etc Operation">
<StackPanel Orientation="Vertical" Margin="3">
<Button Margin="3" FontSize="15" Command="{Binding CMD_RecommendDetectParam}">Recommend Edge Params</Button>
<Button Margin="3" FontSize="15" Command="{Binding CMD_CenterDetectTest}">Center Detect</Button>
<Button Margin="3" FontSize="15" Command="{Binding CMD_SystemParamSave}">SystemParameter Save</Button>
</StackPanel>
</GroupBox>
</StackPanel>
<DataGrid Grid.Row="1" Background="Black" BorderThickness="1" ColumnHeaderHeight="18" HorizontalGridLinesBrush="#FFA0A0A0" VerticalGridLinesBrush="#FFA0A0A0" RowHeight="27" IsReadOnly="True"
ItemsSource="{Binding ContourCorrection}" AutoGenerateColumns="True" ColumnWidth="100" GridLinesVisibility="All">
</DataGrid>
</Grid>
</Grid>
</Grid>
</Grid>
</UserControl>