diff --git a/Structure_AdapterModules/GetLoadElementsWithoutId.cs b/Structure_AdapterModules/GetLoadElementsWithoutId.cs new file mode 100644 index 00000000..e872f10a --- /dev/null +++ b/Structure_AdapterModules/GetLoadElementsWithoutId.cs @@ -0,0 +1,74 @@ +/* + * This file is part of the Buildings and Habitats object Model (BHoM) + * Copyright (c) 2015 - 2022, 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 that does not contain an adapter ID of the expected type. Avoids the need to again read and check against elements already in the model.")] + public class GetLoadElementsWithoutId : IGetDependencyModule, T> where T : IBHoMObject + { + /***************************************************/ + /**** Interface method ****/ + /***************************************************/ + + public IEnumerable GetDependencies(IEnumerable> objects) + { + List noIdLoadObjects = new List(); + foreach (IElementLoad load in objects) + { + if(load?.Objects?.Elements != null) + noIdLoadObjects.AddRange(load.Objects.Elements.Where(x => x != null && !x.Fragments.Contains(m_adapterIdType))); + } + return noIdLoadObjects; + } + + /***************************************************/ + /**** Constructors ****/ + /***************************************************/ + + public GetLoadElementsWithoutId(IBHoMAdapter adapter) + { + m_adapterIdType = adapter.AdapterIdFragmentType; + } + + /***************************************************/ + + private Type m_adapterIdType; + + /***************************************************/ + } +} + + diff --git a/Structure_AdapterModules/ModuleLoader.cs b/Structure_AdapterModules/ModuleLoader.cs index 943b38cd..0453c408 100644 --- a/Structure_AdapterModules/ModuleLoader.cs +++ b/Structure_AdapterModules/ModuleLoader.cs @@ -29,6 +29,7 @@ using BH.Adapter; using BH.oM.Adapter; using BH.oM.Base; +using BH.oM.Structure.Elements; namespace BH.Adapter.Modules.Structure { @@ -40,6 +41,10 @@ public static void LoadModules(this BHoMAdapter adapter) adapter.AdapterModules.Add(new CopyNodeProperties()); adapter.AdapterModules.Add(new GetCasesFromCombinations()); adapter.AdapterModules.Add(new GetCombinationsFromCombinations()); + adapter.AdapterModules.Add(new GetLoadElementsWithoutId(adapter)); + adapter.AdapterModules.Add(new GetLoadElementsWithoutId(adapter)); + adapter.AdapterModules.Add(new GetLoadElementsWithoutId(adapter)); + adapter.AdapterModules.Add(new GetLoadElementsWithoutId(adapter)); //Gravity loads } } }