添加项目文件。
This commit is contained in:
75
RevitKits/WBSCoder/ProjectUtil.cs
Normal file
75
RevitKits/WBSCoder/ProjectUtil.cs
Normal file
@@ -0,0 +1,75 @@
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Text;
|
||||
using Autodesk.Revit.UI;
|
||||
using net.sf.mpxj;
|
||||
using net.sf.mpxj.MpxjUtilities;
|
||||
using net.sf.mpxj.reader;
|
||||
using Sai.RvKits;
|
||||
using SZBIM.StandardTools;
|
||||
|
||||
namespace Sai.Common.Shared.WBSCoder
|
||||
{
|
||||
internal class ProjectUtil
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取最底层的任务集
|
||||
/// </summary>
|
||||
/// <param name="filename"></param>
|
||||
/// <param name="lastTaskItems"></param>
|
||||
/// <returns></returns>
|
||||
public static ObservableCollection<TaskItem> GetTasks(string filename,
|
||||
ObservableCollection<TaskItem> lastTaskItems)
|
||||
{
|
||||
lastTaskItems.Clear();
|
||||
AssemblyLoader loader = new AssemblyLoader(RelativePaths.DirAssembly);
|
||||
loader.HookAssemblyResolve();
|
||||
try
|
||||
{
|
||||
//MPPReader mPPReader = new MPPReader();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
var reader = ProjectReaderUtility.getProjectReader(filename);
|
||||
ProjectFile mpp = reader.read(filename);
|
||||
var tasks = mpp.Tasks.ToIEnumerable();
|
||||
foreach (Task task in tasks)
|
||||
{
|
||||
if (task.ChildTasks.size() == 0)
|
||||
{
|
||||
var temp = task.GetText(1);
|
||||
if (string.IsNullOrEmpty(temp) || string.IsNullOrWhiteSpace(temp))
|
||||
{
|
||||
sb.AppendLine($"任务:({task.ParentTask.ParentTask.Name}->{task.ParentTask.Name}->{task.Name})未识别到编码");
|
||||
continue;
|
||||
}
|
||||
|
||||
string code = WbsCoderUtils.FormatWbsCode(temp);
|
||||
|
||||
|
||||
TaskItem taskItem = new TaskItem(task)
|
||||
{
|
||||
Name = task.Name,
|
||||
Parent = task.ParentTask.Name,
|
||||
WBSCode = code
|
||||
};
|
||||
lastTaskItems.Add(taskItem);
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty($"{sb}"))
|
||||
{
|
||||
//TaskDialog.ShowTop("错误", $"{sb}");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
TaskDialog.Show("读取文件任务失败", $"{ex.Message}");
|
||||
}
|
||||
finally
|
||||
{
|
||||
loader.UnhookAssemblyResolve();
|
||||
}
|
||||
|
||||
return lastTaskItems;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user