diff --git a/Structure_AdapterModules/GetGravityLoadElementsWithoutID.cs b/Structure_AdapterModules/GetGravityLoadElementsWithoutID.cs new file mode 100644 index 00000000..cee973be --- /dev/null +++ b/Structure_AdapterModules/GetGravityLoadElementsWithoutID.cs @@ -0,0 +1,74 @@ +/* + * This file is part of the Buildings and Habitats object Model (BHoM) + * Copyright (c) 2015 - 2023, the respective contributors. All rights reserved. + * + * Each contributor holds copyright over their respective contributions. + * The project versioning (Git) records all such contribution source information. + * + * + * The BHoM is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3.0 of the License, or + * (at your option) any later version. + * + * The BHoM is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this code. If not, see . + */ + +using BH.oM.Base; +using BH.oM.Adapter; +using System; +using System.Linq; +using System.Collections.Generic; +using System.Reflection; +using System.ComponentModel; +using BH.oM.Structure.Elements; +using System.Collections; +using BH.oM.Geometry; +using BH.oM.Structure.Constraints; +using BH.oM.Structure.Loads; + + +namespace BH.Adapter.Modules +{ + [Description("Get all elements of type T that do not contain an adapter ID of the expected type from the provided GravityLoads. Avoids the need to again read and check against elements already in the model.")] + public class GetGravityLoadElementsWithoutID : IGetDependencyModule where T : IBHoMObject + { + /***************************************************/ + /**** Interface method ****/ + /***************************************************/ + + public IEnumerable GetDependencies(IEnumerable objects) + { + List noIdLoadObjects = new List(); + foreach (GravityLoad load in objects) + { + if(load?.Objects?.Elements != null) + noIdLoadObjects.AddRange(load.Objects.Elements.OfType().Where(x => x != null && !x.Fragments.Contains(m_adapterIdType))); + } + return noIdLoadObjects; + } + + /***************************************************/ + /**** Constructors ****/ + /***************************************************/ + + public GetGravityLoadElementsWithoutID(IBHoMAdapter adapter) + { + m_adapterIdType = adapter.AdapterIdFragmentType; + } + + /***************************************************/ + + private Type m_adapterIdType; + + /***************************************************/ + } +} + + diff --git a/Structure_AdapterModules/ModuleLoader.cs b/Structure_AdapterModules/ModuleLoader.cs index 52ed5045..1f812945 100644 --- a/Structure_AdapterModules/ModuleLoader.cs +++ b/Structure_AdapterModules/ModuleLoader.cs @@ -44,7 +44,8 @@ public static void LoadModules(this BHoMAdapter adapter) adapter.AdapterModules.Add(new GetLoadElementsWithoutID(adapter)); adapter.AdapterModules.Add(new GetLoadElementsWithoutID(adapter)); adapter.AdapterModules.Add(new GetLoadElementsWithoutID(adapter)); - adapter.AdapterModules.Add(new GetLoadElementsWithoutID(adapter)); //Here to handle GravityLoads that are IElementLoad + adapter.AdapterModules.Add(new GetGravityLoadElementsWithoutID(adapter)); + adapter.AdapterModules.Add(new GetGravityLoadElementsWithoutID(adapter)); } } }