using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Windows.Forms; using System.Windows.Input; using Prism.Services.Dialogs; using SWS.CAD.Base; using SWS.Commons; using SWS.Model; using SWS.Service; using SWS.WPF.ViewModels; using Teigha.DatabaseServices; using Telerik.Windows.Controls; using Unity; using Visibility = System.Windows.Visibility; namespace SWS.Electrical.ViewModels { public class DialogTest2ViewModel : DialogBase, IDialogAware { private string _dwgID = "82cbfe10-2368-4d4d-9045-bd3f1bbfb614"; /// /// 图纸Id /// public string dwgID { get { return _dwgID; } set { _dwgID = value; OnPropertyChanged(nameof(dwgID)); } } private string _blockDwg = "D:\\Temp\\3\\opc_上右.dwg"; /// /// 图纸块 /// public string blockDwg { get { return _blockDwg; } set { _blockDwg = value; OnPropertyChanged(nameof(blockDwg)); } } private string _tagNumber = "AAA"; /// /// 位号 /// public string tagNumber { get { return _tagNumber; } set { _tagNumber = value; OnPropertyChanged(nameof(tagNumber)); } } private Visibility _isShow = Visibility.Visible; /// /// 是否显示 /// public Visibility isShow { get { return _isShow; } set { _isShow = value; OnPropertyChanged(nameof(isShow)); } } /// /// 命令事件 /// public ICommand Command_OpenFile { get; set; } /// /// 命令事件 /// public ICommand Command_OpenDwg { get; set; } /// /// 命令事件 /// public ICommand Command_AddBlock { get; set; } DrawingServce _ServiceDrawing; DrawingCatalogueService _ServiceDrawingCatalogue; ObjectTypeService _ServiceObjectType; LibraryFileService _ServiceLibraryFile; public DialogTest2ViewModel() { Command_OpenDwg = new DelegateCommand(onOpenDwg); Command_OpenFile = new DelegateCommand(onOpenFile); Command_AddBlock = new DelegateCommand(onAddBlock); title = "绘图测试页面"; _ServiceDrawing = GlobalObject.container.Resolve(); _ServiceDrawingCatalogue = GlobalObject.container.Resolve(); _ServiceObjectType = GlobalObject.container.Resolve(); _ServiceLibraryFile = GlobalObject.container.Resolve(); } public string Title => ""; public event Action RequestClose; public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } public void OnDialogOpened(IDialogParameters parameters) { } string fullpath = string.Empty;//图纸文件完整路径 public async void onOpenDwg(object o) { if (string.IsNullOrEmpty(dwgID)) { MessageBox.Show("请输入图纸ID"); return; } string dwgName = General.GetDwgName(); var dwgObj = await _ServiceDrawing.GetDrawingFile(dwgID); var cate = await _ServiceDrawingCatalogue.GetEntity(dwgObj.DrawingCatalogueID); if (cate.FullPath != cate.DrawingCatalogueID) { foreach (var id in cate.FullPath.Split(',').ToList()) { cate = await _ServiceDrawingCatalogue.GetEntity(id); fullpath += $"{cate.DrawingCatalogueName}\\"; } } else { fullpath = $"{cate.DrawingCatalogueName}\\"; } fullpath += dwgObj.DrawingFileName; fullpath = Path.Combine(GlobalObj.LocalWorkDir, GlobalObject.curProject.ProjectName, fullpath); var listName = General.GetAllOpenDrawingNames(); if (!listName.Contains(fullpath)) { General.OpenDwg(fullpath); } else { General.SwitchToDocument(fullpath); } } public void onOpenFile(object o) { OpenFileDialog dialog = new OpenFileDialog(); if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.Yes) { blockDwg = dialog.FileName; } blockDwg = dialog.FileName; } string objTypeId = "1410523e-d594-4527-9f04-130bb89c1cf0"; string objTypeName = "OPC"; public async void onAddBlock(object o) { try { string tagNum = string.Empty; isShow = Visibility.Hidden; var objId = General.InsertExternalDWG(blockDwg, tagNumber, ref tagNum); #region 图纸上保存图元属性 if (!objId.IsNull) { isShow = Visibility.Hidden; var dwgLibrary = await _ServiceLibraryFile.GetEntity("80052993-fb30-41f0-98f2-95f5b6647b72"); List listPro = new List(); var handlid = objId.Handle.ToString();//添加图元返回的句柄 ec_enginedata item = new ec_enginedata(); item.TagNumber = tagNum; item.ObjectTypeID = objTypeId; item.Layout_Block_File = dwgLibrary; var res = await _ServiceObjectType.GetObjectTypePById(objTypeId);//添加属性 if (res.Any()) { foreach (var dto in res) { listPro.Add(new ec_enginedata_property() { EngineDataPropertyID = dto.PropertyID, PropertyName = dto.PropertyName, PropertyNameEN = dto.PropertyNameEN, PropertyValue = dto.DefaultValue, MeasuringUnit = dto.MeasuringUnitTypeName, PropertyGID = dto.PropertyGID, PropertyGroupName = dto.PropertyGroupName }); } } item.EngineDataProperty = listPro; List listPixel = new List(); var pixelDto = new ec_enginedata_pixel() { TagNumber = tagNum, DrawingFileID = dwgID, LibraryFileID = dwgLibrary.LibraryFileID, PixelCode = handlid, ObjectTypeID = objTypeId, ObjectTypeName = objTypeName, EngineDataProperty = listPro }; listPixel.Add(pixelDto); item.EngineDataPixel = listPixel; string msg = string.Empty; msg = await _ServiceObjectType.UpdatePixelAndProp(item); if (msg != string.Empty) { MessageBox.Show("保存图元属性至图纸异常:" + msg); isShow = Visibility.Visible; } else { MessageBox.Show("添加图块成功!"); isShow = Visibility.Visible; } } else { MessageBox.Show("添加失败"); isShow = Visibility.Visible; } #endregion } catch (System.Exception ex) { MessageBox.Show(ex.Message); isShow = Visibility.Visible; } } } }