Revit SDK 介绍:CreateAirHandler 创建户式风管机

前言

这个例子介绍如何通过 API 创建一个户式风管机族的内容,包含几何和接头。

内容

效果

核心逻辑

  1. 必须打开机械设备的族模板
  2. 创建几何实体来表示风管机
  3. 创建风机的接头

创建几何实体来表示风管机

例子中创建了多个拉伸,下面仅截取一段代码:

csharp 复制代码
// 创建一个 curve 数组
curves = app.NewCurveArray();
curves.Append(Line.CreateBound(profileData[i, 0], profileData[i, 1]));
curves.Append(Line.CreateBound(profileData[i, 1], profileData[i, 2]));
curves.Append(Line.CreateBound(profileData[i, 2], profileData[i, 3]));
curves.Append(Line.CreateBound(profileData[i, 3], profileData[i, 0]));

// 创建一个轮廓,curve数组的数组
profile = app.NewCurveArrArray();
profile.Append(curves);

// 创建参考平面
plane = Plane.CreateByNormalAndOrigin(sketchPlaneData[i, 0], sketchPlaneData[i, 1]);
sketchPlane = SketchPlane.Create(m_document, plane);

// 创建一个拉伸
extrusions[i] = f.NewExtrusion(isSolid[i], profile, sketchPlane,extrusionOffsets[i, 1]);
extrusions[i].StartOffset = extrusionOffsets[i, 0];

// 把拉伸加入数组,方便后续的几何合并
m_combineElements.Append(extrusions[i]);

创建风机的接头

例子中有四个接头,两个风管,两个水管。

csharp 复制代码
// 风管接头的例子,创建及设置参数
ConnectorElement connReturnAir = ConnectorElement.CreateDuctConnector(m_document, DuctSystemType.ReturnAir, ConnectorProfileType.Rectangular, m_planarFaces[0].Reference);
param = connReturnAir.get_Parameter(BuiltInParameter.CONNECTOR_HEIGHT);
param.Set(connectorDimensions[1, 0]);
param = connReturnAir.get_Parameter(BuiltInParameter.CONNECTOR_WIDTH);
param.Set(connectorDimensions[1, 1]);
param = connReturnAir.get_Parameter(BuiltInParameter.RBS_DUCT_FLOW_DIRECTION_PARAM);
param.Set(1);
param = connReturnAir.get_Parameter(BuiltInParameter.RBS_DUCT_FLOW_CONFIGURATION_PARAM);
param.Set(1);
param = connReturnAir.get_Parameter(BuiltInParameter.RBS_DUCT_FLOW_PARAM);
param.Set(flow);
// 水管接头的例子,创建及设置参数
ConnectorElement connSupplyHydronic = ConnectorElement.CreatePipeConnector(m_document, PipeSystemType.SupplyHydronic, m_planarFaces[0].Reference);
param = connSupplyHydronic.get_Parameter(BuiltInParameter.CONNECTOR_RADIUS);
param.Set(arcRadius);
param = connSupplyHydronic.get_Parameter(BuiltInParameter.RBS_PIPE_FLOW_DIRECTION_PARAM);
param.Set(2);

创建机电接头的接口

csharp 复制代码
namespace Autodesk.Revit.DB
{
    public class ConnectorElement : Element, IConnector
    {
        public virtual Transform CoordinateSystem { get; }
        public bool IsPrimary { get; }
        public MEPSystemClassification SystemClassification { get; set; }
        public XYZ Direction { get; }
        public virtual double Width { get; }
        public virtual ConnectorProfileType Shape { get; }
        public virtual XYZ Origin { get; }
        public virtual double Radius { get; }
        public virtual double Height { get; }
        public virtual Domain Domain { get; }
        public static ConnectorElement CreateCableTrayConnector(Document document, Reference planarFace, Edge edge);
        public static ConnectorElement CreateCableTrayConnector(Document document, Reference planarFace);
        public static ConnectorElement CreateConduitConnector(Document document, Reference planarFace, Edge edge);
        public static ConnectorElement CreateConduitConnector(Document document, Reference planarFace);
        public static ConnectorElement CreateDuctConnector(Document document, DuctSystemType ductSystemType, ConnectorProfileType profileShape, Reference planarFace);
        public static ConnectorElement CreateDuctConnector(Document document, DuctSystemType ductSystemType, ConnectorProfileType profileShape, Reference planarFace, Edge edge);
        public static ConnectorElement CreateElectricalConnector(Document document, ElectricalSystemType electricalSystemType, Reference planarFace);
        public static ConnectorElement CreateElectricalConnector(Document document, ElectricalSystemType electricalSystemType, Reference planarFace, Edge edge);
        public static ConnectorElement CreatePipeConnector(Document document, PipeSystemType pipeSystemType, Reference planarFace);
        public static ConnectorElement CreatePipeConnector(Document document, PipeSystemType pipeSystemType, Reference planarFace, Edge edge);
        public void AssignAsPrimary();
        public void FlipDirection();
        public ConnectorElement GetLinkedConnectorElement();
        public bool IsSystemClassificationValid(MEPSystemClassification systemClassification);
        public void SetLinkedConnectorElement(ConnectorElement otherConnector);
    }
}

其它

创建几何实体来表示风管机和创建风机的接头之后都需要调用m_document.Regenerate来更新文档。

相关推荐
kalvin_y_liu2 小时前
DeploySharp开源发布:让C#部署深度学习模型更加简单
深度学习·开源·c#
c#上位机3 小时前
wpf之GroupBox
c#·wpf
CodeCraft Studio3 小时前
国产化PDF处理控件Spire.PDF教程:C#中轻松修改 PDF 文档内容
前端·pdf·c#·.net·spire.pdf·编辑pdf·修改pdf
mit6.8243 小时前
[C# starter-kit] Domain Entities | `AuditableEntity`基类 | 跟踪变化 | 软删除
数据库·microsoft·c#
李宥小哥10 小时前
C#基础11-常用类
android·java·c#
偶尔的鼠标人12 小时前
Avalonia中,使用DataTable类型作为DataGrid的ItemSource 数据源
ui·c#·avalonia
R-G-B14 小时前
【02】大恒相机SDK C#开发 —— 初始化相机,采集第一帧图像
c#·大恒相机sdk·大恒相机初始化·大恒相机采集图像
韩立学长16 小时前
【开题答辩实录分享】以《制造型企业供应商档案管理系统设计与开发》为例进行答辩实录分享
sqlserver·c#
ajassi200021 小时前
开源 C# 快速开发(十七)进程--消息队列MSMQ
windows·开源·c#