/* ==============================================================================
* 功能描述: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
}
}