Files
CDMUtility/CDMUtil/ToCDM/CDMComponent.cs
2026-02-23 14:35:54 +08:00

151 lines
4.3 KiB
C#

using Autodesk.Revit.DB;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CDM.Interop.Revit.CDMComponent
{
class CDMComponent
{
/// <summary>
/// 构件名
/// </summary>
public string Name
{
get
{
switch (CDMTypeId)
{
case HcdmType.CDMWall:
return "墙";
case HcdmType.CDMBeam:
return "梁";
case HcdmType.CDMFloor:
return "板";
case HcdmType.CDMColumn:
return "柱";
case HcdmType.CDMStair:
return "楼梯";
default:
return "INVAIL";
}
}
}
/// <summary>
/// 阶段
/// </summary>
public string Phase { get; set; }
/// <summary>
/// 交付日期
/// </summary>
public string DateOfDelivery { get; set; }
/// <summary>
/// 负责人姓名
/// </summary>
public string NameOfLeader { get; set; }
/// <summary>
/// 负责人身份证
/// </summary>
public string IdOfLeader { get; set; }
/// <summary>
/// 构件所属楼层编码
/// </summary>
public string LevelCode;
/// <summary>
/// 各楼层中的构件编码001~...
/// </summary>
public string LevelComponentCode { get; set; }
/// <summary>
/// 定位点X坐标
/// </summary>
public double Xl { get; set; }
/// <summary>
/// 定位点Y坐标
/// </summary>
public double Yw { get; set; }
/// <summary>
/// 定位点Z坐标
/// </summary>
public double Zh { get; set; }
/// <summary>
/// 方向角(逆时针为正)
/// </summary>
public double DegreesWithXAxis { get; set; }
/// <summary>
/// 方向角(弧度)
/// </summary>
public double RadiansWithXAxis => Math.PI / 180 * DegreesWithXAxis;
/// <summary>
/// 类别编码
/// </summary>
public string CategoryCode;
/// <summary>
/// 族类型Id
/// </summary>
public ElementId SymbolId { get; set; }
/// <summary>
/// Revit构件Id
/// </summary>
public ElementId EleId { get; set; }
/// <summary>
/// 标高Id
/// </summary>
public ElementId LevelId { get; set; }
/// <summary>
/// 基点
/// </summary>
public XYZ BasePoint { get; set; }
/// <summary>
/// 类型ID
/// </summary>
///
public HcdmType CDMTypeId { get; set; }
/// <summary>
/// 根据数据模型类型返回编码
/// </summary>
public string HcdmClass
{
get
{
switch (CDMTypeId)
{
case HcdmType.CDMWall:
return "A21005";
case HcdmType.CDMBeam:
return "A21002";
case HcdmType.CDMFloor:
return "A21003";
case HcdmType.CDMColumn:
return "A21001";
case HcdmType.CDMStair:
return "A21004";
default:
return "INVAIL";
}
}
}
/// <summary>
/// HcdmNumber编码
/// </summary>
public string HcdmNumber => string.Format("{0}-{1}-{2}", CategoryCode, LevelCode, LevelComponentCode);
/// <summary>
/// 获取参数值
/// </summary>
/// <param name="instance">族实例</param>
/// <param name="paraname">参数名</param>
/// <returns></returns>
public Parameter GetPara(FamilyInstance instance, string paraname) => instance.Symbol.GetParameters(paraname).FirstOrDefault();
}
enum HcdmType
{
CDMWall = 0,
CDMBeam = 1,
CDMFloor = 2,
CDMColumn = 3,
CDMStair = 4
}
}