273 lines
6.8 KiB
C#
273 lines
6.8 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using Newtonsoft.Json;
|
||
|
||
namespace RevitHttpControl.Models
|
||
{
|
||
/// <summary>
|
||
/// 薄壳分析请求
|
||
/// </summary>
|
||
public class ShellAnalyzeRequest
|
||
{
|
||
/// <summary>
|
||
/// 优化模式
|
||
/// </summary>
|
||
public ShellOptimizeMode Mode { get; set; } = ShellOptimizeMode.Standard;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 薄壳分析响应
|
||
/// </summary>
|
||
public class ShellAnalyzeResponse
|
||
{
|
||
/// <summary>
|
||
/// 分析统计信息
|
||
/// </summary>
|
||
public ShellAnalysisSummary Analysis { get; set; }
|
||
|
||
/// <summary>
|
||
/// 分类详细统计
|
||
/// </summary>
|
||
public List<CategoryStatistics> Categories { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 薄壳执行请求
|
||
/// </summary>
|
||
public class ShellExecuteRequest
|
||
{
|
||
/// <summary>
|
||
/// 外部执行ID(可选,用于批处理回调)
|
||
/// </summary>
|
||
[JsonProperty("execution_id")]
|
||
public string ExecutionId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 优化模式
|
||
/// </summary>
|
||
public ShellOptimizeMode Mode { get; set; } = ShellOptimizeMode.Standard;
|
||
|
||
/// <summary>
|
||
/// 是否备份原文件
|
||
/// </summary>
|
||
public bool BackupOriginal { get; set; } = true;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 按类别自定义删除请求
|
||
/// </summary>
|
||
public class ShellCustomExecuteRequest
|
||
{
|
||
/// <summary>
|
||
/// 外部执行ID(可选,用于批处理回调)
|
||
/// </summary>
|
||
[JsonProperty("execution_id")]
|
||
public string ExecutionId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 要删除的类别ID列表(BuiltInCategory 的 int 值)
|
||
/// </summary>
|
||
public List<int> CategoryIds { get; set; } = new List<int>();
|
||
|
||
/// <summary>
|
||
/// 是否备份原文件
|
||
/// </summary>
|
||
public bool BackupOriginal { get; set; } = true;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 薄壳执行响应
|
||
/// </summary>
|
||
public class ShellExecuteResponse
|
||
{
|
||
/// <summary>
|
||
/// 优化结果
|
||
/// </summary>
|
||
public ShellOptimizeResult Result { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 薄壳分析统计摘要
|
||
/// </summary>
|
||
public class ShellAnalysisSummary
|
||
{
|
||
/// <summary>
|
||
/// 总构件数
|
||
/// </summary>
|
||
public int TotalElements { get; set; }
|
||
|
||
/// <summary>
|
||
/// 保留构件数
|
||
/// </summary>
|
||
public int KeepElements { get; set; }
|
||
|
||
/// <summary>
|
||
/// 删除构件数
|
||
/// </summary>
|
||
public int RemoveElements { get; set; }
|
||
|
||
/// <summary>
|
||
/// 预估文件大小减少百分比
|
||
/// </summary>
|
||
public string EstimatedReduction { get; set; }
|
||
|
||
/// <summary>
|
||
/// 当前文件大小(格式化显示)
|
||
/// </summary>
|
||
public string OriginalSize { get; set; }
|
||
|
||
/// <summary>
|
||
/// 预估优化后文件大小(格式化显示)
|
||
/// </summary>
|
||
public string EstimatedOptimizedSize { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 构件分类统计
|
||
/// </summary>
|
||
public class CategoryStatistics
|
||
{
|
||
/// <summary>
|
||
/// 分类ID(BuiltInCategory 的 int 值)
|
||
/// </summary>
|
||
public int CategoryId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 分类名称
|
||
/// </summary>
|
||
public string Name { get; set; }
|
||
|
||
/// <summary>
|
||
/// 分类总数
|
||
/// </summary>
|
||
public int Total { get; set; }
|
||
|
||
/// <summary>
|
||
/// 保留数量
|
||
/// </summary>
|
||
public int Keep { get; set; }
|
||
|
||
/// <summary>
|
||
/// 删除数量
|
||
/// </summary>
|
||
public int Remove { get; set; }
|
||
|
||
/// <summary>
|
||
/// 保留百分比
|
||
/// </summary>
|
||
public string KeepPercentage => Total > 0 ? $"{(Keep * 100.0 / Total):F0}%" : "0%";
|
||
}
|
||
|
||
/// <summary>
|
||
/// 薄壳优化结果
|
||
/// </summary>
|
||
public class ShellOptimizeResult
|
||
{
|
||
/// <summary>
|
||
/// 实际删除的构件数量
|
||
/// </summary>
|
||
public int RemovedCount { get; set; }
|
||
|
||
/// <summary>
|
||
/// 原始文件大小(格式化显示)
|
||
/// </summary>
|
||
public string OriginalSize { get; set; }
|
||
|
||
/// <summary>
|
||
/// 优化后文件大小(格式化显示)
|
||
/// </summary>
|
||
public string OptimizedSize { get; set; }
|
||
|
||
/// <summary>
|
||
/// 实际减少百分比
|
||
/// </summary>
|
||
public string Reduction { get; set; }
|
||
|
||
/// <summary>
|
||
/// 备份文件路径(如果有备份)
|
||
/// </summary>
|
||
public string BackupPath { get; set; }
|
||
|
||
/// <summary>
|
||
/// 处理耗时(秒)
|
||
/// </summary>
|
||
public int ProcessingTimeSeconds { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 薄壳优化模式
|
||
/// </summary>
|
||
public enum ShellOptimizeMode
|
||
{
|
||
/// <summary>
|
||
/// 保守模式 - 只删除装饰元素(减少约30%)
|
||
/// </summary>
|
||
Conservative,
|
||
|
||
/// <summary>
|
||
/// 标准模式 - 删除家具和部分内墙(减少约65%)
|
||
/// </summary>
|
||
Standard,
|
||
|
||
/// <summary>
|
||
/// 激进模式 - 删除所有内部元素(减少约80%)
|
||
/// </summary>
|
||
Aggressive,
|
||
|
||
/// <summary>
|
||
/// 仅保留围护+场地 - 严格只保留外壳(外墙/屋顶/外门窗等)与场地地形,删除所有室内与链接模型
|
||
/// </summary>
|
||
EnvelopeOnly
|
||
}
|
||
|
||
/// <summary>
|
||
/// 构件处理动作
|
||
/// </summary>
|
||
public enum ElementAction
|
||
{
|
||
/// <summary>
|
||
/// 保留
|
||
/// </summary>
|
||
Keep,
|
||
|
||
/// <summary>
|
||
/// 删除
|
||
/// </summary>
|
||
Remove
|
||
}
|
||
|
||
/// <summary>
|
||
/// 构件分析结果
|
||
/// </summary>
|
||
public class ElementAnalysisResult
|
||
{
|
||
/// <summary>
|
||
/// 构件ID
|
||
/// </summary>
|
||
public int ElementId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 构件分类ID(BuiltInCategory 的 int 值)
|
||
/// </summary>
|
||
public int CategoryId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 构件分类名称
|
||
/// </summary>
|
||
public string CategoryName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 处理动作
|
||
/// </summary>
|
||
public ElementAction Action { get; set; }
|
||
|
||
/// <summary>
|
||
/// 处理原因
|
||
/// </summary>
|
||
public string Reason { get; set; }
|
||
}
|
||
}
|