using Autodesk.Revit.DB.Electrical;
public static void Swap(this ElectricalSystem system1, ElectricalSystem system2)
{
if (system1.BaseEquipment.Id == system2.BaseEquipment.Id) // проверка на подключение к одной панели
{
// экземпляр панели
FamilyInstance panel = system1.BaseEquipment;
// получить номера цепей (метод GetSystemNumber() представлен ниже)
int
numSystem1 = system1.GetSystemNumber(),
numSystem2 = system2.GetSystemNumber();
// отсоединить системы от панели
system1.DisconnectPanel();
system2.DisconnectPanel();
// если система 1 была выше системы 2, систему 2 подключить к панели первой, затем систему 1
if (numSystem1 < numSystem2)
{
system2.SelectPanel(panel);
system1.SelectPanel(panel);
}
// иначе первой подключить к панели систему 1, затем систему 2
else
{
system1.SelectPanel(panel);
system2.SelectPanel(panel);
}
}
else { }
}
private static int GetSystemNumber(this ElectricalSystem system)
{
string numSystemTxt = system.CircuitNumber; // номер цепи; для трёхфазной системы представляет собой строку формата "1,2,3"
if (numSystemTxt.Contains(','))
numSystemTxt = numSystemTxt.Substring(0, numSystemTxt.IndexOf(',')); // для трёхфазной системы оставить номер первой фазы
return Convert.ToInt16(numSystemTxt); // преобразовать текстовое значения номера цепи в целое число
}