/* ============================================================================== * 功能描述:VMCreateFacility * 创 建 者:Garrett * 创建日期:2019/10/23 9:46:45 * ==============================================================================*/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using Autodesk.Revit.DB; using Saga.PlugIn.ModelCheck; using SAGA.DotNetUtils.Others; using SAGA.DotNetUtils.WPF; namespace Saga.PlugIn.CreateFacility { /// /// VMCreateFacility /// public class VMCreateFacility:BaseViewModelStub { public VMCreateFacility(Document doc) { m_Document = doc; ModelFilePath = doc.PathName; } private Document m_Document; private string m_TabCode; /// /// 标记码 /// public string TabCode { get { return m_TabCode; } set { m_TabCode = value; NotifyPropertyChanged("TabCode"); MFacilityTabCode = ParseFacilityTabCode.Parse(value); } } private MFacilityTabCode m_MFacilityTabCode; public MFacilityTabCode MFacilityTabCode { get { return m_MFacilityTabCode; } set { m_MFacilityTabCode = value; FacilityLocated = $"{value?.BuildingName}-{value?.FloorName}"; } } private string m_FacilityLocated; /// /// 设备所在位置 /// public string FacilityLocated { get { return m_FacilityLocated; } set { m_FacilityLocated = value; NotifyPropertyChanged("FacilityLocated"); } } private string m_ModelFilePath; /// /// 模型文件地址 /// public string ModelFilePath { get { return m_ModelFilePath; } set { m_ModelFilePath = value; NotifyPropertyChanged("ModelFilePath"); } } #region command [Command] public void PasteTabCode(object param) { IDataObject iData = Clipboard.GetDataObject(); if (iData.GetDataPresent(DataFormats.Text)) { TabCode = (String)iData.GetData(DataFormats.Text); } } public bool CanPasteTabCode(object param) { return true; } [Command] public void ClearTabCode(object param) { TabCode = null; } public bool CanClearTabCode(object param) { return true; } [Command] public void Execute(object param) { if (string.IsNullOrEmpty(MFacilityTabCode.Id)) { MessageShowBase.Infomation("粘贴设备类数据异常,请检查"); return; } //选择设备类 var facilityCodes = MFacilityTabCode.EquipClasses; WinSelectDeviceClass win=new WinSelectDeviceClass(facilityCodes); if (facilityCodes.Count > 1) { if(win.ShowDialog()!=true) return; } var facilityClass = win.SelectedCode; if (facilityClass == null) { MessageShowBase.Infomation("粘贴设备类数据异常,请检查"); return; } //判断是否存在 var id = CreateFacilityRevitUtils.FindFacility(m_Document, facilityClass.code, MFacilityTabCode.Id); if (!string.IsNullOrEmpty(id)) { WinTipExisted winTipExisted=new WinTipExisted(id); if (winTipExisted.ShowDialog() == true) TabCode = null; return; } //创建 id = CreateFacilityRevitUtils.CreateFacility(m_Document, facilityClass, MFacilityTabCode.BIMLocation, MFacilityTabCode.Id); if (!string.IsNullOrEmpty(id)) { CreateFacilityRevitUtils.FocusFacility(id); WinTipCreateSuccess winTipCreateSuccess = new WinTipCreateSuccess(id); winTipCreateSuccess.ShowDialog(); } } public bool CanExecute(object param) { return MFacilityTabCode!=null; } #endregion } }