EPLAN_PROD_Plugin/Sinvo.EplanHpD.Plugin/PluginEntry.cs

112 lines
3.6 KiB
C#
Raw 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;
using Sinvo.EplanHpD.Plugin.WPFUI;
using System;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Windows.Forms;
namespace Sinvo.EplanHpD.Plugin
{
public class PluginEntry : IHpDPlugin
{
public string Name => "兴禾ProD插件";
public string Author => "Sinvo";
public string Description => "兴禾EPLAN Harness proD 2.9 Studio插件,提供检查线材资料功能";
/// <summary>
/// 获取DLL版本
/// </summary>
public Version Version => Assembly.GetExecutingAssembly().GetName().Version;
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;
public void Execute(HpdApi api)
{
try
{
var doc = api.CurrentProject.GetActiveDocument();
//if(doc is FlexReport)
if (doc is EPLAN.Harness.API.Projects.Documents.Report report)
{
var reportId = report.ID;
var allReports = FlexProject.CurrentProject.GetReports();
if (allReports.Any(item => item.ID == reportId))
{
var flexReport = allReports.Where(item => item.ID == reportId).First();
if (flexReport != null)
{
var isNeedUpdate = FlexReport.IsUpToDate(flexReport);
if (!isNeedUpdate)
{
if (FlexMessageBox.Warning(FlexMessageBox.Buttons.OK_CANCEL,
"Report",
"报表数据不是最新的,是否更新?", false) == DialogResult.OK)
{
flexReport.UpdateReport();
}
}
// 取可见的列
var columns = flexReport.Reporter.Formater.RepColumns;
var datas = flexReport.GetAllReportEntries();
var window = new MainWindow(datas, columns);
window.Show();
}
}
else
{
FlexMessageBox.Error("未找到项目中匹配的报表,请检查是否生成成功或是未保存到项目中!");
}
}
else
{
FlexMessageBox.Error("请打开一个报表后再使用!");
}
}
catch (Exception ex)
{
FlexMessageBox.Error(ex.ToString());
}
}
public void Initialize()
{
//throw new NotImplementedException();
}
public void Terminate()
{
//throw new NotImplementedException();
}
}
}