=========【更多高级应用请关注公众号】========
==================================
水暖电系统类MEPSystem也是Element。MEPSystem 的子类有 MechanicalSystem,PipeingSystem,ElectricalSystem,分别对应风管系统,水管系统和电器系统。
风管系统通常是为了便于计算风管中送风流向和流量而设定的一个逻辑概念。只要将风道末端和机械设备放置在工程中,就可以创建补给系统、返回系统和废气系统,用于连接各个不同的部件。
水管系统是为了便于计算设备的流量和流速而设定的一个逻辑概念。水管系统独立于工程文件中的水管,仅用于显示各个卫浴装置间连接方式和水流方向。只要将卫浴装置放在工程中就可以创建家用热水、家用冷水及卫浴系统来连接各个不同的装置。
在机械设备和风管终端间创建风带系统系列代码:
public void CreateMechanicalSystem(Document doc, DuctSystemType systemType,FamilyInstance equipment, params FamilyInstance[] airTerminals)
{
var me = equipment.MEPModel as MEPModel;
if (me != null)
{
// 获取符合条件的设备上的电气连接件
var connsOfEquipment = GetConnector(me.ConnectorManager, systemType).ToList();
if (connsOfEquipment.Count > 0)
{
// 选取设备上的第一个电气连接件
var equipmentConn = connsOfEquipment[0];
var connsOfTerminals = new ConnectorSet();
foreach (var terminal in airTerminals)
{
// 获取符合条件的散流器上的电气连接件,取第一个
var airTerminalEquipment = terminal.MEPModel as MEPModel;
var airConns = GetConnector(airTerminalEquipment.ConnectorManager,systemType);
var airConn = airConns.FirstOrDefault();
if (airConn != null)
connsOfTerminals.Insert(airConn);
}
// 创建风管系统
using (Transaction transaction = new Transaction(doc))
{
transaction.Start("Create System");
doc.Create.NewMechanicalSystem(equipmentConn, connsOfTerminals,systemType);
transaction.Commit();
}
}
}
}
// 获取符合管道系统的电气连接件
private static IEnumerable<Connector> GetConnector(ConnectorManager conMgr,
DuctSystemType systemType)
{
foreach (Connector conn in conMgr.Connectors)
{
// Domain为Hvac,否则DuctSystemType属性会抛出异常
if (conn.Domain == Domain.DomainHvac && conn.DuctSystemType == systemType)
{
yield return conn;
}
}
}