009_DI-Elec/newFront/c#前端/SWS.CAD/Commands_LOCAL_547.cs

1630 lines
96 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows.Forms;
using Bricscad.ApplicationServices;
using Bricscad.EditorInput;
using Bricscad.Ribbon;
using Bricscad.Windows;
using Prism.Events;
using Prism.Ioc;
using Prism.Services.Dialogs;
using SWS.CAD;
using SWS.CAD.CADFunc;
using SWS.CAD.Event;
using SWS.CAD.Views;
using SWS.CAD.Views.Dialog;
using Teigha.DatabaseServices;
using Teigha.Runtime;
using Telerik.Windows.Controls;
using Unity;
using Application = Bricscad.ApplicationServices.Application;
using Panel = Bricscad.Windows.Panel;
using GlobalObject = SWS.Commons.GlobalObject;
using SWS.Model;
using SWS.Service;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
using SWS.CAD.ViewModels;
using SWS.CAD.Base;
[assembly: CommandClass(typeof(Commands))]
[assembly: ExtensionApplication(typeof(Commands))]
namespace SWS.CAD
{
public partial class Commands : IExtensionApplication
{
public void Initialize()
{
try
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
if (RibbonServices.RibbonPaletteSet == null)
RibbonServices.CreateRibbonPaletteSet(); //needed for ribbon samples
Start.RegisterTypes();
DockingTemplate dockTemplate = new DockingTemplate();
dockTemplate.DefaultStackId = "DI-ELEC_LDock"; //default stack is RDOCK panelset
dockTemplate.DefaultStackZ = 20; //default to position 20 (bottom of the stack)
dockTemplate.DefaultDock = DockSides.Left; //dock alone at right in case RDOCK panelset isn't available
var drawingView = GlobalObject.container.Resolve<LeftPanel>();
Panel panel = new Panel(nameof(LeftPanel), dockTemplate, drawingView);
panel.Title = "DI_左面板";
panel.Icon = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"CSharp.ico");
panel.Visible = true;
AddTab();
DockingTemplate dockTemplate2 = new DockingTemplate();
dockTemplate2.DefaultStackId = "RDOCK"; //default stack is RDOCK panelset
dockTemplate2.DefaultStackZ = 20; //default to position 20 (bottom of the stack)
dockTemplate2.DefaultDock = DockSides.Right; //dock alone at right in case RDOCK panelset isn't available
var drawingView2 = GlobalObject.container.Resolve<RightPanel>();
panel = new Panel(nameof(RightPanel), dockTemplate2, drawingView2);
panel.Title = "DI_右面板";
panel.Icon = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"CSharp.ico");
panel.Visible = true;
}
catch (System.Exception e)
{
Application.ShowAlertDialog(" An exception occurred in Initialize():\n" + e.ToString());
}
}
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
// 记录异常信息到日志文件,这里简单打印到控制台
System.Exception ex = e.ExceptionObject as System.Exception;
Console.WriteLine($"发生未处理的异常: {ex.Message}");
Console.WriteLine($"异常堆栈跟踪: {ex.StackTrace}");
// 关闭所有打开的对话框窗口
// 提示用户发生了错误
MessageBox.Show("发生错误,请检查日志文件以获取更多信息。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (System.Exception innerEx)
{
// 如果在处理异常时又发生了异常,简单打印信息
Console.WriteLine($"处理异常时发生错误: {innerEx.Message}");
}
}
public void Terminate()
{
}
#region
/// <summary>
/// 显示属性弹窗
/// </summary>
private ObservableCollection<propertyModel> ShowPropertyMessage(string title, List<propertyModel> listPropertys)
{
ObservableCollection<propertyModel> ReslistPro = new ObservableCollection<propertyModel>();
//打开窗体
var para = new Prism.Services.Dialogs.DialogParameters();
para.Add(GlobalObject.dialogPar.title.ToString(), title);
para.Add(GlobalObject.dialogPar.para1.ToString(), listPropertys);
var _dialogService = GlobalObject._prismContainer.Resolve<IDialogService>();
_dialogService.ShowDialog(nameof(DialogNewPositional), para, (RES) =>
{
if (RES.Result == ButtonResult.Yes)
{
ReslistPro = RES.Parameters.GetValue<ObservableCollection<propertyModel>>(GlobalObject.dialogPar.para1.ToString());
}
else if (RES.Result == ButtonResult.No)
{
}
});
return ReslistPro;
}
#endregion
void AddTab()
{
RibbonControl rbnCtrl = ComponentManager.Ribbon; //整个上面都是ribbon比如莫工做的电气系统就是ribbon中的一个tab
if (rbnCtrl == null) return;
#region create Ribbon tab
RibbonTab tab1 = new RibbonTab();
tab1.Title = "智设电气(2)";
tab1.Id = "智设电气(2)";
rbnCtrl.Tabs.Add(tab1);//一个就行了
#endregion
//RibbonControl - RibbonTab - RibbonPanel - RibbonPanelSource - RibbonButton
#region Ribbon
RibbonPanelSource userSource = new RibbonPanelSource();
userSource.Title = "项目操作";
userSource.Id = "项目操作";
RibbonPanel userPanel = new RibbonPanel();
userPanel.Source = userSource;
tab1.Panels.Add(userPanel);
#region buttons
RibbonButton project = new RibbonButton();
project.ToolTip = "选择项目";
project.Text = "选择项目";
project.ButtonStyle = RibbonButtonStyle.LargeWithText;
project.CommandHandler = new DelegateCommand(x =>
{
var projectView = GlobalObject.container.Resolve<Project>();
if (GlobalObject.userInfo != null)
{
Application.ShowModalWindow(Application.MainWindow.Handle, projectView);
}
});
project.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"OpenProject.png");
project.Id = "选择项目";
userSource.Items.Add(project);
#endregion
#region buttons
RibbonButton btnRefresh = new RibbonButton();
btnRefresh.ToolTip = "刷新项目";
btnRefresh.Text = "刷新项目";
btnRefresh.ButtonStyle = RibbonButtonStyle.LargeWithText;
btnRefresh.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnRefresh.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"RefreshProject.png");
btnRefresh.Id = "刷新项目";
userSource.Items.Add(btnRefresh);
#endregion
//垂直排列按钮panel
RibbonRowPanel ribbonRowPanel = new RibbonRowPanel();
#region buttons
RibbonButton login = new RibbonButton();
login.ToolTip = "用户登录";
login.Text = "用户登录";
login.ButtonStyle = RibbonButtonStyle.SmallWithText;
login.CommandHandler = new DelegateCommand(x =>
{
try
{
var loginView = GlobalObject.container.Resolve<Login>();
//Application.ShowModalDialog(Application.MainWindow,);// 用来显示WinForms对话框
Application.ShowModalWindow(Application.MainWindow.Handle, loginView);//用来显示WPF的对话框任务栏里可以看到2个Windows
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
});
login.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"Login.png");
login.Id = "用户登录";
//userSource.Items.Add(login);
ribbonRowPanel.Items.Add(login);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnProperty = new RibbonButton();
btnProperty.ToolTip = "属性窗口";
btnProperty.Text = "属性窗口";
btnProperty.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnProperty.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnProperty.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"Message.png");
btnProperty.Id = "属性窗口";
ribbonRowPanel.Items.Add(btnProperty);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton UserNotification = new RibbonButton();
UserNotification.ToolTip = "项目消息";
UserNotification.Text = "项目消息";
UserNotification.ButtonStyle = RibbonButtonStyle.SmallWithText;
UserNotification.CommandHandler = new DelegateCommand(x =>
{
if (GlobalObject.userInfo == null || GlobalObject.curProject == null)
{
MessageBox.Show("请先登录系统并选择项目!");
return;
}
try
{
var View = GlobalObject.container.Resolve<UserNotification>();
var eventAggregator = GlobalObject.container.Resolve<IEventAggregator>();
eventAggregator.GetEvent<SelectProjectEvent>().Publish(new List<SWS.Model.ec_notification>());
Application.ShowModalWindow(Application.MainWindow.Handle, View);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
});
UserNotification.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"Message.png");
UserNotification.Id = "项目消息";
//userSource.Items.Add(UserNotification);
ribbonRowPanel.Items.Add(UserNotification);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
userSource.Items.Add(ribbonRowPanel);
#endregion
#region Ribbon
RibbonPanelSource calcSource = new RibbonPanelSource();
calcSource.Title = "快速计算";
calcSource.Id = "快速计算";
RibbonPanel calcPanel = new RibbonPanel();
calcPanel.Source = calcSource;
tab1.Panels.Add(calcPanel);
//垂直排列按钮panel
ribbonRowPanel = new RibbonRowPanel();
#region buttons
RibbonButton btnCableDrop = new RibbonButton();
btnCableDrop.ToolTip = "电缆压降";
btnCableDrop.Text = "电缆压降";
btnCableDrop.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnCableDrop.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnCableDrop.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"CalCable.png");
btnCableDrop.Id = "电缆压降";
ribbonRowPanel.Items.Add(btnCableDrop);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnCalBoot = new RibbonButton();
btnCalBoot.ToolTip = "启动顺序";
btnCalBoot.Text = "启动顺序";
btnCalBoot.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnCalBoot.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnCalBoot.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"CalBoot.png");
btnCalBoot.Id = "启动顺序";
ribbonRowPanel.Items.Add(btnCalBoot);
#endregion
calcSource.Items.Add(ribbonRowPanel);
#endregion
#region Ribbon
RibbonPanelSource designSource = new RibbonPanelSource();
designSource.Title = "设计成图";
designSource.Id = "设计成图";
RibbonPanel designPanel = new RibbonPanel();
designPanel.Source = designSource;
tab1.Panels.Add(designPanel);
//大按钮
#region buttons 线
RibbonButton btnLightLine = new RibbonButton();
btnLightLine.ToolTip = "绘照明线路";
btnLightLine.Text = "绘照明线路";
btnLightLine.ButtonStyle = RibbonButtonStyle.LargeWithText;
btnLightLine.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnLightLine.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"lightLine.png");
btnLightLine.Id = "绘照明线路";
designSource.Items.Add(btnLightLine);
#endregion
//垂直排列按钮panel
ribbonRowPanel = new RibbonRowPanel();
#region buttons
RibbonButton btnEquipmentjoin = new RibbonButton();
btnEquipmentjoin.ToolTip = "生成端子图";
btnEquipmentjoin.Text = "生成端子图";
btnEquipmentjoin.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnEquipmentjoin.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnEquipmentjoin.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"Equipmentjoin.png");
btnEquipmentjoin.Id = "生成端子图";
ribbonRowPanel.Items.Add(btnEquipmentjoin);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnJoinSys = new RibbonButton();
btnJoinSys.ToolTip = "生成系统图";
btnJoinSys.Text = "生成系统图";
btnJoinSys.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnJoinSys.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnJoinSys.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"joinsys.png");
btnJoinSys.Id = "生成系统图";
ribbonRowPanel.Items.Add(btnJoinSys);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons OPC
RibbonButton btnOPC = new RibbonButton();
btnOPC.ToolTip = "生成OPC";
btnOPC.Text = "生成OPC";
btnOPC.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnOPC.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnOPC.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"OPC.png");
btnOPC.Id = "生成OPC";
ribbonRowPanel.Items.Add(btnOPC);
#endregion
designSource.Items.Add(ribbonRowPanel);
//垂直排列按钮panel
ribbonRowPanel = new RibbonRowPanel();
#region buttons
RibbonButton btnPlaneLayout = new RibbonButton();
btnPlaneLayout.ToolTip = "生成布置图";
btnPlaneLayout.Text = "生成布置图";
btnPlaneLayout.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnPlaneLayout.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnPlaneLayout.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"PlaneLayout.png");
btnPlaneLayout.Id = "生成布置图";
ribbonRowPanel.Items.Add(btnPlaneLayout);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnEquipmentSys = new RibbonButton();
btnEquipmentSys.ToolTip = "生成链路系统图";
btnEquipmentSys.Text = "生成链路系统图";
btnEquipmentSys.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnEquipmentSys.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnEquipmentSys.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"EquipmentSys.png");
btnEquipmentSys.Id = "生成链路系统图";
ribbonRowPanel.Items.Add(btnEquipmentSys);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnBatchSwitch = new RibbonButton();
btnBatchSwitch.ToolTip = "照明回路开关";
btnBatchSwitch.Text = "照明回路开关";
btnBatchSwitch.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnBatchSwitch.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnBatchSwitch.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"BatchSwitch.png");
btnBatchSwitch.Id = "照明回路开关";
ribbonRowPanel.Items.Add(btnBatchSwitch);
#endregion
designSource.Items.Add(ribbonRowPanel);
#endregion
#region Ribbon
RibbonPanelSource dataSource = new RibbonPanelSource();
dataSource.Title = "数据管理";
dataSource.Id = "数据管理";
RibbonPanel dataPanel = new RibbonPanel();
dataPanel.Source = dataSource;
tab1.Panels.Add(dataPanel);
//大按钮
#region buttons
RibbonButton btnSwitchbox = new RibbonButton();
btnSwitchbox.ToolTip = "分电箱";
btnSwitchbox.Text = "分电箱";
btnSwitchbox.ButtonStyle = RibbonButtonStyle.LargeWithText;
btnSwitchbox.CommandHandler = new DelegateCommand(async x =>
{
//if (GlobalObject.userInfo == null || GlobalObject.curProject == null)
//{
// MessageBox.Show("请先登录系统并选择项目!");
// return;
//}
////在SWS系统内打开且不是只读的图纸才可
//var dwgName = General.GetDwgName();
//var dwgFile = GlobalObject.ListDwgOpened.FirstOrDefault(a => a.Path == dwgName && a.IsReadOnly == false);
//if (dwgFile == null)
//{ return; }
//Document doc = Application.DocumentManager.MdiActiveDocument;
//Database db = doc.Database;
//Editor ed = doc.Editor;
////选择的元素返回的属性信息
//var ResTagInfosByPixels = new Model.ec_objecttype();
//var listPropertys = new List<propertyModel>();
////获取服务接口
//var _objectTypeService = GlobalObject.container.Resolve<ObjectTypeService>();
//var _iOModuleService = GlobalObject.container.Resolve<IOModuleService>();
//// 持续选择直到获取有效电缆
//bool isValidCable = false;
//try
//{
// #region 选择电缆
// // 创建选择选项(禁用回车确认)
// PromptEntityOptions options = new PromptEntityOptions("\n请单击选择对象: ");
// options.AllowNone = false; // 禁止空选
// // 执行选择(直接单击生效)
// PromptEntityResult resultEntity = ed.GetEntity(options);
// //WindowVisibility = System.Windows.Visibility.Hidden;
// while (resultEntity.Status == PromptStatus.OK)
// {
// using (Transaction tr = db.TransactionManager.StartTransaction())
// {
// // 获取选中的电缆实体
// Entity cable = tr.GetObject(resultEntity.ObjectId, OpenMode.ForRead) as Entity;
// //if (cable != null&&cable.XData != null)
// if (cable != null)
// {
// // 获取句柄Handle 是字符串类型)
// var handId = (cable.Handle.ToString());
// var res = await _objectTypeService.GetTagInfosByPixels(dwgFile.Id, handId);
// if (res != null)
// {
// if (res.Count == 1)
// {
// var item = res[0];
// var objTypeName = item.ObjectTypeName;
// if (!objTypeName.Contains("电缆"))
// {
// ResTagInfosByPixels = item;
// isValidCable = true; // 校验通过
// ed.WriteMessage($"\n已选择对象:{ResTagInfosByPixels.tags.FirstOrDefault().TagNumber}");
// }
// }
// }
// }
// tr.Commit();
// }
// if (isValidCable)
// {
// break;
// }
// else
// {
// ed.WriteMessage($"\n已选择电缆:");
// resultEntity = ed.GetEntity(options);
// }
// }
// #endregion
//}
//catch (System.Exception ex)
//{
// ed.WriteMessage($"\n错误: {ex.Message}");
//}
if (true)
{
//打开窗体
var para = new Prism.Services.Dialogs.DialogParameters();
var _dialogService = GlobalObject._prismContainer.Resolve<IDialogService>();
_dialogService.ShowDialog(nameof(DialogSectionBox), para, (RES) =>
{
if (RES.Result == ButtonResult.Yes)
{
}
else if (RES.Result == ButtonResult.No)
{ }
});
}
});
btnSwitchbox.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"Switchbox.png");
btnSwitchbox.Id = "分电箱";
dataSource.Items.Add(btnSwitchbox);
#endregion
//垂直排列按钮panel
ribbonRowPanel = new RibbonRowPanel();
#region buttons
RibbonButton btnParallel = new RibbonButton();
btnParallel.ToolTip = "平行电缆";
btnParallel.Text = "平行电缆";
btnParallel.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnParallel.CommandHandler = new DelegateCommand(async x =>
{
if (GlobalObject.userInfo == null || GlobalObject.curProject == null)
{
MessageBox.Show("请先登录系统并选择项目!");
return;
}
#region
//在SWS系统内打开且不是只读的图纸才可
var dwgName = General.GetDwgName();
var dwgFile = GlobalObject.ListDwgOpened.FirstOrDefault(a => a.Path == dwgName && a.IsReadOnly == false);
if (dwgFile == null)
{ return; }
if (string.IsNullOrEmpty(GlobalObject.currentTagNumber))
{ return; }
//选择集数量只有1才行
int count = General.SelectedCount();
if (count != 1)
{
MessageBox.Show("请选择1个电缆");
return;
}
//var listHandid = General.GetSelectedHandles();
//if (listHandid.Count != 1)
//{
// MessageBox.Show("请选择1个电缆");
// return;
//}
//var tagNumber = listHandid[0];
var _objectTypeService = GlobalObject.container.Resolve<ObjectTypeService>();
var res = await _objectTypeService.GetTagInfosByTags(GlobalObject.currentTagNumber);
if (!res.Any())
{
//MessageBox.Show("获取位号数据异常:");
return;
}
if (!GlobalObject.IsCable(res[0]))
{
MessageBox.Show("选中的元素不是电缆!");
return;
}
//取“平行电缆”和“平行电缆位号”属性
var listPro = res[0].props;
var listTaginfo = res[0].tags[0].EngineDataProperty;
var pro1 = listPro.FirstOrDefault(a => a.PropertyName == "平行电缆");
var tag1 = listTaginfo.FirstOrDefault(a => a.PropertyName == "平行电缆");
var model1 = new propertyModel()
{
Id = tag1.EngineDataID,
DisplayText = pro1.PropertyName,
PropertyValue = tag1.PropertyValue,
DetailId = tag1.EngineDataPropertyID
};
var pro2 = listPro.FirstOrDefault(a => a.PropertyName == "平行电缆位号");
var tag2 = listTaginfo.FirstOrDefault(a => a.PropertyName == "平行电缆位号");
var model2 = new propertyModel()
{
Id = tag2.EngineDataID,
DisplayText = pro2.PropertyName,
PropertyValue = tag2.PropertyValue,
DetailId = tag2.EngineDataPropertyID,
Unit = "",
IsRefreshUI = true
};
//打开窗体
var para = new Prism.Services.Dialogs.DialogParameters();
para.Add(GlobalObject.dialogPar.info.ToString(), res[0]);
para.Add(GlobalObject.dialogPar.para1.ToString(), model1);
para.Add(GlobalObject.dialogPar.para2.ToString(), model2);
var _dialogService = GlobalObject._prismContainer.Resolve<IDialogService>();
_dialogService.ShowDialog(nameof(DialogParallelCable), para, (RES) =>
{
if (RES.Result == ButtonResult.Yes)
{
}
else if (RES.Result == ButtonResult.No)
{ }
});
#endregion
});
btnParallel.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"Parallel.png");
btnParallel.Id = "平行电缆";
ribbonRowPanel.Items.Add(btnParallel);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnCableConnect = new RibbonButton();
btnCableConnect.ToolTip = "电缆连接";
btnCableConnect.Text = "电缆连接";
btnCableConnect.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnCableConnect.CommandHandler = new DelegateCommand(async x =>
{
if (GlobalObject.userInfo == null || GlobalObject.curProject == null)
{
MessageBox.Show("请先登录系统并选择项目!");
return;
}
#region
//在SWS系统内打开且不是只读的图纸才可
var dwgName = General.GetDwgName();
var dwgFile = GlobalObject.ListDwgOpened.FirstOrDefault(a => a.Path == dwgName && a.IsReadOnly == false);
if (dwgFile == null)
{ return; }
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
//选择的元素返回的属性信息
var ResTagInfosByPixels = new Model.ec_objecttype();
var listPropertys = new List<propertyModel>();
var _objectTypeService = GlobalObject.container.Resolve<ObjectTypeService>();
var _iOModuleService = GlobalObject.container.Resolve<IOModuleService>();
// 持续选择直到获取有效电缆
bool isValidCable = false;
try
{
// 创建选择选项(禁用回车确认)
PromptEntityOptions options = new PromptEntityOptions("\n请单击选择电缆: ");
options.AllowNone = false; // 禁止空选
// 执行选择(直接单击生效)
PromptEntityResult resultEntity = ed.GetEntity(options);
//WindowVisibility = System.Windows.Visibility.Hidden;
while (resultEntity.Status == PromptStatus.OK)
{
using (Transaction tr = db.TransactionManager.StartTransaction())
{
// 获取选中的电缆实体
Entity cable = tr.GetObject(resultEntity.ObjectId, OpenMode.ForRead) as Entity;
//if (cable != null&&cable.XData != null)
if (cable != null)
{
// 获取句柄Handle 是字符串类型)
var handId = (cable.Handle.ToString());
_objectTypeService = GlobalObject.container.Resolve<ObjectTypeService>();
var res = await _objectTypeService.GetTagInfosByPixels(dwgFile.Id, handId);
if (res != null)
{
if (res.Count == 1)
{
var item = res[0];
var objTypeName = item.ObjectTypeName;
if (objTypeName.Contains("电缆"))
{
ResTagInfosByPixels = item;
isValidCable = true; // 校验通过
ed.WriteMessage($"\n已选择电缆:{ResTagInfosByPixels.tags.FirstOrDefault().TagNumber}");
}
}
}
}
tr.Commit();
}
if (isValidCable)
{
break;
}
else
{
ed.WriteMessage($"\n已选择电缆:");
resultEntity = ed.GetEntity(options);
}
}
//Thread.Sleep(2000);
if (isValidCable)
{
var ResTagNumberById = await _objectTypeService.GetTagNumberById(ResTagInfosByPixels.tags.FirstOrDefault().ObjectTypeID);
var ObjectTypePListBy = await _objectTypeService.GetObjectTypePListByIds(ResTagInfosByPixels.tags.FirstOrDefault().ObjectTypeID);
string CableSpecification = ObjectTypePListBy.Where(q => q.PropertyName.Equals("电缆规格")).Select(s => s.EnumDataCode).FirstOrDefault();
CableSpecification = CableSpecification.Substring(0, CableSpecification.Length - 1);
var LatestSerialNumber = await _objectTypeService.GetLatestSerialNumber(ResTagInfosByPixels.tags.FirstOrDefault().ObjectTypeID);
//获取位号的电缆属性,判断是否设置电缆规格
var TagNumberBys = await _objectTypeService.GetEngineDataListByTags(ResTagInfosByPixels.tags.FirstOrDefault().TagNumber);
var TagNumberBy = TagNumberBys.Where(t => t.TagNumber.Equals(ResTagInfosByPixels.tags.FirstOrDefault().TagNumber)).FirstOrDefault();
if (string.IsNullOrEmpty(TagNumberBy.EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault()))
//if (!CableSpecification.Split(',').ToList().Contains(TagNumberBy.EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault()))
{
System.Windows.MessageBox.Show("无法获取电缆对信息,请在电缆\"属性面版“输入电缆”电缆规格”属性\r\n如:“1x2x0.75”", "KunHengCAD", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Warning); return;
}
var ResCableEngID = await _iOModuleService.GetCableByEngID(ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID);
//如果配置不存在
if (ResCableEngID == null)
{
listPropertys = new List<propertyModel>();
System.Windows.MessageBoxResult result = System.Windows.MessageBox.Show($"是否为通讯母线?", "KunHengCAD", System.Windows.MessageBoxButton.OKCancel, System.Windows.MessageBoxImage.Question);
if (result == System.Windows.MessageBoxResult.OK)
{
listPropertys = new List<propertyModel>();
Dictionary<string, string> pulldownlist;
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电缆对数", GroupName = "基本参数", PropertyValue = "1", ControlTypeName = PROPERTYType.TextBox, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "每电缆对芯数", GroupName = "基本参数", PropertyValue = "2", ControlTypeName = PROPERTYType.TextBox, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电缆对编号前缀", GroupName = "基本参数", PropertyValue = "Set", ControlTypeName = PROPERTYType.TextBox, });
pulldownlist = new Dictionary<string, string>();
pulldownlist.Add("数字", "数字");
pulldownlist.Add("字母", "字母");
pulldownlist.Add("电缆对序号", "电缆对序号");
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "编号类型", GroupName = "电芯参数", PropertyValue = "数字", ControlTypeName = PROPERTYType.ComboBox, Item = pulldownlist, });
pulldownlist = new Dictionary<string, string>();
pulldownlist.Add("按电缆编号", "按电缆编号");
pulldownlist.Add("按电缆对编号", "按电缆对编号");
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "编号规则", GroupName = "电芯参数", PropertyValue = "按电缆对编号", ControlTypeName = PROPERTYType.ComboBox, Item = pulldownlist, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电芯编号前缀", GroupName = "电芯参数", PropertyValue = "C", ControlTypeName = PROPERTYType.TextBox, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "极性", GroupName = "电芯参数", PropertyValue = "+,-,s", ControlTypeName = PROPERTYType.TextBox, });
//显示属性弹窗
var ReslistPro = ShowPropertyMessage("新建" + ResTagInfosByPixels.tags.FirstOrDefault().TagNumber + "电缆配置", listPropertys);
if (ReslistPro == null || ReslistPro.Count() == 0) return;
ec_Cable ec_Cable = new ec_Cable();
ec_Cable.CableClass = "homerun";//母线
ec_Cable.Cable_Format = ResTagInfosByPixels.tags.FirstOrDefault().EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault();
ec_Cable.EngineerDataID = ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID;
ec_Cable.Sets = new List<ec_CableSet>();
int CableSetCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("电缆对数")).Select(p => p.PropertyValue).FirstOrDefault(), out CableSetCount) ? CableSetCount : 0;
int n = 0;
for (int i = 0; i < CableSetCount; i++)
{
ec_CableSet ec_CableSet = new ec_CableSet();
ec_CableSet.CableSetName = ReslistPro.Where(p => p.DisplayText.Equals("电缆对编号前缀")).Select(p => p.PropertyValue).FirstOrDefault() + (i + 1);
ec_CableSet.CableSetSeq = i + 1;
ec_CableSet.Wires = new List<ec_CableSetWire>();
int WireCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("每电缆对芯数")).Select(p => p.PropertyValue).FirstOrDefault(), out WireCount) ? WireCount : 0;
for (int j = 0; j < WireCount; j++)
{
n++;
ec_CableSetWire ec_CableSetWire = new ec_CableSetWire();
ec_CableSetWire.Polarity = ReslistPro.Where(p => p.DisplayText.Equals("极性")).Select(p => p.PropertyValue).FirstOrDefault().Split(',')[Math.Abs(j % 3)];
ec_CableSetWire.SetLevel = j + 1;
string a = ReslistPro.Where(p => p.DisplayText.Equals("电芯编号前缀")).Select(p => p.PropertyValue).FirstOrDefault();//组成线号名的前缀
string Tag = "";//线号名的中间部分
switch (ReslistPro.Where(p => p.DisplayText.Equals("编号规则")).Select(p => p.PropertyValue).FirstOrDefault())
{
case "按电缆编号":
if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字"))
{
Tag = n.ToString();
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母"))
{
Tag = Tag + (char)('A' + (n - 1));
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号"))
{
Tag = (i + 1) + "-" + n.ToString();
}
break;
case "按电缆对编号":
if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字"))
{
Tag = (j + 1).ToString();
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母"))
{
Tag = Tag + (char)('A' + j);
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号"))
{
Tag = (i + 1) + "-" + (j + 1).ToString();
}
break;
}
ec_CableSetWire.Wire_Tag = a + Tag;
ec_CableSet.Wires.Add(ec_CableSetWire);
}
ec_Cable.Sets.Add(ec_CableSet);
}
var httpres = await _iOModuleService.CreateCableByProfile(ec_Cable);
ResCableEngID = await _iOModuleService.GetCableByEngID(ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID);
}
else
{
listPropertys = new List<propertyModel>();
Dictionary<string, string> pulldownlist;
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电缆对数", GroupName = "基本参数", PropertyValue = "10", ControlTypeName = PROPERTYType.TextBox, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "每电缆对芯数", GroupName = "基本参数", PropertyValue = "2", ControlTypeName = PROPERTYType.TextBox, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电缆对编号前缀", GroupName = "基本参数", PropertyValue = "Set", ControlTypeName = PROPERTYType.TextBox, });
pulldownlist = new Dictionary<string, string>();
pulldownlist.Add("数字", "数字");
pulldownlist.Add("字母", "字母");
pulldownlist.Add("电缆对序号", "电缆对序号");
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "编号类型", GroupName = "电芯参数", PropertyValue = "数字", ControlTypeName = PROPERTYType.ComboBox, Item = pulldownlist, });
pulldownlist = new Dictionary<string, string>();
pulldownlist.Add("按电缆编号", "按电缆编号");
pulldownlist.Add("按电缆对编号", "按电缆对编号");
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "编号规则", GroupName = "电芯参数", PropertyValue = "按电缆对编号", ControlTypeName = PROPERTYType.ComboBox, Item = pulldownlist, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电芯编号前缀", GroupName = "电芯参数", PropertyValue = "C", ControlTypeName = PROPERTYType.TextBox, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "极性", GroupName = "电芯参数", PropertyValue = "+,-,s", ControlTypeName = PROPERTYType.TextBox, });
//显示属性弹窗
var ReslistPro = ShowPropertyMessage("新建" + ResTagInfosByPixels.tags.FirstOrDefault().TagNumber + "电缆配置", listPropertys);
if (ReslistPro == null || ReslistPro.Count() == 0) return;
ec_Cable ec_Cable = new ec_Cable();
ec_Cable.CableClass = "conventional";//常规电缆
ec_Cable.EngineerDataID = ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID;
ec_Cable.Sets = new List<ec_CableSet>();
int CableSetCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("电缆对数")).Select(p => p.PropertyValue).FirstOrDefault(), out CableSetCount) ? CableSetCount : 0;
int n = 0;
for (int i = 0; i < CableSetCount; i++)
{
ec_CableSet ec_CableSet = new ec_CableSet();
ec_CableSet.CableSetName = ReslistPro.Where(p => p.DisplayText.Equals("电缆对编号前缀")).Select(p => p.PropertyValue).FirstOrDefault() + (i + 1);
ec_CableSet.CableSetSeq = i + 1;
ec_CableSet.Wires = new List<ec_CableSetWire>();
int WireCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("每电缆对芯数")).Select(p => p.PropertyValue).FirstOrDefault(), out WireCount) ? WireCount : 0;
for (int j = 0; j < WireCount; j++)
{
n++;
ec_CableSetWire ec_CableSetWire = new ec_CableSetWire();
ec_CableSetWire.Polarity = ReslistPro.Where(p => p.DisplayText.Equals("极性")).Select(p => p.PropertyValue).FirstOrDefault().Split(',')[Math.Abs(j % 3)];
ec_CableSetWire.SetLevel = j + 1;
string a = ReslistPro.Where(p => p.DisplayText.Equals("电芯编号前缀")).Select(p => p.PropertyValue).FirstOrDefault();//组成线号名的前缀
string Tag = "";//线号名的中间部分
switch (ReslistPro.Where(p => p.DisplayText.Equals("编号规则")).Select(p => p.PropertyValue).FirstOrDefault())
{
case "按电缆编号":
if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字"))
{
Tag = n.ToString();
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母"))
{
Tag = Tag + (char)('A' + (n - 1));
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号"))
{
Tag = (i + 1) + "-" + n.ToString();
}
break;
case "按电缆对编号":
if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字"))
{
Tag = (j + 1).ToString();
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母"))
{
Tag = Tag + (char)('A' + j);
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号"))
{
Tag = (i + 1) + "-" + (j + 1).ToString();
}
break;
}
ec_CableSetWire.Wire_Tag = a + Tag;
ec_CableSet.Wires.Add(ec_CableSetWire);
}
ec_Cable.Sets.Add(ec_CableSet);
}
var httpres = await _iOModuleService.CreateCableByProfile(ec_Cable);
ResCableEngID = await _iOModuleService.GetCableByEngID(ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID);
}
}
if (ResCableEngID != null)
{
IntPtr cadHandle = Bricscad.ApplicationServices.Application.MainWindow.Handle;
//打开窗体
var para = new Prism.Services.Dialogs.DialogParameters();
//para.Add(GlobalObject.dialogPar.para1.ToString(), "6e2919e4-28cd-4fb6-9035-10b2ff0e30fb");
para.Add(GlobalObject.dialogPar.info.ToString(), cadHandle);
para.Add(GlobalObject.dialogPar.para1.ToString(), dwgFile.Id);
para.Add(GlobalObject.dialogPar.para2.ToString(), ResTagInfosByPixels.tags.FirstOrDefault().TagNumber);
var _dialogService = GlobalObject._prismContainer.Resolve<IDialogService>();
_dialogService.ShowDialog(nameof(DialogCableConnection), para, (RES) =>
{
if (RES.Result == ButtonResult.Yes)
{
}
else if (RES.Result == ButtonResult.No)
{ }
});
}
}
}
catch (System.Exception ex)
{
ed.WriteMessage($"\n错误: {ex.Message}");
}
#endregion
});
btnCableConnect.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"CableConnect.png");
btnCableConnect.Id = "电缆连接";
ribbonRowPanel.Items.Add(btnCableConnect);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons IO分配
RibbonButton btnIO = new RibbonButton();
btnIO.ToolTip = "IO分配";
btnIO.Text = "IO分配";
btnIO.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnIO.CommandHandler = new DelegateCommand(x =>
{
//打开窗体
var para = new Prism.Services.Dialogs.DialogParameters();
var _dialogService = GlobalObject._prismContainer.Resolve<IDialogService>();
_dialogService.ShowDialog(nameof(DialogIODistribution), para, (RES) =>
{
if (RES.Result == ButtonResult.Yes)
{
}
else if (RES.Result == ButtonResult.No)
{ }
});
});
btnIO.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"IO.png");
btnIO.Id = "IO分配";
ribbonRowPanel.Items.Add(btnIO);
#endregion
dataSource.Items.Add(ribbonRowPanel);
//垂直排列按钮panel
ribbonRowPanel = new RibbonRowPanel();
#region buttons
RibbonButton btnSinalManage = new RibbonButton();
btnSinalManage.ToolTip = "信号管理";
btnSinalManage.Text = "信号管理";
btnSinalManage.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnSinalManage.CommandHandler = new DelegateCommand(x =>
{
if (GlobalObject.userInfo == null || GlobalObject.curProject == null)
{
MessageBox.Show("请先登录系统并选择项目!");
return;
}
//打开窗体
var para = new Prism.Services.Dialogs.DialogParameters();
var _dialogService = GlobalObject._prismContainer.Resolve<IDialogService>();
_dialogService.ShowDialog(nameof(SWS.WPF.Views.DialogSignalManagement), para, (RES) =>
{
if (RES.Result == ButtonResult.Yes)
{
}
else if (RES.Result == ButtonResult.No)
{ }
});
});
btnSinalManage.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"SinalManage.png");
btnSinalManage.Id = "信号管理";
ribbonRowPanel.Items.Add(btnSinalManage);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnCableSinal = new RibbonButton();
btnCableSinal.ToolTip = "信号预分配";
btnCableSinal.Text = "信号预分配";
btnCableSinal.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnCableSinal.CommandHandler = new DelegateCommand(async x =>
{
if (GlobalObject.userInfo == null || GlobalObject.curProject == null)
{
MessageBox.Show("请先登录系统并选择项目!");
return;
}
//在SWS系统内打开且不是只读的图纸才可
var dwgName = General.GetDwgName();
var dwgFile = GlobalObject.ListDwgOpened.FirstOrDefault(a => a.Path == dwgName && a.IsReadOnly == false);
if (dwgFile == null)
{ return; }
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
//选择的元素返回的属性信息
var ResTagInfosByPixels = new Model.ec_objecttype();
var listPropertys = new List<propertyModel>();
//获取服务接口
var _objectTypeService = GlobalObject.container.Resolve<ObjectTypeService>();
var _iOModuleService = GlobalObject.container.Resolve<IOModuleService>();
// 持续选择直到获取有效电缆
bool isValidCable = false;
try
{
#region
// 创建选择选项(禁用回车确认)
PromptEntityOptions options = new PromptEntityOptions("\n请单击选择电缆: ");
options.AllowNone = false; // 禁止空选
// 执行选择(直接单击生效)
PromptEntityResult resultEntity = ed.GetEntity(options);
//WindowVisibility = System.Windows.Visibility.Hidden;
while (resultEntity.Status == PromptStatus.OK)
{
using (Transaction tr = db.TransactionManager.StartTransaction())
{
// 获取选中的电缆实体
Entity cable = tr.GetObject(resultEntity.ObjectId, OpenMode.ForRead) as Entity;
//if (cable != null&&cable.XData != null)
if (cable != null)
{
// 获取句柄Handle 是字符串类型)
var handId = (cable.Handle.ToString());
var res = await _objectTypeService.GetTagInfosByPixels(dwgFile.Id, handId);
if (res != null)
{
if (res.Count == 1)
{
var item = res[0];
var objTypeName = item.ObjectTypeName;
if (objTypeName.Contains("电缆"))
{
ResTagInfosByPixels = item;
isValidCable = true; // 校验通过
ed.WriteMessage($"\n已选择电缆:{ResTagInfosByPixels.tags.FirstOrDefault().TagNumber}");
}
}
}
}
tr.Commit();
}
if (isValidCable)
{
break;
}
else
{
ed.WriteMessage($"\n已选择电缆:");
resultEntity = ed.GetEntity(options);
}
}
#endregion
//Thread.Sleep(2000);
if (isValidCable)
{
var ResTagNumberById = await _objectTypeService.GetTagNumberById(ResTagInfosByPixels.tags.FirstOrDefault().ObjectTypeID);
var ObjectTypePListBy = await _objectTypeService.GetObjectTypePListByIds(ResTagInfosByPixels.tags.FirstOrDefault().ObjectTypeID);
string CableSpecification = ObjectTypePListBy.Where(q => q.PropertyName.Equals("电缆规格")).Select(s => s.EnumDataCode).FirstOrDefault();
CableSpecification = CableSpecification.Substring(0, CableSpecification.Length - 1);
var LatestSerialNumber = await _objectTypeService.GetLatestSerialNumber(ResTagInfosByPixels.tags.FirstOrDefault().ObjectTypeID);
//获取位号的电缆属性,判断是否设置电缆规格
var TagNumberBys = await _objectTypeService.GetEngineDataListByTags(ResTagInfosByPixels.tags.FirstOrDefault().TagNumber);
var TagNumberBy = TagNumberBys.Where(t => t.TagNumber.Equals(ResTagInfosByPixels.tags.FirstOrDefault().TagNumber)).FirstOrDefault();
if (string.IsNullOrEmpty(TagNumberBy.EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault()))
//if (!CableSpecification.Split(',').ToList().Contains(TagNumberBy.EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault()))
{
System.Windows.MessageBox.Show("无法获取电缆对信息,请在电缆\"属性面版“输入电缆”电缆规格”属性\r\n如:“1x2x0.75”", "KunHengCAD", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Warning); return;
}
var ResCableEngID = await _iOModuleService.GetCableByEngID(ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID);
//如果配置不存在
if (ResCableEngID == null)
{
listPropertys = new List<propertyModel>();
System.Windows.MessageBoxResult result = System.Windows.MessageBox.Show($"是否为通讯母线?", "KunHengCAD", System.Windows.MessageBoxButton.OKCancel, System.Windows.MessageBoxImage.Question);
if (result == System.Windows.MessageBoxResult.OK)
{
listPropertys = new List<propertyModel>();
Dictionary<string, string> pulldownlist;
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电缆对数", GroupName = "基本参数", PropertyValue = "1", ControlTypeName = PROPERTYType.TextBox, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "每电缆对芯数", GroupName = "基本参数", PropertyValue = "2", ControlTypeName = PROPERTYType.TextBox, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电缆对编号前缀", GroupName = "基本参数", PropertyValue = "Set", ControlTypeName = PROPERTYType.TextBox, });
pulldownlist = new Dictionary<string, string>();
pulldownlist.Add("数字", "数字");
pulldownlist.Add("字母", "字母");
pulldownlist.Add("电缆对序号", "电缆对序号");
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "编号类型", GroupName = "电芯参数", PropertyValue = "数字", ControlTypeName = PROPERTYType.ComboBox, Item = pulldownlist, });
pulldownlist = new Dictionary<string, string>();
pulldownlist.Add("按电缆编号", "按电缆编号");
pulldownlist.Add("按电缆对编号", "按电缆对编号");
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "编号规则", GroupName = "电芯参数", PropertyValue = "按电缆对编号", ControlTypeName = PROPERTYType.ComboBox, Item = pulldownlist, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电芯编号前缀", GroupName = "电芯参数", PropertyValue = "C", ControlTypeName = PROPERTYType.TextBox, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "极性", GroupName = "电芯参数", PropertyValue = "+,-,s", ControlTypeName = PROPERTYType.TextBox, });
//显示属性弹窗
var ReslistPro = ShowPropertyMessage("新建" + ResTagInfosByPixels.tags.FirstOrDefault().TagNumber + "电缆配置", listPropertys);
if (ReslistPro == null || ReslistPro.Count() == 0) return;
ec_Cable ec_Cable = new ec_Cable();
ec_Cable.CableClass = "homerun";//母线
ec_Cable.Cable_Format = ResTagInfosByPixels.tags.FirstOrDefault().EngineDataProperty.Where(e => e.PropertyName.Equals("电缆规格")).Select(e => e.PropertyValue).FirstOrDefault();
ec_Cable.EngineerDataID = ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID;
ec_Cable.Sets = new List<ec_CableSet>();
int CableSetCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("电缆对数")).Select(p => p.PropertyValue).FirstOrDefault(), out CableSetCount) ? CableSetCount : 0;
int n = 0;
for (int i = 0; i < CableSetCount; i++)
{
ec_CableSet ec_CableSet = new ec_CableSet();
ec_CableSet.CableSetName = ReslistPro.Where(p => p.DisplayText.Equals("电缆对编号前缀")).Select(p => p.PropertyValue).FirstOrDefault() + (i + 1);
ec_CableSet.CableSetSeq = i + 1;
ec_CableSet.Wires = new List<ec_CableSetWire>();
int WireCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("每电缆对芯数")).Select(p => p.PropertyValue).FirstOrDefault(), out WireCount) ? WireCount : 0;
for (int j = 0; j < WireCount; j++)
{
n++;
ec_CableSetWire ec_CableSetWire = new ec_CableSetWire();
ec_CableSetWire.Polarity = ReslistPro.Where(p => p.DisplayText.Equals("极性")).Select(p => p.PropertyValue).FirstOrDefault().Split(',')[Math.Abs(j % 3)];
ec_CableSetWire.SetLevel = j + 1;
string a = ReslistPro.Where(p => p.DisplayText.Equals("电芯编号前缀")).Select(p => p.PropertyValue).FirstOrDefault();//组成线号名的前缀
string Tag = "";//线号名的中间部分
switch (ReslistPro.Where(p => p.DisplayText.Equals("编号规则")).Select(p => p.PropertyValue).FirstOrDefault())
{
case "按电缆编号":
if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字"))
{
Tag = n.ToString();
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母"))
{
Tag = Tag + (char)('A' + (n - 1));
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号"))
{
Tag = (i + 1) + "-" + n.ToString();
}
break;
case "按电缆对编号":
if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字"))
{
Tag = (j + 1).ToString();
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母"))
{
Tag = Tag + (char)('A' + j);
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号"))
{
Tag = (i + 1) + "-" + (j + 1).ToString();
}
break;
}
ec_CableSetWire.Wire_Tag = a + Tag;
ec_CableSet.Wires.Add(ec_CableSetWire);
}
ec_Cable.Sets.Add(ec_CableSet);
}
var httpres = await _iOModuleService.CreateCableByProfile(ec_Cable);
ResCableEngID = await _iOModuleService.GetCableByEngID(ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID);
}
else
{
listPropertys = new List<propertyModel>();
Dictionary<string, string> pulldownlist;
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电缆对数", GroupName = "基本参数", PropertyValue = "10", ControlTypeName = PROPERTYType.TextBox, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "每电缆对芯数", GroupName = "基本参数", PropertyValue = "2", ControlTypeName = PROPERTYType.TextBox, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电缆对编号前缀", GroupName = "基本参数", PropertyValue = "Set", ControlTypeName = PROPERTYType.TextBox, });
pulldownlist = new Dictionary<string, string>();
pulldownlist.Add("数字", "数字");
pulldownlist.Add("字母", "字母");
pulldownlist.Add("电缆对序号", "电缆对序号");
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "编号类型", GroupName = "电芯参数", PropertyValue = "数字", ControlTypeName = PROPERTYType.ComboBox, Item = pulldownlist, });
pulldownlist = new Dictionary<string, string>();
pulldownlist.Add("按电缆编号", "按电缆编号");
pulldownlist.Add("按电缆对编号", "按电缆对编号");
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "编号规则", GroupName = "电芯参数", PropertyValue = "按电缆对编号", ControlTypeName = PROPERTYType.ComboBox, Item = pulldownlist, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "电芯编号前缀", GroupName = "电芯参数", PropertyValue = "C", ControlTypeName = PROPERTYType.TextBox, });
listPropertys.Add(new propertyModel() { Id = "1", DisplayText = "极性", GroupName = "电芯参数", PropertyValue = "+,-,s", ControlTypeName = PROPERTYType.TextBox, });
//显示属性弹窗
var ReslistPro = ShowPropertyMessage("新建" + ResTagInfosByPixels.tags.FirstOrDefault().TagNumber + "电缆配置", listPropertys);
if (ReslistPro == null || ReslistPro.Count() == 0) return;
ec_Cable ec_Cable = new ec_Cable();
ec_Cable.CableClass = "conventional";//常规电缆
ec_Cable.EngineerDataID = ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID;
ec_Cable.Sets = new List<ec_CableSet>();
int CableSetCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("电缆对数")).Select(p => p.PropertyValue).FirstOrDefault(), out CableSetCount) ? CableSetCount : 0;
int n = 0;
for (int i = 0; i < CableSetCount; i++)
{
ec_CableSet ec_CableSet = new ec_CableSet();
ec_CableSet.CableSetName = ReslistPro.Where(p => p.DisplayText.Equals("电缆对编号前缀")).Select(p => p.PropertyValue).FirstOrDefault() + (i + 1);
ec_CableSet.CableSetSeq = i + 1;
ec_CableSet.Wires = new List<ec_CableSetWire>();
int WireCount = int.TryParse(ReslistPro.Where(p => p.DisplayText.Equals("每电缆对芯数")).Select(p => p.PropertyValue).FirstOrDefault(), out WireCount) ? WireCount : 0;
for (int j = 0; j < WireCount; j++)
{
n++;
ec_CableSetWire ec_CableSetWire = new ec_CableSetWire();
ec_CableSetWire.Polarity = ReslistPro.Where(p => p.DisplayText.Equals("极性")).Select(p => p.PropertyValue).FirstOrDefault().Split(',')[Math.Abs(j % 3)];
ec_CableSetWire.SetLevel = j + 1;
string a = ReslistPro.Where(p => p.DisplayText.Equals("电芯编号前缀")).Select(p => p.PropertyValue).FirstOrDefault();//组成线号名的前缀
string Tag = "";//线号名的中间部分
switch (ReslistPro.Where(p => p.DisplayText.Equals("编号规则")).Select(p => p.PropertyValue).FirstOrDefault())
{
case "按电缆编号"://所有的电缆对中的电芯一起编号
if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字"))
{
Tag = n.ToString();
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母"))
{
Tag = Tag + (char)('A' + (n - 1));
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号"))
{
Tag = (i + 1) + "-" + n.ToString();
}
break;
case "按电缆对编号"://一个电缆对中线号按顺序编号另一个电缆对中线号重新从1开始编号
if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("数字"))
{
Tag = (j + 1).ToString();
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("字母"))
{
Tag = Tag + (char)('A' + j);
}
else if (ReslistPro.Where(p => p.DisplayText.Equals("编号类型")).Select(p => p.PropertyValue).FirstOrDefault().Equals("电缆对序号"))
{
Tag = (i + 1) + "-" + (j + 1).ToString();
}
break;
}
ec_CableSetWire.Wire_Tag = a + Tag;
ec_CableSet.Wires.Add(ec_CableSetWire);
}
ec_Cable.Sets.Add(ec_CableSet);
}
var httpres = await _iOModuleService.CreateCableByProfile(ec_Cable);
ResCableEngID = await _iOModuleService.GetCableByEngID(ResTagInfosByPixels.tags.FirstOrDefault().EngineDataID);
}
}
if (ResCableEngID != null)
{
IntPtr cadHandle = Bricscad.ApplicationServices.Application.MainWindow.Handle;
//打开窗体
var para = new Prism.Services.Dialogs.DialogParameters();
//para.Add(GlobalObject.dialogPar.para1.ToString(), "6e2919e4-28cd-4fb6-9035-10b2ff0e30fb");
para.Add(GlobalObject.dialogPar.info.ToString(), cadHandle);
para.Add(GlobalObject.dialogPar.para1.ToString(), ResCableEngID);
para.Add(GlobalObject.dialogPar.para2.ToString(), ResTagInfosByPixels.tags.FirstOrDefault().TagNumber);
var _dialogService = GlobalObject._prismContainer.Resolve<IDialogService>();
_dialogService.ShowDialog(nameof(DialogSignalPredistribution), para, (RES) =>
{
if (RES.Result == ButtonResult.Yes)
{
}
else if (RES.Result == ButtonResult.No)
{ }
});
}
}
}
catch (System.Exception ex)
{
ed.WriteMessage($"\n错误: {ex.Message}");
}
});
btnCableSinal.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"CableSinal.png");
btnCableSinal.Id = "信号预分配";
ribbonRowPanel.Items.Add(btnCableSinal);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnRelevancy = new RibbonButton();
btnRelevancy.ToolTip = "批量反向关联";
btnRelevancy.Text = "批量反向关联";
btnRelevancy.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnRelevancy.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnRelevancy.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"relevancy.png");
btnRelevancy.Id = "批量反向关联";
ribbonRowPanel.Items.Add(btnRelevancy);
#endregion
dataSource.Items.Add(ribbonRowPanel);
//垂直排列按钮panel
ribbonRowPanel = new RibbonRowPanel();
#region buttons
RibbonButton btnGraphRec = new RibbonButton();
btnGraphRec.ToolTip = "系统图识别";
btnGraphRec.Text = "系统图识别";
btnGraphRec.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnGraphRec.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnGraphRec.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"GraphRec.png");
btnGraphRec.Id = "系统图识别";
ribbonRowPanel.Items.Add(btnGraphRec);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnVerticalRec = new RibbonButton();
btnVerticalRec.ToolTip = "竖向图识别";
btnVerticalRec.Text = "竖向图识别";
btnVerticalRec.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnVerticalRec.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnVerticalRec.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"VerticalRec.png");
btnVerticalRec.Id = "竖向图识别";
ribbonRowPanel.Items.Add(btnVerticalRec);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnLightLineRec = new RibbonButton();
btnLightLineRec.ToolTip = "链路图识别";
btnLightLineRec.Text = "链路图识别";
btnLightLineRec.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnLightLineRec.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnLightLineRec.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"lightLine.png");
btnLightLineRec.Id = "链路图识别";
ribbonRowPanel.Items.Add(btnLightLineRec);
#endregion
dataSource.Items.Add(ribbonRowPanel);
#endregion
#region Ribbon
RibbonPanelSource dwgRefreshSource = new RibbonPanelSource();
dwgRefreshSource.Title = "图形刷新";
dwgRefreshSource.Id = "图形刷新";
RibbonPanel dwgRefreshPanel = new RibbonPanel();
dwgRefreshPanel.Source = dwgRefreshSource;
tab1.Panels.Add(dwgRefreshPanel);
//大按钮
#region buttons
RibbonButton btnRefreshText = new RibbonButton();
btnRefreshText.ToolTip = "刷新标注";
btnRefreshText.Text = "刷新标注";
btnRefreshText.ButtonStyle = RibbonButtonStyle.LargeWithText;
btnRefreshText.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnRefreshText.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"RefreshText.png");
btnRefreshText.Id = "刷新标注";
dwgRefreshSource.Items.Add(btnRefreshText);
#endregion
//垂直排列按钮panel
ribbonRowPanel = new RibbonRowPanel();
#region buttons
RibbonButton btnRefreshBlock = new RibbonButton();
btnRefreshBlock.ToolTip = "刷新元件";
btnRefreshBlock.Text = "刷新元件";
btnRefreshBlock.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnRefreshBlock.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnRefreshBlock.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"RefreshBlock.png");
btnRefreshBlock.Id = "刷新元件";
ribbonRowPanel.Items.Add(btnRefreshBlock);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnRefreshFrame = new RibbonButton();
btnRefreshFrame.ToolTip = "刷新图框";
btnRefreshFrame.Text = "刷新图框";
btnRefreshFrame.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnRefreshFrame.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnRefreshFrame.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"RefreshFrame.png");
btnRefreshFrame.Id = "刷新图框";
ribbonRowPanel.Items.Add(btnRefreshFrame);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnRefreshLink = new RibbonButton();
btnRefreshLink.ToolTip = "刷新连接";
btnRefreshLink.Text = "刷新连接";
btnRefreshLink.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnRefreshLink.CommandHandler = new DelegateCommand(x =>
{
var configView = GlobalObject.container.Resolve<Config>();
Application.ShowModalWindow(Application.MainWindow.Handle, configView);
});
btnRefreshLink.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"RefreshLink.png");
btnRefreshLink.Id = "刷新连接";
ribbonRowPanel.Items.Add(btnRefreshLink);
#endregion
dwgRefreshSource.Items.Add(ribbonRowPanel);
//垂直排列按钮panel
ribbonRowPanel = new RibbonRowPanel();
#region buttons
RibbonButton btnShowLink = new RibbonButton();
btnShowLink.ToolTip = "查看链路";
btnShowLink.Text = "查看链路";
btnShowLink.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnShowLink.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnShowLink.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"ShowLink.png");
btnShowLink.Id = "查看链路";
ribbonRowPanel.Items.Add(btnShowLink);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnUpdatePosition = new RibbonButton();
btnUpdatePosition.ToolTip = "刷新位置";
btnUpdatePosition.Text = "刷新位置";
btnUpdatePosition.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnUpdatePosition.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnUpdatePosition.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"UpdatePosition.png");
btnUpdatePosition.Id = "刷新位置";
ribbonRowPanel.Items.Add(btnUpdatePosition);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnRefreshPosition = new RibbonButton();
btnRefreshPosition.ToolTip = "刷新坐标";
btnRefreshPosition.Text = "刷新坐标";
btnRefreshPosition.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnRefreshPosition.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnRefreshPosition.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"RefreshPosition.png");
btnRefreshPosition.Id = "刷新坐标";
ribbonRowPanel.Items.Add(btnRefreshPosition);
#endregion
dwgRefreshSource.Items.Add(ribbonRowPanel);
//垂直排列按钮panel
ribbonRowPanel = new RibbonRowPanel();
#region buttons
RibbonButton btnActiveObject = new RibbonButton();
btnActiveObject.ToolTip = "图元高亮";
btnActiveObject.Text = "图元高亮";
btnActiveObject.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnActiveObject.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnActiveObject.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"ActiveObject.png");
btnActiveObject.Id = "图元高亮";
ribbonRowPanel.Items.Add(btnActiveObject);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
dwgRefreshSource.Items.Add(ribbonRowPanel);
#endregion
#region Ribbon
RibbonPanelSource dataExchangeSource = new RibbonPanelSource();
dataExchangeSource.Title = "数据交换";
dataExchangeSource.Id = "数据交换";
RibbonPanel dataExchangePanel = new RibbonPanel();
dataExchangePanel.Source = dataExchangeSource;
tab1.Panels.Add(dataExchangePanel);
//垂直排列按钮panel
ribbonRowPanel = new RibbonRowPanel();
#region buttons
RibbonButton btnImput = new RibbonButton();
btnImput.ToolTip = "元件导入";
btnImput.Text = "元件导入";
btnImput.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnImput.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnImput.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"Imput.png");
btnImput.Id = "元件导入";
ribbonRowPanel.Items.Add(btnImput);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnExport = new RibbonButton();
btnExport.ToolTip = "元件导出";
btnExport.Text = "元件导出";
btnExport.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnExport.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnExport.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"Export.png");
btnExport.Id = "元件导出";
ribbonRowPanel.Items.Add(btnExport);
#endregion
dataExchangeSource.Items.Add(ribbonRowPanel);
//垂直排列按钮panel
ribbonRowPanel = new RibbonRowPanel();
#region buttons
RibbonButton btnCheckCable = new RibbonButton();
btnCheckCable.ToolTip = "电缆检查";
btnCheckCable.Text = "电缆检查";
btnCheckCable.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnCheckCable.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnCheckCable.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"CheckCable.png");
btnCheckCable.Id = "电缆检查";
ribbonRowPanel.Items.Add(btnCheckCable);
ribbonRowPanel.Items.Add(new RibbonRowBreak());//换行,这样可以使按钮多行排列
#endregion
#region buttons
RibbonButton btnPropertyCheck = new RibbonButton();
btnPropertyCheck.ToolTip = "属性检查";
btnPropertyCheck.Text = "属性检查";
btnPropertyCheck.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnPropertyCheck.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnPropertyCheck.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"Property.png");
btnPropertyCheck.Id = "属性检查";
ribbonRowPanel.Items.Add(btnPropertyCheck);
#endregion
dataExchangeSource.Items.Add(ribbonRowPanel);
#endregion
#region Ribbon
RibbonPanelSource systemSource = new RibbonPanelSource();
systemSource.Title = "软件配置";
systemSource.Id = "软件配置";
RibbonPanel systemPanel = new RibbonPanel();
systemPanel.Source = systemSource;
tab1.Panels.Add(systemPanel);
//下拉按钮列表
RibbonSplitButton splitButton = new RibbonSplitButton();
splitButton.Text = "软件配置";
splitButton.ShowText = true;
splitButton.ShowImage = true;
splitButton.IsVisible = true;
splitButton.ButtonStyle = RibbonButtonStyle.SmallWithText;
#region buttons
RibbonButton btnDwgConfig = new RibbonButton();
btnDwgConfig.ToolTip = "绘图配置";
btnDwgConfig.Text = "绘图配置";
btnDwgConfig.ButtonStyle = RibbonButtonStyle.LargeWithText;
btnDwgConfig.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnDwgConfig.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"DConfig.png");
btnDwgConfig.Id = "绘图配置";
splitButton.Items.Add(btnDwgConfig);
#endregion
#region buttons
RibbonButton btnAaConfig = new RibbonButton();
btnAaConfig.ToolTip = "标注配置";
btnAaConfig.Text = "标注配置";
btnAaConfig.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnAaConfig.CommandHandler = new DelegateCommand(x =>
{
MessageBox.Show("功能开发中...");
});
btnAaConfig.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"TConfig.png");
btnAaConfig.Id = "标注配置";
splitButton.Items.Add(btnAaConfig);
#endregion
#region buttons
RibbonButton btnSystemConfig = new RibbonButton();
btnSystemConfig.ToolTip = "系统配置";
btnSystemConfig.Text = "系统配置";
btnSystemConfig.ButtonStyle = RibbonButtonStyle.SmallWithText;
btnSystemConfig.CommandHandler = new DelegateCommand(x =>
{
var configView = GlobalObject.container.Resolve<Config>();
Application.ShowModalWindow(Application.MainWindow.Handle, configView);
});
btnSystemConfig.Image = GlobalObject.ImageSourceFromEmbeddedResourceStream(@"SConfig.png");
btnSystemConfig.Id = "系统配置";
splitButton.Items.Add(btnSystemConfig);
#endregion
systemSource.Items.Add(splitButton);
#endregion
}
}
}