/* ==============================================================================
* 功能描述:VmVerticalPipeCheck
* 创 建 者:Garrett
* 创建日期:2019/11/5 15:25:33
* ==============================================================================*/
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using FWindSoft.Revit;
using FWindSoft.Wpf;
using Saga.PlugIn.CreateFacility;
using Saga.PlugIn.ModelCheck;
using SAGA.DotNetUtils.Extend;
using SAGA.DotNetUtils.WPF;
using SAGA.RevitUtils;
namespace Saga.PlugIn.VerticalPipeCheck
{
///
/// VmVerticalPipeCheck
///
public class VmVerticalPipeCheck:BaseViewModelStub
{
public VmVerticalPipeCheck()
{
SaveDir = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory));
}
#region Property
private string m_UpFilePath;
///
///
///
public string UpFilePath
{
get { return m_UpFilePath; }
set
{
m_UpFilePath = value;
NotifyPropertyChanged("UpFilePath");
}
}
private string m_DownFilePath;
///
///
///
public string DownFilePath
{
get { return m_DownFilePath; }
set
{
m_DownFilePath = value;
NotifyPropertyChanged("DownFilePath");
}
}
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 ModelCheckState m_ModelCheckState;
public ModelCheckState ModelCheckState
{
get { return m_ModelCheckState; }
set
{
m_ModelCheckState = value;
NotifyPropertyChanged(nameof(ModelCheckState));
}
}
#endregion
[Command]
public void Execute(object param)
{
try
{
switch (ModelCheckState)
{
case ModelCheckState.Prepare:
ModelCheckState = ModelCheckState.Progress;
//刷新界面
WpfSysCmd.DoEvent();
string savePath = Path.Combine(SaveDir,
$"{UpFilePath.GetFileName()}-{DownFilePath.GetFileName()}{"立管检查报告"}{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx");
//为了Ending的界面显示,出问题注释掉
SavePath = savePath;
var taskHandler = RevitHandlerFactory.CreateOnceHandler((a) =>
{
var tuple = VerticalPipeUtil.Execute(UpFilePath, DownFilePath, savePath);
ModelCheckState = ModelCheckState.Ending;
WinTipVPipeCheckComplete win = new WinTipVPipeCheckComplete(tuple?.Item1, tuple?.Item2);
win.ShowDialog();
return HandlerResult.Successed;
});
taskHandler.Execute(RevitCore.UIApp);
break;
case ModelCheckState.Progress:
break;
case ModelCheckState.Ending:
ModelCheckState = ModelCheckState.Prepare;
DownFilePath = UpFilePath;
UpFilePath = "";
break;
}
}
catch (Exception e)
{
MessageShow.Show(e);
}
}
public bool CanExecute(object param)
{
switch (ModelCheckState)
{
case ModelCheckState.Prepare:
if (string.IsNullOrEmpty(UpFilePath) || string.IsNullOrEmpty(DownFilePath) ||
string.IsNullOrEmpty(SaveDir))
return false;
break;
}
return ModelCheckState.Progress != ModelCheckState;
}
[Command]
public void OpenDir(object param)
{
try
{
System.Diagnostics.Process.Start("explorer.exe", SaveDir);
}
catch (Exception e)
{
MessageShow.Show(e);
}
}
public bool CanOpenDir(object param)
{
return true;
}
}
}