60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
using System.Windows;
|
|
|
|
using Autodesk.Revit.Attributes;
|
|
using Autodesk.Revit.DB;
|
|
using eTransmitForRevitDB;
|
|
using Nice3point.Revit.Toolkit.External;
|
|
|
|
namespace ShrlAlgoToolkit.RevitAddins.RvCommon;
|
|
|
|
/// <summary>
|
|
/// Revit执行命令
|
|
/// </summary>
|
|
[Transaction(TransactionMode.Manual)]
|
|
public class PureModelCmd : ExternalCommand
|
|
{
|
|
public override void Execute()
|
|
{
|
|
if (string.IsNullOrEmpty(Document.PathName))
|
|
{
|
|
System.Windows.MessageBox.Show("请先保存文件");
|
|
return;
|
|
}
|
|
var result = MessageBox.Show("是否清理项目中的所有未使用项", "询问", MessageBoxButton.YesNo, MessageBoxImage.Question);
|
|
if(result == MessageBoxResult.No)
|
|
{
|
|
return;
|
|
}
|
|
var options = new SaveAsOptions()
|
|
{
|
|
Compact = true,
|
|
OverwriteExistingFile = true,
|
|
MaximumBackups = 3
|
|
};
|
|
try
|
|
{
|
|
Purge(Document);
|
|
Document.SaveAs(Document.PathName, options);
|
|
System.Windows.MessageBox.Show("清理完成", "提示");
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// 使用eTransmitForRevitDB清理文档未使用项
|
|
/// </summary>
|
|
/// <param name="doc"></param>
|
|
/// <returns></returns>
|
|
public static bool Purge(Document doc)
|
|
{
|
|
var eTransmitUpgradeOMatic = new eTransmitUpgradeOMatic(doc.Application);
|
|
|
|
var result = eTransmitUpgradeOMatic.purgeUnused(doc);
|
|
|
|
return result == UpgradeFailureType.UpgradeSucceeded;
|
|
}
|
|
}
|