TellmeRevitPluging/Models/ShellModels.cs

273 lines
6.8 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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>
/// 分类IDBuiltInCategory 的 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>
/// 构件分类IDBuiltInCategory 的 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; }
}
}