EPLAN_PROD_Plugin/Sinvo.EplanHpD.Plugin/PluginEntry.cs

172 lines
6.4 KiB
C#
Raw Permalink Normal View History

2024-10-24 18:01:26 +08:00
using EPLAN.Harness.API;
using EPLAN.Harness.API.Plugins;
using EPLAN.Harness.API.Plugins.Core;
using EPLAN.Harness.Core.Controls;
using EPLAN.Harness.ProjectCore;
2025-04-10 10:19:41 +08:00
using Sinvo.EplanHpD.Plugin.DynaClient;
using Sinvo.EplanHpD.Plugin.Service;
2024-10-24 18:01:26 +08:00
using Sinvo.EplanHpD.Plugin.WPFUI;
105040 优化与完善功能实现 重构和功能增强 删除了无用的注释和文件,添加了新的属性和方法,调整了窗口布局和视图模型引用。具体更改包括: - 删除 `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` 类及其相关属性和方法,用于处理电机和线缆的选择和切换逻辑。
2024-12-10 17:02:58 +08:00
using Sinvo.EplanHpD.Plugin.WPFUI.Extension;
using Sinvo.EplanHpD.Plugin.WPFUI.Utils;
2025-04-10 10:19:41 +08:00
using Sinvo.EplanHpD.Plugin.WPFUI.View;
2024-10-24 18:01:26 +08:00
using System;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Windows.Forms;
using System.Windows.Forms.Integration;
2024-10-24 18:01:26 +08:00
namespace Sinvo.EplanHpD.Plugin
{
#if Release_WireAndCable || DEBUG
2024-10-24 18:01:26 +08:00
public class PluginEntry : IHpDPlugin
#else
public class PluginEntry
#endif
2024-10-24 18:01:26 +08:00
{
public string Name => "兴禾ProD插件";
public string Author => "Sinvo";
public string Description => "兴禾EPLAN Harness proD 2.9 Studio插件,提供检查线材资料功能";
/// <summary>
/// 获取DLL版本
/// </summary>
public Version Version => Assembly.GetAssembly(this.GetType()).GetName().Version;
2024-10-24 18:01:26 +08:00
public System.Drawing.Image ToolbarIcon
{
get
{
var imageBytes = Resource.Sinvo;
if (imageBytes != null)
{
using (var ms = new MemoryStream(imageBytes))
{
return Image.FromStream(ms);
}
}
return null;
}
}
public string ToolbarText => "线材资料检查";
public string ToolbarTooltip => "线材资料检查";
public HpDModule Module => HpDModule.Report;
private MainWindow window;
2024-10-24 18:01:26 +08:00
public void Execute(HpdApi api)
{
bool isLogin = PluginServices.IsLogin;
if (!isLogin)
{
var LoginWindow = new LoginWindow();
if (LoginWindow.ShowDialog() == true)
2025-04-10 10:19:41 +08:00
{
isLogin = PluginServices.IsLogin;
}
}
if (isLogin)
{
bool isUpdated = false;
try
{
var doc = api.CurrentProject.GetActiveDocument();
//doc.ID
//if(doc is FlexReport)
if (doc is EPLAN.Harness.API.Projects.Documents.Report report)
2024-10-24 18:01:26 +08:00
{
var reportId = report.ID;
var allReports = FlexProject.CurrentProject.GetReports();
if (allReports.Any(item => item.ID == reportId))
2024-10-24 18:01:26 +08:00
{
var flexReport = allReports.Where(item => item.ID == reportId).First();
if (flexReport != null)
2024-10-24 18:01:26 +08:00
{
var isNeedUpdate = FlexReport.IsUpToDate(flexReport);
if (!isNeedUpdate)
2024-10-24 18:01:26 +08:00
{
if (FlexMessageBox.Warning(FlexMessageBox.Buttons.OK_CANCEL,
"Report",
"报表数据不是最新的,是否更新?", false) == DialogResult.OK)
{
flexReport.UpdateReport();
isUpdated = true;
}
2024-10-24 18:01:26 +08:00
}
try
{
if (window == null)
{
window = new MainWindow(flexReport);
ElementHost.EnableModelessKeyboardInterop(window);
window.Show();
}
else
{
if (isUpdated)
{
window.Close();
window = new MainWindow(flexReport);
ElementHost.EnableModelessKeyboardInterop(window);
window.Show();
}
window.ShowActivated = true;
if (window.WindowState == System.Windows.WindowState.Minimized)
{
window.WindowState = System.Windows.WindowState.Normal;
}
window.Show();
window.Activate();
}
}
catch (Exception)
{
window = new MainWindow(flexReport);
// 解决WPF窗体在WinForm中无法输入的问题
ElementHost.EnableModelessKeyboardInterop(window);
window.Show();
}
}
}
else
{
FlexMessageBox.Error("未找到项目中匹配的报表,请检查是否生成成功或是未保存到项目中!");
2024-10-24 18:01:26 +08:00
}
}
else
{
FlexMessageBox.Error("请打开一个报表后再使用!");
2024-10-24 18:01:26 +08:00
}
}
catch (Exception ex)
2024-10-24 18:01:26 +08:00
{
FlexMessageBox.Error(ex.ToString());
2024-10-24 18:01:26 +08:00
}
}
2024-10-24 18:01:26 +08:00
}
public void Initialize()
{
2025-03-28 16:47:05 +08:00
if (!AppDomainDllLoader.isLoaded)
{
//throw new NotImplementedException();
AppDomainDllLoader.SetLaoder();
ApplicationExt.InitApplication();
Consts.InitConfigs();
}
2024-10-24 18:01:26 +08:00
}
public void Terminate()
{
//throw new NotImplementedException();
}
}
}