電気システム、空調システム、配管システムを作成します。
MechanicalSystem と PipingSystem にはオーバーロードされた静的な Create() メソッドが備わっており、これによって新しい空調システムや配管システムを作成することができます。MEP システムの新規作成には、このメソッドが推奨されます。両方のクラスに対する最も単純な Create() オーバーロードは、指定したドキュメント内に、指定したタイプ ID を持つ新しいシステムを作成します(タイプ ID は MechanicalSystem における DuctSystemType の ID か PipingSystem における PipeSystemType の ID である必要があります)。両方のクラスには 2 番目の Create() オーバーロードが備わっており、このオーバーロードはさらにシステムの名前を取ります。システムの作成後、MEPSystem.Add() メソッドを使用してシステムに要素を追加することができます。
MechanicalSystem および PipingSystem は、それぞれ NewMechanicalSystem() および NewPipingSystem() を使用して Creation.Document から作成することもできます。
現在、電気システムを作成できるのは Creation.Document.NewElectricalSystem() メソッドに限られます。このメソッドには 2 つのオーバーロードがあります。そのうち一方のオーバーロードは、使用されていない Connector から新しい ElectricalSystem 要素を作成します。他方のオーバーロードは、一連の電気コンポーネントから新しい ElectricalSystem 要素を作成します。いずれのオーバーロードにも ElectricalSystemType が必要です。
NewPipingSystem()および NewMechanicalSystem()の両方は、配管システムの温水ヒーターや空調システムのファンのように基準設備のコネクタである Connector を取ります。また、配管システムの洗面台の蛇口など、システムに追加されるコネクタの ConnectorSet も取得します。新しいシステムを作成するために必要な最新の情報は NewPipingSystem()の PipeSystemType、または NewMechanicalSystem()の DuctSystemType のどちらかになります。
次の例では、新しい SupplyAir ダクト システムが、機械設備(たとえば、ファンなど)の選択部分や、選択したすべての吹き出し口から作成されています。
|
コード領域: 新しい空調システムを作成 |
// create a connector set for new mechanical system
ConnectorSet connectorSet = new ConnectorSet();
// Base equipment connector
Connector baseConnector = null;
// Select a Parallel Fan Powered VAV and some Supply Diffusers
// prior to running this example
ConnectorSetIterator csi = null;
ICollection<ElementId> selectedIds = uiDocument.Selection.GetElementIds();
Document document = uiDocument.Document;
foreach (ElementId id in selectedIds)
{
Element e = document.GetElement(id);
if (e is FamilyInstance)
{
FamilyInstance fi = e as FamilyInstance;
Family family = fi.Symbol.Family;
// Assume the selected Mechanical Equipment is the base equipment for new system
if (family.FamilyCategory.Name == "Mechanical Equipment")
{
//Find the "Out" and "SupplyAir" connector on the base equipment
if (null != fi.MEPModel)
{
csi = fi.MEPModel.ConnectorManager.Connectors.ForwardIterator();
while (csi.MoveNext())
{
Connector conn = csi.Current as Connector;
if (conn.Direction == FlowDirectionType.Out && conn.DuctSystemType == DuctSystemType.SupplyAir)
{
baseConnector = conn;
break;
}
}
}
}
else if (family.FamilyCategory.Name == "Air Terminals")
{
// add selected Air Terminals to connector set for new mechanical system
csi = fi.MEPModel.ConnectorManager.Connectors.ForwardIterator();
csi.MoveNext();
connectorSet.Insert(csi.Current as Connector);
}
}
}
MechanicalSystem mechanicalSys = null;
if (null != baseConnector && connectorSet.Size > 0)
{
// create a new SupplyAir mechanical system
mechanicalSys = uiDocument.Document.Create.NewMechanicalSystem(baseConnector, connectorSet, DuctSystemType.SupplyAir);
}
|