105040 增加线材检查,段数按照已选择的电机选型数据获取

添加电机线段数获取及第三种线材类型支持

在 `MotorLectotypeService.cs` 文件中,添加了 `GetLineCount` 方法,用于获取电机对应的线段数。

在 `MotorExcelHelper.cs` 文件中,添加了 `#if DEBUG` 和 `#else` 预处理指令,以便在调试模式和发布模式下使用不同的文件路径。

在 `CableLectotypeUserControl.xaml` 文件中,添加了 `BooleanToVisibilityConverter` 资源,并在界面中添加了一个新的 `SimpleStackPanel`,用于显示第三种线材类型的选择。

在 `CableLectotypeViewModel.cs` 文件中,添加了 `CableTypeThree` 属性和 `IsShowThreeCableType` 属性,用于绑定第三种线材类型的选择和显示控制。

在 `LectotypeViewModel.cs` 文件中,添加了对 `MotorLectotypeService` 的引用,并在构造函数中实例化了 `MotorLectotypeService`。在处理电机和线材匹配时,增加了对电机信息的检查和线段数的获取逻辑。
This commit is contained in:
lihanbo 2025-02-13 08:55:12 +08:00
parent c0f43b6ff7
commit 3d0606a619
5 changed files with 108 additions and 21 deletions

View File

@ -275,6 +275,26 @@ namespace Sinvo.EplanHpD.Plugin.Service
}
}
public int GetLineCount(string motorUniqueFlag,string cableType)
{
var line = DBHelper.DB.Queryable<CableLectotype>("mt")
.Where(mt => mt.MotorUniqueFlag == motorUniqueFlag && (mt.CableTypePrimary == cableType || mt.CableTypeSecond == cableType))
.First();
// 除了编码器线,其他都取动力线
if(line == null)
{
return -1;
}
if (cableType == "编码器线")
{
return line.EncoderLineParagraph;
}
else
{
return line.PowerLineParagraph;
}
}
public int SetLineDone(string motorUniqueFlag,string lineId)
{
var db = DBHelper.DB;

View File

@ -13,7 +13,12 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.Utils
public static MotorExcelHelper Instance = new();
private Stream dataFileStream;
#if DEBUG
public const string DATA_FILE_PATH = @"D:\旧电脑文件\Desktop\EPlan\线材选型";
#else
public const string DATA_FILE_PATH = @"\\192.168.1.160\plm系统文档\线材选型\插件";//@"D:\旧电脑文件\Desktop\EPlan\线材选型";//
#endif
private const string DATA_FILE_NAME = "线材选型数据表.xlsx";
private const string DATA_FILE_NAME_BOM = "BOM表.xlsx";
private const string TEMPLATE_FILE_NAME = "下单定制线模板.xlsx";

View File

@ -21,6 +21,7 @@
<ResourceDictionary Source="pack://application:,,,/Sinvo.EplanHpD.Plugin.WPFUI;component/Themes/Theme.xaml" />
</ResourceDictionary.MergedDictionaries>
<converter:ConnectionTypeConverter x:Key="ConnectionTypeConverter" />
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
<DataTemplate x:Key="LoadingMask">
<Grid Background="#ccd7d7d7">
<!--<hc:WaveProgressBar HorizontalAlignment="Center" VerticalAlignment="Center" />-->
@ -192,6 +193,29 @@
IsReadOnly="False"
Text="{Binding PowerLineParagraph, Mode=TwoWay}" />
</hc:SimpleStackPanel>
<hc:SimpleStackPanel Orientation="Horizontal" Visibility="{Binding IsShowThreeCableType, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverter}}">
<hc:SimpleStackPanel
Width="200"
VerticalAlignment="Center"
Orientation="Horizontal">
<hc:ComboBox
Width="153"
hc:InfoElement.ShowClearButton="True"
DisplayMemberPath="ItemName"
IsEnabled="{Binding IsEnableSecCableType}"
ItemsSource="{Binding CableTypes}"
SelectedIndex="0"
SelectedValue="{Binding CableTypeThree}"
SelectedValuePath="ItemValue" />
<TextBlock VerticalAlignment="Center" Text="段数:" />
</hc:SimpleStackPanel>
<hc:TextBox
Width="163"
Height="30"
IsEnabled="{Binding IsEnableParagraph}"
IsReadOnly="False"
Text="{Binding PowerLineParagraph, Mode=TwoWay}" />
</hc:SimpleStackPanel>
</hc:SimpleStackPanel>
<hc:SimpleStackPanel
Margin="0,10"
@ -369,7 +393,6 @@
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<!--<GridViewColumn Header="是否布线完成">
<GridViewColumn.CellTemplate>
<DataTemplate>

View File

@ -401,6 +401,17 @@ public class CableLectotypeViewModel : INotifyPropertyChanged
OnPropertyChanged(nameof(CableTypeSecond));
}
}
private string _cableTypeThree;
public string CableTypeThree
{
get { return _cableTypeThree; }
set
{
_cableTypeThree = value;
OnPropertyChanged(nameof(CableTypeThree));
}
}
private int _encoderLineParagraph;
public int EncoderLineParagraph
{
@ -453,7 +464,19 @@ public class CableLectotypeViewModel : INotifyPropertyChanged
OnPropertyChanged(nameof(IsEnableSecCableType));
}
}
/// <summary>
/// 是否显示第三种线材类型
/// </summary>
private bool _isShowThreeCableType = false;
public bool IsShowThreeCableType
{
get => _isShowThreeCableType;
set
{
_isShowThreeCableType = value;
OnPropertyChanged(nameof(IsShowThreeCableType));
}
}
public bool SaveToDb()
{

View File

@ -6,6 +6,7 @@ using EPLAN.Harness.ProjectCore;
using EPLAN.Harness.ProjectCore.Occurrences;
using EPLAN.Harness.ProjectCore.Occurrences.Designer;
using HandyControl.Tools.Extension;
using Sinvo.EplanHpD.Plugin.Service;
using Sinvo.EplanHpD.Plugin.WPFUI.Datas;
using Sinvo.EplanHpD.Plugin.WPFUI.Extension;
using Sinvo.EplanHpD.Plugin.WPFUI.Models;
@ -26,6 +27,8 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel;
public class LectotypeViewModel(string docId) : INotifyPropertyChanged
{
private MotorLectotypeService service = new();
private DataGridRowDetailsVisibilityMode _rowDetailsVisibility;//= DataGridRowDetailsVisibilityMode.Visible;
public DataGridRowDetailsVisibilityMode RowDetailsVisibility
@ -281,10 +284,34 @@ public class LectotypeViewModel(string docId) : INotifyPropertyChanged
var lineCount = 0;
var axisNo = it.AxisNo;
var cabType = it.CableType;
if (Motors != null && Motors.Any())
{
var motor = Motors.FirstOrDefault(motor => motor.AxisNo == it.AxisNo);
if (motor != null)
{
it.Motor = motor;
}
else
{
it.IsError = true;
it.ErrorCount = 1;
it.CheckedMsg = "未匹配到电机";
}
}
if (axisNo != null && cabType != null)
{
//lineCount = cables.Count(cable => cable.AxisNo == axisNo && cable.CableType == cabType);
if(it.Motor != null)
{
// 有电机信息时,取电机型号对应的线数
lineCount = service.GetLineCount(it.Motor.MotorUniqueFlag, cabType);
}
if(lineCount == -1 || it.Motor == null)
{
// 无电机信息时,取轴号对应的线数
lineCount = cables.Count(cable => cable.AxisNo == axisNo && cable.CableType == cabType);
}
}
it.LineCount = lineCount;
it.CableConnectionClass = "";
@ -308,7 +335,6 @@ public class LectotypeViewModel(string docId) : INotifyPropertyChanged
}
else if (it.CurrentLine == lineCount && lineCount > 1)
{
it.CableConnectionClass = "尾段";
}
else
@ -316,7 +342,6 @@ public class LectotypeViewModel(string docId) : INotifyPropertyChanged
it.CableConnectionClass = "直通";
}
}
if (string.IsNullOrEmpty(axisNo))
{
it.IsError = true;
@ -329,21 +354,6 @@ public class LectotypeViewModel(string docId) : INotifyPropertyChanged
it.IsError = true;
it.CheckedMsg = "线段重复!";
}
if (Motors != null && Motors.Any())
{
var motor = Motors.FirstOrDefault(motor => motor.AxisNo == it.AxisNo);
if (motor != null)
{
it.Motor = motor;
}
else
{
it.IsError = true;
it.ErrorCount = 1;
it.CheckedMsg = "未匹配到电机";
}
}
if (it.Name.StartsWith("T"))
{
it.IsFlexibility = true;
@ -440,7 +450,13 @@ public class LectotypeViewModel(string docId) : INotifyPropertyChanged
if (line.CableType == "未知类型")
{
line.SetError("线材类型不正确,请检查印记内容!");
}
if(line.LineCount >0)
{
if(lines.Where(it => it.AxisNo == line.AxisNo && it.CableType == line.CableType).Count() < line.LineCount)
{
line.SetError("缺少线段,请检查是否布线完成!");
}
}
});
}