/* ==============================================================================
* 功能描述:DataCheckContext
* 创 建 者:Garrett
* 创建日期:2018/11/29 14:43:26
* ==============================================================================*/
using Autodesk.Revit.DB;
using SAGA.DotNetUtils.Extend;
using SAGA.DotNetUtils.WPF;
using SAGA.RevitUtils;
using System;
using System.Collections.Generic;
using System.IO;
using Saga.PlugIn.CreateFacility;
namespace Saga.PlugIn.ModelCheck
{
///
/// DataCheckContext
///
public class VMModelCheck : BaseViewModelStub
{
public VMModelCheck(Document doc)
{
m_Doc = doc;
ModelFilePath = doc.PathName;
SaveDir = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory));
CheckItems = CheckOperation.GetModeCheckItems();
ModelCheckState = ModelCheckState.Prepare;
CurrentIndex = 1;
}
private Document m_Doc;
private string m_ModelFilePath;
///
/// 模型文件地址
///
public string ModelFilePath
{
get { return m_ModelFilePath; }
set
{
m_ModelFilePath = value;
NotifyPropertyChanged("ModelFilePath");
}
}
private List m_CheckItems;
///
/// 检查项
///
public List CheckItems
{
get { return m_CheckItems; }
set
{
m_CheckItems = value;
NotifyPropertyChanged("CheckItems");
}
}
private ModelCheckState m_ModelCheckState;
public ModelCheckState ModelCheckState
{
get { return m_ModelCheckState; }
set
{
m_ModelCheckState = value;
NotifyPropertyChanged(nameof(ModelCheckState));
}
}
private string m_SaveDir;
///
/// 保存路径
///
public string SaveDir
{
get { return m_SaveDir; }
set
{
m_SaveDir = value;
NotifyPropertyChanged("SaveDir");
}
}
private string m_SavePath;
///
/// 保存路径
///
public string SavePath
{
get { return m_SavePath; }
set
{
m_SavePath = value;
NotifyPropertyChanged("SavePath");
}
}
private int m_CurrentIndex;
///
/// 检查进度
///
public int CurrentIndex
{
get { return m_CurrentIndex; }
set
{
m_CurrentIndex = value;
NotifyPropertyChanged("CurrentIndex");
}
}
[Command]
public void Execute(object param)
{
try
{
switch (ModelCheckState)
{
case ModelCheckState.Prepare:
CheckItems.ForEach(t => t.ModelCheckState = ModelCheckState.Progress);
ModelCheckState = ModelCheckState.Progress;
string savePath = Path.Combine(SaveDir,
$"{ModelFilePath.GetFileName()}{"模型规范检查报告"}{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx");
CheckOperation.Execute(CheckItems, m_Doc, savePath, this);
ModelCheckState = ModelCheckState.Ending;
//为了Ending的界面显示,出问题注释掉
SavePath = savePath;
WinTipCheckComplete win = new WinTipCheckComplete();
win.ShowDialog();
break;
case ModelCheckState.Progress:
break;
case ModelCheckState.Ending:
System.Diagnostics.Process.Start("explorer.exe", SaveDir);
break;
}
}
catch (Exception e)
{
MessageShow.Show(e);
}
}
public bool CanExecute(object param)
{
return ModelCheckState.Progress != ModelCheckState;
}
}
public enum ModelCheckState
{
Prepare,
Progress,
Ending
}
}