前言
Revit 作为一款发展了几十年的建筑设计软件,能量分析自然也是其不可或缺的一部分,但能量分析已经有很多专业软件在做了。Revit 在这个方面也确实不强,这个例子只做一些简单的介绍。
内容
能量分析在 Revit 面板中的位置:
Revit 的能量分析
创建能量模型:
创建能量分析模型之后,会生成一个 EnergyAnalysisDetailModel
。通过它可以获取:EnergyAnalysisOpening
、EnergyAnalysisSurface
、EnergyAnalysisSpace
。
插件运行效果:
这个例子也仅仅是生成分析模型,如果真的要做分析,需要借助 Revit 的云分析能力。详见:工作流:使用 Revit 和 Insight 进行能量分析
核心逻辑
创建能量分析模型:
public void Initialize()
{
m_energyAnalysisDetailModel = EnergyAnalysisDetailModel.Create(RevitDoc, m_options);
m_energyAnalysisDetailModel.TransformModel();
}
从能量分析模型获取数据,并显示到 UI,以分析空间为例:
public XElement GetAnalyticalSpaces()
{
// 创建一个节点可以放所有的分析空间
XElement energyAnalysisSpacesNode = new XElement("AnalyticalSpaces");
energyAnalysisSpacesNode.Add(new XAttribute("Name", "AnalyticalSpaces"));
// 获取所有的分析空间
IList<EnergyAnalysisSpace> energyAnalysisSpaces = m_energyAnalysisDetailModel.GetAnalyticalSpaces();
// 从分析空间中拿到分析表面
foreach (EnergyAnalysisSpace space in energyAnalysisSpaces)
{
XElement spaceNode = new XElement("Space");
spaceNode.Add(new XAttribute("Name", space.ComposedName));
energyAnalysisSpacesNode.Add(spaceNode);
IList<EnergyAnalysisSurface> analyticalSurfaces = space.GetAnalyticalSurfaces();
SurfacesToXElement(spaceNode, analyticalSurfaces);
}
return energyAnalysisSpacesNode;
}
EnergyAnalysisDetailModel
核心接口:
public static EnergyAnalysisDetailModel Create(Document document, EnergyAnalysisDetailModelOptions options);
public static EnergyAnalysisDetailModel GetMainEnergyAnalysisDetailModel(Document document);
public IList<EnergyAnalysisOpening> GetAnalyticalOpenings();
public IList<EnergyAnalysisSurface> GetAnalyticalShadingSurfaces();
public IList<EnergyAnalysisSpace> GetAnalyticalSpaces();
public IList<EnergyAnalysisSurface> GetAnalyticalSurfaces();
public void TransformModel();