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