diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2024-09-10 07:15:23 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2024-09-10 07:15:23 +0300 |
| commit | 28a79338c4c250d9d6f3722a1c15c239fff56a29 (patch) | |
| tree | f92897e7fa27e0dbdaa1190b6812b1731d9363f2 /Software | |
| parent | 2718ce44b9dd90ab1e222cba82c0cbe6cac174f0 (diff) | |
| download | Tango-28a79338c4c250d9d6f3722a1c15c239fff56a29.tar.gz Tango-28a79338c4c250d9d6f3722a1c15c239fff56a29.zip | |
Major advancement on Violet predictions.
Diffstat (limited to 'Software')
30 files changed, 758 insertions, 192 deletions
diff --git a/Software/DB/Tango.mdf b/Software/DB/Tango.mdf Binary files differindex c79733166..7ffb8ecf1 100644 --- a/Software/DB/Tango.mdf +++ b/Software/DB/Tango.mdf diff --git a/Software/DB/Tango_log.ldf b/Software/DB/Tango_log.ldf Binary files differindex b456972d7..f33d73883 100644 --- a/Software/DB/Tango_log.ldf +++ b/Software/DB/Tango_log.ldf diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs index 4fd1a834b..a32fa58df 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs @@ -2336,10 +2336,9 @@ namespace Tango.MachineStudio.Developer.ViewModels newJob.Machine = SelectedMachine; - SelectedMachine.Jobs.Add(newJob); var segment = newJob.AddSolidSegment(); - segment.BrushStops[0].SetAllDispensingStepDivisions(BL.Dispensing.DispenserStepDivisions.D8); + segment.BrushStops[0].SetAllDispensingStepDivisions(BL.Dispensing.DispenserStepDivisions.D8, SelectedMachine.Configuration); LogManager.Log("Saving selected machine to database..."); await SelectedMachine.SaveAsync(_machineDbContext); @@ -2407,7 +2406,7 @@ namespace Tango.MachineStudio.Developer.ViewModels stop.Segment = SelectedSegment; stop.ColorSpace = ColorSpaces.FirstOrDefault(); stop.Color = Colors.Black; - stop.SetAllDispensingStepDivisions(BL.Dispensing.DispenserStepDivisions.D8); + stop.SetAllDispensingStepDivisions(BL.Dispensing.DispenserStepDivisions.D8, SelectedMachine.Configuration); stop.SetLiquidVolumes(SelectedMachine.Configuration, SelectedRML, SelectedProcessParametersTable); SelectedSegment.BrushStops.Add(stop); // _activeJobDbContext.BrushStops.Add(stop); diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs index cad54c848..ddc0d91a3 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs @@ -36,6 +36,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels { public class MainViewVM : StudioViewModel<IMainView> { + private const int MAX_IDS_PACKS = 12; private INotificationProvider _notification; private IActionLogManager _actionLogManager; private IAuthenticationProvider _authentication; @@ -283,7 +284,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels _machines_action_timer = new ActionTimer(TimeSpan.FromMilliseconds(200)); _dispensers_action_timer = new ActionTimer(TimeSpan.FromMilliseconds(200)); - AddIdsCommand = new RelayCommand(AddIds, (x) => ActiveMachine != null && ActiveMachine.Configuration != null && ActiveMachine.Configuration.IdsPacks.Count < 10); + AddIdsCommand = new RelayCommand(AddIds, (x) => ActiveMachine != null && ActiveMachine.Configuration != null && ActiveMachine.Configuration.IdsPacks.Count < MAX_IDS_PACKS); RemoveIdsCommand = new RelayCommand(RemoveIds, (x) => SelectedIds != null); EditMachineCommand = new RelayCommand(() => LoadSelectedMachine(), () => SelectedMachine != null); BackToMachinesCommand = new RelayCommand(() => View.NavigateTo(MachineDesignerNavigationView.MachinesView)); diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/ConfigurationView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/ConfigurationView.xaml index d1eaaaeff..9b99c9ec5 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/ConfigurationView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/ConfigurationView.xaml @@ -139,18 +139,6 @@ <materialDesign:PackIcon Kind="Minus" Width="24" Height="24"></materialDesign:PackIcon> </Button> - <UniformGrid Width="310" Canvas.Top="295" Canvas.Left="420" Rows="1" Columns="10" TextElement.FontSize="9"> - <TextBlock HorizontalAlignment="Center">1</TextBlock> - <TextBlock HorizontalAlignment="Center">2</TextBlock> - <TextBlock HorizontalAlignment="Center">3</TextBlock> - <TextBlock HorizontalAlignment="Center">4</TextBlock> - <TextBlock HorizontalAlignment="Center">5</TextBlock> - <TextBlock HorizontalAlignment="Center">6</TextBlock> - <TextBlock HorizontalAlignment="Center">7</TextBlock> - <TextBlock HorizontalAlignment="Center">8</TextBlock> - <TextBlock HorizontalAlignment="Center">9</TextBlock> - <TextBlock HorizontalAlignment="Center">10</TextBlock> - </UniformGrid> <Grid x:Name="gridIds" Width="310" Height="195" Canvas.Top="314" Canvas.Left="420"> <ListBox ItemsSource="{Binding ActiveMachine.Configuration.IdsPacks}" SelectedItem="{Binding SelectedIds}" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> <ListBox.ItemContainerStyle> @@ -162,13 +150,14 @@ </ListBox.ItemContainerStyle> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> - <UniformGrid Columns="10"></UniformGrid> + <UniformGrid Rows="1"></UniformGrid> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> - <Grid dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Drop="OnDropOnIdsPack"> + <Grid MaxWidth="35" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Drop="OnDropOnIdsPack"> <Grid.RowDefinitions> + <RowDefinition Height="11"/> <RowDefinition Height="1*"/> <RowDefinition Height="30"/> </Grid.RowDefinitions> @@ -179,7 +168,7 @@ </Style.Triggers> </Style> </Grid.Style> - <UniformGrid Columns="1" Rows="2"> + <UniformGrid Grid.Row="1" Columns="1" Rows="2"> <Grid Margin="2"> <Image IsHitTestVisible="False" Source="../Images/dispenser.png" RenderOptions.BitmapScalingMode="Fant"> <Image.Style> @@ -231,7 +220,7 @@ </Grid> </UniformGrid> - <Grid Grid.Row="1" Margin="3" IsHitTestVisible="False"> + <Grid Grid.Row="2" Margin="3" IsHitTestVisible="False"> <Grid.Style> <Style TargetType="Grid"> <Style.Triggers> @@ -258,6 +247,8 @@ </Border.Background> </Border> </Grid> + + <TextBlock Grid.Row="0" FontSize="9" HorizontalAlignment="Center" VerticalAlignment="Top" Text="{Binding PackIndex}"></TextBlock> </Grid> </DataTemplate> </ItemsControl.ItemTemplate> diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MachineView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MachineView.xaml index 54e47c0d4..ea2e2e84d 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MachineView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MachineView.xaml @@ -69,19 +69,6 @@ <Rectangle Stroke="Gray" HorizontalAlignment="Left" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/> </Grid> - <UniformGrid Width="310" Canvas.Top="295" Canvas.Left="420" Rows="1" Columns="10" TextElement.FontSize="9"> - <TextBlock HorizontalAlignment="Center">1</TextBlock> - <TextBlock HorizontalAlignment="Center">2</TextBlock> - <TextBlock HorizontalAlignment="Center">3</TextBlock> - <TextBlock HorizontalAlignment="Center">4</TextBlock> - <TextBlock HorizontalAlignment="Center">5</TextBlock> - <TextBlock HorizontalAlignment="Center">6</TextBlock> - <TextBlock HorizontalAlignment="Center">7</TextBlock> - <TextBlock HorizontalAlignment="Center">8</TextBlock> - <TextBlock HorizontalAlignment="Center">9</TextBlock> - <TextBlock HorizontalAlignment="Center">10</TextBlock> - </UniformGrid> - <Grid x:Name="gridIds" Width="310" Height="195" Canvas.Top="314" Canvas.Left="420"> <ListBox ItemsSource="{Binding Configuration.IdsPacks}" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> <ListBox.ItemContainerStyle> @@ -93,24 +80,18 @@ </ListBox.ItemContainerStyle> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> - <UniformGrid Columns="10"></UniformGrid> + <UniformGrid Rows="1"></UniformGrid> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> - <Grid dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" > + <Grid MaxWidth="35"> <Grid.RowDefinitions> + <RowDefinition Height="11"/> <RowDefinition Height="1*"/> <RowDefinition Height="30"/> </Grid.RowDefinitions> - <Grid.Style> - <Style TargetType="Grid" BasedOn="{StaticResource draggableGrid}"> - <Style.Triggers> - - </Style.Triggers> - </Style> - </Grid.Style> - <UniformGrid Columns="1" Rows="2"> + <UniformGrid Grid.Row="1" Columns="1" Rows="2"> <Grid Margin="2"> <Image IsHitTestVisible="False" Source="../Images/dispenser.png" RenderOptions.BitmapScalingMode="Fant"> <Image.Style> @@ -156,7 +137,7 @@ </Grid> </UniformGrid> - <Grid Grid.Row="1" Margin="3" IsHitTestVisible="False"> + <Grid Grid.Row="2" Margin="3" IsHitTestVisible="False"> <Grid.Style> <Style TargetType="Grid"> <Style.Triggers> @@ -183,6 +164,8 @@ </Border.Background> </Border> </Grid> + + <TextBlock Grid.Row="0" FontSize="9" HorizontalAlignment="Center" VerticalAlignment="Top" Text="{Binding PackIndex}"></TextBlock> </Grid> </DataTemplate> </ItemsControl.ItemTemplate> @@ -199,7 +182,7 @@ </Style.Triggers> </Style> </Grid.Style> - <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="20" FontWeight="Bold" Foreground="Gainsboro">NO IDS PACKS</TextBlock> + <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="20" FontWeight="Bold" Foreground="{StaticResource BorderBrushGainsboro}">NO IDS PACKS</TextBlock> </Grid> <Rectangle VerticalAlignment="Bottom" Stroke="DimGray" StrokeThickness="1"> diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/ColorConversionView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/ColorConversionView.xaml index 73f5208db..c3816e93f 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/ColorConversionView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/ColorConversionView.xaml @@ -128,7 +128,7 @@ <TextBlock FontStyle="Italic" HorizontalAlignment="Center" Grid.Column="2" Margin="0 0 0 0">SUGGESTIONS</TextBlock> <TextBlock FontStyle="Italic" HorizontalAlignment="Center" Grid.Column="4" Margin="-80 0 0 0">LIQUID VOLUMES</TextBlock> - <Image Source="../Images/arrow-long-right.png" Grid.Column="1" Grid.Row="1" Width="100" Stretch="Fill" Height="30" Opacity="0.8" Margin="20 0 20 0"></Image> + <Image Source="../Images/arrow-long-right.png" Grid.Column="1" Grid.Row="1" Width="70" Stretch="Fill" Height="30" Opacity="0.8" Margin="20 0 20 0"></Image> <hive:HexList Width="220" Height="270" UseHexItemHasContainer="True" Grid.Column="2" Grid.Row="1" RowCount="6" ColumnCount="5" ItemsSource="{Binding HiveSuggestions}" SelectedItem="{Binding SelectedSuggestion,Mode=TwoWay}"> <hive:HexList.ItemContainerStyle> @@ -175,7 +175,7 @@ </TextBlock.Style> </TextBlock> - <Image Source="../Images/arrow-long-right.png" Grid.Column="3" Grid.Row="1" Width="100" Stretch="Fill" Height="30" Opacity="0.8" Margin="20 0 20 0"></Image> + <Image Source="../Images/arrow-long-right.png" Grid.Column="3" Grid.Row="1" Width="70" Stretch="Fill" Height="30" Opacity="0.8" Margin="20 0 20 0"></Image> <Grid Grid.Column="4" Grid.Row="1" IsHitTestVisible="False"> <StackPanel HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0 -20 0 0"> diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Controls/MachineView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Controls/MachineView.xaml index 013dca6ce..886b32cf9 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Controls/MachineView.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Controls/MachineView.xaml @@ -53,17 +53,6 @@ <Rectangle Stroke="Gray" HorizontalAlignment="Left" StrokeThickness="1" StrokeDashArray="5" RenderTransformOrigin="0.5,0.5"/> </Grid> - <UniformGrid Width="310" Canvas.Top="295" Canvas.Left="420" Rows="1" Columns="8" TextElement.FontSize="9"> - <TextBlock HorizontalAlignment="Center">1</TextBlock> - <TextBlock HorizontalAlignment="Center">2</TextBlock> - <TextBlock HorizontalAlignment="Center">3</TextBlock> - <TextBlock HorizontalAlignment="Center">4</TextBlock> - <TextBlock HorizontalAlignment="Center">5</TextBlock> - <TextBlock HorizontalAlignment="Center">6</TextBlock> - <TextBlock HorizontalAlignment="Center">7</TextBlock> - <TextBlock HorizontalAlignment="Center">8</TextBlock> - </UniformGrid> - <Grid x:Name="gridIds" Width="310" Height="195" Canvas.Top="314" Canvas.Left="420"> <ListBox ItemsSource="{Binding Configuration.IdsPacks}" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> <ListBox.ItemContainerStyle> @@ -75,17 +64,18 @@ </ListBox.ItemContainerStyle> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> - <UniformGrid Columns="8"></UniformGrid> + <UniformGrid Rows="1"></UniformGrid> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> - <Grid> + <Grid MaxWidth="35"> <Grid.RowDefinitions> + <RowDefinition Height="11"/> <RowDefinition Height="1*"/> <RowDefinition Height="30"/> </Grid.RowDefinitions> - <UniformGrid Columns="1" Rows="2"> + <UniformGrid Grid.Row="1" Columns="1" Rows="2"> <Grid Margin="2"> <Image IsHitTestVisible="False" Source="../Images/dispenser.png" RenderOptions.BitmapScalingMode="Fant"> <Image.Style> @@ -131,7 +121,7 @@ </Grid> </UniformGrid> - <Grid Grid.Row="1" Margin="3" IsHitTestVisible="False"> + <Grid Grid.Row="2" Margin="3" IsHitTestVisible="False"> <Grid.Style> <Style TargetType="Grid"> <Style.Triggers> @@ -158,6 +148,8 @@ </Border.Background> </Border> </Grid> + + <TextBlock Grid.Row="0" FontSize="9" HorizontalAlignment="Center" VerticalAlignment="Top" Text="{Binding PackIndex}"></TextBlock> </Grid> </DataTemplate> </ItemsControl.ItemTemplate> diff --git a/Software/Visual_Studio/Tango.BL/DTO/BrushStopDTOBase.cs b/Software/Visual_Studio/Tango.BL/DTO/BrushStopDTOBase.cs index 7730131d8..de8dfdb08 100644 --- a/Software/Visual_Studio/Tango.BL/DTO/BrushStopDTOBase.cs +++ b/Software/Visual_Studio/Tango.BL/DTO/BrushStopDTOBase.cs @@ -294,6 +294,38 @@ namespace Tango.BL.DTO } /// <summary> + /// v10 + /// </summary> + public Double V10 + { + get; set; + } + + /// <summary> + /// v10 div + /// </summary> + public Int32 V10Div + { + get; set; + } + + /// <summary> + /// v11 + /// </summary> + public Double V11 + { + get; set; + } + + /// <summary> + /// v11 div + /// </summary> + public Int32 V11Div + { + get; set; + } + + /// <summary> /// corrected /// </summary> public Boolean Corrected diff --git a/Software/Visual_Studio/Tango.BL/Entities/BrushStop.cs b/Software/Visual_Studio/Tango.BL/Entities/BrushStop.cs index 5f2996014..41ebbee7c 100644 --- a/Software/Visual_Studio/Tango.BL/Entities/BrushStop.cs +++ b/Software/Visual_Studio/Tango.BL/Entities/BrushStop.cs @@ -588,9 +588,9 @@ namespace Tango.BL.Entities /// Sets all dispensing step divisions. /// </summary> /// <param name="division">The division.</param> - public void SetAllDispensingStepDivisions(Dispensing.DispenserStepDivisions division) + public void SetAllDispensingStepDivisions(Dispensing.DispenserStepDivisions division, Configuration configuration) { - for (int i = 0; i < 8; i++) + for (int i = 0; i < configuration.IdsPacks.Count; i++) { typeof(BrushStop).GetProperty("V" + i + "Div").SetValue(this, (int)division); } @@ -835,7 +835,7 @@ namespace Tango.BL.Entities cloned.BestMatchR = this.BestMatchR; cloned.BestMatchG = this.BestMatchG; cloned.BestMatchB = this.BestMatchB; - + cloned.ColorCatalogGuid = this.ColorCatalogGuid; cloned.ColorCatalogsItem = this.ColorCatalogsItem; diff --git a/Software/Visual_Studio/Tango.BL/Entities/BrushStopBase.cs b/Software/Visual_Studio/Tango.BL/Entities/BrushStopBase.cs index 23cb993be..60de12338 100644 --- a/Software/Visual_Studio/Tango.BL/Entities/BrushStopBase.cs +++ b/Software/Visual_Studio/Tango.BL/Entities/BrushStopBase.cs @@ -91,6 +91,14 @@ namespace Tango.BL.Entities public event EventHandler<Int32> V9DivChanged; + public event EventHandler<Double> V10Changed; + + public event EventHandler<Int32> V10DivChanged; + + public event EventHandler<Double> V11Changed; + + public event EventHandler<Int32> V11DivChanged; + public event EventHandler<Boolean> CorrectedChanged; public event EventHandler<Boolean> IsTransparentChanged; @@ -1025,6 +1033,114 @@ namespace Tango.BL.Entities } } + protected Double _v10; + + /// <summary> + /// Gets or sets the brushstopbase v10. + /// </summary> + + [Column("V10")] + + public Double V10 + { + get + { + return _v10; + } + + set + { + if (_v10 != value) + { + _v10 = value; + + OnV10Changed(value); + + } + } + } + + protected Int32 _v10div; + + /// <summary> + /// Gets or sets the brushstopbase v10 div. + /// </summary> + + [Column("V10_DIV")] + + public Int32 V10Div + { + get + { + return _v10div; + } + + set + { + if (_v10div != value) + { + _v10div = value; + + OnV10DivChanged(value); + + } + } + } + + protected Double _v11; + + /// <summary> + /// Gets or sets the brushstopbase v11. + /// </summary> + + [Column("V11")] + + public Double V11 + { + get + { + return _v11; + } + + set + { + if (_v11 != value) + { + _v11 = value; + + OnV11Changed(value); + + } + } + } + + protected Int32 _v11div; + + /// <summary> + /// Gets or sets the brushstopbase v11 div. + /// </summary> + + [Column("V11_DIV")] + + public Int32 V11Div + { + get + { + return _v11div; + } + + set + { + if (_v11div != value) + { + _v11div = value; + + OnV11DivChanged(value); + + } + } + } + protected Boolean _corrected; /// <summary> @@ -1629,6 +1745,42 @@ namespace Tango.BL.Entities } /// <summary> + /// Called when the V10 has changed. + /// </summary> + protected virtual void OnV10Changed(Double v10) + { + V10Changed?.Invoke(this, v10); + RaisePropertyChanged(nameof(V10)); + } + + /// <summary> + /// Called when the V10Div has changed. + /// </summary> + protected virtual void OnV10DivChanged(Int32 v10div) + { + V10DivChanged?.Invoke(this, v10div); + RaisePropertyChanged(nameof(V10Div)); + } + + /// <summary> + /// Called when the V11 has changed. + /// </summary> + protected virtual void OnV11Changed(Double v11) + { + V11Changed?.Invoke(this, v11); + RaisePropertyChanged(nameof(V11)); + } + + /// <summary> + /// Called when the V11Div has changed. + /// </summary> + protected virtual void OnV11DivChanged(Int32 v11div) + { + V11DivChanged?.Invoke(this, v11div); + RaisePropertyChanged(nameof(V11Div)); + } + + /// <summary> /// Called when the Corrected has changed. /// </summary> protected virtual void OnCorrectedChanged(Boolean corrected) diff --git a/Software/Visual_Studio/Tango.ColorConversion/CMYKV/CMYK.cs b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/CMYK.cs new file mode 100644 index 000000000..a720fe5c3 --- /dev/null +++ b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/CMYK.cs @@ -0,0 +1,10 @@ +namespace Tango.ColorConversion +{ + public class CMYK + { + public double C { get; set; } + public double M { get; set; } + public double Y { get; set; } + public double K { get; set; } + } +} diff --git a/Software/Visual_Studio/Tango.ColorConversion/CMYKV/CMYKV.cs b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/CMYKV.cs new file mode 100644 index 000000000..fecfdb5c4 --- /dev/null +++ b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/CMYKV.cs @@ -0,0 +1,7 @@ +namespace Tango.ColorConversion +{ + public class CMYKV : CMYK + { + public double V { get; set; } + } +} diff --git a/Software/Visual_Studio/Tango.ColorConversion/CMYKV/CMYKVColorConverter.cs b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/CMYKVColorConverter.cs new file mode 100644 index 000000000..ab7cbc5b0 --- /dev/null +++ b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/CMYKVColorConverter.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Tango.ColorConversion +{ + public class CMYKVColorConverter + { + private IColorConverter colorConverter = new DefaultColorConverter(); + + private List<CMYKVMeasurement> measurements = new List<CMYKVMeasurement>(); + + public void AddMeasurement(CMYKV cmykv, LAB lab) + { + measurements.Add(new CMYKVMeasurement { CMYKVValue = cmykv, LABValue = lab }); + } + + public CMYKV ConvertRGBToCMYKV(RGB rgb, Func<RGB, CMYK> RGBToCMYK, float hueThreshold, PredictionMethod method) + { + var cmyk = RGBToCMYK(rgb); + var violetAdded = (GetHue(rgb) >= hueThreshold) ? 0.2f : 0.0f; + var cmykv = new CMYKV { C = cmyk.C, M = cmyk.M, Y = cmyk.Y, K = cmyk.K, V = violetAdded }; + + LAB lab; + switch (method) + { + case PredictionMethod.LinearInterpolation: + lab = new LinearInterpolationPrediction().Predict(cmykv, measurements); + break; + case PredictionMethod.LinearRegression: + lab = new LinearRegressionPrediction().Predict(cmykv, measurements); + break; + case PredictionMethod.KNearestNeighbors: + lab = new KNearestNeighborsPrediction(5).Predict(cmykv, measurements); + break; + case PredictionMethod.SplineInterpolation: + lab = new SplineInterpolationPrediction().Predict(cmykv, measurements); + break; + default: + throw new ArgumentException("Invalid prediction method"); + } + + return cmykv; + } + + public RGB ConvertCMYKVToRGB(CMYKV cmykv, Func<CMYK, RGB> CMYKToRGB, PredictionMethod method) + { + var rgb = CMYKToRGB(new CMYK { C = cmykv.C, M = cmykv.M, Y = cmykv.Y, K = cmykv.K }); + + LAB lab; + switch (method) + { + case PredictionMethod.LinearInterpolation: + lab = new LinearInterpolationPrediction().Predict(cmykv, measurements); + break; + case PredictionMethod.LinearRegression: + lab = new LinearRegressionPrediction().Predict(cmykv, measurements); + break; + case PredictionMethod.KNearestNeighbors: + lab = new KNearestNeighborsPrediction(5).Predict(cmykv, measurements); + break; + case PredictionMethod.SplineInterpolation: + lab = new SplineInterpolationPrediction().Predict(cmykv, measurements); + break; + default: + throw new ArgumentException("Invalid prediction method"); + } + + return rgb; + } + + private float GetHue(RGB rgb) + { + return (float)Math.Atan2(Math.Sqrt(3) * (rgb.G - rgb.B), 2 * rgb.R - rgb.G - rgb.B); + } + } +} diff --git a/Software/Visual_Studio/Tango.ColorConversion/CMYKV/CMYKVMeasurement.cs b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/CMYKVMeasurement.cs new file mode 100644 index 000000000..90e5b863b --- /dev/null +++ b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/CMYKVMeasurement.cs @@ -0,0 +1,8 @@ +namespace Tango.ColorConversion +{ + public class CMYKVMeasurement + { + public CMYKV CMYKVValue { get; set; } + public LAB LABValue { get; set; } + } +} diff --git a/Software/Visual_Studio/Tango.ColorConversion/CMYKV/DemoData.cs b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/DemoData.cs new file mode 100644 index 000000000..acd66b14d --- /dev/null +++ b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/DemoData.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; + +namespace Tango.ColorConversion +{ + public class DemoData + { + public List<CMYKVMeasurement> GetData() + { + var data = new List<CMYKVMeasurement>(); + + Random rand = new Random(); + + for (int i = 0; i < 100; i++) + { + // Random CMYKV values between 0 and 100 (representing % ink coverage) + double C = rand.NextDouble() * 100; + double M = rand.NextDouble() * 100; + double Y = rand.NextDouble() * 100; + double K = rand.NextDouble() * 100; + double V = rand.NextDouble() * 100; + + // Simulate LAB values based on CMYKV (simplified simulation) + // In a real-world scenario, you'd derive these from actual measurements. + // For now, I simulate LAB by assuming that lightness (L) decreases as more ink (K) is added, + // and A, B values are influenced by C, M, Y components. + + double L = 100 - K - (C + M + Y) * 0.3; // Simulating lightness decrease with more ink + double A = C * 0.5 - M * 0.5; // Simulating red-green axis + double B = Y * 0.6 - V * 0.4; // Simulating yellow-blue axis + + // Clamp LAB values within realistic ranges (L: 0-100, A/B: -128 to 127) + L = L.Clamp(0, 100); + A = A.Clamp(-128, 127); + B = B.Clamp(-128, 127); + + data.Add(new CMYKVMeasurement + { + CMYKVValue = new CMYKV { C = C, M = M, Y = Y, K = K, V = V }, + LABValue = new LAB { L = L, A = A, B = B } + }); + } + + return data; + } + } +}
\ No newline at end of file diff --git a/Software/Visual_Studio/Tango.ColorConversion/CMYKV/KNearestNeighborsPrediction.cs b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/KNearestNeighborsPrediction.cs new file mode 100644 index 000000000..bce1e90ce --- /dev/null +++ b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/KNearestNeighborsPrediction.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Tango.ColorConversion +{ + public class KNearestNeighborsPrediction + { + private int k; + + public KNearestNeighborsPrediction(int k) + { + this.k = k; + } + + public LAB Predict(CMYKV cmykv, List<CMYKVMeasurement> measurements) + { + // K-Nearest Neighbors logic: Find the k closest measurements and average their LAB values + if (measurements.Count < k) + throw new InvalidOperationException($"Not enough measurements for KNN (requires at least {k})"); + + // Calculate distances and take the k nearest measurements + var nearest = measurements + .OrderBy(m => GetDistance(m.CMYKVValue, cmykv)) + .Take(k) + .ToArray(); + + // Average their LAB values + var avgL = nearest.Average(m => m.LABValue.L); + var avgA = nearest.Average(m => m.LABValue.A); + var avgB = nearest.Average(m => m.LABValue.B); + + return new LAB { L = avgL, A = avgA, B = avgB }; + } + + private double GetDistance(CMYKV m1, CMYKV m2) + { + return Math.Sqrt(Math.Pow(m1.C - m2.C, 2) + + Math.Pow(m1.M - m2.M, 2) + + Math.Pow(m1.Y - m2.Y, 2) + + Math.Pow(m1.K - m2.K, 2) + + Math.Pow(m1.V - m2.V, 2)); + } + } +} diff --git a/Software/Visual_Studio/Tango.ColorConversion/CMYKV/LAB.cs b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/LAB.cs new file mode 100644 index 000000000..5dfd5ee7e --- /dev/null +++ b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/LAB.cs @@ -0,0 +1,9 @@ +namespace Tango.ColorConversion +{ + public class LAB + { + public double L { get; set; } + public double A { get; set; } + public double B { get; set; } + } +} diff --git a/Software/Visual_Studio/Tango.ColorConversion/CMYKV/LinearInterpolationPrediction.cs b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/LinearInterpolationPrediction.cs new file mode 100644 index 000000000..5d5fa6f95 --- /dev/null +++ b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/LinearInterpolationPrediction.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Tango.ColorConversion +{ + public class LinearInterpolationPrediction + { + public LAB Predict(CMYKV cmykv, List<CMYKVMeasurement> measurements) + { + // Linear interpolation logic: Find the two closest points and interpolate between them. + + if (measurements.Count < 2) + throw new InvalidOperationException("Not enough measurements for interpolation"); + + // Calculate the Euclidean distance between the input and each measurement's CMYKV values + var closest = measurements + .OrderBy(m => GetDistance(m.CMYKVValue, cmykv)) + .Take(2) + .ToArray(); + + // Perform interpolation between the two closest points + var weight1 = GetDistance(closest[1].CMYKVValue, cmykv); + var weight2 = GetDistance(closest[0].CMYKVValue, cmykv); + var totalWeight = weight1 + weight2; + + return new LAB + { + L = (closest[0].LABValue.L * weight2 + closest[1].LABValue.L * weight1) / totalWeight, + A = (closest[0].LABValue.A * weight2 + closest[1].LABValue.A * weight1) / totalWeight, + B = (closest[0].LABValue.B * weight2 + closest[1].LABValue.B * weight1) / totalWeight + }; + } + + private double GetDistance(CMYKV m1, CMYKV m2) + { + return Math.Sqrt(Math.Pow(m1.C - m2.C, 2) + + Math.Pow(m1.M - m2.M, 2) + + Math.Pow(m1.Y - m2.Y, 2) + + Math.Pow(m1.K - m2.K, 2) + + Math.Pow(m1.V - m2.V, 2)); + } + } +} diff --git a/Software/Visual_Studio/Tango.ColorConversion/CMYKV/LinearRegressionPrediction.cs b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/LinearRegressionPrediction.cs new file mode 100644 index 000000000..04fc7df70 --- /dev/null +++ b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/LinearRegressionPrediction.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Tango.ColorConversion +{ + public class LinearRegressionPrediction + { + public LAB Predict(CMYKV cmykv, List<CMYKVMeasurement> measurements) + { + // Simple linear regression to fit LAB as a function of CMYKV + + var n = measurements.Count; + if (n == 0) + throw new InvalidOperationException("No measurements for regression"); + + double sumC = 0, sumM = 0, sumY = 0, sumK = 0, sumV = 0; + double sumL = 0, sumA = 0, sumB = 0; + + // Sum up the CMYKV and LAB components + foreach (var m in measurements) + { + sumC += m.CMYKVValue.C; + sumM += m.CMYKVValue.M; + sumY += m.CMYKVValue.Y; + sumK += m.CMYKVValue.K; + sumV += m.CMYKVValue.V; + + sumL += m.LABValue.L; + sumA += m.LABValue.A; + sumB += m.LABValue.B; + } + + // Compute the averages + var avgC = sumC / n; + var avgM = sumM / n; + var avgY = sumY / n; + var avgK = sumK / n; + var avgV = sumV / n; + + var avgL = sumL / n; + var avgA = sumA / n; + var avgB = sumB / n; + + // Predict LAB by applying the linear model (this is a simple averaging model) + return new LAB + { + L = avgL, + A = avgA, + B = avgB + }; + } + } +} diff --git a/Software/Visual_Studio/Tango.ColorConversion/CMYKV/PredictionMethod.cs b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/PredictionMethod.cs new file mode 100644 index 000000000..200368571 --- /dev/null +++ b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/PredictionMethod.cs @@ -0,0 +1,10 @@ +namespace Tango.ColorConversion +{ + public enum PredictionMethod + { + LinearInterpolation, + LinearRegression, + KNearestNeighbors, + SplineInterpolation + } +} diff --git a/Software/Visual_Studio/Tango.ColorConversion/CMYKV/RGB.cs b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/RGB.cs new file mode 100644 index 000000000..7775a713c --- /dev/null +++ b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/RGB.cs @@ -0,0 +1,9 @@ +namespace Tango.ColorConversion +{ + public class RGB + { + public float R { get; set; } + public float G { get; set; } + public float B { get; set; } + } +} diff --git a/Software/Visual_Studio/Tango.ColorConversion/CMYKV/SplineInterpolationPrediction.cs b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/SplineInterpolationPrediction.cs new file mode 100644 index 000000000..5d118bc8d --- /dev/null +++ b/Software/Visual_Studio/Tango.ColorConversion/CMYKV/SplineInterpolationPrediction.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MathNet.Numerics.Interpolation; + +namespace Tango.ColorConversion +{ + public class SplineInterpolationPrediction + { + public LAB Predict(CMYKV cmykv, List<CMYKVMeasurement> measurements) + { + // Spline interpolation logic: Perform cubic spline interpolation + var cValues = measurements.Select(m => m.CMYKVValue.C).ToArray(); + var lValues = measurements.Select(m => m.LABValue.L).ToArray(); + var aValues = measurements.Select(m => m.LABValue.A).ToArray(); + var bValues = measurements.Select(m => m.LABValue.B).ToArray(); + + var lSpline = CubicSpline.InterpolateNatural(cValues, lValues); + var aSpline = CubicSpline.InterpolateNatural(cValues, aValues); + var bSpline = CubicSpline.InterpolateNatural(cValues, bValues); + + return new LAB + { + L = (float)lSpline.Interpolate(cmykv.C), + A = (float)aSpline.Interpolate(cmykv.C), + B = (float)bSpline.Interpolate(cmykv.C) + }; + } + } +} diff --git a/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs b/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs index d6f34edd2..dc9f1bd07 100644 --- a/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs +++ b/Software/Visual_Studio/Tango.ColorConversion/DefaultColorConverter.cs @@ -55,40 +55,28 @@ namespace Tango.ColorConversion NativePMR<ConversionInput, ConversionOutput> nativePMR = new NativePMR<ConversionInput, ConversionOutput>(convert); ConversionOutput output = nativePMR.Invoke(conversionInput); - //if (conversionInput.UseLightInks) - //{ - // try - // { - // InputLiquid cyan = conversionInput.InputCoordinates.InputLiquids.SingleOrDefault(x => x.LiquidType == PMR.ColorLab.LiquidType.Cyan); - // OutputLiquid lightCyan = output.SingleCoordinates.OutputLiquids.SingleOrDefault(x => x.LiquidType == PMR.ColorLab.LiquidType.LightCyan); - - // InputLiquid magenta = conversionInput.InputCoordinates.InputLiquids.SingleOrDefault(x => x.LiquidType == PMR.ColorLab.LiquidType.Magenta); - // OutputLiquid lightMagenta = output.SingleCoordinates.OutputLiquids.SingleOrDefault(x => x.LiquidType == PMR.ColorLab.LiquidType.LightMagenta); - - // InputLiquid yellow = conversionInput.InputCoordinates.InputLiquids.SingleOrDefault(x => x.LiquidType == PMR.ColorLab.LiquidType.Yellow); - // OutputLiquid lightYellow = output.SingleCoordinates.OutputLiquids.SingleOrDefault(x => x.LiquidType == PMR.ColorLab.LiquidType.LightYellow); - - // if (lightCyan != null && lightCyan.Volume > 0) - // { - // lightCyan.Volume = (double)((decimal)cyan.Volume * 10m); - // } - // if (lightMagenta != null && lightMagenta.Volume > 0) - // { - // lightMagenta.Volume = (double)((decimal)magenta.Volume * 10m); + if (conversionInput.ColorSpace == PMR.ColorLab.ColorSpace.Volume) + { + var violetInput = conversionInput.InputCoordinates.InputLiquids.FirstOrDefault(x => x.LiquidType == PMR.ColorLab.LiquidType.Violet); - // } - // if (lightYellow != null && lightYellow.Volume > 0) - // { - // lightYellow.Volume = (double)((decimal)yellow.Volume * 10m); + //conversionInput.GenerateHive - // } - // } - // catch (Exception) - // { - // LogManager.Default.Log("Error while correcting light inks decimal parts.", LogCategory.Error); - // } - //} + //Blend violet to best match color. + if (violetInput != null && violetInput.Volume > 0) + { + var color = BlendWithViolet(output.SingleCoordinates.Red, output.SingleCoordinates.Green, output.SingleCoordinates.Blue, (float)(violetInput.Volume / 100d)); + output.SingleCoordinates.Red = color.R; + output.SingleCoordinates.Green = color.G; + output.SingleCoordinates.Blue = color.B; + } + } + else + { + var violetOutput = new OutputLiquid() { LiquidType = PMR.ColorLab.LiquidType.Violet, Volume = 0 }; + output.SingleCoordinates.OutputLiquids.Add(violetOutput); + output.HiveCoordinates.ToList().ForEach(x => x.OutputLiquids.Add(violetOutput)); + } bool result = NativeMethods.FreeLibrary(pDll); @@ -1023,5 +1011,34 @@ namespace Tango.ColorConversion } #endregion + + #region Additional Ink Color Conversion + + private static Color Violet = Color.FromRgb(127, 0, 255); + + public static Color BlendWithViolet(int r, int g, int b, float violetFactor) + { + // Ensure violetFactor is between 0.0 and 1.0 + violetFactor = violetFactor.Clamp(0.0f, 1.0f); + + // Violet color in RGB + int violetR = Violet.R; + int violetG = Violet.G; + int violetB = Violet.B; + + // Blend the current color with violet using the factor + int blendedR = (int)((r * (1 - violetFactor)) + (violetR * violetFactor)); + int blendedG = (int)((g * (1 - violetFactor)) + (violetG * violetFactor)); + int blendedB = (int)((b * (1 - violetFactor)) + (violetB * violetFactor)); + + // Clamp values to 0-255 range + blendedR = blendedR.Clamp(0, 255); + blendedG = blendedG.Clamp(0, 255); + blendedB = blendedB.Clamp(0, 255); + + return Color.FromRgb((byte)blendedR, (byte)blendedG, (byte)blendedB); + } + + #endregion } } diff --git a/Software/Visual_Studio/Tango.ColorConversion/ExtensionMethods/MathExtensions.cs b/Software/Visual_Studio/Tango.ColorConversion/ExtensionMethods/MathExtensions.cs new file mode 100644 index 000000000..7f80c2b88 --- /dev/null +++ b/Software/Visual_Studio/Tango.ColorConversion/ExtensionMethods/MathExtensions.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +public static class MathExtensions +{ + public static T Clamp<T>(this T val, T min, T max) where T : IComparable<T> + { + if (val.CompareTo(min) < 0) return min; + else if (val.CompareTo(max) > 0) return max; + else return val; + } +} diff --git a/Software/Visual_Studio/Tango.ColorConversion/Tango.ColorConversion.csproj b/Software/Visual_Studio/Tango.ColorConversion/Tango.ColorConversion.csproj index 40d16e599..dc33e8557 100644 --- a/Software/Visual_Studio/Tango.ColorConversion/Tango.ColorConversion.csproj +++ b/Software/Visual_Studio/Tango.ColorConversion/Tango.ColorConversion.csproj @@ -34,6 +34,9 @@ <Reference Include="Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL"> <HintPath>..\packages\Google.Protobuf.3.4.1\lib\net45\Google.Protobuf.dll</HintPath> </Reference> + <Reference Include="MathNet.Numerics, Version=6.0.0.0, Culture=neutral, processorArchitecture=MSIL"> + <HintPath>..\packages\MathNet.Numerics.6.0.0-beta1\lib\netstandard2.0\MathNet.Numerics.dll</HintPath> + </Reference> <Reference Include="PresentationCore" /> <Reference Include="System" /> <Reference Include="System.Core" /> @@ -48,15 +51,29 @@ <Compile Include="..\Versioning\GlobalVersionInfo.cs"> <Link>GlobalVersionInfo.cs</Link> </Compile> + <Compile Include="CMYKV\CMYK.cs" /> + <Compile Include="CMYKV\CMYKV.cs" /> + <Compile Include="CMYKV\CMYKVColorConverter.cs" /> + <Compile Include="CMYKV\CMYKVMeasurement.cs" /> + <Compile Include="CMYKV\DemoData.cs" /> + <Compile Include="CMYKV\KNearestNeighborsPrediction.cs" /> + <Compile Include="CMYKV\LAB.cs" /> + <Compile Include="CMYKV\LinearInterpolationPrediction.cs" /> + <Compile Include="CMYKV\LinearRegressionPrediction.cs" /> + <Compile Include="CMYKV\PredictionMethod.cs" /> + <Compile Include="CMYKV\RGB.cs" /> + <Compile Include="CMYKV\SplineInterpolationPrediction.cs" /> <Compile Include="ColorConversionSettings.cs" /> <Compile Include="ColorConversionSuggestion.cs" /> <Compile Include="DefaultColorConverter.cs" /> <Compile Include="ExtensionMethods\ColorConversionSuggestionExtensions.cs" /> <Compile Include="ExtensionMethods\ConversionOutputExtensions.cs" /> + <Compile Include="ExtensionMethods\MathExtensions.cs" /> <Compile Include="IColorConverter.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> + <None Include="app.config" /> <None Include="packages.config" /> </ItemGroup> <ItemGroup> diff --git a/Software/Visual_Studio/Tango.ColorConversion/packages.config b/Software/Visual_Studio/Tango.ColorConversion/packages.config index fa3c0d58d..87e0b85f7 100644 --- a/Software/Visual_Studio/Tango.ColorConversion/packages.config +++ b/Software/Visual_Studio/Tango.ColorConversion/packages.config @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <packages> <package id="Google.Protobuf" version="3.4.1" targetFramework="net461" /> + <package id="MathNet.Numerics" version="6.0.0-beta1" targetFramework="net461" /> </packages>
\ No newline at end of file diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/BRUSH_STOPS.cs b/Software/Visual_Studio/Tango.DAL.Remote/DB/BRUSH_STOPS.cs index 5671e17a3..b94e74a97 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/BRUSH_STOPS.cs +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/BRUSH_STOPS.cs @@ -51,6 +51,10 @@ namespace Tango.DAL.Remote.DB public int V8_DIV { get; set; } public double V9 { get; set; } public int V9_DIV { get; set; } + public double V10 { get; set; } + public int V10_DIV { get; set; } + public double V11 { get; set; } + public int V11_DIV { get; set; } public bool CORRECTED { get; set; } public string COLOR_CATALOG_GUID { get; set; } public string COLOR_CATALOGS_ITEM_GUID { get; set; } diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx index a8b4ebbd6..61d68c102 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx @@ -119,6 +119,10 @@ <Property Name="V8_DIV" Type="int" Nullable="false" /> <Property Name="V9" Type="float" Nullable="false" /> <Property Name="V9_DIV" Type="int" Nullable="false" /> + <Property Name="V10" Type="float" Nullable="false" /> + <Property Name="V10_DIV" Type="int" Nullable="false" /> + <Property Name="V11" Type="float" Nullable="false" /> + <Property Name="V11_DIV" Type="int" Nullable="false" /> <Property Name="CORRECTED" Type="bit" Nullable="false" /> <Property Name="COLOR_CATALOG_GUID" Type="varchar" MaxLength="36" /> <Property Name="COLOR_CATALOGS_ITEM_GUID" Type="varchar" MaxLength="36" /> @@ -5732,6 +5736,10 @@ <Property Name="V8_DIV" Type="Int32" Nullable="false" /> <Property Name="V9" Type="Double" Nullable="false" /> <Property Name="V9_DIV" Type="Int32" Nullable="false" /> + <Property Name="V10" Type="Double" Nullable="false" /> + <Property Name="V10_DIV" Type="Int32" Nullable="false" /> + <Property Name="V11" Type="Double" Nullable="false" /> + <Property Name="V11_DIV" Type="Int32" Nullable="false" /> <Property Name="CORRECTED" Type="Boolean" Nullable="false" /> <Property Name="COLOR_CATALOG_GUID" Type="String" MaxLength="36" FixedLength="false" Unicode="false" /> <Property Name="COLOR_CATALOGS_ITEM_GUID" Type="String" MaxLength="36" FixedLength="false" Unicode="false" /> @@ -9236,6 +9244,10 @@ <ScalarProperty Name="COLOR_CATALOGS_ITEM_GUID" ColumnName="COLOR_CATALOGS_ITEM_GUID" /> <ScalarProperty Name="COLOR_CATALOG_GUID" ColumnName="COLOR_CATALOG_GUID" /> <ScalarProperty Name="CORRECTED" ColumnName="CORRECTED" /> + <ScalarProperty Name="V11_DIV" ColumnName="V11_DIV" /> + <ScalarProperty Name="V11" ColumnName="V11" /> + <ScalarProperty Name="V10_DIV" ColumnName="V10_DIV" /> + <ScalarProperty Name="V10" ColumnName="V10" /> <ScalarProperty Name="V9_DIV" ColumnName="V9_DIV" /> <ScalarProperty Name="V9" ColumnName="V9" /> <ScalarProperty Name="V8_DIV" ColumnName="V8_DIV" /> diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram index 0887ffcae..66a74fb5e 100644 --- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram +++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram @@ -5,102 +5,102 @@ <!-- Diagram content (shape and connector positions) --> <edmx:Diagrams> <Diagram DiagramId="f9ae01d708754bbd997add25a4bacc79" Name="Diagram1" ZoomLevel="58"> - <EntityTypeShape EntityType="RemoteModel.ACTION_LOGS" Width="1.5" PointX="11.25" PointY="16" /> - <EntityTypeShape EntityType="RemoteModel.ADDRESS" Width="1.5" PointX="1.5" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_DISPLAY_PANEL_VERSIONS" Width="1.5" PointX="4.5" PointY="77" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_FIRMWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="71.125" /> - <EntityTypeShape EntityType="RemoteModel.APPLICATION_OS_VERSIONS" Width="1.5" PointX="4.5" PointY="74" /> - <EntityTypeShape EntityType="RemoteModel.BIT_TYPES" Width="1.5" PointX="3.75" PointY="2.125" /> - <EntityTypeShape EntityType="RemoteModel.BRUSH_STOPS" Width="1.5" PointX="18" PointY="22.25" /> - <EntityTypeShape EntityType="RemoteModel.BTSR_APPLICATION_TYPES" Width="1.5" PointX="0.75" PointY="42.125" /> - <EntityTypeShape EntityType="RemoteModel.BTSR_YARN_TYPES" Width="1.5" PointX="0.75" PointY="29.5" /> - <EntityTypeShape EntityType="RemoteModel.CARTRIDGE_TYPES" Width="1.5" PointX="6.75" PointY="37.375" /> - <EntityTypeShape EntityType="RemoteModel.CAT" Width="1.5" PointX="5.25" PointY="29.75" /> - <EntityTypeShape EntityType="RemoteModel.CCT" Width="1.5" PointX="0.75" PointY="12" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS" Width="1.5" PointX="1.5" PointY="59.625" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_GROUPS" Width="1.5" PointX="0.75" PointY="54.125" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS" Width="1.5" PointX="3" PointY="52.875" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS_RECIPES" Width="1.5" PointX="5.25" PointY="25.75" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_PROCESS_INK_UPTAKE" Width="1.5" PointX="5.75" PointY="2.125" /> - <EntityTypeShape EntityType="RemoteModel.COLOR_SPACES" Width="1.5" PointX="9" PointY="30.75" /> - <EntityTypeShape EntityType="RemoteModel.CONFIGURATION" Width="1.5" PointX="6.75" PointY="72.25" /> - <EntityTypeShape EntityType="RemoteModel.CONTACT" Width="1.5" PointX="1.5" PointY="48.875" /> - <EntityTypeShape EntityType="RemoteModel.CUSTOMER" Width="1.5" PointX="9" PointY="37.375" /> - <EntityTypeShape EntityType="RemoteModel.DATA_STORE_ITEMS" Width="1.5" PointX="11.25" PointY="82.75" /> - <EntityTypeShape EntityType="RemoteModel.DISPENSER_TYPES" Width="1.5" PointX="4.5" PointY="13.5" /> - <EntityTypeShape EntityType="RemoteModel.DISPENSER" Width="1.5" PointX="6.75" PointY="12.875" /> - <EntityTypeShape EntityType="RemoteModel.EMBEDDED_FIRMWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="79.875" /> - <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES" Width="1.5" PointX="9" PointY="2.25" /> - <EntityTypeShape EntityType="RemoteModel.FIBER_SHAPES" Width="1.5" PointX="0.75" PointY="26.25" /> - <EntityTypeShape EntityType="RemoteModel.FIBER_SYNTHS" Width="1.5" PointX="0.75" PointY="39.25" /> - <EntityTypeShape EntityType="RemoteModel.FSE_VERSIONS" Width="1.5" PointX="11.25" PointY="8.625" /> - <EntityTypeShape EntityType="RemoteModel.GBD" Width="1.5" PointX="0.75" PointY="15.375" /> - <EntityTypeShape EntityType="RemoteModel.GLOBAL_DATA_STORE_ITEMS" Width="1.5" PointX="5.75" PointY="6.125" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWER_TYPES" Width="1.5" PointX="9.5" PointY="90.25" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWERS" Width="1.5" PointX="11.75" PointY="70.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSOR_TYPES" Width="1.5" PointX="7.5" PointY="41.25" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSORS" Width="1.5" PointX="9.75" PointY="61" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCER_TYPES" Width="1.5" PointX="7.5" PointY="86.25" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCERS" Width="1.5" PointX="9.75" PointY="65.25" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTOR_TYPES" Width="1.5" PointX="10.5" PointY="57.125" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTORS" Width="1.5" PointX="12.75" PointY="60.875" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROL_TYPES" Width="1.5" PointX="12.5" PointY="79.25" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROLS" Width="1.5" PointX="14.75" PointY="71.375" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSOR_TYPES" Width="1.5" PointX="4.5" PointY="63.25" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSORS" Width="1.5" PointX="6.75" PointY="67" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="66.5" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDER_TYPES" Width="1.5" PointX="9.5" PointY="94.25" /> - <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDERS" Width="1.5" PointX="11.75" PointY="75" /> - <EntityTypeShape EntityType="RemoteModel.IDS_PACK_FORMULAS" Width="1.5" PointX="6.75" PointY="45.25" /> - <EntityTypeShape EntityType="RemoteModel.IDS_PACKS" Width="1.5" PointX="9" PointY="44.75" /> - <EntityTypeShape EntityType="RemoteModel.JOB_RUNS" Width="1.5" PointX="18.75" PointY="6.125" /> - <EntityTypeShape EntityType="RemoteModel.JOB" Width="1.5" PointX="11.25" PointY="22" /> - <EntityTypeShape EntityType="RemoteModel.LINEAR_MASS_DENSITY_UNITS" Width="1.5" PointX="0.75" PointY="18.625" /> - <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES" Width="1.5" PointX="6" PointY="17.375" /> - <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES_RMLS" Width="1.5" PointX="8.25" PointY="22" /> - <EntityTypeShape EntityType="RemoteModel.LUB" Width="1.5" PointX="0.75" PointY="36" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE_PROTOTYPES" Width="1.5" PointX="2.75" PointY="10.125" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE_STUDIO_VERSIONS" Width="1.5" PointX="11.25" PointY="12.5" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE_VERSIONS" Width="1.5" PointX="6.75" PointY="82.875" /> - <EntityTypeShape EntityType="RemoteModel.MACHINE" Width="1.5" PointX="9" PointY="70.5" /> - <EntityTypeShape EntityType="RemoteModel.MACHINES_EVENTS" Width="1.5" PointX="11.25" PointY="42.625" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_CONDITIONS" Width="1.5" PointX="0.75" PointY="21.625" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_MATERIALS" Width="1.5" PointX="0.75" PointY="32.875" /> - <EntityTypeShape EntityType="RemoteModel.MEDIA_PURPOSES" Width="1.5" PointX="0.75" PointY="45.5" /> - <EntityTypeShape EntityType="RemoteModel.MID_TANK_TYPES" Width="1.5" PointX="6.75" PointY="77.625" /> - <EntityTypeShape EntityType="RemoteModel.ORGANIZATION" Width="1.5" PointX="0.75" PointY="5.75" /> - <EntityTypeShape EntityType="RemoteModel.PERMISSION" Width="1.5" PointX="12" PointY="0.75" /> - <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES" Width="1.5" PointX="7.5" PointY="50.125" /> - <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES_GROUPS" Width="1.5" PointX="5.25" PointY="56.375" /> - <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS" Width="1.5" PointX="16.75" PointY="2.375" /> - <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS_VERSIONS" Width="1.5" PointX="19" PointY="2.625" /> - <EntityTypeShape EntityType="RemoteModel.RML_EXTENSION_TEST_WASHING_RESULTS" Width="1.5" PointX="16" PointY="14.375" /> - <EntityTypeShape EntityType="RemoteModel.RML" Width="1.5" PointX="3" PointY="19.75" /> - <EntityTypeShape EntityType="RemoteModel.RMLS_SPOOLS" Width="1.5" PointX="8.25" PointY="25.5" /> - <EntityTypeShape EntityType="RemoteModel.ROLE" Width="1.5" PointX="12" PointY="4.625" /> - <EntityTypeShape EntityType="RemoteModel.ROLES_PERMISSIONS" Width="1.5" PointX="14.25" PointY="2.75" /> - <EntityTypeShape EntityType="RemoteModel.RUBBING_RESULTS" Width="1.5" PointX="13.75" PointY="18.125" /> - <EntityTypeShape EntityType="RemoteModel.SEGMENT" Width="1.5" PointX="15.75" PointY="25.75" /> - <EntityTypeShape EntityType="RemoteModel.SEGMENTS_GROUPS" Width="1.5" PointX="13.5" PointY="26.125" /> - <EntityTypeShape EntityType="RemoteModel.SITE" Width="1.5" PointX="3" PointY="5.875" /> - <EntityTypeShape EntityType="RemoteModel.SITES_CATALOGS" Width="1.5" PointX="11.25" PointY="34.375" /> - <EntityTypeShape EntityType="RemoteModel.SITES_RMLS" Width="1.5" PointX="5.25" PointY="22.125" /> - <EntityTypeShape EntityType="RemoteModel.SITES_SPOOL_TYPES" Width="1.5" PointX="14.25" PointY="10.75" /> - <EntityTypeShape EntityType="RemoteModel.SPOOL_TYPES" Width="1.5" PointX="9" PointY="13.375" /> - <EntityTypeShape EntityType="RemoteModel.SPOOL" Width="1.5" PointX="11.25" PointY="47.625" /> - <EntityTypeShape EntityType="RemoteModel.sysdiagram" Width="1.5" PointX="15.75" PointY="18.125" /> - <EntityTypeShape EntityType="RemoteModel.TANGO_UPDATES" Width="1.5" PointX="18.75" PointY="17.125" /> - <EntityTypeShape EntityType="RemoteModel.TANGO_VERSIONS" Width="1.5" PointX="14.25" PointY="44.5" /> - <EntityTypeShape EntityType="RemoteModel.TECH_CONTROLLERS" Width="1.5" PointX="20.75" PointY="6.125" /> - <EntityTypeShape EntityType="RemoteModel.TECH_DISPENSERS" Width="1.5" PointX="20.75" PointY="10.125" /> - <EntityTypeShape EntityType="RemoteModel.TECH_HEATERS" Width="1.5" PointX="20.75" PointY="13.125" /> - <EntityTypeShape EntityType="RemoteModel.TECH_IOS" Width="1.5" PointX="20.75" PointY="16.125" /> - <EntityTypeShape EntityType="RemoteModel.TECH_MONITORS" Width="1.5" PointX="20.75" PointY="21.125" /> - <EntityTypeShape EntityType="RemoteModel.TECH_VALVES" Width="1.5" PointX="13.75" PointY="22.125" /> - <EntityTypeShape EntityType="RemoteModel.USER" Width="1.5" PointX="9" PointY="7.375" /> - <EntityTypeShape EntityType="RemoteModel.USERS_ROLES" Width="1.5" PointX="14.25" PointY="6.75" /> - <EntityTypeShape EntityType="RemoteModel.WASHING_TEST_MATERIALS" Width="1.5" PointX="13.75" PointY="14.875" /> - <EntityTypeShape EntityType="RemoteModel.WINDING_METHODS" Width="1.5" PointX="9" PointY="34.25" /> + <EntityTypeShape EntityType="RemoteModel.ACTION_LOGS" Width="1.5" PointX="11.25" PointY="32.625" /> + <EntityTypeShape EntityType="RemoteModel.ADDRESS" Width="1.5" PointX="1.5" PointY="85.375" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_DISPLAY_PANEL_VERSIONS" Width="1.5" PointX="1.5" PointY="76.25" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="73.25" /> + <EntityTypeShape EntityType="RemoteModel.APPLICATION_OS_VERSIONS" Width="1.5" PointX="1.5" PointY="70.375" /> + <EntityTypeShape EntityType="RemoteModel.BIT_TYPES" Width="1.5" PointX="0.75" PointY="0.75" /> + <EntityTypeShape EntityType="RemoteModel.BRUSH_STOPS" Width="1.5" PointX="18" PointY="20.625" /> + <EntityTypeShape EntityType="RemoteModel.BTSR_APPLICATION_TYPES" Width="1.5" PointX="0.75" PointY="14" /> + <EntityTypeShape EntityType="RemoteModel.BTSR_YARN_TYPES" Width="1.5" PointX="0.75" PointY="41.625" /> + <EntityTypeShape EntityType="RemoteModel.CARTRIDGE_TYPES" Width="1.5" PointX="3.75" PointY="45.5" /> + <EntityTypeShape EntityType="RemoteModel.CAT" Width="1.5" PointX="8.25" PointY="24.625" /> + <EntityTypeShape EntityType="RemoteModel.CCT" Width="1.5" PointX="0.75" PointY="32" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS" Width="1.5" PointX="1.5" PointY="5.375" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_GROUPS" Width="1.5" PointX="3.75" PointY="5.875" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS" Width="1.5" PointX="6" PointY="4.625" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS_RECIPES" Width="1.5" PointX="8.25" PointY="20.5" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_PROCESS_INK_UPTAKE" Width="1.5" PointX="2.75" PointY="0.75" /> + <EntityTypeShape EntityType="RemoteModel.COLOR_SPACES" Width="1.5" PointX="9" PointY="16" /> + <EntityTypeShape EntityType="RemoteModel.CONFIGURATION" Width="1.5" PointX="3.75" PointY="71.5" /> + <EntityTypeShape EntityType="RemoteModel.CONTACT" Width="1.5" PointX="1.5" PointY="89.5" /> + <EntityTypeShape EntityType="RemoteModel.CUSTOMER" Width="1.5" PointX="9" PointY="28.875" /> + <EntityTypeShape EntityType="RemoteModel.DATA_STORE_ITEMS" Width="1.5" PointX="8.25" PointY="85.875" /> + <EntityTypeShape EntityType="RemoteModel.DISPENSER_TYPES" Width="1.5" PointX="1.5" PointY="94" /> + <EntityTypeShape EntityType="RemoteModel.DISPENSER" Width="1.5" PointX="3.75" PointY="93.375" /> + <EntityTypeShape EntityType="RemoteModel.EMBEDDED_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="79.125" /> + <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES" Width="1.5" PointX="9" PointY="43.75" /> + <EntityTypeShape EntityType="RemoteModel.FIBER_SHAPES" Width="1.5" PointX="0.75" PointY="20.25" /> + <EntityTypeShape EntityType="RemoteModel.FIBER_SYNTHS" Width="1.5" PointX="0.75" PointY="29.125" /> + <EntityTypeShape EntityType="RemoteModel.FSE_VERSIONS" Width="1.5" PointX="11.25" PointY="50" /> + <EntityTypeShape EntityType="RemoteModel.GBD" Width="1.5" PointX="0.75" PointY="24.875" /> + <EntityTypeShape EntityType="RemoteModel.GLOBAL_DATA_STORE_ITEMS" Width="1.5" PointX="4.75" PointY="0.75" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWER_TYPES" Width="1.5" PointX="7.5" PointY="94.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWERS" Width="1.5" PointX="9.75" PointY="66.125" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSOR_TYPES" Width="1.5" PointX="7.5" PointY="90.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSORS" Width="1.5" PointX="9.75" PointY="62.25" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCER_TYPES" Width="1.5" PointX="6.5" PointY="70.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCERS" Width="1.5" PointX="8.75" PointY="70.375" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTOR_TYPES" Width="1.5" PointX="9.5" PointY="76.375" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTORS" Width="1.5" PointX="11.75" PointY="70.125" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROL_TYPES" Width="1.5" PointX="1.5" PointY="55.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROLS" Width="1.5" PointX="3.75" PointY="63.625" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSOR_TYPES" Width="1.5" PointX="4.5" PointY="51.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSORS" Width="1.5" PointX="6.75" PointY="66.25" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="65.75" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDER_TYPES" Width="1.5" PointX="1.5" PointY="59.5" /> + <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDERS" Width="1.5" PointX="3.75" PointY="59.25" /> + <EntityTypeShape EntityType="RemoteModel.IDS_PACK_FORMULAS" Width="1.5" PointX="3.75" PointY="42.125" /> + <EntityTypeShape EntityType="RemoteModel.IDS_PACKS" Width="1.5" PointX="6" PointY="42.25" /> + <EntityTypeShape EntityType="RemoteModel.JOB_RUNS" Width="1.5" PointX="13.75" PointY="0.75" /> + <EntityTypeShape EntityType="RemoteModel.JOB" Width="1.5" PointX="11.25" PointY="20.875" /> + <EntityTypeShape EntityType="RemoteModel.LINEAR_MASS_DENSITY_UNITS" Width="1.5" PointX="0.75" PointY="17.25" /> + <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES" Width="1.5" PointX="3" PointY="13.25" /> + <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES_RMLS" Width="1.5" PointX="5.25" PointY="20.75" /> + <EntityTypeShape EntityType="RemoteModel.LUB" Width="1.5" PointX="0.75" PointY="38.25" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE_PROTOTYPES" Width="1.5" PointX="2.75" PointY="9.75" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE_STUDIO_VERSIONS" Width="1.5" PointX="11.25" PointY="39.5" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE_VERSIONS" Width="1.5" PointX="3.75" PointY="82.125" /> + <EntityTypeShape EntityType="RemoteModel.MACHINE" Width="1.5" PointX="6" PointY="73.75" /> + <EntityTypeShape EntityType="RemoteModel.MACHINES_EVENTS" Width="1.5" PointX="11.25" PointY="57.125" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_CONDITIONS" Width="1.5" PointX="0.75" PointY="11" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_MATERIALS" Width="1.5" PointX="0.75" PointY="44.875" /> + <EntityTypeShape EntityType="RemoteModel.MEDIA_PURPOSES" Width="1.5" PointX="0.75" PointY="35.375" /> + <EntityTypeShape EntityType="RemoteModel.MID_TANK_TYPES" Width="1.5" PointX="3.75" PointY="38.875" /> + <EntityTypeShape EntityType="RemoteModel.ORGANIZATION" Width="1.5" PointX="3.75" PointY="87.375" /> + <EntityTypeShape EntityType="RemoteModel.PERMISSION" Width="1.5" PointX="12" PointY="13.5" /> + <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES" Width="1.5" PointX="7.5" PointY="49" /> + <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES_GROUPS" Width="1.5" PointX="5.25" PointY="55.25" /> + <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS" Width="1.5" PointX="8.75" PointY="5" /> + <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS_VERSIONS" Width="1.5" PointX="11" PointY="5.125" /> + <EntityTypeShape EntityType="RemoteModel.RML_EXTENSION_TEST_WASHING_RESULTS" Width="1.5" PointX="11" PointY="1" /> + <EntityTypeShape EntityType="RemoteModel.RML" Width="1.5" PointX="3" PointY="18.5" /> + <EntityTypeShape EntityType="RemoteModel.RMLS_SPOOLS" Width="1.5" PointX="5.25" PointY="24.25" /> + <EntityTypeShape EntityType="RemoteModel.ROLE" Width="1.5" PointX="12" PointY="17.5" /> + <EntityTypeShape EntityType="RemoteModel.ROLES_PERMISSIONS" Width="1.5" PointX="14.25" PointY="17.5" /> + <EntityTypeShape EntityType="RemoteModel.RUBBING_RESULTS" Width="1.5" PointX="5.75" PointY="10.75" /> + <EntityTypeShape EntityType="RemoteModel.SEGMENT" Width="1.5" PointX="15.75" PointY="24.625" /> + <EntityTypeShape EntityType="RemoteModel.SEGMENTS_GROUPS" Width="1.5" PointX="13.5" PointY="24.875" /> + <EntityTypeShape EntityType="RemoteModel.SITE" Width="1.5" PointX="3" PointY="34.625" /> + <EntityTypeShape EntityType="RemoteModel.SITES_CATALOGS" Width="1.5" PointX="5.25" PointY="17.375" /> + <EntityTypeShape EntityType="RemoteModel.SITES_RMLS" Width="1.5" PointX="5.25" PointY="29" /> + <EntityTypeShape EntityType="RemoteModel.SITES_SPOOL_TYPES" Width="1.5" PointX="14.25" PointY="20.875" /> + <EntityTypeShape EntityType="RemoteModel.SPOOL_TYPES" Width="1.5" PointX="9" PointY="10.5" /> + <EntityTypeShape EntityType="RemoteModel.SPOOL" Width="1.5" PointX="11.25" PointY="45.875" /> + <EntityTypeShape EntityType="RemoteModel.sysdiagram" Width="1.5" PointX="14.75" PointY="11.75" /> + <EntityTypeShape EntityType="RemoteModel.TANGO_UPDATES" Width="1.5" PointX="15.75" PointY="0.75" /> + <EntityTypeShape EntityType="RemoteModel.TANGO_VERSIONS" Width="1.5" PointX="14.25" PointY="58" /> + <EntityTypeShape EntityType="RemoteModel.TECH_CONTROLLERS" Width="1.5" PointX="15.75" PointY="5.75" /> + <EntityTypeShape EntityType="RemoteModel.TECH_DISPENSERS" Width="1.5" PointX="16.75" PointY="9.75" /> + <EntityTypeShape EntityType="RemoteModel.TECH_HEATERS" Width="1.5" PointX="16.75" PointY="12.75" /> + <EntityTypeShape EntityType="RemoteModel.TECH_IOS" Width="1.5" PointX="16.75" PointY="15.75" /> + <EntityTypeShape EntityType="RemoteModel.TECH_MONITORS" Width="1.5" PointX="17.75" PointY="0.75" /> + <EntityTypeShape EntityType="RemoteModel.TECH_VALVES" Width="1.5" PointX="17.75" PointY="5.75" /> + <EntityTypeShape EntityType="RemoteModel.USER" Width="1.5" PointX="9" PointY="35.125" /> + <EntityTypeShape EntityType="RemoteModel.USERS_ROLES" Width="1.5" PointX="14.25" PointY="36.5" /> + <EntityTypeShape EntityType="RemoteModel.WASHING_TEST_MATERIALS" Width="1.5" PointX="8.75" PointY="1.5" /> + <EntityTypeShape EntityType="RemoteModel.WINDING_METHODS" Width="1.5" PointX="9" PointY="32" /> <AssociationConnector Association="RemoteModel.FK_ACTION_LOGS_USERS" /> <AssociationConnector Association="RemoteModel.FK_ORGANIZATIONS_ADDRESSES" /> <AssociationConnector Association="RemoteModel.FK_USERS_ADDRESSES" /> |
