TellmeRevitPluging/Models/ExportModels.cs
2025-12-09 17:43:30 +08:00

289 lines
7.0 KiB
C#
Raw 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;
namespace RevitHttpControl.Models
{
/// <summary>
/// IFC导出请求参数
/// </summary>
public class ExportIfcRequest
{
/// <summary>
/// 输出文件路径(可选,如果不指定则自动生成)
/// </summary>
public string OutputPath { get; set; }
/// <summary>
/// IFC版本默认IFC2x3
/// </summary>
public IfcVersion Version { get; set; } = IfcVersion.IFC2x3;
/// <summary>
/// 导出范围
/// </summary>
public ExportRange Range { get; set; } = ExportRange.VisibleElements;
/// <summary>
/// 是否包含空间边界
/// </summary>
public bool IncludeSpaceBoundaries { get; set; } = false;
/// <summary>
/// 是否分割墙和柱
/// </summary>
public bool SplitWallsAndColumns { get; set; } = false;
/// <summary>
/// 要导出的楼层列表(可选,为空则导出所有楼层)
/// </summary>
public List<string> LevelNames { get; set; } = new List<string>();
/// <summary>
/// 要导出的类别列表(可选,为空则导出所有类别)
/// </summary>
public List<string> Categories { get; set; } = new List<string>();
/// <summary>
/// 是否包含2D元素
/// </summary>
public bool Include2DElements { get; set; } = false;
/// <summary>
/// 文件名前缀当OutputPath为空时使用
/// </summary>
public string FileNamePrefix { get; set; } = "Export";
}
/// <summary>
/// IFC导出响应
/// </summary>
public class ExportIfcResponse
{
/// <summary>
/// 导出文件路径
/// </summary>
public string FilePath { get; set; }
/// <summary>
/// 文件名
/// </summary>
public string FileName { get; set; }
/// <summary>
/// 文件大小(字节)
/// </summary>
public long FileSizeBytes { get; set; }
/// <summary>
/// 文件大小显示
/// </summary>
public string FileSizeDisplay { get; set; }
/// <summary>
/// 导出的元素数量
/// </summary>
public int ExportedElementsCount { get; set; }
/// <summary>
/// 处理时间(秒)
/// </summary>
public double ProcessingTimeSeconds { get; set; }
/// <summary>
/// IFC版本
/// </summary>
public string IfcVersion { get; set; }
/// <summary>
/// 导出统计信息
/// </summary>
public ExportStatistics Statistics { get; set; }
/// <summary>
/// 导出时间
/// </summary>
public DateTime ExportedAt { get; set; }
}
/// <summary>
/// 导出统计信息
/// </summary>
public class ExportStatistics
{
/// <summary>
/// 按类别统计的元素数量
/// </summary>
public Dictionary<string, int> ElementsByCategory { get; set; } = new Dictionary<string, int>();
/// <summary>
/// 按楼层统计的元素数量
/// </summary>
public Dictionary<string, int> ElementsByLevel { get; set; } = new Dictionary<string, int>();
/// <summary>
/// 导出的楼层数量
/// </summary>
public int LevelsCount { get; set; }
/// <summary>
/// 导出的类别数量
/// </summary>
public int CategoriesCount { get; set; }
/// <summary>
/// 是否包含几何信息
/// </summary>
public bool HasGeometry { get; set; }
/// <summary>
/// 是否包含属性信息
/// </summary>
public bool HasProperties { get; set; }
}
/// <summary>
/// IFC版本枚举
/// </summary>
public enum IfcVersion
{
/// <summary>
/// IFC 2x3 Coordination View 2.0
/// </summary>
IFC2x3,
/// <summary>
/// IFC 4 标准版本
/// </summary>
IFC4,
/// <summary>
/// IFC 4 Reference View
/// </summary>
IFC4RV,
/// <summary>
/// IFC 4 Design Transfer View
/// </summary>
IFC4DTV
}
/// <summary>
/// 导出范围枚举
/// </summary>
public enum ExportRange
{
/// <summary>
/// 仅可见元素
/// </summary>
VisibleElements,
/// <summary>
/// 当前视图
/// </summary>
CurrentView,
/// <summary>
/// 整个项目
/// </summary>
EntireProject,
/// <summary>
/// 选中的元素
/// </summary>
SelectedElements
}
/// <summary>
/// 导出格式信息
/// </summary>
public class ExportFormat
{
/// <summary>
/// 格式代码
/// </summary>
public string Format { get; set; }
/// <summary>
/// 格式名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 格式描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 支持的文件扩展名
/// </summary>
public List<string> Extensions { get; set; } = new List<string>();
/// <summary>
/// 是否支持异步导出
/// </summary>
public bool SupportsAsync { get; set; }
/// <summary>
/// 是否为实验性功能
/// </summary>
public bool IsExperimental { get; set; }
}
/// <summary>
/// 导出进度信息
/// </summary>
public class ExportProgress
{
/// <summary>
/// 当前步骤
/// </summary>
public string CurrentStep { get; set; }
/// <summary>
/// 进度百分比0-100
/// </summary>
public int ProgressPercentage { get; set; }
/// <summary>
/// 已处理的元素数量
/// </summary>
public int ProcessedElements { get; set; }
/// <summary>
/// 总元素数量
/// </summary>
public int TotalElements { get; set; }
/// <summary>
/// 预计剩余时间(秒)
/// </summary>
public double EstimatedRemainingSeconds { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public DateTime StartTime { get; set; }
}
/// <summary>
/// 异步导出响应
/// </summary>
public class AsyncExportResponse
{
/// <summary>
/// 任务ID
/// </summary>
public string TaskId { get; set; }
/// <summary>
/// 状态查询URL
/// </summary>
public string StatusUrl { get; set; }
/// <summary>
/// 预计完成时间
/// </summary>
public DateTime EstimatedCompletionTime { get; set; }
}
}