63 lines
2.2 KiB
C#
63 lines
2.2 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 CDMFloor : CDMComponent
|
|
{
|
|
public CDMFloor(Document doc, Floor floor, View3D v3d)
|
|
{
|
|
self = floor;
|
|
|
|
base.SymbolId = floor.FloorType.Id;
|
|
base.LevelId = floor.LevelId;
|
|
base.EleId = floor.Id;
|
|
|
|
//base.Name = floor.FloorType.FamilyName + "@" + floor.Name;
|
|
base.CDMTypeId = HcdmType.CDMFloor;
|
|
|
|
max = floor.get_BoundingBox(v3d).Max;
|
|
min = floor.get_BoundingBox(v3d).Min;
|
|
base.Xl = min.X * 0.3048;
|
|
base.Yw = (max.Y + min.Y) / 2 * 0.3048;
|
|
base.Zh = Convert.ToDouble(floor.get_Parameter(BuiltInParameter.STRUCTURAL_ELEVATION_AT_TOP).AsValueString()) / 1000;
|
|
|
|
CDMopenings = GetCDMOpenings(doc, v3d);
|
|
}
|
|
private List<CDMOpening> GetCDMOpenings(Document doc, View3D view3D)
|
|
{
|
|
var openingcol = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_FloorOpening).OfClass(typeof(Opening)).Cast<Opening>();
|
|
var openings = from open in openingcol
|
|
where open.Host.Id == self.Id
|
|
select open;
|
|
var CDMOpenings = new List<CDMOpening>();
|
|
foreach (var opening in openings)
|
|
{
|
|
CDMOpening cdmopening = new CDMOpening(opening, view3D);
|
|
CDMOpenings.Add(cdmopening);
|
|
}
|
|
return CDMOpenings;
|
|
}
|
|
private XYZ max;
|
|
private XYZ min;
|
|
private Floor self;
|
|
/// <summary>
|
|
/// 板长
|
|
/// </summary>
|
|
public double L => (max.X - min.X) * 304.8;
|
|
/// <summary>
|
|
/// 板宽
|
|
/// </summary>
|
|
public double W => (max.Y - min.Y) * 304.8;
|
|
/// <summary>
|
|
/// 板厚
|
|
/// </summary>
|
|
public double T => Convert.ToDouble(self.FloorType.get_Parameter(BuiltInParameter.FLOOR_ATTR_DEFAULT_THICKNESS_PARAM).AsValueString());
|
|
public List<CDMOpening> CDMopenings { get; set; }
|
|
}
|
|
}
|