From 19e04eb3edcde6f9bdc42eb63edc2e6d064c5d4e Mon Sep 17 00:00:00 2001 From: lihanbo Date: Tue, 10 Dec 2024 17:02:58 +0800 Subject: [PATCH] =?UTF-8?q?105040=20=E4=BC=98=E5=8C=96=E4=B8=8E=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E5=8A=9F=E8=83=BD=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重构和功能增强 删除了无用的注释和文件,添加了新的属性和方法,调整了窗口布局和视图模型引用。具体更改包括: - 删除 `MotorModel.cs` 中 `_motorPower` 的 `inheritdoc` 注释。 - `ScanCableModel.cs` 中添加 `Id` 属性及其私有字段 `_id`。 - 更新 `Sinvo.EplanHpD.Plugin.WPFUI.csproj`,删除 `Utils\DrawPDFHelper.cs` 和 `Utils\MessageSend.cs` 的编译引用,添加 `ViewModel\LayoutHelperViewModel.cs` 的编译引用,并添加 `KissStudio.DotNetDetour` 包的引用。 - 删除 `DrawPDFHelper.cs` 和 `MessageSend.cs` 文件内容。 - `LayoutHelperWindow.xaml` 中增加 `viewmodel` 命名空间引用,调整窗口高度和最小高度,设置 `d:DataContext`,并在窗口加载时调用 `GlowWindow_Loaded` 方法,修改部分 `TextBlock` 和 `ListView` 的内容绑定。 - `LayoutHelperWindow.xaml.cs` 中添加 `LayoutHelperViewModel` 的引用,并在构造函数中初始化 `viewModel`,设置 `DataContext`,在 `OnInit` 方法中调用 `GetMotorCables`,添加 `GlowWindow_Loaded`、`PrevBtn_Click` 和 `NextBtn_Click` 方法。 - `LectotypeWindow.xaml.cs` 中修改 `StartLayoutBtn_Click` 方法,传递 `motorIds` 给 `LayoutHelperWindow` 的构造函数。 - `ScannerViewModel.cs` 中添加 `Id` 属性的赋值,修改 `PerformSearch` 方法以根据 `Imprint` 进行搜索,添加 `ToSourceById` 方法用于根据 `occId` 定位线缆。 - 在 `DesignPluginEntry.cs`、`PluginEntry.cs` 和 `ScanPluginEntry.cs` 中添加 `Sinvo.EplanHpD.Plugin.WPFUI.Extension` 的引用。 - 新增 `LayoutHelperViewModel.cs` 文件,定义 `LayoutHelperViewModel` 类及其相关属性和方法,用于处理电机和线缆的选择和切换逻辑。 --- .../Models/MotorModel.cs | 2 +- .../Models/ScanCableModel.cs | 9 + .../Sinvo.EplanHpD.Plugin.WPFUI.csproj | 6 +- .../Utils/DrawPDFHelper.cs | 38 --- .../Utils/MessageSend.cs | 55 --- .../View/LayoutHelperWindow.xaml | 64 ++-- .../View/LayoutHelperWindow.xaml.cs | 44 ++- .../View/LectotypeWindow.xaml.cs | 5 +- .../ViewModel/LayoutHelperViewModel.cs | 312 ++++++++++++++++++ .../ViewModel/ScannerViewModel.cs | 33 +- Sinvo.EplanHpD.Plugin/DesignPluginEntry.cs | 1 + Sinvo.EplanHpD.Plugin/PluginEntry.cs | 1 + Sinvo.EplanHpD.Plugin/ScanPluginEntry.cs | 1 + 13 files changed, 438 insertions(+), 133 deletions(-) delete mode 100644 Sinvo.EplanHpD.Plugin.WPFUI/Utils/DrawPDFHelper.cs delete mode 100644 Sinvo.EplanHpD.Plugin.WPFUI/Utils/MessageSend.cs create mode 100644 Sinvo.EplanHpD.Plugin.WPFUI/ViewModel/LayoutHelperViewModel.cs diff --git a/Sinvo.EplanHpD.Plugin.WPFUI/Models/MotorModel.cs b/Sinvo.EplanHpD.Plugin.WPFUI/Models/MotorModel.cs index eb1e300..9204519 100644 --- a/Sinvo.EplanHpD.Plugin.WPFUI/Models/MotorModel.cs +++ b/Sinvo.EplanHpD.Plugin.WPFUI/Models/MotorModel.cs @@ -8,7 +8,7 @@ private string _motorPower; /// /// - /// + /// public string MotorPower { get { return _motorPower; } diff --git a/Sinvo.EplanHpD.Plugin.WPFUI/Models/ScanCableModel.cs b/Sinvo.EplanHpD.Plugin.WPFUI/Models/ScanCableModel.cs index 0c633cc..2ce20b9 100644 --- a/Sinvo.EplanHpD.Plugin.WPFUI/Models/ScanCableModel.cs +++ b/Sinvo.EplanHpD.Plugin.WPFUI/Models/ScanCableModel.cs @@ -19,7 +19,16 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.Models OnPropertyChanged(nameof(Index)); } } + private string _id; + public string Id + { + get => _id; set + { + _id = value; + OnPropertyChanged(nameof(Id)); + } + } private string _name; public string Name diff --git a/Sinvo.EplanHpD.Plugin.WPFUI/Sinvo.EplanHpD.Plugin.WPFUI.csproj b/Sinvo.EplanHpD.Plugin.WPFUI/Sinvo.EplanHpD.Plugin.WPFUI.csproj index e9f3a56..59615b5 100644 --- a/Sinvo.EplanHpD.Plugin.WPFUI/Sinvo.EplanHpD.Plugin.WPFUI.csproj +++ b/Sinvo.EplanHpD.Plugin.WPFUI/Sinvo.EplanHpD.Plugin.WPFUI.csproj @@ -166,13 +166,12 @@ TestWindow.xaml - - + @@ -264,6 +263,9 @@ 3.5.1 + + 1.0.2.1 + 1.34.2 diff --git a/Sinvo.EplanHpD.Plugin.WPFUI/Utils/DrawPDFHelper.cs b/Sinvo.EplanHpD.Plugin.WPFUI/Utils/DrawPDFHelper.cs deleted file mode 100644 index 0b00d9b..0000000 --- a/Sinvo.EplanHpD.Plugin.WPFUI/Utils/DrawPDFHelper.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System.Collections.Generic; -using System.IO; - -namespace Sinvo.EplanHpD.Plugin.WPFUI.Utils -{ - public class DrawPDFHelper - { - private static string PDF_PATH = @"\\192.168.1.160\plm系统文档\线材选型\图纸\"; - private static Dictionary _pdfDataDict = new Dictionary(); - - public static void CacheAllPdfToMemory() - { - var path = PDF_PATH; - var files = Directory.GetFiles(path, "*.pdf"); - foreach (var file in files) - { - var drawId = Path.GetFileNameWithoutExtension(file); - var data = File.ReadAllBytes(file); - _pdfDataDict.Add(drawId, data); - } - } - - public static MemoryStream GetPDFStream(string drawId) - { - if (_pdfDataDict.ContainsKey(drawId)) - { - var data = _pdfDataDict[drawId]; - return new MemoryStream(data); - } - return null; - } - - public static void ClearCache() - { - _pdfDataDict.Clear(); - } - } -} diff --git a/Sinvo.EplanHpD.Plugin.WPFUI/Utils/MessageSend.cs b/Sinvo.EplanHpD.Plugin.WPFUI/Utils/MessageSend.cs deleted file mode 100644 index 1012d09..0000000 --- a/Sinvo.EplanHpD.Plugin.WPFUI/Utils/MessageSend.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Sinvo.EplanHpD.Plugin.WPFUI.Utils -{ - /// - /// 消息发送与接收 - /// - public class MessageSend - { - private static readonly Dictionary>> _subscribers = new(); - - public static void Subscribe(string message, Action callback) - { - if (!_subscribers.ContainsKey(message)) - { - _subscribers[message] = new List>(); - } - _subscribers[message].Add(callback); - } - - public static void Unsubscribe(string message, Action callback) - { - if (_subscribers.ContainsKey(message)) - { - _subscribers[message].Remove(callback); - if (_subscribers[message].Count == 0) - { - _subscribers.Remove(message); - } - } - } - public static void Unsubscribe(string message) - { - if (_subscribers.ContainsKey(message)) - { - _subscribers.Remove(message); - } - } - - public static void Publish(string message, object parameter = null) - { - if (_subscribers.ContainsKey(message)) - { - foreach (var callback in _subscribers[message]) - { - callback(parameter); - } - } - } - } -} diff --git a/Sinvo.EplanHpD.Plugin.WPFUI/View/LayoutHelperWindow.xaml b/Sinvo.EplanHpD.Plugin.WPFUI/View/LayoutHelperWindow.xaml index 0cfbf4c..699ccc4 100644 --- a/Sinvo.EplanHpD.Plugin.WPFUI/View/LayoutHelperWindow.xaml +++ b/Sinvo.EplanHpD.Plugin.WPFUI/View/LayoutHelperWindow.xaml @@ -6,13 +6,19 @@ xmlns:hc="https://handyorg.github.io/handycontrol" xmlns:local="clr-namespace:Sinvo.EplanHpD.Plugin.WPFUI.View" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:viewmodel="clr-namespace:Sinvo.EplanHpD.Plugin.WPFUI.ViewModel" Title="布线助手" Width="450" - Height="230" + Height="260" MinWidth="450" - MinHeight="230" + MinHeight="260" + d:DataContext="{d:DesignInstance Type=viewmodel:LayoutHelperViewModel}" ActiveGlowColor="{DynamicResource PrimaryColor}" Background="White" + Left="1460" + Loaded="GlowWindow_Loaded" + Top="770" + WindowStartupLocation="Manual" mc:Ignorable="d"> @@ -31,64 +37,82 @@ - + - + + + + - + + - - - + + - - - + + + + + + + + - - + diff --git a/Sinvo.EplanHpD.Plugin.WPFUI/View/LayoutHelperWindow.xaml.cs b/Sinvo.EplanHpD.Plugin.WPFUI/View/LayoutHelperWindow.xaml.cs index d2ffa47..c57e521 100644 --- a/Sinvo.EplanHpD.Plugin.WPFUI/View/LayoutHelperWindow.xaml.cs +++ b/Sinvo.EplanHpD.Plugin.WPFUI/View/LayoutHelperWindow.xaml.cs @@ -2,6 +2,7 @@ using EPLAN.Harness.Core.Controls; using EPLAN.Harness.ProjectCore; using EPLAN.Harness.ProjectCore.Occurrences.Designer; +using Sinvo.EplanHpD.Plugin.WPFUI.ViewModel; using System; using System.Collections.Generic; using System.Diagnostics; @@ -25,32 +26,30 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.View public partial class LayoutHelperWindow { private FlexDesigner _currentFlexDesigner; - public LayoutHelperWindow() + private LayoutHelperViewModel viewModel; + public LayoutHelperWindow(List motorIds) { InitializeComponent(); - OnInit(); + viewModel = new LayoutHelperViewModel(_currentFlexDesigner, motorIds); + + this.DataContext = viewModel; + } private void OnInit() { GetCurrentDoc(); _currentFlexDesigner.SelectSet.SelectionChanged += SelectSet_SelectionChanged; + GetMotorCables(); + } + private void GetMotorCables() + { + viewModel.GetMotorCables(); } private void SelectSet_SelectionChanged(object sender, EventArgs e) { - if (sender is OccSelectSet selectSet) - { - var item = selectSet.SelectedItem; - if (item is OccSubPart part) - { - Debug.WriteLine($"Select part -> {part.Name} / {part.ID}"); - if (part.Parents != null) - { - Debug.WriteLine($"Select part parent -> {part.Parents.First()?.Name} / {part.Parents.First()?.ID}"); - } - } - } + viewModel.OnSelectChange(sender); } public void GetCurrentDoc() @@ -63,6 +62,7 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.View if (designer != null) { _currentFlexDesigner = designer; + viewModel._currentFlexDesigner = designer; } else { @@ -74,6 +74,22 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.View FlexMessageBox.Error(ex.Message); } } + + private void GlowWindow_Loaded(object sender, RoutedEventArgs e) + { + OnInit(); + } + + + private void PrevBtn_Click(object sender, RoutedEventArgs e) + { + viewModel.ToPrevLine(); + } + + private void NextBtn_Click(object sender, RoutedEventArgs e) + { + viewModel.ToNextLine(); + } } } diff --git a/Sinvo.EplanHpD.Plugin.WPFUI/View/LectotypeWindow.xaml.cs b/Sinvo.EplanHpD.Plugin.WPFUI/View/LectotypeWindow.xaml.cs index 77fdcae..8419858 100644 --- a/Sinvo.EplanHpD.Plugin.WPFUI/View/LectotypeWindow.xaml.cs +++ b/Sinvo.EplanHpD.Plugin.WPFUI/View/LectotypeWindow.xaml.cs @@ -371,7 +371,10 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI private void StartLayoutBtn_Click(object sender, RoutedEventArgs e) { - var window = new LayoutHelperWindow(); + var motorIds = ViewModel.Motors.Where(motor => !motor.IsError).Select(motor => motor.OccPartId).ToList(); + + var window = new LayoutHelperWindow(motorIds); + //window.MotorIds = motorIds; ElementHost.EnableModelessKeyboardInterop(window); var mainApp = BaseApp.ActiveApplication; var helper = new System.Windows.Interop.WindowInteropHelper(window); diff --git a/Sinvo.EplanHpD.Plugin.WPFUI/ViewModel/LayoutHelperViewModel.cs b/Sinvo.EplanHpD.Plugin.WPFUI/ViewModel/LayoutHelperViewModel.cs new file mode 100644 index 0000000..7b98b6e --- /dev/null +++ b/Sinvo.EplanHpD.Plugin.WPFUI/ViewModel/LayoutHelperViewModel.cs @@ -0,0 +1,312 @@ +using EPLAN.Harness.API.Occurrences; +using EPLAN.Harness.Common.Extensions; +using EPLAN.Harness.Core; +using EPLAN.Harness.Core.Controls; +using EPLAN.Harness.Core.Props; +using EPLAN.Harness.ProjectCore; +using EPLAN.Harness.ProjectCore.Occurrences.Designer; +using Sinvo.EplanHpD.Plugin.Service; +using Sinvo.EplanHpD.Plugin.WPFUI.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Security; +using System.Text; +using System.Threading.Tasks; + +namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel +{ + public class LayoutHelperViewModel : INotifyPropertyChanged + { + + public FlexDesigner _currentFlexDesigner; + private string _selectMotorModel; + private MotorLectotypeService service = new(); + private List _motorIds; + private MotorModel _motor; + private CableLectotypeViewModel cableLectotypeViewModel; + public MotorModel Motor + { + get => _motor; + set + { + _motor = value; + OnPropertyChanged(); + } + } + public LayoutHelperViewModel() + { + + } + public LayoutHelperViewModel(FlexDesigner currentFlexDesigner, List motorIds) + { + _currentFlexDesigner = currentFlexDesigner; + _motorIds = motorIds; + } + public string SelectMotorModel + { + get { return _selectMotorModel; } + set + { + _selectMotorModel = value; + OnPropertyChanged(); + } + } + + private string _selectLineId; + public string SelectLineName + { + get + { + if (_selectLineId == null) return ""; + var part = _currentFlexDesigner.GetOccurrenceByID(_selectLineId); + if (part != null) + { + return part.Parents?.First()?.LibraryName; + } + else + { + return ""; + } + } + set + { + + } + } + + /// + /// 是否有下一个 + /// + public bool HasNext + { + get + { + if (_motorIds == null) return false; + if (SelectedLines == null) return false; + if (CurrentMotorSelectLineIndex < SelectedLines.Count - 1) + { + return true; + } + else if (CurrentMotorIndex < _motorIds.Count - 1) + { + return true; + } + else + { + return false; + } + + } + set + { + OnPropertyChanged(nameof(HasNext)); + } + } + /// + /// 是否有上一个 + /// + public bool HasPrev + { + get + { + if (CurrentMotorSelectLineIndex > 0) + { + return true; + } + else if (CurrentMotorIndex > 0) + { + return true; + } + else + { + return false; + } + } + set + { + OnPropertyChanged(nameof(HasPrev)); + } + } + private int CurrentMotorIndex = 0; + private int CurrentMotorSelectLineIndex = 0; + private LectotypeLineModel _selectedLine; + public LectotypeLineModel SelectedLine + { + get => _selectedLine; + set + { + _selectedLine = value; + OnPropertyChanged(nameof(SelectedLine)); + OnPropertyChanged(nameof(HasPrev)); + OnPropertyChanged(nameof(HasNext)); + } + } + private List _subLines; + public List SubLines + { + get => _subLines; + set + { + _subLines = value; + OnPropertyChanged(nameof(SubLines)); + } + } + public List SelectedLines; + + public void OnSelectChange(object sender) + { + if (sender is OccSelectSet selectSet) + { + var item = selectSet.SelectedItem; + if (item is OccSubPart part) + { + Debug.WriteLine($"Select part -> {part.Name} / {part.ID}"); + if (part.Parents != null) + { + SelectMotorModel = part.Parents?.First()?.Name ?? ""; + Debug.WriteLine($"Select part parent -> {part.Parents?.First()?.Name} / {part.Parents?.First()?.ID}"); + } + } + else if (item != null) + { + _selectLineId = item.ID; + OnPropertyChanged(nameof(SelectLineName)); + } + } + } + + private bool IsCable(BaseOccurrence occ) + { + return occ is OccCableForked; + } + + + public event PropertyChangedEventHandler PropertyChanged; + public void OnPropertyChanged([CallerMemberName] string propertyName = null) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + + internal void GetMotorCables() + { + if (_motorIds != null && _motorIds.Any()) + { + + Task.Factory.StartNew(() => + { + var service = new MotorLectotypeService(); + var data = service.GetMotorLectotypeData(_motorIds[CurrentMotorIndex]); + if (!string.IsNullOrEmpty(data)) + { + cableLectotypeViewModel = Newtonsoft.Json.JsonConvert.DeserializeObject(data); + if (cableLectotypeViewModel?.SelectedLines?.Any() ?? false) + { + SelectedLines = cableLectotypeViewModel.SelectedLines; + SelectedLine = SelectedLines[CurrentMotorSelectLineIndex]; + ReSetSubLines(); + Motor = cableLectotypeViewModel.Motor; + + return; + } + } + + { + CurrentMotorIndex++; + if (CurrentMotorIndex < _motorIds.Count) + { + + CurrentMotorSelectLineIndex = 0; + GetMotorCables(); + } + } + + }).Wait(); + } + } + + internal void ToPrevLine() + { + if (HasPrev) + { + if (CurrentMotorSelectLineIndex == 0) + { + ToPrevMotor(); + } + else + { + + CurrentMotorSelectLineIndex--; + SelectedLine = SelectedLines[CurrentMotorSelectLineIndex]; + ReSetSubLines(); + } + } + } + + internal void ToNextLine() + { + if (HasNext) + { + if (CheckAndSetSelLine()) + { + + if (CurrentMotorSelectLineIndex >= SelectedLines.Count - 1) + { + ToNextMotor(); + } + else + { + CurrentMotorSelectLineIndex++; + SelectedLine = SelectedLines[CurrentMotorSelectLineIndex]; + ReSetSubLines(); + } + } + + } + } + + private bool CheckAndSetSelLine() + { + var part = _currentFlexDesigner.GetOccurrenceByID(_selectLineId); + if (part != null) + { + if (part.Properties.Any(it => it.ValueHolder.StrVal == "轴号")) return true; + var prop = new EPLAN.Harness.Core.Props.Property(new PropDef { Name = "轴号" }); + prop.Set(SelectedLine.AxisNo); + part.Properties.Add(prop); + return true; + } + else + { + FlexMessageBox.Warning("当前选中的线不是推荐中的线"); + return false; + } + } + + internal void ToPrevMotor() + { + if (CurrentMotorIndex > 0) + { + CurrentMotorIndex--; + CurrentMotorSelectLineIndex = 0; + GetMotorCables(); + } + } + internal void ToNextMotor() + { + if (CurrentMotorIndex < _motorIds.Count) + { + CurrentMotorIndex++; + CurrentMotorSelectLineIndex = 0; + GetMotorCables(); + } + } + internal void ReSetSubLines() + { + SubLines = SelectedLine.SubLines.Distinct(it => it.CableModel).ToList(); + } + } +} diff --git a/Sinvo.EplanHpD.Plugin.WPFUI/ViewModel/ScannerViewModel.cs b/Sinvo.EplanHpD.Plugin.WPFUI/ViewModel/ScannerViewModel.cs index b5110e5..c8292ec 100644 --- a/Sinvo.EplanHpD.Plugin.WPFUI/ViewModel/ScannerViewModel.cs +++ b/Sinvo.EplanHpD.Plugin.WPFUI/ViewModel/ScannerViewModel.cs @@ -89,6 +89,7 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel ScanCableModels.Add(new ScanCableModel() { Index = ScanCableModels.Count + 1, + Id = wire.ID, Name = wire.LibraryName, Code = wire.Name, Imprint = wire.Imprint @@ -131,7 +132,7 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel { // 清除错误信息 ClearErrors(nameof(InputCode)); - var cable = ScanCableModels.FirstOrDefault(c => c.Code.Equals(searchText, StringComparison.OrdinalIgnoreCase)); + var cable = ScanCableModels.FirstOrDefault(c => c.Code.Equals(searchText, StringComparison.OrdinalIgnoreCase) || c.Imprint.StartsWith(searchText, StringComparison.OrdinalIgnoreCase)); if (cable != null) { @@ -147,7 +148,7 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel cable.IsChecked = true; } ScanedIndex = Math.Max(cable.Index - 1, 0); - ToSourceByName(searchText); + ToSourceById(cable.Id); } else @@ -185,6 +186,34 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel } } + private void ToSourceById(string occId) + { + var occWire = _currentFlexDesigner.GetOccurrenceByID(occId); + if (occWire != null) + { + occWire.SetVisibility(true, null); + _currentFlexDesigner.SelectSet.Clear(); + _currentFlexDesigner.SelectSet.Add(occWire); + _currentFlexDesigner.FitToSelectSet(); + _currentFlexDesigner.SelectSet.OnSelectionChanged(); + + //_currentFlexDesigner.Camera.GraphicControl._HighlightNode() + /* + List> nodeByEntity = this._occTreeView.GetNodeByEntity(baseOccurrence); + if (nodeByEntity != null) + { + foreach (DatTreeNodeEx datTreeNodeEx in nodeByEntity) + { + if (!this._occTreeView.SelectedNodes.Contains(datTreeNodeEx)) + { + this._occTreeView.SelectedNodes.Add(datTreeNodeEx); + } + } + } + */ + } + } + public void OthersOccShow(bool show = false) { _currentFlexDesigner.GetOrganizerOccurrences().ToList().ForEach(occ => diff --git a/Sinvo.EplanHpD.Plugin/DesignPluginEntry.cs b/Sinvo.EplanHpD.Plugin/DesignPluginEntry.cs index 9f3228a..11a2f48 100644 --- a/Sinvo.EplanHpD.Plugin/DesignPluginEntry.cs +++ b/Sinvo.EplanHpD.Plugin/DesignPluginEntry.cs @@ -2,6 +2,7 @@ using EPLAN.Harness.API.Plugins.Core; using EPLAN.Harness.AppCore; using Sinvo.EplanHpD.Plugin.WPFUI; +using Sinvo.EplanHpD.Plugin.WPFUI.Extension; using Sinvo.EplanHpD.Plugin.WPFUI.Utils; using System; using System.Drawing; diff --git a/Sinvo.EplanHpD.Plugin/PluginEntry.cs b/Sinvo.EplanHpD.Plugin/PluginEntry.cs index 65f4c35..57eb31b 100644 --- a/Sinvo.EplanHpD.Plugin/PluginEntry.cs +++ b/Sinvo.EplanHpD.Plugin/PluginEntry.cs @@ -4,6 +4,7 @@ using EPLAN.Harness.API.Plugins.Core; using EPLAN.Harness.Core.Controls; using EPLAN.Harness.ProjectCore; using Sinvo.EplanHpD.Plugin.WPFUI; +using Sinvo.EplanHpD.Plugin.WPFUI.Extension; using Sinvo.EplanHpD.Plugin.WPFUI.Utils; using System; using System.Drawing; diff --git a/Sinvo.EplanHpD.Plugin/ScanPluginEntry.cs b/Sinvo.EplanHpD.Plugin/ScanPluginEntry.cs index abc71ab..d104291 100644 --- a/Sinvo.EplanHpD.Plugin/ScanPluginEntry.cs +++ b/Sinvo.EplanHpD.Plugin/ScanPluginEntry.cs @@ -1,6 +1,7 @@ using EPLAN.Harness.API; using EPLAN.Harness.API.Plugins.Core; using EPLAN.Harness.AppCore; +using Sinvo.EplanHpD.Plugin.WPFUI.Extension; using Sinvo.EplanHpD.Plugin.WPFUI.Utils; using Sinvo.EplanHpD.Plugin.WPFUI.View; using System;