private static void CreateGroup(SystemBase newSystem, ControlSystem systemToDuplicate) { ControlGroup _group = new ControlGroup(); ControlGroup _groupP = Project.CurrentProject.ControlGroupList.Find(x => x.ControlSystemID.Equals(systemToDuplicate.Id)); _group = _groupP.DeepClone(); List <Controller> _controllers = Project.CurrentProject.ControllerList.FindAll(x => x.ControlGroupID.Equals(_groupP.Id)); _group.AddToControlSystem(newSystem.Id); _group.SetName("Group " + (Project.CurrentProject.ControlGroupList.Count + 1)); _group.Id = Guid.NewGuid().ToString("N"); foreach (var item in _controllers) { Controller controllerCopy = item.DeepClone(); controllerCopy.ControlGroupID = _group.Id; controllerCopy.ControlSystemID = newSystem.Id; Project.CurrentProject.ControllerList.Add(controllerCopy); } Project.CurrentProject.ControlGroupList.Add(_group); List <RoomIndoor> copySysHeatExch = Project.CurrentProject.ExchangerList.FindAll(x => x.ControlGroupID.Contains(_groupP.Id)); foreach (var item in copySysHeatExch) { item.ControlGroupID.Add(_group.Id); } List <JCHVRF.Model.NextGen.SystemVRF> copySysVrf = Project.CurrentProject.SystemListNextGen.FindAll(x => x.ControlGroupID.Contains(_groupP.Id)); foreach (var item in copySysVrf) { item.ControlGroupID.Add(_group.Id); } var copysystemoncanvaslist = ((ControlSystem)newSystem).SystemsOnCanvasList; foreach (var sys in copysystemoncanvaslist) { if (sys.System.GetType() == typeof(RoomIndoor)) { ((RoomIndoor)sys.System).ControlGroupID.Add(_group.Id); } else if (sys.System.GetType() == typeof(JCHVRF.Model.NextGen.SystemVRF)) { ((JCHVRF.Model.NextGen.SystemVRF)sys.System).ControlGroupID.Add(_group.Id); } } }